日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > > 電源漫談

Power Smart? Digital Control Library Designer是一個(gè)新的用于設(shè)計(jì)數(shù)字補(bǔ)償器的工具,相比于之前的DCDT工具更靈活簡(jiǎn)單,通過本文,我們以電壓模式BUCK電路的補(bǔ)償器設(shè)計(jì)及創(chuàng)建demo程序?yàn)槔?,探討一下如何建立一個(gè)完整的工程,并且基于DCLD設(shè)計(jì)數(shù)字補(bǔ)償器,且包含一定的保護(hù)功能,并且驗(yàn)證數(shù)字補(bǔ)償器的閉環(huán)性能。

.數(shù)字電源開發(fā)板及基本代碼框架介紹

我們建立工程基于dsPIC33CK的數(shù)字電源開發(fā)套件,上面的控制芯片為dsPIC33CK256MP505,上面包含一個(gè)同步buck和一個(gè)boost電路,這里我們使用其同步buck電路。

1 DPSK3開發(fā)板


2 同步BUCK的電路結(jié)構(gòu)


此同步BUCK的電路中,包含一個(gè)對(duì)負(fù)載控制的按鍵,通過此按鍵可以控制加載到BUCK電路的負(fù)載,當(dāng)然板上也安裝了最大1ABUCK電路負(fù)載。

3 同步BUCK的軟件框架結(jié)構(gòu)


在這個(gè)電路中,我們將通過dsPIC33C內(nèi)部DSP運(yùn)行一個(gè)數(shù)字補(bǔ)償器,通過分壓電阻采樣輸出電壓和數(shù)字基準(zhǔn)比較產(chǎn)生誤差,最終計(jì)算的結(jié)果經(jīng)過anti-windup限制范圍后,輸出給片上的PWM模塊去控制BUCK電路的占空比。為了避免給輸出電容充電產(chǎn)生的過充電流,我們添加軟起動(dòng)代碼,通過一個(gè)定時(shí)器實(shí)現(xiàn),同時(shí),我們也會(huì)添加一些保護(hù)代碼,如輸入欠壓UVLO和輸出過壓OVLO,及輸出電壓范圍誤差代碼。按照慣例,我們也通過一個(gè)用定時(shí)器控制的LED來指示軟件的運(yùn)行狀態(tài)。

4 MCC產(chǎn)生配置的部分模塊


5 通過DCLD產(chǎn)生數(shù)字控制器代碼


.基本模塊的MCC代碼構(gòu)建

新建一個(gè)工程,就開始分別進(jìn)行模塊設(shè)置,關(guān)于新建工程的步驟,我們不在此詳述。具體而言,我們通過MCC來建立各個(gè)模塊的代碼,MCC的安裝及使用我們?cè)诖瞬辉斒?,可以參考前述文章?/span>dsPIC33C新建工程及MCC插件說明 ,首先需要做的是設(shè)置一個(gè)滿足各個(gè)外設(shè)及CPU運(yùn)行的時(shí)鐘。

圖6 系統(tǒng)主時(shí)鐘的配置


通過圖6所示的配置參數(shù),將主時(shí)鐘配置為最高主頻100M,對(duì)應(yīng)FOSC為200M,注意此處,我們使用片上內(nèi)部8M的振蕩器FRC為源振蕩器,且不進(jìn)行FRC分頻。

圖7 系統(tǒng)輔助時(shí)鐘的配置


輔助時(shí)鐘按照?qǐng)D7所示,配置為500M,PWM模塊使用,規(guī)格書規(guī)定,如在高精度模式下運(yùn)行PWM,則必須使用500M的時(shí)鐘輸入。


在系統(tǒng)設(shè)置部分,其非關(guān)鍵部分,這里我們不做特別說明。

圖8 定時(shí)器T1的配置


通過如圖8所示的配置,選擇指令時(shí)鐘FOSC/2 100M,我們將定時(shí)器Timer1進(jìn)行適當(dāng)分頻設(shè)為2ms的周期,用于做一些指示燈功能,及啟動(dòng)電路狀態(tài)機(jī),且使能其中斷,在中斷中處理任務(wù)。

