7 PID算法
使用PID算法,將實(shí)際與期望輸出電壓之間的誤差進(jìn)行比例、積分和微分計(jì)算,然后將這三項(xiàng)合起來,實(shí)現(xiàn)對(duì)PWM占空比的控制。PID算法可以用于采用電壓和電流模式的控制環(huán)路。處理Microchip的DSC不需要DSP技巧(見圖5的代碼列表),控制軟件(圖4)的主要“核心”是PID環(huán)路。PID軟件通常很小,但是其執(zhí)行速度非??欤ǔC棵肟梢苑磸?fù)幾十萬次。這么高的反復(fù)率需要PID軟件程序盡可能有效地發(fā)揮最佳性能。使用匯編程序是保證“嚴(yán)緊代碼”的一種很好的方法。
PID控制環(huán)路是定期由ADC進(jìn)行中斷驅(qū)動(dòng),任何系統(tǒng)功能都能在“空閑環(huán)路”中執(zhí)行,以便減少PID控制軟件內(nèi)不必要的工作量。諸如電壓上升/下降、錯(cuò)誤檢測、前饋計(jì)算和通信支持程序功能都是空閑環(huán)路可以執(zhí)行的,其他中斷驅(qū)動(dòng)進(jìn)程的優(yōu)先級(jí)都必須比PID環(huán)路低。
空閑環(huán)路在完成系統(tǒng)和外設(shè)的初始化任務(wù)之后啟動(dòng)。通常,空閑環(huán)路監(jiān)控溫度,計(jì)算“前饋”條件,并檢查故障狀況。SMPS軟件可執(zhí)行該控制算法,將ADC中斷驅(qū)動(dòng)的PID環(huán)路作為其與時(shí)間關(guān)系最密切的部分。PID軟件不應(yīng)該使用超過可用處理器大約66%的帶寬,以便計(jì)算資源的其余部分能夠分配給空閑環(huán)路軟件。
假設(shè)以30 MIPS運(yùn)行PID環(huán)路(包括30條指令),執(zhí)行時(shí)間大約為1μs。如果反復(fù)率是500 kHz(2μs),那么PID工作量需要消耗一半可用的處理器帶寬,也就是15 MIPS。
用于數(shù)字式降壓式轉(zhuǎn)換器的PID軟件的實(shí)例代碼列表:
CALCULATE_PID:
push.s????? ; Save SR and W0-W3
bclr.b? IFS0+1, #3?? ; Clr IRQ flag in interrupt controller
#PID_REG_BASE, w8? ; Init pointer to PID register block
mov??? #PID_GAIN_REG_BASE, w10? ; Init pointer to PID gain register block
mov??? ADBUF1, w0??? ; Read ADC to get voltage measurement
mov??? COMMANDED_VOLTAGE, w1?? ; Get commanded output voltage
sub???? w1, w0, w0?? ; W0 = proportional voltage error
mov??? PROPORTIONAL_Error, w1? ; Get previous voltage error
sub???? w0, w1, w2?? ; diff error = new verr - old verr
mov??? w0, PROPORTIONAL_ERROR? ; Store New Proportional Voltage Error
mov??? w0, PREINTEGRAL_TERM? ; Store copy PERR? as pre integral term
mov??? w2, DERIVATIVE_ERROR? ; Store new Derivative Error
;?? These registers are reserved for PID calculations
;??? w6, w7?? = contains data for MAC operations
;??? w8, w10 = pointers to error terms, and gain coefficients
SUM_PID_TERMS:
clr????? A, [w8]+=2, w6, [w10]+=2, w7? ; clr A, prefetch w6, w7
mac??? w6*w7, A, [w8]+=2, w6, [w10]+=2, w7 ; MAC proportional term and gain
mac??? w6*w7, A, [w8]+=2, w6, [w10]+=2, w7 ; MAC derivative term and gain
mac??? w6*w7, B, [w8]+=2, w6, [w10]+=2, w7 ; Update Integrator
add??? ACCA??? ; Add ACCB (Integrator)? to ACCA
sftac?? A, -#8??? ; scale accumulator (shift)
mov??? ACCAH,w0?? ; Read MSW of acca (result)
btst?? ACCAU,#7?? ; Check sign bit of ACCA
bra??? z, Output_PWM? ; Branch if acca PWM value is positive
clr???? w0??? ; Clear negative PWM values
OUTPUT_PWM:
mov??? w0,? DC1?? ; Output new duty cycle value
pop.s???? ; Restore SR, w0-w3
retfie???? ; Return from Interrupt
評(píng)估板有助于設(shè)計(jì)人員測試和修改SMPS控制軟件,并理解SMPS的設(shè)計(jì)原理。在這種情況下,您可以考慮使用Microchip的dsPICDEM SMPS降壓型開發(fā)板--卓越的低功耗DC/DC降壓式轉(zhuǎn)換器來評(píng)估DSC器件和控制軟件。該板可通過標(biāo)準(zhǔn)AC/DC 9V,0.75A電源獲得其輸入電源。板上有兩個(gè)獨(dú)立的降壓式轉(zhuǎn)換器,演示軟件設(shè)置可提供高達(dá)+5V和+3.3V的輸出。
?
圖4 控制軟件的結(jié)構(gòu)
這個(gè)開發(fā)板的輸入電壓范圍為8-14V DC。每個(gè)輸出負(fù)載應(yīng)該限制在0.75A,而輸入電源可以通過同軸輸入電源連接器J2或測試夾連接P1和P2提供。該板也可為+5V輸出提供一個(gè)動(dòng)態(tài)負(fù)載。這個(gè)負(fù)載是通過1 kHz方波信號(hào)驅(qū)動(dòng)的,該信號(hào)是由輸出比較模塊產(chǎn)生的。板上動(dòng)態(tài)負(fù)載使用一個(gè)FET將電阻器負(fù)載連接到轉(zhuǎn)換器對(duì)地輸出,實(shí)現(xiàn)轉(zhuǎn)換器激勵(lì),以便可以測量轉(zhuǎn)換器的動(dòng)態(tài)行為。動(dòng)態(tài)負(fù)載的使用可通過跳線模塊和/或軟件由用戶自行選擇。
用戶可以選擇通過跳線設(shè)置,像標(biāo)準(zhǔn)降壓式轉(zhuǎn)換器或同步降壓式轉(zhuǎn)換器那樣運(yùn)行開發(fā)板。所提供的軟件能夠以電壓控制模式運(yùn)行該板,也可以進(jìn)行電流監(jiān)控。該板也可通過轉(zhuǎn)換器輸出端的一個(gè)檢測電阻器測量電流,而電壓則被放大并送到dsPIC30F2020器件的ADC輸入端。該板還可提供通過ADC輸入可讀取的三個(gè)備用可變電阻器。這些“電位器”可用于在原型設(shè)計(jì)中的模擬所需的信號(hào)。
8 結(jié)語
通過專用于數(shù)字回路控制的新款DSC,電源設(shè)計(jì)人員可以容易地在他們的設(shè)計(jì)中加入新的功能和能力。要做到這一點(diǎn),無需學(xué)習(xí)復(fù)雜的數(shù)字信號(hào)處理器(DSP)處理技巧,使用熟悉的模擬元件和軟件,設(shè)計(jì)人員就能夠迅速而經(jīng)濟(jì)地使用DSC開發(fā)具有更高智能的電源。
評(píng)論
查看更多