一.参考文献以及尝试解释的问题
1.参考文献
TI的一篇关于DCDC变换器的EMI分析;
文章名:Reduce buck-converter EMI and voltage stress by minimizing inductive parasitics;
链接:https://www.ti.com/lit/an/slyt682/slyt682.pdf?ts=1702224928932
关注的地方:方波的频谱分析,振铃的表现
2.尝试解释的问题
2.1.通常而言,方波的上升沿和下降沿越陡峭,也就是du/dt越大,造成的EMI干扰也就越大,通常我的理解是因为du/dt通过对地寄生电容形成共模回路,c*du/dt也就是共模电流会因为du/dt增大而增大,进而解释了EMI干扰越大,本文想要尝试下从频域波形的角度,来解释这个问题;
2.2.通常而言,在CE测试中异常的尖峰可以和时域波形中测试的振铃相对对应,本文想要尝试下从频域波形的角度,来解释这个问题。
二.方波上升沿频谱仿真的结果
从仿真结果上看,tr表明波形的上升时间,上升时间越陡峭,频域的能量越高;
参考文献中给出的-20dB到-40dB的拐点和仿真也能相对应,拐点位置的频率刚好对应着1/(pi*tr),在固定占空比,固定方波频率的情况下,tr的时间越短,对应的-20dB到-40dB的拐点越大,因此中高频段携带的能量越高,造成的EMI干扰也就越大。
仿真的条件输入:
方波占空比 = 50%
方波频率 = 10kHz
方波上升沿 = 方波下降沿 = 10ns、100ns、1000ns
三.方波振铃频谱仿真的结果
从仿真结果上看,如果时域波形中出现有尖峰振铃的情况,对应的频谱中存在相对应的尖峰,且时域波形和频谱中的频率相对应;
从仿真结果上看,如果时域波形中出现有尖峰无振铃的情况,对应的频谱中不会有相对应的尖峰;
仿真的条件输入:
方波占空比 = 50%
方波频率 = 10kHz
方波上升沿 = 方波下降沿 = 100ns
振铃的频率 = 1MHz
四.maltab m文件代码
感兴趣可以自行尝试如下代码
%方波参数输入
t1 = 50e-6; %脉冲宽度,单位s
Tsw = 100e-6; %方波周期,单位s
tr = 100e-9; %方波上升沿,单位s
tf = tr; %方波下降沿,单位s
Vin = 100e-6; %方波平台电压,单位V
D = t1/Tsw; %方波占空比
fsw = 1/Tsw; %方波频率
%尖峰振荡参数输入
Volt_ring_tbd = -200000; %可调整波形为欠阻尼,过阻尼
Volt_ring_fsw = 10e6; %振荡频率
Volt_ring_peak = 40e-6; %振荡峰值
%仿真输入
t_step = 1e-10; %仿真步长
t = 0:t_step:10*Tsw; %仿真时间
mod_t = mod(t,Tsw);
fix_t = fix(t/Tsw);
size_t = size(t);
%时域波形
Volt_Vds = zeros(size_t);
for i = 1:1:size_t(2)
if mod_t(i)>0 && mod_t(i)<tr
Volt_Vds(i) = (Vin/tr)*(t(i)-fix_t(i)*Tsw);
elseif mod_t(i)>=tr && mod_t(i)<t1-tf
Volt_Vds(i) = Vin;
Volt_Vds(i) = Volt_Vds(i) + Volt_ring_peak*exp(Volt_ring_tbd*(t(i)-fix_t(i)*Tsw-tr))*sin(2*3.14159*Volt_ring_fsw*(t(i)-fix_t(i)*Tsw-tr));
elseif mod_t(i)>=t1-tf && mod_t(i)<t1
Volt_Vds(i) = (Vin/tf)*(t1-(t(i)-fix_t(i)*Tsw));
elseif mod_t(i)>=t1 && mod_t(i)<Tsw
Volt_Vds(i) = 0;
%Volt_Vds(i) = Volt_Vds(i) - Volt_ring_peak*exp(Volt_ring_tbd*(t(i)-fix_t(i)*Tsw-t1))*sin(2*3.14159*Volt_ring_fsw*(t(i)-fix_t(i)*Tsw-t1));
else
Volt_Vds(i) = 0;
end
end
figure (5);
plot(t*1e6,Volt_Vds);
title('时域波形 有尖峰有振铃');
xlabel('t/us');
ylabel('Volt_Vds V');
axis([0 1000 -2e-5 15e-5]);
%频域波形
FFT_Volt_Vds = fft(Volt_Vds);
P2 = abs(FFT_Volt_Vds/size_t(2));
P1 = P2(1:size_t(2)/2+1);
P1(2:end-1) = 2*P1(2:end-1);
f = (1/t_step)*(0:(size_t(2)/2))/size_t(2);
figure (6);
plot(f,P1);
loglog(f,P1);
title('频域波形 有尖峰有振铃');
xlabel('f/Hz');
ylabel('Volt_Vds V');
axis([1e3 1e9 1e-20 2e-5]);