圖9 PWM模塊配置1

圖10 PWM模塊配置2

11 PWM模塊配置3

圖12 PWM模塊配置4


通過圖9到圖12進(jìn)行PWM模塊的配置,在本示例中使用PWM1模塊,使能高精度模式,采用500M時(shí)鐘驅(qū)動(dòng)。設(shè)置為互補(bǔ)模式輸出,設(shè)置一定死區(qū),開關(guān)頻率為500k,通過閉環(huán)控制占空比。PWM的觸發(fā)為自觸發(fā),由于需要它觸發(fā)ADC的轉(zhuǎn)換,所以使用了ADCtrigger AADC triggerB這兩個(gè)觸發(fā)信號(hào),信號(hào)A用于觸發(fā)輸入電壓采樣,信號(hào)B用于觸發(fā)輸出電壓采樣。


PWM更新模式設(shè)為改寫占空比后觸發(fā)更新,更新模式為立即更新。

圖13 ADC模塊的配置


我們采用ADC的時(shí)鐘為100M,則按照默認(rèn)設(shè)置ADCcore的轉(zhuǎn)換時(shí)鐘為50M,保持默認(rèn)的采樣時(shí)間設(shè)置。由于需要采樣輸入電壓和輸出電壓,我們根據(jù)硬件連接選擇AN12為輸入電壓采樣,AN13為輸出電壓采樣,且使能AN13中斷,由于優(yōu)先級(jí)問題,當(dāng)AN13中斷服務(wù)程序中AN13的轉(zhuǎn)換結(jié)果得到時(shí),AN12的轉(zhuǎn)換結(jié)果也是完成的。由于AN13的結(jié)果需要參與環(huán)路運(yùn)算,所以我們使能AN13的中斷,當(dāng)AN13的轉(zhuǎn)換結(jié)果完成后觸發(fā)進(jìn)入ADC中斷,去進(jìn)行反饋環(huán)的調(diào)用。

圖14 LED指示設(shè)置


15 RB6設(shè)為指示燈輸出


如圖14所示,在pin manager中設(shè)置RB6為輸出功能,我們?cè)O(shè)置它為用戶指示燈的功能,重新在圖15中的pin Module給它命名。

16 設(shè)置中斷的優(yōu)先級(jí)


定時(shí)器的中斷優(yōu)先級(jí)可以設(shè)的不用太高,此處我們?cè)O(shè)置為1,高于CPU的優(yōu)先級(jí),而AN13中斷需要參與反饋環(huán)調(diào)整,所以將它的優(yōu)先級(jí)設(shè)為較高,此處設(shè)為6,確保AN13結(jié)果出來后能及時(shí)進(jìn)入AN13中斷中執(zhí)行反饋換運(yùn)算。


.DCLD的功能簡(jiǎn)介

17 通過PowerSmart DCLD實(shí)現(xiàn)環(huán)路補(bǔ)償器設(shè)計(jì)


此時(shí)我們已經(jīng)完成了PWMADC的設(shè)置,接下來通過PowerSmart DCLD來設(shè)計(jì)數(shù)字補(bǔ)償器,這是一個(gè)連接通用仿真計(jì)算工具如Matlab或者Simplis等和數(shù)字環(huán)路補(bǔ)償設(shè)計(jì)的工具。

18 DCLD的結(jié)構(gòu)框圖


DCLD的結(jié)構(gòu)框圖,由基本補(bǔ)償器部分,擴(kuò)展功能部分,及API函數(shù)組成,可以實(shí)現(xiàn)dsPIC33F,dsPIC33E, dsPIC33C系列的環(huán)路補(bǔ)償設(shè)計(jì)。

19 DCLD實(shí)現(xiàn)平均電流模式的示例


通過DCLD可以實(shí)現(xiàn)較為復(fù)雜的控制模式,如平均電流模式控制,可以建立兩個(gè)獨(dú)立的控制環(huán)路,電壓環(huán)和電流環(huán),電壓環(huán)輸出作為電流環(huán)的輸入?yún)⒖?,兩個(gè)環(huán)路之間的互聯(lián)由用戶代碼結(jié)合API完成,后續(xù)我們會(huì)介紹。


