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