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





