新聞中心

        EEPW首頁 > 電源與新能源 > 設計應用 > 實現數字電源轉換的方法

        實現數字電源轉換的方法

        作者: 時間:2011-12-27 來源:網絡 收藏

        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。如果反復率是500kHz(2μs),那么PID工作量需要消耗一半可用的處理器帶寬,也就是15MIPS。

        用于式降壓式器的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



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 抚州市| 中西区| 嘉禾县| 积石山| 张家川| 苍南县| 峨眉山市| 土默特左旗| 宕昌县| 额济纳旗| 会昌县| 大英县| 炉霍县| 凯里市| 祁东县| 衢州市| 旌德县| 太和县| 家居| 富宁县| 筠连县| 平湖市| 子长县| 祁阳县| 万载县| 西青区| 慈利县| 南通市| 裕民县| 亳州市| 宜良县| 靖州| 洛宁县| 聂荣县| 阿拉善左旗| 蓬安县| 景东| 同仁县| 准格尔旗| 宜都市| 资源县|