三相PWM整流电路三相独立纯模拟控制能量双向传递,主电路参数和控制参数都是实际电路 采用MATLAB2014进行仿真,兼容新版本matlab,做好备份。 仿真了三相400Hz/115V输入的PWM整流电路,可自行调整50Hz/220V,三相独立控制,可实现能量双向传递,实际控制电路主要使用AD633模拟乘法器和双运放组成。 可以直接用计算的参数设计补偿网络电路。
老铁们,最近整了个硬核的三相PWM整流电路仿真。这玩意儿用纯模拟电路实现能量双向流动,直接拿AD633模拟乘法器搭控制电路,实测效果堪比DSP方案。咱先看主电路结构——六只IGBT组成的双向整流桥,直流母线挂个1000μF电解电容,交流侧每相串2mH电感。参数不是拍脑袋定的,都是根据400Hz工况算出来的损耗和纹波。
三相PWM整流电路三相独立纯模拟控制能量双向传递,主电路参数和控制参数都是实际电路 采用MATLAB2014进行仿真,兼容新版本matlab,做好备份。 仿真了三相400Hz/115V输入的PWM整流电路,可自行调整50Hz/220V,三相独立控制,可实现能量双向传递,实际控制电路主要使用AD633模拟乘法器和双运放组成。 可以直接用计算的参数设计补偿网络电路。
控制核心是三个独立模拟闭环,关键代码得这么写:
function Vd = current_loop(I_ref, I_actual, Kp, Ki) persistent integrator; if isempty(integrator) integrator = 0; end error = I_ref - I_actual; integrator = integrator + Ki * error * Ts; Vd = Kp * error + integrator; end这段电流环代码直接对应着运放搭建的PI调节器。注意Ki参数要乘以采样周期Ts,对应实际电路中积分电容的充放电时间。AD633乘法器的使用贼关键,咱在模型里用这个实现坐标变换:
% 三相静止到两相旋转坐标变换 function [Vd, Vq] = clarke_park(Va, Vb, Vc, theta) alpha = (2/3)*(Va - 0.5*Vb - 0.5*Vc); beta = (2/3)*(sqrt(3)/2*Vb - sqrt(3)/2*Vc); Vd = alpha .* cos(theta) + beta .* sin(theta); Vq = -alpha .* sin(theta) + beta .* cos(theta); end仿真时发现个坑——坐标变换的锁相环得加个二阶滤波器,否则400Hz下相位抖动能到3度。补偿网络参数用这公式算:C1=1/(2pif_cross*R1),实际取R1=10kΩ时,穿越频率设在2kHz,得配个8nF的CBB电容。
看这段波形生成代码:
carrier = sawtooth(2*pi*20e3*t, 0.5); % 20kHz三角载波 mod_wave = V_control / (Vdc/2); % 标准化调制波 pwm = double(mod_wave > carrier) - double(mod_wave < -carrier);这模拟了实际比较器产生PWM的过程。注意死区时间得在PWM输出后硬核插入:
dead_time = 1e-6; % 1us死区 pwm_up = pwm & (delay(pwm, dead_time) == 0); pwm_down = ~pwm & (delay(~pwm, dead_time) == 0);能量回馈时直流母线电压会飙升,这时候得切到逆变模式。咱们在控制逻辑里加了双向标志位:
if Vdc > 800 && mode == 0 disp('切换到逆变模式!') mode = 1; I_ref = -abs(I_ref); % 电流反向 end实测切模式时会有个50ms的暂态过程,解决办法是在电压环输出加个rate limiter,斜率控制在50V/ms以内。最后提醒兄弟们,仿真完记得用Version Convert保存成MDL格式,不然高版本MATLAB可能打不开老模型。