數(shù)字補(bǔ)償器的數(shù)值變換過程
掃描二維碼
隨時(shí)隨地手機(jī)看文章
前述文章,BUCK電路模擬補(bǔ)償器的數(shù)字化過程,我們討論了由設(shè)計(jì)好零極點(diǎn)的模擬補(bǔ)償器,如何得到對應(yīng)z傳遞函數(shù)的系數(shù),但是這些系數(shù)都是實(shí)數(shù),它在定點(diǎn)計(jì)算的MCU內(nèi)是無法直接實(shí)施去計(jì)算線性差分方程的,所以我們必須進(jìn)行一定的數(shù)值變換,以方便定點(diǎn)MCU處理。另外,為了利用16位MCU的最大字長,我們需要對系數(shù)進(jìn)行一定的縮放以滿足其最大表示范圍。本文就詳細(xì)探討一下這些為了得到MCU處理的定點(diǎn)數(shù)據(jù)而進(jìn)行的數(shù)值變換過程。
一.定點(diǎn)MCU對實(shí)數(shù)的處理
以8位的整數(shù)為例,我們先回顧一下整數(shù)所表示的數(shù)字范圍。圖1中,列出了8位有符號數(shù)表示的范圍,最高位為符號位S,可知8位整數(shù)表示的范圍-128-127,這種格式可以稱之為I0Q8,每一位表示的精度為1.
圖1 I0Q8的數(shù)據(jù)表示范圍
如果我們改為I5Q3這種形式,看看相應(yīng)的范圍和精度是多少呢?相應(yīng)的,由于I5Q3格式由5為整數(shù),3位小數(shù),所以在bit2和bit3之間放一個(gè)隱藏的小數(shù)點(diǎn),如下計(jì)算出來對應(yīng)的正數(shù)最大值為15.875,最小負(fù)數(shù)為-16,每一位表示的精度為0.125.
圖2 I5Q3的數(shù)據(jù)表示范圍
從上述分析,可以看出,當(dāng)表示位數(shù)一定的情況下,整數(shù)位越多,則精度越低,但是表示的數(shù)據(jù)范圍大。小數(shù)位越多,則精度變高,但是表示的數(shù)據(jù)范圍比較變小。
由于我們的MCU sPIC33C是16位的處理器,數(shù)據(jù)位數(shù)為16位,所以,為了可以在計(jì)算中實(shí)現(xiàn)最大精度,通常采用Q15格式來表示實(shí)數(shù),Q15即I1Q15,具有1位整數(shù),15位小數(shù)。我們接下來看一下Q15格式小數(shù)表示的范圍是多少?
圖3 Q15的數(shù)據(jù)表示范圍
從圖3可知,Q15最大的正數(shù)是0.99996948,而最小負(fù)數(shù)就是-1,每一位的精度為0.00003051758,所以,只要讓補(bǔ)償器中的系數(shù)轉(zhuǎn)化為-1到0.99996948之間的小數(shù)用Q15格式表示,MCU就可以去處理這些小數(shù)的計(jì)算。
二.數(shù)字化過程的增益系數(shù)
模擬補(bǔ)償器進(jìn)行數(shù)字化后,和原有模擬補(bǔ)償回路的差異是,除了補(bǔ)償器本身的增益之外,引入了一些額外的數(shù)字化的增益,如圖4所示。
圖4 數(shù)字化引入的增益計(jì)算
舉例來說,電源開關(guān)頻率為500k,輸出采樣分壓電阻為1k和1k,同前述文章中的設(shè)定,在高分辨率模式PWM下周期為8000,ADC供電為3.3V,且保持12bit精度。
首先,由分壓電阻造成的增益為1k/2k,即0.5,這個(gè)很容易理解。其次,ADC造成的增益為4095/3.3,因?yàn)橥ㄟ^ADC將模擬量轉(zhuǎn)化為一個(gè)數(shù)字,轉(zhuǎn)化系數(shù)就是4095/3.3.再次,從補(bǔ)償器計(jì)算值,到占空比,也引入了一個(gè)系數(shù)1/8000.
總的增益系數(shù)K1如下式所示,
所以在進(jìn)行數(shù)字補(bǔ)償器設(shè)計(jì)時(shí),為了不改變環(huán)路增益,我們需要將這部分增益抵消掉,即乘以K,而K=1/K1,此處示例中,計(jì)算出的K系數(shù)為12.89.
三.Z傳遞函數(shù)的實(shí)數(shù)系數(shù)變換
由第二部分的討論得知,在數(shù)字補(bǔ)償器計(jì)算結(jié)果輸出給PWM之前,為了抵消數(shù)字化過程的額外增益,我們用一個(gè)系數(shù)K去乘以計(jì)算結(jié)果,再給賦給PWM模塊的占空比寄存器,這樣導(dǎo)致的結(jié)果是每一次環(huán)路計(jì)算都要做一次固定的乘以K的動作,這顯然是比較費(fèi)時(shí)間,且無意義的,如圖5所示。
圖5 數(shù)字化環(huán)路的額外增益抵消計(jì)算
圖6 數(shù)字補(bǔ)償器表達(dá)輸出量
我們對數(shù)字補(bǔ)償器進(jìn)行變換,如圖6所示,用z變換傳遞函數(shù)表示輸出量,則發(fā)現(xiàn)如果對輸出量進(jìn)行乘以一個(gè)系數(shù)K,那么只是分子中的B系數(shù)和K相乘就可以了,A系數(shù)是沒有影響的。那么我們可以等效為對B系數(shù)進(jìn)行乘以K的變換,得到新的B系數(shù),而將K設(shè)為1即可,以此簡化運(yùn)算。
接下來,我們需要通過移位將A,B系數(shù)變?yōu)?/span>-1-0.99996942之間的數(shù)據(jù),并且為了最大程度利用16位MCU的字長,需要將這些數(shù)據(jù)其中的最大值變?yōu)?/span>0.99996942,當(dāng)做完這些移位和縮放操作后,A,B系數(shù)可以表示為Q15數(shù)據(jù)格式,但是需要注意的是在反饋計(jì)算量結(jié)果yn之前,需要進(jìn)行反縮放,以保持?jǐn)?shù)據(jù)范圍不變,如圖7所示。
圖7 AB系數(shù)的移位縮放和反移位反縮放
接下來,我們通過實(shí)例進(jìn)行說明。
根據(jù)前述分析,首先我們將得到的B系數(shù)乘以一個(gè)K值,這個(gè)K值在前面的示例中為12.89,得到如下的修正后的B系數(shù),A系數(shù)保持不變,K最后設(shè)為1.
圖8 B系數(shù)統(tǒng)一乘以K增益系數(shù)
然后同時(shí)對A,B系數(shù)做縮放,此處通過右移5位,讓它處在Q15小數(shù)表達(dá)的范圍內(nèi),即-1-0.9999694824219之間,如圖9所示。
圖9 A,B系數(shù)的統(tǒng)一縮放至Q15小數(shù)范圍
圖10 A,B系數(shù)放大G2倍充分利用16位字長
圖11 計(jì)算G2縮放倍數(shù)
通過圖11所述關(guān)系,將縮放后的AB系數(shù)中最大值乘以一個(gè)數(shù)字,變?yōu)?.9999694824219求得G2系數(shù),即將A,B系數(shù)同時(shí)乘以G2,讓最大的數(shù)達(dá)到Q15的最大值,0x7FFF,如圖10所示,以便充分利用16位的最大字長。
圖12 Q15格式的數(shù)據(jù)
由最終得到的小數(shù),乘以32768,進(jìn)而得到相應(yīng)的16進(jìn)制數(shù)據(jù),如圖12所示,最后一列就是我們需要放到SMPS控制庫函數(shù)中進(jìn)行計(jì)算的Q15數(shù)據(jù)。
四.采用DCDT工具進(jìn)行實(shí)際驗(yàn)證AB系數(shù)
圖13 DCDT插件工具
DCDT工具是一個(gè)在MPLAB XIDE中運(yùn)行的插件,它可以幫助用戶計(jì)算數(shù)字補(bǔ)償器的相關(guān)實(shí)數(shù)系數(shù)及Q15數(shù)據(jù)。DCDT的具體安裝我們后面有機(jī)會再做具體說明。
這里我們以上述實(shí)例,基于已有的電壓模式控制buck電路功率級傳遞函數(shù),做相應(yīng)的變換,在DCDT工具中得到對應(yīng)的Q15數(shù)據(jù),及相關(guān)的系數(shù)。
具體示例對應(yīng)圖4中的描述,我們把圖4直接搬到此處,如圖14所示,方便分析。
圖14 基于DCDT分析的功率級被控對象
根據(jù)圖14所示的基本條件,及第二部分討論的K系數(shù)計(jì)算方式,可計(jì)算出相應(yīng)的K系數(shù)為12.89.
圖15 DCDT中選擇單環(huán)設(shè)計(jì)電壓模式補(bǔ)償器
由于是電壓模式buck電路,因此在DCDT的頁面上,選擇單環(huán)補(bǔ)償器,如圖15所示。
圖16 DCDT中寫入功率級零極點(diǎn)
基于功率級特性的研究,我們填入相應(yīng)的零極點(diǎn),如圖16所示,并調(diào)整Gain系數(shù)Kdc滿足真實(shí)的低頻增益,在圖17,圖18中得到相應(yīng)的功率級增益和相位曲線,當(dāng)然也可以用仿真的方式將數(shù)據(jù)導(dǎo)入這里,或者用實(shí)測波特圖的方式將數(shù)據(jù)導(dǎo)入到這里,這里不做太多說明。
圖17 功率級增益曲線
圖18 功率級相位曲線
圖19 設(shè)置輸出分壓電阻及ADC相關(guān)參數(shù)
根據(jù)電路硬件填入分壓電阻,dsPIC33CK的ADC為12bit分辨率,且轉(zhuǎn)換時(shí)間在300ns以內(nèi),供電為AVDD電壓3.3V,輸出電壓我們這里案例為3.3V,如圖19所示。
圖20 設(shè)置補(bǔ)償器零極點(diǎn)
根據(jù)功率級的零極點(diǎn),我們設(shè)置相應(yīng)的補(bǔ)償器的零極點(diǎn)位置,補(bǔ)償器的直流增益,根據(jù)參考文檔,我們設(shè)為默認(rèn)值1。如何設(shè)置補(bǔ)償器零極點(diǎn)頻率這里我們不做詳細(xì)探討,請參考前述文章,BUCK電路電壓模式CCM環(huán)路補(bǔ)償設(shè)計(jì)及仿真 .
圖21 設(shè)置PWM相關(guān)配置
此處由于我們使用dsPIC33CK器件,因此我們按照250ps的最大PWM分辨率,且每一個(gè)周期都進(jìn)行ADC采樣,則采樣系數(shù)為1,開關(guān)頻率為500k,對應(yīng)采樣間隔頻率就是500k,其它值為估計(jì)值。此處注意,實(shí)際應(yīng)用中,需要用戶確保合適的采樣頻率以滿足環(huán)路運(yùn)算和執(zhí)行其它任務(wù)。
圖22 得到實(shí)數(shù)的原始數(shù)字補(bǔ)償器系數(shù)
得到的原始的數(shù)字補(bǔ)償器系數(shù),和前述文章通過我們另一個(gè)工具DCLD得到的系數(shù)是完全一致的,因?yàn)樗麄儗?yīng)相同的零極點(diǎn)的數(shù)字補(bǔ)償器,工具計(jì)算結(jié)果非常準(zhǔn)確,如圖22所示。
圖23 選擇實(shí)施Kuc增益系數(shù)
點(diǎn)擊實(shí)施Kuc增益系數(shù)后,如圖23所示,可見B系數(shù)被乘以Kuc了,A系數(shù)保持不變,此處DCDT計(jì)算出來的Kuc和我們前面部分手動計(jì)算的結(jié)果12.89一致,當(dāng)然也可以在補(bǔ)償器Kdc中輸入這個(gè)值,也可以得到相應(yīng)的改進(jìn)后的B系數(shù),如圖24所示。
圖24 直接采用Kdc引入Kuc增益
圖25 實(shí)施系數(shù)歸一化
點(diǎn)擊實(shí)施歸一化后,可見A,B系數(shù)都經(jīng)過縮放后變到-1-0.9999694864219之間的數(shù)據(jù),且經(jīng)過一個(gè)放大系數(shù)G2使得最大的值變?yōu)榻咏?/span>0.9999的值,此處DCDT顯示出它經(jīng)過了5位移位,最大系數(shù)數(shù)據(jù)為28.49,則調(diào)整系數(shù)1/G2為29181對應(yīng)的Q15小數(shù),如圖25所示。
圖26 模擬和數(shù)字化后的補(bǔ)償器增益曲線
圖27 模擬和數(shù)字化后的補(bǔ)償器相位曲線
由圖26,27所示,可見模擬補(bǔ)償器和數(shù)字補(bǔ)償器在100k以上有較大的不一致,但是100k以下基本重合,藍(lán)色為雙線性變換后的數(shù)字化補(bǔ)償器,紅色為模擬補(bǔ)償器。
圖28 模擬和數(shù)字化的loop增益曲線
圖29 模擬和數(shù)字化的loop相位曲線
由上述環(huán)路增益和相位曲線來看,圖28,29所示,在低頻和中頻段數(shù)字化增益和相位和模擬的增益和相位曲線較一致,但是高頻下數(shù)字化曲線(黑色)有一定的下掉,這是因?yàn)閿?shù)字化過程對系統(tǒng)造成一定的相位損失。
圖30 數(shù)字補(bǔ)償器和對應(yīng)的Q15格式數(shù)字
圖31 最終的數(shù)字補(bǔ)償器AB系數(shù)
圖32 DCDT工具的作用說明
總結(jié),通過分析MCU內(nèi)部對實(shí)數(shù)的處理方式,重點(diǎn)討論了Q15的定標(biāo)方式,然后分析了數(shù)字化過程中方便MCU處理所做的一系列的縮放及系數(shù)變化措施,最后通過實(shí)際計(jì)算和DCDT工具計(jì)算得到一致的結(jié)果,這個(gè)結(jié)果就可以在MCU中結(jié)合數(shù)字補(bǔ)償器的庫函數(shù)進(jìn)行運(yùn)算。
事實(shí)上,用戶只要能夠理解如何設(shè)置系統(tǒng)零極點(diǎn)頻率,DCDT就可以幫助產(chǎn)生相應(yīng)的z傳遞函數(shù)的系數(shù),及對應(yīng)的Q15格式數(shù)據(jù),在dsPIC33中去用SMPS控制庫執(zhí)行補(bǔ)償器,如圖32所示。以上對理解數(shù)字補(bǔ)償器的數(shù)學(xué)變化過程有一定的幫助。