關(guān)于DCLD的詳細(xì)功能介紹,我們放在后面。


.DCLD參數(shù)配置及補(bǔ)償器設(shè)計(jì)

圖20 DCLD配置位置路徑及連接MPLAB XIDE


由于DCLD是一個(gè)獨(dú)立的設(shè)計(jì)工具,因此在圖20中,我們給出了DCLD配置位置的設(shè)置,通過這個(gè)窗口將DCLD的配置和MPLAB XIDE的工程連接起來,此處給配置命名為Voltage_loop,這個(gè)名稱將自動(dòng)放到代碼中作為變量定義的名稱。

圖21 DCLDMPLAB XIDE工程的連接設(shè)置


通過設(shè)置如圖21的項(xiàng)目工程路徑,我們就將MPLAB XIDE當(dāng)前工程和DCLD的設(shè)置連接了起來,窗口會(huì)顯示如圖20中的綠色打勾。

22 DCLD的配置窗口

圖23 對(duì)DCLD代碼的裁剪


此處我們對(duì)DCLD產(chǎn)生的代碼進(jìn)行一定裁剪,由于我們采用MCC產(chǎn)生的中斷服務(wù)程序去調(diào)用控制環(huán)路,控制環(huán)路本身不需要關(guān)注CPU的背景信息,因此在默認(rèn)設(shè)置上我們將Context Management去掉。

圖24 Context Management優(yōu)化中斷延時(shí)


關(guān)于通過管理不同器件的背景信息,以便優(yōu)化中斷延時(shí)的說明如圖24所示,當(dāng)有存儲(chǔ)背景和恢復(fù)背景需要時(shí),可以通過這個(gè)選項(xiàng)處理。

25 Add Enable/Disable Switch功能


對(duì)使能和去使能的選項(xiàng),當(dāng)增加這個(gè)選項(xiàng)時(shí),會(huì)在NPNZ16b_t中增加一個(gè)控制位status.enable,當(dāng)需要更新控制庫時(shí),需要將這一位置位。當(dāng)清零時(shí),控制代碼就會(huì)被忽略。


我們需要連續(xù)運(yùn)行控制環(huán)路,因此Add Enable/Disable Configuration選項(xiàng)也會(huì)去掉。

26 ADC觸發(fā)位置的精確設(shè)置


當(dāng)需要精確設(shè)置ADC的觸發(fā)位置時(shí),我們可以通過選擇Add ADC Trigger Placement來自動(dòng)設(shè)置在最新的控制輸出位置的50%,同時(shí)通過ADCTriggerAOffsetADCTriggerBOffset去增加偏置量。


由于我們這里采取周期內(nèi)固定的采樣點(diǎn)設(shè)計(jì),所以去掉Add Automatic Placement of Primary ADC Trigger A, Add Automatic Placement of Primary ADC Trigger B這兩個(gè)選項(xiàng)。


這里我們需要用到Anti-windupClamp Control Output MaximumClamp Control Output Minimum對(duì)計(jì)算最大值和最小值進(jìn)行Clamp。

27 Anti-Windup設(shè)置


我們需要用Anti-Windup來控制環(huán)路計(jì)算結(jié)果在一個(gè)定義的范圍內(nèi),一旦超出這個(gè)范圍,控制計(jì)算結(jié)果就會(huì)被Clamp,這就不會(huì)造成在模擬控制中的飽和問題,如圖27描述所示。

28 Andi-Windup對(duì)低頻率范圍的支持


當(dāng)沒有使能Limit Control Loop Output to Positive Numbers時(shí),控制庫是支持-3276832767之間的Q15有符號(hào)數(shù)據(jù)的,而此時(shí)在dsPIC33C高精度模式下,最低能達(dá)到的控制開關(guān)頻率為144k,為了支持更低頻率,我們可以使能這個(gè)選項(xiàng),使得控制庫支持無符號(hào)16位計(jì)算結(jié)果,將計(jì)算結(jié)果擴(kuò)大到0-65535,使得高精度PWM模式下最低的開關(guān)頻率達(dá)到61k。我們現(xiàn)在這個(gè)實(shí)驗(yàn)案例開關(guān)頻率較高,不需要使能這一選項(xiàng)。


