關(guān)模型,避開(kāi)仿真陷阱)
簡(jiǎn)介一份圍繞Buck變換器建模與仿真的技術(shù)文檔面向電力電子方向?qū)W生與工程師系統(tǒng)講解單電壓環(huán)Buck變換器的建模、控制與驗(yàn)證方法。文檔從主電路與控制電路兩方面建模介紹了狀態(tài)空間平均法與開(kāi)關(guān)元件平均法的基本思路并采用小信號(hào)分析法推導(dǎo)占空比對(duì)輸出電壓的傳遞函數(shù)、音頻敏感傳遞函數(shù)及輸出阻抗傳遞函數(shù)給出關(guān)鍵設(shè)計(jì)公式與參數(shù)。根據(jù)傳遞函數(shù)設(shè)計(jì)Type-3型PI控制器通過(guò)伯德圖校正使系統(tǒng)滿足相位裕度65°、穿越頻率2kHz的設(shè)計(jì)要求。仿真環(huán)節(jié)基于LTspice搭建完整電路加入軟啟動(dòng)、限流、鉗位及負(fù)載切入切出工況驗(yàn)證了輸出電壓在擾動(dòng)后能穩(wěn)定恢復(fù)至目標(biāo)值并給出詳細(xì)仿真波形與參數(shù)說(shuō)明。資源包為單個(gè)docx文件大小708KB內(nèi)容結(jié)構(gòu)清晰含電路圖、伯德圖與仿真結(jié)果便于閱讀和打印。目前已有147人學(xué)習(xí)下載適合需要系統(tǒng)掌握Buck變換器閉環(huán)設(shè)計(jì)流程的學(xué)習(xí)者參考。1. Buck變換器的建模與仿真為什么仿真圖很漂亮實(shí)物一上電就炸做電源設(shè)計(jì)的人大概率經(jīng)歷過(guò)這種場(chǎng)面仿真模型里波形干凈利落紋波 10mV 以內(nèi)效率 95% 以上一切都完美得讓人安心。等 PCB 打樣回來(lái)一上電要么電感嘯叫要么 MOS 管發(fā)燙要么輸出紋波大得示波器都不敢看。這時(shí)候回頭看那個(gè)漂亮的仿真圖心里只有一句話模型騙了我。Buck 變換器的建模與仿真本質(zhì)上就是解決這個(gè)信任問(wèn)題——你建的模型到底能不能代表真實(shí)電路仿真結(jié)果到底能不能指導(dǎo)你改參數(shù)、換器件、調(diào)環(huán)路。這篇文章我打算把 Buck 從數(shù)學(xué)方程到 Simulink/LTspice 落地的完整路徑講清楚包括平均模型和開(kāi)關(guān)模型的適用邊界、寄生參數(shù)的設(shè)置方法、環(huán)路仿真的操作步驟以及那些讓模型翻車(chē)的經(jīng)典坑。適合正在做電源設(shè)計(jì)、參加電賽或者剛接觸 DC-DC 仿真、想用數(shù)學(xué)建模思路把電路算明白的工程師和學(xué)生。讀完你能照著建出一個(gè)能用的 Buck 模型并且知道怎么驗(yàn)證它可信。2. 建模先立方程Buck 的開(kāi)關(guān)狀態(tài)、狀態(tài)空間與平均模型2.1 電感兩種狀態(tài)下的電壓方程建模的出發(fā)點(diǎn)Buck 變換器建模的第一步不是打開(kāi)仿真軟件而是先把電路方程寫(xiě)出來(lái)。Buck 拓?fù)渲挥袃蓚€(gè)開(kāi)關(guān)狀態(tài)開(kāi)關(guān)管導(dǎo)通和開(kāi)關(guān)管關(guān)斷。連續(xù)導(dǎo)通模式CCM下開(kāi)關(guān)管導(dǎo)通時(shí)電感兩端電壓為 Vin - Vout電感電流線性上升開(kāi)關(guān)管關(guān)斷時(shí)續(xù)流二極管導(dǎo)通電感兩端電壓為 -Vout電感電流線性下降。這兩個(gè)狀態(tài)對(duì)應(yīng)的微分方程是導(dǎo)通期間0 t D·Tsw[ L \frac{di_L}{dt} V_{in} - V_{out} ]關(guān)斷期間D·Tsw t Tsw[ L \frac{di_L}{dt} -V_{out} ]這就是 Buck 建模的地基。后面不管是手算、寫(xiě)腳本還是搭 Simulink 模型本質(zhì)上都是這兩個(gè)方程在不同條件下的組合和演化。很多人建模翻車(chē)不是因?yàn)檐浖僮鞑皇焓且驗(yàn)橐婚_(kāi)始就沒(méi)有把什么狀態(tài)下電感到底承受多大電壓這件事想清楚。建議你無(wú)論用什么工具先把這兩個(gè)方程寫(xiě)在紙上參數(shù)標(biāo)好再動(dòng)手建模。2.2 狀態(tài)空間平均法為什么環(huán)路設(shè)計(jì)必須用它開(kāi)關(guān)模型雖然真實(shí)但對(duì)于控制環(huán)路設(shè)計(jì)來(lái)說(shuō)太復(fù)雜——每幾十納秒切換一次狀態(tài)仿真步長(zhǎng)被壓到皮秒級(jí)一次參數(shù)掃描要跑幾個(gè)小時(shí)。狀態(tài)空間平均法就是為解決這個(gè)問(wèn)題提出的將一個(gè)開(kāi)關(guān)周期內(nèi)的兩個(gè)或多個(gè)狀態(tài)按照占空比加權(quán)平均得到一個(gè)連續(xù)的系統(tǒng)方程。Buck 在 CCM 下的平均模型是[ L \frac{d\langle i_L \rangle}{dt} D \cdot V_{in} - \langle v_{out} \rangle ][ C \frac{d\langle v_{out} \rangle}{dt} \langle i_L \rangle - \frac{\langle v_{out} \rangle}{R} ]注意這里的尖括號(hào)表示一個(gè)開(kāi)關(guān)周期內(nèi)的平均值。這個(gè)模型忽略了個(gè)別周期內(nèi)的開(kāi)關(guān)紋波但保留了輸入輸出關(guān)系和占空比到輸出的傳遞函數(shù)特性。對(duì)于設(shè)計(jì) PID 參數(shù)、補(bǔ)償網(wǎng)絡(luò)、分析環(huán)路穩(wěn)定性這個(gè)模型是理論起點(diǎn)。我自己做環(huán)路設(shè)計(jì)的時(shí)候從來(lái)不在開(kāi)關(guān)模型上直接調(diào) PID先用平均模型把穿越頻率和相位裕度定下來(lái)再帶到開(kāi)關(guān)模型里去驗(yàn)證。2.3 平均模型與開(kāi)關(guān)模型的適用邊界兩個(gè)模型沒(méi)有好壞之分只有用途不同。這里給出一張對(duì)比表覆蓋絕大多數(shù)設(shè)計(jì)場(chǎng)景的選型需求比較維度平均模型狀態(tài)空間平均開(kāi)關(guān)模型詳細(xì)時(shí)域仿真仿真速度快微秒級(jí)仿真秒出慢受開(kāi)關(guān)頻率限制步長(zhǎng)紋波信息無(wú)紋波被平均掉了有可看電感電流紋波和輸出紋波環(huán)路設(shè)計(jì)適合可直接線性化得 Bode 圖不適合非線性太強(qiáng)損耗評(píng)估不適用可用配合器件模型算導(dǎo)通/開(kāi)關(guān)損耗瞬態(tài)響應(yīng)大信號(hào)瞬態(tài)可用更準(zhǔn)確包含開(kāi)關(guān)過(guò)程影響復(fù)雜度低公式 積分器即可實(shí)現(xiàn)高需要完整器件模型和寄生參數(shù)選擇原則就一條問(wèn)自己下一步要干什么。算補(bǔ)償網(wǎng)絡(luò)參數(shù)用平均模型看紋波和損耗用開(kāi)關(guān)模型兩者本來(lái)就是互補(bǔ)關(guān)系不是一個(gè)替代另一個(gè)。熟練的工程師通常先搭開(kāi)關(guān)模型驗(yàn)證拓?fù)浜蛥?shù)再基于同一參數(shù)搭平均模型做環(huán)路設(shè)計(jì)最后回到開(kāi)關(guān)模型做整體確認(rèn)。這個(gè)流程才是最穩(wěn)妥的工作方式。3. 最小可跑系統(tǒng)在 Simulink 和 MATLAB 腳本中搭出第一個(gè) Buck3.1 器件選型與參數(shù)計(jì)算的先行步驟建模之前先把主電路參數(shù)定下來(lái)。用一個(gè)常見(jiàn)的規(guī)格輸入 12V輸出 5V開(kāi)關(guān)頻率 100kHz負(fù)載電阻 2.5Ω輸出電流 2A。先計(jì)算占空比和電感電容的基準(zhǔn)值[ D \frac{V_{out}}{V_{in}} \frac{5}{12} \approx 0.4167 ][ L_{min} \frac{(V_{in} - V_{out}) \cdot D}{2 \cdot \Delta I_L \cdot f_{sw}} ]取電感電流紋波為輸出電流的 30%即 (\Delta I_L 0.6A)[ L_{min} \frac{(12 - 5) \times 0.4167}{2 \times 0.6 \times 100000} \approx 24.3 \mu H ]實(shí)際取標(biāo)稱值 33μH。輸出電容按電壓紋波 50mV 估算用 ESR 主導(dǎo)的公式[ C \frac{\Delta I_L}{8 \cdot f_{sw} \cdot \Delta V_{out}} \frac{0.6}{8 \times 100000 \times 0.05} 15 \mu F ]取 22μF 陶瓷電容ESR 按 5mΩ 估算。這些數(shù)值是仿真的基準(zhǔn)參數(shù)后面調(diào)整環(huán)路和寄生參數(shù)時(shí)都要回到這些數(shù)值上來(lái)。記住先手算后仿真仿真結(jié)果才有判斷依據(jù)。3.2 用 MATLAB 腳本實(shí)現(xiàn) Buck 的數(shù)值求解一個(gè)能跑的最小代碼不依賴 Simulink用 MATLAB 腳本直接對(duì)狀態(tài)方程做數(shù)值積分這是理解 Buck 建模本質(zhì)最快的方式。下面的代碼用最簡(jiǎn)單的歐拉法求解一個(gè) CCM 下的 Buck 模型% Buck變換器時(shí)域仿真 - 平均模型驗(yàn)證額定點(diǎn)穩(wěn)態(tài) clear; clc; close all; % 電路參數(shù) Vin 12; % 輸入電壓 V Vout_ref 5; % 期望輸出電壓 V L 33e-6; % 電感 33uH C 22e-6; % 電容 22uF R 2.5; % 負(fù)載電阻 2.5ohm fsw 100e3; % 開(kāi)關(guān)頻率 100kHz D Vout_ref / Vin; % 占空比 0.4167 % 仿真參數(shù) dt 1e-8; % 步長(zhǎng) 10ns遠(yuǎn)小于開(kāi)關(guān)周期 t_end 2e-3; % 仿真時(shí)長(zhǎng) 2ms覆蓋 200 個(gè)開(kāi)關(guān)周期 n_steps round(t_end / dt); t 0:dt:t_end; n_period round(1/fsw/dt); % 每個(gè)開(kāi)關(guān)周期的步數(shù) % 狀態(tài)變量初始化 il 0; % 電感電流初始值 vc 0; % 電容電壓初始值 il_hist zeros(size(t)); vc_hist zeros(size(t)); % 主循環(huán)每個(gè)步長(zhǎng)判斷開(kāi)關(guān)狀態(tài)更新微分方程 for k 1:n_steps % 判斷當(dāng)前時(shí)刻開(kāi)關(guān)管是否導(dǎo)通PWM 比較 t_mod mod(t(k), 1/fsw); if t_mod D / fsw % 開(kāi)關(guān)導(dǎo)通電感兩端電壓 Vin - vc d_il (Vin - vc) / L; else % 開(kāi)關(guān)關(guān)斷續(xù)流二極管導(dǎo)通電感兩端電壓 -vc d_il (-vc) / L; end % 電容電流電感電流減去負(fù)載電流 d_vc (il - vc / R) / C; % 前向歐拉積分 il il d_il * dt; vc vc d_vc * dt; il_hist(k) il; vc_hist(k) vc; end % 輸出穩(wěn)態(tài)結(jié)果 fprintf(仿真輸出電壓: %.3f V\n, vc_hist(end)); fprintf(仿真電感電流: %.3f A\n, il_hist(end)); fprintf(理論輸出電壓: %.3f V\n, D * Vin);這段代碼的邏輯是每個(gè)步長(zhǎng)先判斷開(kāi)關(guān)管的導(dǎo)通狀態(tài)根據(jù) PWM 比較結(jié)果選擇對(duì)應(yīng)的電感電壓方程然后用歐拉法更新電感電流和電容電壓兩個(gè)狀態(tài)變量。步長(zhǎng)取 10ns一個(gè) 10μs 的開(kāi)關(guān)周期內(nèi)會(huì)計(jì)算 1000 步2ms 仿真時(shí)長(zhǎng)總共需要 200 次開(kāi)關(guān)周期迭代總步數(shù) 20 萬(wàn)步腳本運(yùn)行時(shí)間在秒級(jí)。如果你把這個(gè)模型跑通并看到輸出穩(wěn)定在 5V 附近就說(shuō)明你對(duì) Buck 的數(shù)學(xué)模型理解到位了。實(shí)際使用中建議把 dt 調(diào)到 2ns 再跑一次驗(yàn)證收斂性——如果結(jié)果變化在 0.1% 以內(nèi)說(shuō)明步長(zhǎng)選擇是合理的。3.3 Simulink 模型搭建從元件庫(kù)到示波器的完整過(guò)程腳本適合理解原理但做控制和參數(shù)掃描還是 Simulink 更順手。在 Simulink 里搭 Buck 開(kāi)關(guān)模型你需要以下模塊DC Voltage Source輸入電壓、MOSFET或者用 Ideal Switch 代替、Diode、Series RLC Branch改造成電感 DCR、Series RLC Branch改造成電容 ESR、Resistor負(fù)載、PWM Generator用 Pulse Generator 模塊實(shí)現(xiàn)、Two-Way Switch用于切換開(kāi)關(guān)狀態(tài)、Scope 和 To Workspace數(shù)據(jù)導(dǎo)出。簡(jiǎn)化起見(jiàn)用 Simscape Electrical 的電力電子元件庫(kù)會(huì)更省事但如果你機(jī)器上只有 Simulink 基礎(chǔ)模塊用受控電壓源和開(kāi)關(guān)邏輯也能搭出功能完全一致的模型。關(guān)鍵點(diǎn)在開(kāi)關(guān)的動(dòng)作邏輯Pulse Generator 的頻率設(shè)置為 100kHz占空比設(shè)置為 41.67%通過(guò)一個(gè) Compare To Constant 模塊或者直接接到 Ideal Switch 的控制端。仿真求解器選擇變步長(zhǎng) ode23tb相對(duì)容差設(shè)置為 1e-4最大步長(zhǎng)限制為 1e-7 秒。Simulink 里搭模型的常見(jiàn)錯(cuò)誤是把 Diode 方向放反仿真一旦報(bào)錯(cuò)先查二極管方向。3.4 參數(shù)掃描與自動(dòng)跑批仿真效率的分水嶺單點(diǎn)的穩(wěn)態(tài)仿真只是熱身真正的設(shè)計(jì)工作需要掃參數(shù)。比如你需要知道負(fù)載在 0.5A 到 3A 范圍內(nèi)變化時(shí)輸出電壓的調(diào)整率是多少或者電感取 22μH、33μH、47μH 三種規(guī)格時(shí)的紋波差異。手動(dòng)改參數(shù)再點(diǎn)運(yùn)行一是慢二是容易漏記錄。推薦用 MATLAB 腳本控制 Simulink 模型批量仿真% 用 sim 函數(shù)批量掃描負(fù)載電阻 clear; clc; R_values [10, 5, 2.5, 1.67]; % 對(duì)應(yīng) 0.5A, 1A, 2A, 3A 5V results_vo zeros(size(R_values)); results_ripple zeros(size(R_values)); mdl buck_switch_model; % Simulink 模型文件名 load_system(mdl); for i 1:length(R_values) % 設(shè)置模型參數(shù) set_param([mdl /Resistor], Resistance, num2str(R_values(i))); % 運(yùn)行仿真 simOut sim(mdl, StopTime, 0.005); % 仿真 5ms保證進(jìn)入穩(wěn)態(tài) % 提取電壓波形 vout simOut.vout.Data; % 假設(shè) To Workspace 導(dǎo)出了 vout t_out simOut.vout.Time; % 只取最后 20% 的數(shù)據(jù)計(jì)算平均值和紋波 idx length(vout); start_idx round(idx * 0.8); vout_steady vout(start_idx:idx); results_vo(i) mean(vout_steady); results_ripple(i) max(vout_steady) - min(vout_steady); fprintf(R%5.2f ohm, Vout%.3f V, ripple%.1f mV\n, ... R_values(i), results_vo(i), results_ripple(i)*1000); end % 繪制負(fù)載調(diào)整率曲線 figure; yyaxis left; plot(R_values, results_vo, b-o); ylabel(輸出電壓 (V)); yyaxis right; plot(R_values, results_ripple*1000, r-s); ylabel(紋波 (mV)); xlabel(負(fù)載電阻 (ohm)); grid on;這段腳本的核心是 set_param 和 sim 函數(shù)的配合。set_param 修改模型內(nèi)的參數(shù)sim 執(zhí)行仿真數(shù)據(jù)通過(guò) To Workspace 模塊導(dǎo)出到 MATLAB 工作區(qū)。注意仿真時(shí)長(zhǎng)要足夠長(zhǎng)否則輸出還沒(méi)進(jìn)入穩(wěn)態(tài)就取數(shù)據(jù)算出來(lái)的平均值和紋波都會(huì)偏大。我一般先跑一個(gè) 5ms 仿真觀察輸出在大約 0.3ms 處穩(wěn)定所以取后 20% 的數(shù)據(jù)是合理的。批量仿真想更快可以把 for 循環(huán)改成 parsim 并行計(jì)算但對(duì)初學(xué)者來(lái)說(shuō)沒(méi)必要——理解流程比節(jié)省兩分鐘更重要。4. 從理想到真實(shí)寄生參數(shù)、開(kāi)關(guān)損耗與效率曲線的建模修正4.1 電感 DCR 與電容 ESR紋波和效率的隱藏操縱者理想模型里的電感和電容都是無(wú)損耗元件但真實(shí)器件不是。電感的等效串聯(lián)電阻DCR通常幾十毫歐到幾百毫歐電容的等效串聯(lián)電阻ESR從幾毫歐陶瓷電容到幾百毫歐電解電容不等。DCR 直接影響效率ESR 直接影響輸出電壓紋波的峰值。更關(guān)鍵的是ESR 對(duì)環(huán)路響應(yīng)有顯著影響——輸出電容的 ESR 會(huì)產(chǎn)生一個(gè)零點(diǎn)這個(gè)零點(diǎn)如果落在穿越頻率附近會(huì)顯著改變相位裕度。很多人在設(shè)計(jì)補(bǔ)償網(wǎng)絡(luò)時(shí)仿真和實(shí)測(cè)對(duì)不上就是因?yàn)槟P屠锏碾娙輿](méi)有 ESR。寄生參數(shù)典型量級(jí)Buck 常用影響的指標(biāo)建模時(shí)如何設(shè)置電感 DCR10mΩ ~ 200mΩ效率、負(fù)載調(diào)整率在電感模型中直接填值電容 ESR3mΩ ~ 50mΩ輸出紋波峰值、環(huán)路零點(diǎn)用串聯(lián) RC 表示電容電容 ESL0.5nH ~ 5nH高頻紋波、EMI高頻仿真才需要加MOSFET Rds(on)5mΩ ~ 50mΩ導(dǎo)通損耗用導(dǎo)通電阻參數(shù)替代理想開(kāi)關(guān)二極管 VF0.3V ~ 0.7V肖特基關(guān)斷期間損耗用帶導(dǎo)通壓降的二極管模型4.2 開(kāi)關(guān)管的非理想特性死區(qū)、體二極管與開(kāi)關(guān)時(shí)間理想開(kāi)關(guān)的導(dǎo)通和關(guān)斷是瞬時(shí)的但真實(shí) MOSFET 有開(kāi)通時(shí)間tr、關(guān)斷時(shí)間tf、米勒平臺(tái)效應(yīng)體二極管有反向恢復(fù)電荷。這些非理想特性直接決定了開(kāi)關(guān)損耗的大小。仿真中如果要評(píng)估效率不能再用理想開(kāi)關(guān)要給 MOSFET 模型填入這些參數(shù)。更實(shí)際的做法是在開(kāi)關(guān)模型里加入死區(qū)時(shí)間——互補(bǔ) PWM 信號(hào)之間的短暫間隔通常設(shè)為 10ns 到 100ns。如果沒(méi)有死區(qū)同步 Buck 的上管和下管會(huì)同時(shí)導(dǎo)通造成直通短路仿真會(huì)直接發(fā)散。對(duì)于二極管續(xù)流二極管的反向恢復(fù)特性在硬開(kāi)關(guān) Buck 中會(huì)產(chǎn)生明顯的開(kāi)關(guān)損耗和電壓尖峰。如果只是驗(yàn)證拓?fù)涞目尚行钥梢杂美硐攵O管加正向壓降的簡(jiǎn)化模型但如果需要精確預(yù)測(cè)出電壓應(yīng)力或做 EMI 分析就必須用廠商提供的 SPICE 模型或行為級(jí)反向恢復(fù)模型。我的判斷標(biāo)準(zhǔn)是如果項(xiàng)目處于方案驗(yàn)證階段用簡(jiǎn)化模型快速迭代如果馬上要出原理圖定器件上廠商模型精度至上。4.3 效率仿真與熱估算仿真數(shù)據(jù)如何影響真正的設(shè)計(jì)決策建模到后期仿真報(bào)告里最有說(shuō)服力的內(nèi)容就是一個(gè)完整的效率曲線。所謂效率曲線就是改變輸出電流記錄輸入功率和輸出功率的比值。在仿真中怎么算用平均功率計(jì)算模塊積一個(gè)完整周期內(nèi)輸入電壓與輸入電流的乘積然后除以輸出功率。實(shí)際操作時(shí)至少仿真 30 個(gè)開(kāi)關(guān)周期取平均值并保證仿真進(jìn)入穩(wěn)態(tài)否則功率數(shù)據(jù)帶有較大的啟動(dòng)瞬態(tài)分量毫無(wú)參考價(jià)值。從效率曲線反推損耗分布用歸一化歸一化判斷下一步優(yōu)化方向。如果 2A 負(fù)載時(shí)效率低到 85% 以下先看是導(dǎo)通損耗還是開(kāi)關(guān)損耗主導(dǎo)——導(dǎo)通損耗正比于電流平方和 DCR/Rds(on)開(kāi)關(guān)損耗正比于開(kāi)關(guān)頻率和開(kāi)關(guān)時(shí)間。這兩個(gè)數(shù)字分析清楚后換器件的方向就很明確了。不要試圖讓仿真百分百?gòu)?fù)現(xiàn)實(shí)測(cè)效率數(shù)字電源常用的做法是要求模擬效率比實(shí)測(cè)效率高 2% 以內(nèi)就算模型可信。5. 避坑指南五個(gè)讓仿真結(jié)果對(duì)不上實(shí)物的經(jīng)典場(chǎng)景5.1 電感電流平均值與理論計(jì)算值對(duì)不上現(xiàn)象仿真穩(wěn)定后電感電流平均值明顯偏離 Vout/R 的計(jì)算結(jié)果比如理論 2A 仿真出來(lái)只有 1.8A。 原因最常見(jiàn)的是模型里的二極管壓降和電感 DCR 沒(méi)有被正確建模導(dǎo)致輸出電壓本身偏低負(fù)載電流自然偏低。另一個(gè)常見(jiàn)原因是仿真時(shí)間不夠長(zhǎng)系統(tǒng)尚未完全進(jìn)入穩(wěn)態(tài)。 解決先檢查輸出電壓是否為 5V。如果輸出偏低說(shuō)明前面的阻抗壓降太大了把 DCR 和二極管壓降列出來(lái)實(shí)際計(jì)算一遍總壓降確認(rèn)和仿真的偏差一致。如果輸出正常但電流偏低說(shuō)明負(fù)載建模有誤——檢查電阻值是否被單位換算搞錯(cuò)kΩ 和 Ω 的小數(shù)點(diǎn)位數(shù)。5.2 模型報(bào)錯(cuò) Solver cannot handle the switching or parameter changing現(xiàn)象仿真一開(kāi)始運(yùn)行就報(bào)錯(cuò)提示求解器無(wú)法處理開(kāi)關(guān)切換或參數(shù)突變。 原因Simulink 變步長(zhǎng)求解器在開(kāi)關(guān)切換瞬間可能因?yàn)闋顟B(tài)突變而無(wú)法估算誤差尤其 ode45 在高頻開(kāi)關(guān)電路里經(jīng)常遇到這個(gè)問(wèn)題。 解決第一步換成 ode23tb剛性求解器它對(duì)開(kāi)關(guān)電路的適應(yīng)性好得多第二步設(shè)置最大步長(zhǎng)不讓求解器在某個(gè)周期內(nèi)跳過(guò)太多步——最大步長(zhǎng)設(shè)為開(kāi)關(guān)周期的 1/100 是個(gè)經(jīng)驗(yàn)值第三步檢查是否有代數(shù)環(huán)用 Memory 模塊打斷環(huán)路的瞬時(shí)反饋。這三個(gè)操作能解決九成以上的仿真發(fā)散問(wèn)題。5.3 仿真波形漂亮但 PCB 實(shí)測(cè)紋波大相差 10 倍以上現(xiàn)象仿真紋波 5mV實(shí)測(cè)紋波 80mV差距大到?jīng)]法解釋。 原因模型里輸出電容 ESR 被設(shè)成 0 了。很多元件庫(kù)里的理想電容模型 ESR 默認(rèn)為零而實(shí)際陶瓷電容即便性能好也有 3-5mΩ 的 ESR電解電容更高達(dá)幾十毫歐。輸出紋波的尖峰部分主要取決于 ESR 和電感紋波電流的乘積ESR 設(shè)置為 0 相當(dāng)于把最主要的紋波來(lái)源抹掉了。 解決給輸出電容串一個(gè)電阻阻值按器件手冊(cè)的 ESR 最大值設(shè)置。如果用的是電解電容還要把 ESL 也加進(jìn)去否則仿真里看不到高頻尖刺。我自己實(shí)測(cè)過(guò)一個(gè) 22μF/25V 的 X7R 陶瓷電容在 100kHz 時(shí)的等效 ESR 約 4mΩESR 引起的紋波分量占總量的一半以上。仿真里 ESR 設(shè)置 0 是我見(jiàn)過(guò)的最普遍的錯(cuò)誤。5.4 參數(shù)掃描跑批非常慢一天只能跑 20 個(gè)點(diǎn)現(xiàn)象設(shè)置 50 組電感值掃描預(yù)估要跑三四個(gè)小時(shí)。 原因開(kāi)關(guān)模型的最小步長(zhǎng)受限于開(kāi)關(guān)周期。100kHz 的開(kāi)關(guān)頻率為了看到 0.1% 的紋波精度步長(zhǎng)必須壓到 10ns 以下每組仿真 5ms 就需要 50 萬(wàn)步。10 組參數(shù)就是 500 萬(wàn)步非線性模型每一步都在做矩陣求逆。 解決批量掃描場(chǎng)景改用平均模型。平均模型不關(guān)心開(kāi)關(guān)周期內(nèi)部的狀態(tài)一個(gè) 5ms 的仿真只需要幾百步幾十組參數(shù)幾秒鐘就跑完。用平均模型掃參數(shù)確定推薦范圍再回到開(kāi)關(guān)模型做精確驗(yàn)證——這個(gè)工作流可以節(jié)省 90% 以上的時(shí)間。5.5 CCM 和 DCM 臨界處的波形異?,F(xiàn)象輕載時(shí)電感電流出現(xiàn)一段時(shí)間的零電流平臺(tái)波形和 CCM 的鋸齒狀完全不同。仿真波形在 CCM/DCM 切換時(shí)出現(xiàn)振蕩或不連續(xù)。 原因電感電流降到零后續(xù)流二極管自然關(guān)斷電路進(jìn)入 DCM。如果模型里的二極管是理想二極管沒(méi)有反向恢復(fù)時(shí)間在臨界切換點(diǎn)會(huì)表現(xiàn)出數(shù)值振蕩。另外負(fù)載電阻變化時(shí)占空比并沒(méi)有自動(dòng)調(diào)整仿真出現(xiàn)電流不連續(xù)是正?,F(xiàn)象是模型沒(méi)有做閉環(huán)控制導(dǎo)致的。 解決輕載分析時(shí)明確需要看到 DCM 行為將仿真的 StopTime 拉長(zhǎng)到 20ms 以上并檢查穩(wěn)態(tài)。如果臨界點(diǎn)附近出現(xiàn)數(shù)值振蕩在二極管上并聯(lián)一個(gè)小阻值電阻如 1kΩ或者給二極管加緩沖電路。如果是開(kāi)環(huán)模型請(qǐng)確認(rèn)你分析的就是開(kāi)環(huán)特性不要用開(kāi)環(huán)模型評(píng)估閉環(huán)指標(biāo)。6. 驗(yàn)證模型可信度用灌注入法掃 Bode 圖和實(shí)測(cè)對(duì)齊驗(yàn)證模型的最終手段是頻率響應(yīng)。在 Simulink 的平均模型中做小信號(hào)注入掃頻得到 Bode 圖再和實(shí)物板用網(wǎng)絡(luò)分析儀測(cè)的 Bode 圖對(duì)比。穿越頻率和相位裕度的誤差如果在 ±20% 以內(nèi)這個(gè)模型就是可信的后續(xù)的補(bǔ)償網(wǎng)絡(luò)調(diào)整可以大膽依賴仿真。具體操作方法是在反饋環(huán)路誤差放大器的輸出端插入一個(gè) AC 電壓源設(shè)置一個(gè) 10mV 的正弦擾動(dòng)掃描頻率從 100Hz 到 10 倍開(kāi)關(guān)頻率即 1MHz記錄每個(gè)頻率點(diǎn)對(duì)應(yīng)的放大倍數(shù)和相位差。用 Simulink 的 control design 工具箱可以直接從平均模型提取線性化 Bode 圖不用手動(dòng)掃頻效率高得多。關(guān)鍵是注入點(diǎn)的選擇——注入點(diǎn)必須在反饋環(huán)路內(nèi)通常選在誤差放大器輸出和 PWM 比較器輸入之間。我做過(guò)的實(shí)際項(xiàng)目里仿真和實(shí)測(cè)的相位裕度差了 30 度原因就是仿真模型用的是理想電容實(shí)測(cè)板子上用了低 ESR 的 MLCCESR 零點(diǎn)把相位裕度拉高了。把 ESR 值精確填進(jìn)模型后誤差縮小到 5 度以內(nèi)。從那以后我給自己立了個(gè)規(guī)矩建模時(shí)把所有電容的 ESR 和 ESL 查手冊(cè)填好絕不偷懶用默認(rèn)值。帶著這樣的模型做設(shè)計(jì)方案才能經(jīng)得起實(shí)物驗(yàn)證。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取