計與數(shù)字控制實現(xiàn))
簡介本資源是一份面向本科畢業(yè)設(shè)計與電力電子課程實踐的完整STM32嵌入式電源控制系統(tǒng)方案聚焦DCM模式下BUCK變換器的軟硬件協(xié)同實現(xiàn)解決開關(guān)電源中降壓拓?fù)湓跀嗬m(xù)導(dǎo)通狀態(tài)下的精確控制與穩(wěn)定性優(yōu)化問題。壓縮包共272個文件涵蓋55個C源碼、60個頭文件h、18張原理圖與PCB截圖png、13張實物/波形測試圖jpg、5份PDF技術(shù)文檔及Keil工程配置文件uvprojx/uvoptx等完整呈現(xiàn)從電路設(shè)計、STM32外設(shè)驅(qū)動TIM/ADC/RCC/I2C等、PWM時序控制算法到系統(tǒng)調(diào)試的全流程包體大小為32.68MB。已有72人學(xué)習(xí)下載內(nèi)容包含可直接編譯運(yùn)行的固件hex、任務(wù)調(diào)度框架tasks.c、定時器中斷服務(wù)程序timers.c及電磁兼容性優(yōu)化備注特別適合電力電子方向?qū)W生開展課程設(shè)計、畢設(shè)開發(fā)或嵌入式電源項目復(fù)現(xiàn)。1. 為什么選DCM模式做BUCK而不是CCM1.1 兩種工作模式的核心差異先說結(jié)論DCMDiscontinuous Conduction Mode電感電流斷續(xù)模式和CCMContinuous Conduction Mode電感電流連續(xù)模式之間的選擇本質(zhì)上是在效率、體積、控制復(fù)雜度和負(fù)載能力之間做取舍。CCM模式下電感電流始終大于零開關(guān)管導(dǎo)通期間電感儲能關(guān)斷期間電感釋能整個周期內(nèi)電感電流連續(xù)。這種模式的優(yōu)勢是紋波電流小、效率高適合大電流輸出場景。但代價是電感體積偏大而且環(huán)路補(bǔ)償設(shè)計相對復(fù)雜——因為你至少要面對一個在右半平面存在零點(diǎn)的功率級相位裕度的處理需要格外小心。DCM模式下電感電流在每個開關(guān)周期內(nèi)都會降到零出現(xiàn)一段電流為零的死區(qū)時間。這個特性帶來幾個直接好處電感體積可以顯著縮小因為每個周期能量完全傳遞不需要儲存大量能量環(huán)路補(bǔ)償設(shè)計大幅簡化DCM下功率級近似為單極點(diǎn)系統(tǒng)相位裕度天然充裕用簡單的Type II補(bǔ)償甚至純積分補(bǔ)償就能穩(wěn)定開關(guān)管零電流開通二極管零電流關(guān)斷如果用的是同步整流方案則對應(yīng)MOSFET的零電流開關(guān)特性開關(guān)損耗顯著降低。1.2 什么樣的應(yīng)用場景適合DCM很多人一看到DCM就想到效率低、只能小功率這個觀點(diǎn)并不全面。DCM真正適合的場景有幾個典型特征負(fù)載電流不大通常2A以下輸入輸出電壓差較大導(dǎo)致占空比偏離0.5較多系統(tǒng)對成本和體積敏感需要用小電感、小電容實現(xiàn)緊湊設(shè)計動態(tài)響應(yīng)要求高DCM因為電感電流從零開始上升瞬態(tài)響應(yīng)速度天然比CCM快。我做這個項目時目標(biāo)就是給一套便攜式電池供電設(shè)備做輔助電源。輸入電壓12V輸出5V/1A這個工況下DCM的優(yōu)缺點(diǎn)剛好匹配不需要太大電流體積受限而且后面接的主要是數(shù)字電路對紋波有一定容忍度。1.3 用STM32做控制器到底圖什么既然DCM的功率級特性已經(jīng)簡化了很多為什么還要用STM32而不是直接上常用的PWM控制器芯片答案在于靈活性和可觀測性。普通的BUCK控制芯片比如SG3525、UC3843這類PWM頻率和占空比由外部阻容元件決定一旦硬件定型控制策略就基本鎖死了。如果你想做恒壓、恒流切換或者想加入數(shù)字濾波、軟啟動、過流保護(hù)閾值動態(tài)調(diào)整改動起來非常痛苦。STM32的優(yōu)勢在于PWM輸出頻率和死區(qū)時間可以隨時通過寄存器修改ADC可以實時采樣輸出電壓、輸入電壓、電感電流等參數(shù)數(shù)據(jù)直接進(jìn)MCU做處理可以方便地實現(xiàn)數(shù)字PID、滯環(huán)控制、峰值電流控制等多種算法調(diào)試時修改參數(shù)只改代碼不用動硬件通過串口或CAN把內(nèi)部狀態(tài)變量實時發(fā)出來監(jiān)控和故障定位比純模擬方案方便太多。這個項目的控制目標(biāo)是輸出穩(wěn)定的5V電壓輸入9V到18V變化最大負(fù)載1A。用STM32G431作為主控內(nèi)置的定時器產(chǎn)生PWM驅(qū)動信號ADC采樣輸出電壓做閉環(huán)反饋。硬件上保留了一個關(guān)鍵設(shè)計點(diǎn)用采樣電阻配合運(yùn)放把電感電流信號轉(zhuǎn)換成電壓量送進(jìn)ADC這樣既能做峰值電流保護(hù)也能在調(diào)試時準(zhǔn)確判斷是否真正進(jìn)入了DCM。2. 主電路拓?fù)渑c關(guān)鍵元器件選型2.1 功率級參數(shù)計算的完整過程BUCK變換器的核心設(shè)計就是三個事電感選多大、電容選多大、開關(guān)管和二極管能扛多大壓流。先把DCM模式下的約束條件理清楚。DCM的判斷條件是最小負(fù)載電流時仍然能保證電感電流降到零。換句話說只要電感量小于臨界電感Lcrit系統(tǒng)必然工作在DCM。臨界電感的計算公式Lcrit (1-D) × R_load / (2 × fsw)其中D為穩(wěn)態(tài)占空比R_load為等效負(fù)載電阻fsw為開關(guān)頻率。帶入實際參數(shù)輸入12V輸出5VD5/12≈0.417滿載R_load5Ω開關(guān)頻率取200kHz得到Lcrit (1-0.417) × 5 / (2 × 200000) ≈ 7.3μH電感量取臨界值的1/2到1/3比較穩(wěn)妥考慮到電感公差和飽和特性我選了3.3μH的功率電感。這個值在滿載時仍然能保證DCM同時峰值電流不會高到嚇人。電感峰值電流的計算要分兩步。先求峰值電流I_peak (Vin - Vout) × D × Tsw / L (12-5) × 0.417 / (200000 × 3.3×10^-6) ≈ 4.42A這個電流看起來不小但DCM的特點(diǎn)就是峰值電流大、平均值小。實際選電感時必須按峰值電流留足裕量用飽和電流大于5A的電感否則一旦飽和感值暴跌電流失控管子直接炸。輸出電容根據(jù)輸出電壓紋波要求選。負(fù)載1A期望紋波小于50mV按ESR主導(dǎo)的工程經(jīng)驗估算C_out ≥ I_peak × T_on / (2 × ΔV_out)代入I_peak4.42AT_onD/fsw2.08μsΔV0.05V得到C_out ≥ 92μF。實際選用兩個47μF的陶瓷電容并聯(lián)ESR足夠低實測紋波大約35mV。2.2 開關(guān)管、二極管、電感的具體選型經(jīng)驗選開關(guān)管時我從兩個方向篩選耐壓要覆蓋最大輸入電壓加裕量這里輸入最大18V選40V以上的管子電流能力看峰值電流4.5A的峰值至少選10A額定電流的管子。同時注意柵極電荷Qg要小因為直接由STM32的GPIO通過驅(qū)動芯片驅(qū)動Qg太大拉慢開關(guān)速度會明顯增加開關(guān)損耗。最終選的是NCE6005耐壓60V、額定電流24A、導(dǎo)通電阻21mΩ實際測試滿載時管子溫度大約55°C余量很大。續(xù)流二極管是DCM設(shè)計里容易被忽視的一個點(diǎn)。很多人直接用普通快恢復(fù)二極管但DCM模式下峰值電流大二極管反向恢復(fù)造成的損耗和振鈴不容忽視。我用了肖特基二極管SS54正向壓降0.45V反向恢復(fù)時間幾乎為零。這里有個細(xì)節(jié)SS54的額定電流5A必須貼著峰值電流4.42A的余量來用散熱條件不好時容易發(fā)燙實測需要加一點(diǎn)銅箔散熱否則溫升超70°C。電感方面除了前面算好的3.3μH、飽和電流5A之外還有兩個容易踩的坑一是電感直流電阻DCRDCR越大效率越差選DCR小于30mΩ的產(chǎn)品二是電感自諧振頻率DCM下諧波豐富如果電感的自諧振頻率太低反而會引入額外的EMI問題。我用的是一體成型電感貼片封裝屏蔽性好自諧振頻率在幾十MHz以上。2.3 同步整流還是二極管續(xù)流傳統(tǒng)DCM BUCK用二極管續(xù)流方案簡單、成本低但低壓大電流場景下二極管壓降會吃掉不少效率。5V輸出1A時SS54的0.45V壓降意味著續(xù)流期間有接近0.45W的功率損耗占總輸出功率近9%太可惜了。同步整流方案用低導(dǎo)通電阻的MOSFET替代二極管續(xù)流期間讓下管導(dǎo)通理論上損耗可以降到幾十毫瓦。但代價是控制復(fù)雜度上升——需要精確控制上下管的死區(qū)時間防止直通短路。對于DCM來說同步整流還有一個特殊問題電感電流降到零后下管如果繼續(xù)導(dǎo)通電感電流會反向把能量從輸出端抽回輸入端反而破壞DCM特性并降低效率。所以同步整流的DCM必須在電流過零時刻精確關(guān)斷下管??紤]到項目復(fù)雜度控制和個人精力最終選擇二極管續(xù)流但預(yù)留了同步整流的升級空間PCB上預(yù)留了下管MOSFET的焊盤和配套驅(qū)動電路位置后續(xù)有時間再把方案升級掉。這個決定是經(jīng)過權(quán)衡的——先把主控制環(huán)路跑通再優(yōu)化效率是更合理的工程順序。3. 控制策略與STM32軟件框架設(shè)計3.1 數(shù)字PID的參數(shù)設(shè)計和實現(xiàn)要點(diǎn)DCM模式下BUCK的傳遞函數(shù)近似為單極點(diǎn)系統(tǒng)用數(shù)字PID控制相對容易。我采用的策略是電壓環(huán)PI控制采樣輸出電壓輸出PWM占空比??刂祁l率和開關(guān)頻率的關(guān)系是第一個要明確的點(diǎn)。如果開關(guān)頻率200kHz而ADC采樣和控制計算每個周期都做200kHz的實時控制對STM32來說太吃力也沒有必要。DCM的功率級帶寬通常只有幾kHz控制頻率取10kHz到20kHz就足夠。我的做法是開關(guān)PWM頻率200kHz控制頻率10kHz也就是每20個開關(guān)周期做一次電壓采樣和PID計算。這樣PID的更新速率遠(yuǎn)高于功率級帶寬環(huán)路的相位裕度不會因為數(shù)字控制的延遲而惡化太多。PID參數(shù)整定上我用的是工程上最實用的方法先純P調(diào)逐步增大比例系數(shù)直到輸出電壓出現(xiàn)持續(xù)振蕩然后加入積分項消除穩(wěn)態(tài)誤差積分時間取P振蕩周期的1.5到2倍微分項在DCM下基本不用因為采樣噪聲經(jīng)微分放大反而有害。實際調(diào)出來的參數(shù)Kp0.12Ki0.008Kd0??刂浦芷?00μs。用12位ADC采樣輸出電壓參考電壓3.3V通過電阻分壓把5V映射到ADC量程的合適區(qū)間。數(shù)字PID的實現(xiàn)有幾個容易踩的坑輸出限幅一定要做。PID輸出對應(yīng)的是PWM比較寄存器值不能超過定時器ARR的值否則控制量飽和會造成積分飽和積累恢復(fù)響應(yīng)特別慢。我用積分分離方案誤差過大時暫停積分累加誤差小于閾值再恢復(fù)積分。采樣數(shù)據(jù)的濾波處理。DCM下輸出電壓紋波本身就有幾十毫伏如果直接用ADC原始值做PID控制量會很抖。我加了簡單的滑動平均濾波連續(xù)四次采樣取平均后再進(jìn)PID。這個濾波會引入相位延遲但10kHz控制頻率下延遲約100μs對整個環(huán)路影響可以接受。ADC采樣時刻要選對。感應(yīng)電感電流的ADC采樣不能隨意采要在開關(guān)周期的固定相位上采樣否則不同開關(guān)狀態(tài)下采到的電流值沒有可比性。我這里用定時器的比較中斷來觸發(fā)ADC采樣保證采樣點(diǎn)固定在下管導(dǎo)通期間的中間時刻。3.2 軟啟動的必要性與實現(xiàn)細(xì)節(jié)BUCK變換器直接啟動時輸出電容相當(dāng)于短路到地啟動瞬間的浪涌電流可能達(dá)到正常電流的十倍以上輕則觸發(fā)過流保護(hù)重則燒毀功率管。所以軟啟動不是可選項而是必需品。軟啟動的實現(xiàn)思路很簡單啟動時讓PID的參考電壓從0緩慢爬升到目標(biāo)值5V占空比跟隨輸出慢慢增大輸出電壓平滑上升。具體到STM32的代碼實現(xiàn)我用一個軟啟動定時器每1ms把參考電壓增加一個步進(jìn)約20ms完成啟動。軟啟動時間的選擇有講究太短起不到限制浪涌的作用太長會讓輸出電壓建立時間過慢如果后面的負(fù)載對供電時序有要求可能出問題。20ms是一個比較均衡的值實測啟動電流被限制在正常工作電流的1.5倍以內(nèi)。另一個值得注意的點(diǎn)軟啟動期間PID的輸出限幅值也要同步調(diào)小。如果比例限幅直接給到最大值啟動初期參考電壓很小但誤差很大PID輸出會瞬間飽和占空比直接拉滿軟啟動就形同虛設(shè)了。我的做法是把輸出限幅值也按時間線性從0升到最大值和參考電壓的爬升同步。3.3 過流保護(hù)、過壓保護(hù)與異常處理數(shù)字控制的優(yōu)勢之一就是保護(hù)策略可以做得非常細(xì)膩。我在這個項目里做了三級保護(hù)第一級是軟件過流保護(hù)。通過采樣電阻實時監(jiān)測電感電流如果檢測到電流超過設(shè)定閾值這里設(shè)4.8A立即封鎖PWM輸出同時進(jìn)入故障鎖定狀態(tài)。必須手動復(fù)位或者通過串口發(fā)送清除命令才能恢復(fù)。這里強(qiáng)調(diào)的是直接封鎖PWM而不是試圖靠PID回調(diào)占空比——過流情況下PID的反應(yīng)時間根本不夠快硬件級的封鎖才是保命手段。第二級是逐周期限流。DCM下電感電流在每個周期都從零開始如果上一周期電流過大這一周期可以降低占空比甚至跳過開關(guān)周期。STM32的PWM模塊可以配置為在外部比較器觸發(fā)時立即關(guān)斷輸出這個特性可以在硬件層面實現(xiàn)逐周期限流。我在本項目里用內(nèi)部模擬比較器把采樣電阻電壓和DAC設(shè)定的閾值電壓做比較觸發(fā)后直接關(guān)斷PWM。這個功能是靠STM32內(nèi)部的比較器和定時器聯(lián)動實現(xiàn)的不需要額外芯片非常實用。第三級是輸出過壓保護(hù)。如果反饋采樣分壓電阻虛焊或者ADC故障導(dǎo)致調(diào)節(jié)失控輸出電壓可能飆升。我在軟件里監(jiān)視輸出電壓超過5.5V時立即關(guān)閉PWM。異常處理方面還有兩個細(xì)節(jié)一是ADC自檢上電時先讀一次參考電壓通道如果偏差超過5%判定ADC基準(zhǔn)異常拒絕啟動二是看門狗喂狗邏輯必須在主循環(huán)里周期性喂狗一旦程序跑飛或卡死看門狗復(fù)位后進(jìn)入安全狀態(tài)PWM默認(rèn)不輸出。4. STM32的PWM產(chǎn)生與ADC采樣工程實現(xiàn)4.1 定時器配置PWM互補(bǔ)輸出與死區(qū)設(shè)置STM32系列的定時器能力非常強(qiáng)我這個項目用的G431高級定時器TIM1和TIM8都能產(chǎn)生帶死區(qū)控制的互補(bǔ)PWM。雖然二極管續(xù)流方案只需要一個PWM通道但我還是配置了互補(bǔ)輸出因為后續(xù)升級同步整流時直接就能用。定時器配置的核心參數(shù)時鐘源內(nèi)部時鐘經(jīng)過PLL倍頻后定時器時鐘跑到168MHzPWM頻率200kHz對應(yīng)周期5μs。ARR寄存器值設(shè)為840即168MHz/200kHz840參考電壓3.3V12位ADC采樣電阻放大后的電壓范圍0到3.3V輸出極性高電平有效上管PWM在上管導(dǎo)通期間為高電平死區(qū)時間給上管和下管之間插入120ns死區(qū)。雖然二極管續(xù)流方案沒有下管但死區(qū)時間的存在是為了將來切換同步整流時可以直接復(fù)用配置不需要重新調(diào)。這里的200kHz是我綜合考量后的折中值頻率高則電感可以更小但注意不要觸發(fā)開關(guān)損耗和非理想效應(yīng)的急劇上升頻率低則電感變大動態(tài)響應(yīng)變差。200kHz下MOSFET的開關(guān)損耗仍可控電感體積適中是比較均衡的起點(diǎn)。4.2 ADC多通道采樣與DMA傳輸輸出電壓、輸入電壓、電感電流這三個模擬量需要實時采集。如果用查詢方式逐個讀取ADCCPU會被占用很多時間尤其是在控制頻率已經(jīng)達(dá)到10kHz的情況下。更優(yōu)雅的方案是用ADC的多通道掃描配合DMA傳輸。具體配置ADC1開啟三個通道IN0采樣輸出電壓IN1采樣輸入電壓IN2采樣電感電流工作模式掃描模式、連續(xù)轉(zhuǎn)換模式DMA設(shè)置為循環(huán)模式三個轉(zhuǎn)換結(jié)果連續(xù)寫入內(nèi)存緩沖區(qū)每次DMA傳輸完成觸發(fā)中斷在中斷里讀取最新一組數(shù)據(jù)。有一個細(xì)節(jié)DMA緩沖區(qū)的數(shù)據(jù)是不斷被覆蓋的讀取時必須確保讀到的三個通道數(shù)據(jù)來自同一次掃描周期。我用的方案是讓DMA緩沖區(qū)大小為3每次轉(zhuǎn)換完一組就觸發(fā)傳輸完成中斷保證讀到的是完整的一組數(shù)據(jù)。ADC采樣時間的設(shè)置也不能忽視。輸入阻抗和采樣電容的匹配決定了采樣精度如果采樣時間太短采樣電容沒充滿就開始轉(zhuǎn)換結(jié)果會偏小。我設(shè)置采樣時間為15個ADC時鐘周期即約1μs配合低輸出阻抗的運(yùn)放驅(qū)動實測精度在±2個LSB以內(nèi)完全滿足控制需求。4.3 中斷優(yōu)先級設(shè)計的優(yōu)先級思考這個項目里有幾個中斷源DMA傳輸完成中斷控制周期核心、定時器更新中斷用于軟啟動計時、串口接收中斷用于調(diào)試、外部故障中斷。如果中斷優(yōu)先級設(shè)置不合理就會出現(xiàn)控制周期被其他中斷搶占的問題嚴(yán)重時導(dǎo)致PWM輸出抖動。我最終設(shè)置的優(yōu)先級從高到低為硬件過流觸發(fā)的外部中斷最高優(yōu)先級這個必須比任何中斷都高DMA傳輸完成中斷其次因為它是控制周期的核心延遲會導(dǎo)致控制滯后定時器更新中斷用于軟啟動計時和狀態(tài)機(jī)切換可以稍微讓位串口中斷最低優(yōu)先級調(diào)試數(shù)據(jù)晚幾個毫秒無所謂。串口調(diào)試數(shù)據(jù)我放在主循環(huán)里周期性發(fā)送不依賴串口中斷進(jìn)一步降低中斷嵌套復(fù)雜度。這樣做的好處是即使串口數(shù)據(jù)發(fā)送被高優(yōu)先級中斷打斷也不會影響控制實時性。5. 調(diào)試過程與實測結(jié)果分析5.1 開環(huán)調(diào)試驗證功率級與驅(qū)動信號閉環(huán)調(diào)試之前必須先做開環(huán)驗證。這一步非常重要能幫助區(qū)分是功率級問題還是控制環(huán)路問題。具體步驟燒錄一個固定占空比的PWM輸出程序占空比設(shè)為0.25輸入接12V電源輸出接一個10Ω的假負(fù)載用示波器觀察輸出電壓波形和電感電流波形。我第一次上電就發(fā)現(xiàn)了一個問題PWM波形輸出正常但電感電流波形在高點(diǎn)處有一個明顯的振鈴。經(jīng)排查是驅(qū)動電阻和MOSFET柵極電容形成的LC諧振在開關(guān)邊沿產(chǎn)生了振蕩。解決辦法是在驅(qū)動回路上串聯(lián)一個22Ω的柵極電阻同時把驅(qū)動回路的環(huán)路面積縮小振鈴明顯衰減。開環(huán)測試還順帶確認(rèn)了一個重要參數(shù)實際占空比對應(yīng)的輸出電壓和理論值是否一致。12V輸入、0.25占空比理論上輸出應(yīng)為3V實測3.05V偏差來自MOSFET導(dǎo)通壓降和二極管壓降在合理范圍內(nèi)。5.2 閉環(huán)調(diào)試從小Kp到穩(wěn)定運(yùn)行的完整過程開環(huán)正常之后開始閉環(huán)調(diào)試。我做了一個實時可調(diào)參數(shù)的上位機(jī)通過串口直接修改Kp、Ki和參考電壓這樣省去了反復(fù)燒錄程序的麻煩。強(qiáng)烈建議調(diào)試BUCK時用這種方式效率高很多。從Kp0.02開始加輸出電壓慢慢接近目標(biāo)但穩(wěn)態(tài)誤差明顯逐漸加大Kp到0.1左右輸出電壓趨近5V但仍有約50mV的穩(wěn)態(tài)偏差加入積分項Ki0.008穩(wěn)態(tài)誤差消除電壓穩(wěn)定在4.98V。再繼續(xù)加大Kp到0.15以上輸出電壓開始出現(xiàn)低頻振蕩說明相位裕度不足了退回Kp0.12穩(wěn)定裕度足夠。實測數(shù)據(jù)匯總負(fù)載電流輸出電壓輸出紋波效率0.1A4.98V28mV74%0.5A4.97V32mV82%1.0A4.96V38mV85%輕載效率偏低是DCM的典型特征——開關(guān)損耗幾乎是固定的負(fù)載越小占比越高。有意思的是DCM在輕載時依然能保持穩(wěn)定這是它比CCM更適合輕載應(yīng)用的關(guān)鍵原因之一。5.3 負(fù)載突變下的動態(tài)響應(yīng)測試用電子負(fù)載做動態(tài)測試負(fù)載從0.1A突加到1A再用示波器捕捉輸出電壓波形。實測欠沖電壓約180mV恢復(fù)時間約80μs。這個表現(xiàn)中規(guī)中矩但有一個意外發(fā)現(xiàn)負(fù)載突增瞬間電感進(jìn)入CCM狀態(tài)約幾十微秒之后又重新回到DCM。這說明DCM和CCM之間是平滑過渡的不是硬切換。這個現(xiàn)象其實很重要它說明系統(tǒng)的穩(wěn)定性邊界在于CCM和DCM兩種工作模式之間的切換過程。如果控制環(huán)路在DCM下設(shè)計得很保守而切換瞬間環(huán)路增益變化太大可能會出現(xiàn)短時振蕩。我實際觀察了一百多次切換沒有看到明顯的振蕩說明PI參數(shù)在兩種模式下都有足夠的穩(wěn)定性余量。5.4 效率、紋波、溫度的進(jìn)一步考察最后我把系統(tǒng)持續(xù)運(yùn)行了一小時用熱成像儀觀察各器件的溫升。MOSFET約55°C肖特基二極管約70°C電感約50°CSTM32核心溫度不到45°C。二極管是最熱的部分這是二極管續(xù)流方案的天生劣勢。紋波方面雖然38mV低于設(shè)計目標(biāo)但觀察頻譜后發(fā)現(xiàn)開關(guān)頻率200kHz的基頻分量很突出而且還有約5MHz的高頻振鈴成分。我用了一個小型LC濾波器1μH電感10μF電容做后級濾波5MHz以上的高頻噪聲衰減明顯輸出紋波降到約20mV。如果你的后端對紋波敏感可以考慮加這個后級濾波。6. 經(jīng)驗總結(jié)與后續(xù)可擴(kuò)展方向這個項目從零到跑通大約花了三周時間中間走了不少彎路也有幾個值得分享的經(jīng)驗沉淀。第一DCM BUCK最容易忽略的問題不是參數(shù)計算而是PCB布局。功率回路輸入電容—MOSFET—電感—輸出電容—地的環(huán)路面積直接影響開關(guān)振鈴和EMI。我第一版PCB走線比較隨意振鈴幅度快趕上開關(guān)幅度了后來把功率回路改成輸入電容緊貼MOSFET、輸出電容緊貼電感的布局振鈴立刻降下來了。做電源設(shè)計布局比原理圖更需要投入精力。第二采樣電路的抗干擾設(shè)計絕不能省。初始版本我把電流采樣運(yùn)放放在功率回路旁邊采樣波形被開關(guān)噪聲污染得非常厲害ADC讀數(shù)根本沒法用。后來把采樣電阻調(diào)整到電感前端、運(yùn)放供電單獨(dú)加RC濾波、采樣輸出線走差分線結(jié)構(gòu)才獲得干凈的信號。如果你調(diào)數(shù)字電源老是覺得代碼沒問題但波形不對大概率是模擬信號被干擾了。第三數(shù)字控制器的調(diào)試經(jīng)驗先在開環(huán)下確認(rèn)功率級正確再閉環(huán)參數(shù)從純P開始逐步加I別指望一次算出完美的PID參數(shù)。DCM是單極點(diǎn)系統(tǒng)PID的穩(wěn)定性邊界非常寬松理論上隨便給一組參數(shù)都能穩(wěn)定但要壓住動態(tài)響應(yīng)和噪聲還是需要細(xì)心整定。第四STM32這個平臺的開發(fā)效率確實高。從PWM生成、ADC采樣到DMA傳輸幾乎所有環(huán)節(jié)都有現(xiàn)成的庫函數(shù)和例程特別是G系列的性能比F1系列強(qiáng)不少跑10kHz的控制周期毫無壓力。唯一的坑是初始化時容易漏掉某個外設(shè)的時鐘使能導(dǎo)致功能不工作排查時先檢查RCC配置。后續(xù)的擴(kuò)展方向我列幾個思路同步整流改造換成兩個MOSFET的同步整流方案效率預(yù)計能提升幾個百分點(diǎn)。需要引入電感電流的精確過零檢測以及更精細(xì)的死區(qū)控制峰值電流模式控制在現(xiàn)有峰值電流檢測的基礎(chǔ)上把控制策略從電壓模式換成峰值電流模式可以改善動態(tài)響應(yīng)但對噪聲更敏感需要更完善的濾波通過STM32的USB或WiFi模塊把輸出電壓、電流、效率等數(shù)據(jù)實時上傳到上位機(jī)或云端做成一個可遠(yuǎn)程監(jiān)控的智能電源模塊可以作為項目展示或產(chǎn)品原型。在DCM模式下做BUCK最吸引人的地方在于只要物理參數(shù)選對控制邏輯本身并不復(fù)雜STM32的算力綽綽有余你可以把更大部分的精力放在系統(tǒng)級功能設(shè)計上而不是陷入復(fù)雜的環(huán)路補(bǔ)償計算里。這種把復(fù)雜留給硬件、把靈活留給軟件的思路正是數(shù)字電源相比于傳統(tǒng)模擬電源最值得玩味的地方。本文還有配套的精品資源點(diǎn)擊獲取