7 PID算法
使用PID算法,將實際與期望輸出電壓之間的誤差進行比例、積分和微分計算,然后將這三項合起來,實現對PWM占空比的控制。PID算法可以用于采用電壓和電流模式的控制環路。處理Microchip的DSC不需要DSP技巧(見圖5的代碼列表),控制軟件(圖4)的主要“核心”是PID環路。PID軟件通常很小,但是其執行速度非常快,通常每秒可以反復幾十萬次。這么高的反復率需要PID軟件程序盡可能有效地發揮最佳性能。使用匯編程序是保證“嚴緊代碼”的一種很好的方法。
PID控制環路是定期由ADC進行中斷驅動,任何系統功能都能在“空閑環路”中執行,以便減少PID控制軟件內不必要的工作量。諸如電壓上升/下降、錯誤檢測、前饋計算和通信支持程序功能都是空閑環路可以執行的,其他中斷驅動進程的優先級都必須比PID環路低。
空閑環路在完成系統和外設的初始化任務之后啟動。通常,空閑環路監控溫度,計算“前饋”條件,并檢查故障狀況。SMPS軟件可執行該控制算法,將ADC中斷驅動的PID環路作為其與時間關系最密切的部分。PID軟件不應該使用超過可用處理器大約66%的帶寬,以便計算資源的其余部分能夠分配給空閑環路軟件。
假設以30 MIPS運行PID環路(包括30條指令),執行時間大約為1μs。如果反復率是500 kHz(2μs),那么PID工作量需要消耗一半可用的處理器帶寬,也就是15 MIPS。
用于數字式降壓式轉換器的PID軟件的實例代碼列表:
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
評估板有助于設計人員測試和修改SMPS控制軟件,并理解SMPS的設計原理。在這種情況下,您可以考慮使用Microchip的dsPICDEM SMPS降壓型開發板--卓越的低功耗DC/DC降壓式轉換器來評估DSC器件和控制軟件。該板可通過標準AC/DC 9V,0.75A電源獲得其輸入電源。板上有兩個獨立的降壓式轉換器,演示軟件設置可提供高達+5V和+3.3V的輸出。
?
圖4 控制軟件的結構
這個開發板的輸入電壓范圍為8-14V DC。每個輸出負載應該限制在0.75A,而輸入電源可以通過同軸輸入電源連接器J2或測試夾連接P1和P2提供。該板也可為+5V輸出提供一個動態負載。這個負載是通過1 kHz方波信號驅動的,該信號是由輸出比較模塊產生的。板上動態負載使用一個FET將電阻器負載連接到轉換器對地輸出,實現轉換器激勵,以便可以測量轉換器的動態行為。動態負載的使用可通過跳線模塊和/或軟件由用戶自行選擇。
用戶可以選擇通過跳線設置,像標準降壓式轉換器或同步降壓式轉換器那樣運行開發板。所提供的軟件能夠以電壓控制模式運行該板,也可以進行電流監控。該板也可通過轉換器輸出端的一個檢測電阻器測量電流,而電壓則被放大并送到dsPIC30F2020器件的ADC輸入端。該板還可提供通過ADC輸入可讀取的三個備用可變電阻器。這些“電位器”可用于在原型設計中的模擬所需的信號。
8 結語
通過專用于數字回路控制的新款DSC,電源設計人員可以容易地在他們的設計中加入新的功能和能力。要做到這一點,無需學習復雜的數字信號處理器(DSP)處理技巧,使用熟悉的模擬元件和軟件,設計人員就能夠迅速而經濟地使用DSC開發具有更高智能的電源。
評論
查看更多