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