此時(shí),我們就可以進(jìn)行濾波器的設(shè)計(jì)了。


.DCLD設(shè)計(jì)數(shù)字補(bǔ)償器

在設(shè)計(jì)控制器零極點(diǎn)之前,我們通過P控制器測(cè)試出功率級(jí)電路的Bode圖。

29 P控制器代碼生成選項(xiàng)


30 反饋增益的設(shè)置


通過對(duì)反饋增益的設(shè)置,我們得到正常的反饋ADC采樣數(shù)字量為2048,對(duì)應(yīng)輸出電壓為Vout 3.3V時(shí)的ADC采樣值2048。

31 典型控制量計(jì)算


設(shè)置PWM模塊的工作頻率為4G(500MHz*8),在500k電源開關(guān)頻率下,自動(dòng)得到周期為8000個(gè)tick,通過系統(tǒng)自帶的計(jì)算器去對(duì)效率進(jìn)行估算,以得到合理的占空比計(jì)算值,如圖32.最終得到計(jì)算的典型控制輸出為3188,如圖29所示。

32 合理占空比計(jì)算

33 產(chǎn)生P控制器代碼


通過菜單中的Export Files可以產(chǎn)生P控制器代碼,用以測(cè)量功率級(jí)Bode圖,如圖34所示。

34 P控制器匯編代碼


35 DCLD目錄中添加代碼


36 DCLD添加代碼


如圖35,36所示,將DCLD的產(chǎn)生的相應(yīng)控制環(huán)代碼添加到當(dāng)前工程目錄中,包括2個(gè)頭文件,1個(gè)C文件,1個(gè)匯編文件。

37 添加頭文件和定義輸入輸出及參考變量


38 添加ADC中斷調(diào)用代碼及控制器初始化代碼


39 添加控制器初始化調(diào)用及中斷服務(wù)程序Handler


控制器的初始化,主要是對(duì)控制器初始化函數(shù)進(jìn)行初始化,并且指定控制器的輸入變量adc_vbuck,輸出目標(biāo)變量PG1DC,及控制參考ref_vbuck。

40 自行Debug驗(yàn)證ADC中斷


經(jīng)測(cè)試,可以看到ADCAN13中斷可以正常進(jìn)入,調(diào)試窗口可以看到輸入電壓的測(cè)量值為0x598。

41 輸入電壓采樣電路


根據(jù)輸入電壓硬件采樣電路,當(dāng)輸入電壓為9.2V時(shí),可以測(cè)試出TP47電壓為1.152V,對(duì)應(yīng)調(diào)試窗口測(cè)試出的數(shù)值0x598,根據(jù)ADC的模擬數(shù)字量基本關(guān)系,不難確定這一點(diǎn)是正確的。

在主程序中添加對(duì)控制器的初始化代碼調(diào)用,并且將相應(yīng)的ADC的中斷服務(wù)程序和TMR1的中斷服務(wù)程序指定給相應(yīng)的中斷Handler。


TMR1的中斷服務(wù)程序如下所示,主要用于處理狀態(tài)指示,欠壓鎖定及軟起動(dòng)功能,此處代碼中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_vin200))

{       // low input voltage OR error for>200ms

start_tmr = 0;

fsm_state = 0;

}

break;

}

}


接下來我們測(cè)試開發(fā)板的P控制器對(duì)應(yīng)的環(huán)路,即功率級(jí)傳遞函數(shù)曲線。

42 滿載時(shí)P控制器測(cè)試功率級(jí)Bode


從測(cè)試出的功率級(jí)Bode圖來看,功率級(jí)LC轉(zhuǎn)折頻率約為5k,ESR零點(diǎn)約為60k,這些信息為設(shè)計(jì)數(shù)字補(bǔ)償器零極點(diǎn)提供參考。

43 空載時(shí)P控制器測(cè)試功率級(jí)Bode


