潛在的固件錯(cuò)誤可能是導(dǎo)致控制不穩(wěn)定的幕后黑手!
本期,我們將聚焦于發(fā)生在 PFC 級(jí)的電流振蕩,通過分析數(shù)字控制環(huán)路,了解潛在錯(cuò)誤出現(xiàn)的原因并展示如何檢查控制固件中是否出現(xiàn)這種不穩(wěn)定性。
本文引用地址:http://cafeforensic.com/article/202412/465366.htm在設(shè)計(jì)諸如升壓功率因數(shù)校正 (PFC) 之類的數(shù)字電源時(shí),您是否見過類似圖 1 中的電流振蕩?
您可能認(rèn)為這種不穩(wěn)定振蕩由過快的控制帶引起,因此您減小比例積分 (PI) 控制器的比例增益 (Kp) 和積分增益 (Ki),并顯著降低交叉頻率。振蕩就會(huì)消失。
但這是最佳解決方案嗎?較低的電流環(huán)路帶寬會(huì)降低控制速度,但您可能會(huì)發(fā)現(xiàn)總諧波失真 (THD) 測試將會(huì)失敗。有時(shí),當(dāng)源阻抗大一些時(shí),振蕩會(huì)再次出現(xiàn)。
這種不穩(wěn)定性是否可能有其他原因?如何以足夠的相位裕度實(shí)現(xiàn)最佳控制帶寬?下面我們來詳細(xì)分析一下數(shù)字控制環(huán)路,從而了解這一潛在的錯(cuò)誤是如何引入的。我們還將向您展示如何檢查控制固件中是否出現(xiàn)這種不穩(wěn)定性。
基于 MCU 的數(shù)字控制
圖 2 展示了基于 MCU 的數(shù)字控制系統(tǒng)。
圖 2. 數(shù)字控制系統(tǒng)圍繞微控制器構(gòu)建而成
控制環(huán)路包含一個(gè)模數(shù)轉(zhuǎn)換器 (ADC) 用于進(jìn)行對(duì)象電流/電壓采樣,一個(gè)數(shù)字控制器用于生成調(diào)整值,以及一個(gè)脈寬調(diào)制器 (PWM) 用于執(zhí)行調(diào)整,可通過更改占空比或頻率來改變目標(biāo)電流/電壓。
開關(guān)模式電源 (SMPS) 中的 ADC 采樣通常位于兩個(gè)開關(guān)周期的中間點(diǎn),這樣不僅可以避免開關(guān)產(chǎn)生的噪聲干擾,還可以獲取連續(xù)導(dǎo)通模式 (CCM) 下功率電感器的平均電流值。
數(shù)字控制器在中斷服務(wù)例程 (ISR) 中進(jìn)行計(jì)算,可以與 PWM 輸出同步觸發(fā)。觸發(fā)事件可以是以下事件之一:PWM 的“COUNTER”等于“ZERO”、“PERIOD”或特定的值“CMP”。
控制器完成所有計(jì)算時(shí)無法立即更新 PWM,但 PWM 寄存器必須在一個(gè)專門時(shí)刻由影子寄存器加載,如 PWM 計(jì)數(shù)器等于“ZERO”或“PERIOD”時(shí)。如果 PWM 值在計(jì)數(shù)器上升或下降過程中發(fā)生變化,則很可能產(chǎn)生錯(cuò)誤的 PWM 動(dòng)作,導(dǎo)致脈沖丟失或脈沖重復(fù)。
與模擬控制系統(tǒng)不同,數(shù)字控制按照采樣頻率來執(zhí)行,并且從采樣到 PWM 重新載入新值必須有一個(gè)延遲時(shí)間 (Td)。PWM 修改通過調(diào)整翻轉(zhuǎn)時(shí)刻來實(shí)現(xiàn),翻轉(zhuǎn)時(shí)刻在單邊沿調(diào)制時(shí)(遞增/遞減模式)發(fā)生一次,在雙邊沿調(diào)制時(shí)(先遞增后遞減模式)發(fā)生兩次。因此,最小 Td 將會(huì)是一個(gè)開關(guān)周期 Ts(如圖 3a 所示),或半個(gè)開關(guān)周期 Ts/2(如圖 3b 所示),具體取決于您選擇的調(diào)制重新加載頻率。
圖 3. 最小延遲時(shí)間通過 PWM 調(diào)整而引入(a) 向上計(jì)數(shù)模式,(b) 上下計(jì)數(shù)模式
如圖 4 所示,Td 在其傳遞函數(shù)中表示為 e-sxTd,這將減少相位裕度。當(dāng)然,當(dāng)相位裕度小于 45 度時(shí),系統(tǒng)將變得不穩(wěn)定,并會(huì)發(fā)生振蕩。
圖 4. 波德圖中顯示了延時(shí)時(shí)間的影響
數(shù)字控制實(shí)現(xiàn)中的潛在代碼錯(cuò)誤
在正確執(zhí)行的情況下,最小 Td 為一個(gè)開關(guān)周期 Ts 或半個(gè)開關(guān)周期 Ts/2。但是,如果未考慮 ADC、ISR 和 PWM 重新加載的后果,則將控制延遲擴(kuò)展到高于一個(gè)開關(guān)周期可能會(huì)減小相位裕度,導(dǎo)致不穩(wěn)定。
例如,在圖 5 中,當(dāng) PWM 計(jì)數(shù)器等于零,ADC 的 ISR 觸發(fā)和 PWM 重新加載會(huì)同時(shí)啟動(dòng)。
盡管所有塊都同時(shí)執(zhí)行,但在這種情況下,您是否可以預(yù)期 Td 為零?當(dāng)然不能!
圖 5. 此處是一個(gè)會(huì)引入較大延遲時(shí)間的錯(cuò)誤代碼示例
這是因?yàn)?ADC 轉(zhuǎn)換和 ISR 計(jì)算所需的時(shí)間遠(yuǎn)超一個(gè) MCU 時(shí)鐘周期,當(dāng) ISR 讀取 ADC 結(jié)果時(shí),ADC 轉(zhuǎn)換仍未完成。因此,ISR 將獲取“舊”采樣值進(jìn)行計(jì)算,而最新值的計(jì)算將延遲到下一個(gè)開關(guān)周期。ISR 計(jì)算完成后,新 PWM 值僅寫入影子寄存器中,隨后將在下一個(gè)開關(guān)周期中重新加載。實(shí)際上,Td 的總控制延遲將為兩個(gè)開關(guān)周期,即 2 x Ts。
除了此處所示的示例之外,其他實(shí)現(xiàn)方案也可能會(huì)引入類似的擴(kuò)展控制延遲,例如,在 ISR 代碼中將 ADC 值讀取放在控制器計(jì)算之后,或者在計(jì)算控制器之前添加 N 周期算法平均值。
如圖 6 所示,在圖 5 的錯(cuò)誤實(shí)現(xiàn)中,如果將 GAIN 交叉頻率設(shè)置在 3kHz 左右,則相位裕度為 41.68 度。此值小于 45 度,并且扼流電流有明顯的振蕩,比如圖 1 的波形,因此您被迫將交叉頻率降至低于 2kHz;然后 iTHD 更差,無法滿足要求。
圖 6. 錯(cuò)誤代碼實(shí)現(xiàn)下的波德圖
設(shè)計(jì)解決方案
此問題可以輕松解決,只需將 ADC 轉(zhuǎn)換移動(dòng)到 COUNTER = PERIOD 的時(shí)刻,并且使 PWM 重新加載在下一個(gè) COUNTER = PERIOD 時(shí)刻發(fā)生,如圖 7 所示。
圖 7. 通過改進(jìn)代碼可減少控制延遲
控制延遲將減少為一個(gè)開關(guān)周期。相位裕度顯著增加,電流振蕩消失,如圖 8 和圖 9 所示。
圖 8. 改進(jìn)代碼后的波德圖
圖 9. 改進(jìn)代碼后的波形
組織有序的控制方案
在數(shù)字實(shí)現(xiàn)中,從 ADC 采樣到 PWM 調(diào)整的控制延遲將減小相位裕度并導(dǎo)致振蕩。解決該問題時(shí),應(yīng)考慮 ADC 采樣、控制器計(jì)算和 PWM 重新加載的后果。組織有序的控制方案可以將延遲盡可能減少到半個(gè)或一個(gè)開關(guān)周期,從而增加相位裕度和環(huán)路帶寬。
評(píng)論