PowerSmart? DCLD設計電壓模式BUCK數(shù)字補償器
掃描二維碼
隨時隨地手機看文章
Power Smart? Digital Control Library Designer是一個新的用于設計數(shù)字補償器的工具,相比于之前的DCDT工具更靈活簡單,通過本文,我們以電壓模式BUCK電路的補償器設計及創(chuàng)建demo程序為例,探討一下如何建立一個完整的工程,并且基于DCLD設計數(shù)字補償器,且包含一定的保護功能,并且驗證數(shù)字補償器的閉環(huán)性能。
一.數(shù)字電源開發(fā)板及基本代碼框架介紹
我們建立工程基于dsPIC33CK的數(shù)字電源開發(fā)套件,上面的控制芯片為dsPIC33CK256MP505,上面包含一個同步buck和一個boost電路,這里我們使用其同步buck電路。
圖1 DPSK3開發(fā)板
圖2 同步BUCK的電路結構
此同步BUCK的電路中,包含一個對負載控制的按鍵,通過此按鍵可以控制加載到BUCK電路的負載,當然板上也安裝了最大1A的BUCK電路負載。
圖3 同步BUCK的軟件框架結構
在這個電路中,我們將通過dsPIC33C內部DSP運行一個數(shù)字補償器,通過分壓電阻采樣輸出電壓和數(shù)字基準比較產生誤差,最終計算的結果經過anti-windup限制范圍后,輸出給片上的PWM模塊去控制BUCK電路的占空比。為了避免給輸出電容充電產生的過充電流,我們添加軟起動代碼,通過一個定時器實現(xiàn),同時,我們也會添加一些保護代碼,如輸入欠壓UVLO和輸出過壓OVLO,及輸出電壓范圍誤差代碼。按照慣例,我們也通過一個用定時器控制的LED來指示軟件的運行狀態(tài)。
圖4 用MCC產生配置的部分模塊
圖5 通過DCLD產生數(shù)字控制器代碼
二.基本模塊的MCC代碼構建
新建一個工程,就開始分別進行模塊設置,關于新建工程的步驟,我們不在此詳述。具體而言,我們通過MCC來建立各個模塊的代碼,MCC的安裝及使用我們在此不詳述,可以參考前述文章,dsPIC33C新建工程及MCC插件說明 ,首先需要做的是設置一個滿足各個外設及CPU運行的時鐘。
圖6 系統(tǒng)主時鐘的配置
通過圖6所示的配置參數(shù),將主時鐘配置為最高主頻100M,對應FOSC為200M,注意此處,我們使用片上內部8M的振蕩器FRC為源振蕩器,且不進行FRC分頻。
圖7 系統(tǒng)輔助時鐘的配置
輔助時鐘按照圖7所示,配置為500M,供PWM模塊使用,規(guī)格書規(guī)定,如在高精度模式下運行PWM,則必須使用500M的時鐘輸入。
在系統(tǒng)設置部分,其非關鍵部分,這里我們不做特別說明。
圖8 定時器T1的配置
通過如圖8所示的配置,選擇指令時鐘FOSC/2 100M,我們將定時器Timer1進行適當分頻設為2ms的周期,用于做一些指示燈功能,及啟動電路狀態(tài)機,且使能其中斷,在中斷中處理任務。
圖9 PWM模塊配置1
圖10 PWM模塊配置2
圖11 PWM模塊配置3
圖12 PWM模塊配置4
通過圖9到圖12進行PWM模塊的配置,在本示例中使用PWM1模塊,使能高精度模式,采用500M時鐘驅動。設置為互補模式輸出,設置一定死區(qū),開關頻率為500k,通過閉環(huán)控制占空比。PWM的觸發(fā)為自觸發(fā),由于需要它觸發(fā)ADC的轉換,所以使用了ADCtrigger A和ADC triggerB這兩個觸發(fā)信號,信號A用于觸發(fā)輸入電壓采樣,信號B用于觸發(fā)輸出電壓采樣。
PWM更新模式設為改寫占空比后觸發(fā)更新,更新模式為立即更新。
圖13 ADC模塊的配置
我們采用ADC的時鐘為100M,則按照默認設置ADC的core的轉換時鐘為50M,保持默認的采樣時間設置。由于需要采樣輸入電壓和輸出電壓,我們根據硬件連接選擇AN12為輸入電壓采樣,AN13為輸出電壓采樣,且使能AN13中斷,由于優(yōu)先級問題,當AN13中斷服務程序中AN13的轉換結果得到時,AN12的轉換結果也是完成的。由于AN13的結果需要參與環(huán)路運算,所以我們使能AN13的中斷,當AN13的轉換結果完成后觸發(fā)進入ADC中斷,去進行反饋環(huán)的調用。
圖14 LED指示設置
圖15 RB6設為指示燈輸出
如圖14所示,在pin manager中設置RB6為輸出功能,我們設置它為用戶指示燈的功能,重新在圖15中的pin Module給它命名。
圖16 設置中斷的優(yōu)先級
定時器的中斷優(yōu)先級可以設的不用太高,此處我們設置為1,高于CPU的優(yōu)先級,而AN13中斷需要參與反饋環(huán)調整,所以將它的優(yōu)先級設為較高,此處設為6,確保AN13結果出來后能及時進入AN13中斷中執(zhí)行反饋換運算。
三.DCLD的功能簡介
圖17 通過PowerSmart DCLD實現(xiàn)環(huán)路補償器設計
此時我們已經完成了PWM和ADC的設置,接下來通過PowerSmart DCLD來設計數(shù)字補償器,這是一個連接通用仿真計算工具如Matlab或者Simplis等和數(shù)字環(huán)路補償設計的工具。
圖18 DCLD的結構框圖
DCLD的結構框圖,由基本補償器部分,擴展功能部分,及API函數(shù)組成,可以實現(xiàn)dsPIC33F,dsPIC33E, dsPIC33C系列的環(huán)路補償設計。
圖19 DCLD實現(xiàn)平均電流模式的示例
通過DCLD可以實現(xiàn)較為復雜的控制模式,如平均電流模式控制,可以建立兩個獨立的控制環(huán)路,電壓環(huán)和電流環(huán),電壓環(huán)輸出作為電流環(huán)的輸入參考,兩個環(huán)路之間的互聯(lián)由用戶代碼結合API完成,后續(xù)我們會介紹。
關于DCLD的詳細功能介紹,我們放在后面。
三.DCLD參數(shù)配置及補償器設計
圖20 DCLD配置位置路徑及連接MPLAB XIDE
由于DCLD是一個獨立的設計工具,因此在圖20中,我們給出了DCLD配置位置的設置,通過這個窗口將DCLD的配置和MPLAB XIDE的工程連接起來,此處給配置命名為Voltage_loop,這個名稱將自動放到代碼中作為變量定義的名稱。
圖21 DCLD和MPLAB XIDE工程的連接設置
通過設置如圖21的項目工程路徑,我們就將MPLAB XIDE當前工程和DCLD的設置連接了起來,窗口會顯示如圖20中的綠色打勾。
圖22 DCLD的配置窗口
圖23 對DCLD代碼的裁剪
此處我們對DCLD產生的代碼進行一定裁剪,由于我們采用MCC產生的中斷服務程序去調用控制環(huán)路,控制環(huán)路本身不需要關注CPU的背景信息,因此在默認設置上我們將Context Management去掉。
圖24 Context Management優(yōu)化中斷延時
關于通過管理不同器件的背景信息,以便優(yōu)化中斷延時的說明如圖24所示,當有存儲背景和恢復背景需要時,可以通過這個選項處理。
圖25 Add Enable/Disable Switch功能
對使能和去使能的選項,當增加這個選項時,會在NPNZ16b_t中增加一個控制位status.enable,當需要更新控制庫時,需要將這一位置位。當清零時,控制代碼就會被忽略。
我們需要連續(xù)運行控制環(huán)路,因此Add Enable/Disable Configuration選項也會去掉。
圖26 ADC觸發(fā)位置的精確設置
當需要精確設置ADC的觸發(fā)位置時,我們可以通過選擇Add ADC Trigger Placement來自動設置在最新的控制輸出位置的50%,同時通過ADCTriggerAOffset和ADCTriggerBOffset去增加偏置量。
由于我們這里采取周期內固定的采樣點設計,所以去掉Add Automatic Placement of Primary ADC Trigger A, Add Automatic Placement of Primary ADC Trigger B這兩個選項。
這里我們需要用到Anti-windup和Clamp Control Output Maximum和Clamp Control Output Minimum對計算最大值和最小值進行Clamp。
圖27 Anti-Windup設置
我們需要用Anti-Windup來控制環(huán)路計算結果在一個定義的范圍內,一旦超出這個范圍,控制計算結果就會被Clamp,這就不會造成在模擬控制中的飽和問題,如圖27描述所示。
圖28 Andi-Windup對低頻率范圍的支持
當沒有使能Limit Control Loop Output to Positive Numbers時,控制庫是支持-32768到32767之間的Q15有符號數(shù)據的,而此時在dsPIC33C高精度模式下,最低能達到的控制開關頻率為144k,為了支持更低頻率,我們可以使能這個選項,使得控制庫支持無符號16位計算結果,將計算結果擴大到0-65535,使得高精度PWM模式下最低的開關頻率達到61k。我們現(xiàn)在這個實驗案例開關頻率較高,不需要使能這一選項。
此時,我們就可以進行濾波器的設計了。
四.DCLD設計數(shù)字補償器
在設計控制器零極點之前,我們通過P控制器測試出功率級電路的Bode圖。
圖29 P控制器代碼生成選項
圖30 反饋增益的設置
通過對反饋增益的設置,我們得到正常的反饋ADC采樣數(shù)字量為2048,對應輸出電壓為Vout 3.3V時的ADC采樣值2048。
圖31 典型控制量計算
設置PWM模塊的工作頻率為4G(500MHz*8),在500k電源開關頻率下,自動得到周期為8000個tick,通過系統(tǒng)自帶的計算器去對效率進行估算,以得到合理的占空比計算值,如圖32.最終得到計算的典型控制輸出為3188,如圖29所示。
圖32 合理占空比計算
圖33 產生P控制器代碼
通過菜單中的Export Files可以產生P控制器代碼,用以測量功率級Bode圖,如圖34所示。
圖34 P控制器匯編代碼
圖35 在DCLD目錄中添加代碼
圖36 DCLD添加代碼
如圖35,36所示,將DCLD的產生的相應控制環(huán)代碼添加到當前工程目錄中,包括2個頭文件,1個C文件,1個匯編文件。
圖37 添加頭文件和定義輸入輸出及參考變量
圖38 添加ADC中斷調用代碼及控制器初始化代碼
圖39 添加控制器初始化調用及中斷服務程序Handler
控制器的初始化,主要是對控制器初始化函數(shù)進行初始化,并且指定控制器的輸入變量adc_vbuck,輸出目標變量PG1DC,及控制參考ref_vbuck。
圖40 自行Debug驗證ADC中斷
經測試,可以看到ADCAN13中斷可以正常進入,調試窗口可以看到輸入電壓的測量值為0x598。
圖41 輸入電壓采樣電路
根據輸入電壓硬件采樣電路,當輸入電壓為9.2V時,可以測試出TP47電壓為1.152V,對應調試窗口測試出的數(shù)值0x598,根據ADC的模擬數(shù)字量基本關系,不難確定這一點是正確的。
在主程序中添加對控制器的初始化代碼調用,并且將相應的ADC的中斷服務程序和TMR1的中斷服務程序指定給相應的中斷Handler。
TMR1的中斷服務程序如下所示,主要用于處理狀態(tài)指示,欠壓鎖定及軟起動功能,此處代碼中VBUCK_REF代表正常輸出電壓。
voidTMR1_Int(void)
{
static int led_tmr =0;
static int fsm_state = 0;
static int start_tmr = 0;
static int err_tmr = 0;
// blink LED 1Hz
if(++led_tmr>=500)
{
led_tmr = 0;
USER_LED_Toggle();
}
switch(fsm_state)
{
case 0: // State 0: wait for Vin>threshold(delay time)
ref_vbuck = 0;
err_tmr = 0;
if (adc_vin
{
start_tmr = 0;
}
else if (++start_tmr>2000)
{
fsm_state = 1;
}
break;
case 1: // State 1: ramp up buck reference value(soft-start)
if (ref_vbuck < VBUCK_REF)
{
ref_vbuck += VBUCK_RAMP;
}
if ((adc_vin
{ // low input voltage OR error for>200ms
start_tmr = 0;
fsm_state = 0;
}
break;
}
}
接下來我們測試開發(fā)板的P控制器對應的環(huán)路,即功率級傳遞函數(shù)曲線。
圖42 滿載時P控制器測試功率級Bode圖
從測試出的功率級Bode圖來看,功率級LC轉折頻率約為5k,ESR零點約為60k,這些信息為設計數(shù)字補償器零極點提供參考。
圖43 空載時P控制器測試功率級Bode圖
在圖43中,我們同時給出了空載時的功率級Bode圖,可知二階LC極點轉折頻率變?yōu)?/span>1k附近,由于負載阻抗較大,因此Q值很小,可以看到增益曲線沒有出現(xiàn)像滿載一樣的峰值,高頻ESR零點位置還是60k附近。
圖44 設計補償器零極點
根據P控制器測試出的功率級Bode圖,我們找到了相應的功率級零極點大致位置,且根據前述文章的討論,可以使用3P3Z的數(shù)字補償器,且使用歸一化輸入增益,以便在AB系數(shù)中考慮輸出分壓反饋電阻。參考BUCK電路模擬補償器的數(shù)字化過程,中對輸入增益歸一化的說明。
此時,我們可以指定相應的零極點去得到期望的環(huán)路曲線,這里開關頻率設為500k,零頻率極點設為600Hz,兩個零點用于抵消LC二階極點,分別設在2k和4k,一個極點用于抵消ESR零點設在75k,另一個極點用于衰減高頻分量,設在低于奈奎斯特頻率的頻率200k,使得奈奎斯特頻率處的分量有一定衰減。
圖45 調用電壓環(huán)控制代碼
根據新輸入的控制器零極點,重新產生代碼后,我們在AN13的中斷服務程序中調用電壓環(huán)控制函數(shù),如圖45所示,完成閉環(huán)控制。
圖46 DCLD產生的數(shù)字補償器系數(shù)
圖46為DCLD所產生的補償器AB系數(shù),及相應的Q15格式數(shù)據。
圖47 空載時PWM驅動波形(CH1-PWM1H-CH2-PWM1L)
前述文章,BUCK電路模擬補償器的數(shù)字化過程 ,詳述了通過DCLD產生的數(shù)字補償器AB系數(shù)的過程,后續(xù)我們也會詳細分析基于產生的AB系數(shù)結合數(shù)字補償器,如何在DCLD產生的代碼上執(zhí)行新的控制量計算。
圖48 滿載時開環(huán)增益?zhèn)鬟f函數(shù)Bode圖
滿載時的開環(huán)增益?zhèn)鬟f函數(shù)曲線如圖48所示,我們從圖上得知,帶寬為17.7k,相位裕量為50C,增益裕量為17.2db,且低頻段具有較高的積分增益,高頻200k以上以40db/10倍頻衰減,它是一個非常穩(wěn)定的符合我們期望的環(huán)路曲線。
圖49 滿載和空載時開環(huán)增益?zhèn)鬟f函數(shù)Bode圖
從圖49滿載和空載時的開環(huán)增益曲線對比來看,空載時的穿越頻率略低于滿載時的穿越頻率,相位裕量略高于滿載時相位裕量,符合同步BUCK的特性。
總結,本文通過介紹數(shù)字電源開發(fā)板DPSK3的基本結構及基本代碼框架的形成,接著通過MCC去得到基本的開關電源外設配置代碼,最后通過DCLD去設計數(shù)字補償器設計,首先由P控制器測試出功率級Bode圖,進而得到控制器零極點,最終本文設計了電壓模式BUCK電路的環(huán)路補償器,并且測試了典型負載下的環(huán)路Bode圖。