在圖43中,我們同時(shí)給出了空載時(shí)的功率級(jí)Bode圖,可知二階LC極點(diǎn)轉(zhuǎn)折頻率變?yōu)?/span>1k附近,由于負(fù)載阻抗較大,因此Q值很小,可以看到增益曲線沒有出現(xiàn)像滿載一樣的峰值,高頻ESR零點(diǎn)位置還是60k附近。

44 設(shè)計(jì)補(bǔ)償器零極點(diǎn)


根據(jù)P控制器測(cè)試出的功率級(jí)Bode圖,我們找到了相應(yīng)的功率級(jí)零極點(diǎn)大致位置,且根據(jù)前述文章的討論,可以使用3P3Z的數(shù)字補(bǔ)償器,且使用歸一化輸入增益,以便在AB系數(shù)中考慮輸出分壓反饋電阻。參考BUCK電路模擬補(bǔ)償器的數(shù)字化過程,中對(duì)輸入增益歸一化的說明。


此時(shí),我們可以指定相應(yīng)的零極點(diǎn)去得到期望的環(huán)路曲線,這里開關(guān)頻率設(shè)為500k,零頻率極點(diǎn)設(shè)為600Hz,兩個(gè)零點(diǎn)用于抵消LC二階極點(diǎn),分別設(shè)在2k4k,一個(gè)極點(diǎn)用于抵消ESR零點(diǎn)設(shè)在75k,另一個(gè)極點(diǎn)用于衰減高頻分量,設(shè)在低于奈奎斯特頻率的頻率200k,使得奈奎斯特頻率處的分量有一定衰減。

45 調(diào)用電壓環(huán)控制代碼


根據(jù)新輸入的控制器零極點(diǎn),重新產(chǎn)生代碼后,我們?cè)?/span>AN13的中斷服務(wù)程序中調(diào)用電壓環(huán)控制函數(shù),如圖45所示,完成閉環(huán)控制。

46 DCLD產(chǎn)生的數(shù)字補(bǔ)償器系數(shù)


圖46為DCLD所產(chǎn)生的補(bǔ)償器AB系數(shù),及相應(yīng)的Q15格式數(shù)據(jù)。


47 空載時(shí)PWM驅(qū)動(dòng)波形(CH1-PWM1H-CH2-PWM1L)


前述文章,BUCK電路模擬補(bǔ)償器的數(shù)字化過程 ,詳述了通過DCLD產(chǎn)生的數(shù)字補(bǔ)償器AB系數(shù)的過程,后續(xù)我們也會(huì)詳細(xì)分析基于產(chǎn)生的AB系數(shù)結(jié)合數(shù)字補(bǔ)償器,如何在DCLD產(chǎn)生的代碼上執(zhí)行新的控制量計(jì)算。


48 滿載時(shí)開環(huán)增益?zhèn)鬟f函數(shù)Bode


滿載時(shí)的開環(huán)增益?zhèn)鬟f函數(shù)曲線如圖48所示,我們從圖上得知,帶寬為17.7k,相位裕量為50C,增益裕量為17.2db,且低頻段具有較高的積分增益,高頻200k以上以40db/10倍頻衰減,它是一個(gè)非常穩(wěn)定的符合我們期望的環(huán)路曲線。

49 滿載和空載時(shí)開環(huán)增益?zhèn)鬟f函數(shù)Bode


從圖49滿載和空載時(shí)的開環(huán)增益曲線對(duì)比來看,空載時(shí)的穿越頻率略低于滿載時(shí)的穿越頻率,相位裕量略高于滿載時(shí)相位裕量,符合同步BUCK的特性。


總結(jié),本文通過介紹數(shù)字電源開發(fā)板DPSK3的基本結(jié)構(gòu)及基本代碼框架的形成,接著通過MCC去得到基本的開關(guān)電源外設(shè)配置代碼,最后通過DCLD去設(shè)計(jì)數(shù)字補(bǔ)償器設(shè)計(jì),首先由P控制器測(cè)試出功率級(jí)Bode圖,進(jìn)而得到控制器零極點(diǎn),最終本文設(shè)計(jì)了電壓模式BUCK電路的環(huán)路補(bǔ)償器,并且測(cè)試了典型負(fù)載下的環(huán)路Bode圖。


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
關(guān)閉