ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

移相全桥DSP数字控制开关电源设计实战:从ZVS计算到波形验证

移相全桥DSP数字控制开关电源设计实战:从ZVS计算到波形验证 简介面向电力电子与嵌入式软件工程师的移相全桥DSP数字控制开关电源设计资料包系统覆盖从硬件参数计算、原理图设计到DSP数字环路控制与调试的全流程适合有一定电源开发基础的中高级工程师及相关专业学生作为项目参考或课题框架。包内共409个文件包含C语言源码、DSP头文件、PDF文档、汇编启动文件、原理图与仿真工程、Excel计算表等类型覆盖源代码、计算说明书、硬件设计文档及芯片手册整体约85.66MB目录按使用说明、硬件、代码、仿真、计算书、调试波形等模块清晰组织。目前已有140人下载学习。内容上除了可编译运行的DSP2803x工程代码含移相PWM、ADC采样、闭环控制等还提供开环仿真模型、详细的参数计算书、磁件规格书、环路设计报告和调试波形记录配合原理图与BOM清单适合作为工业级电源开发参考或毕业设计、课题研究的基础框架。1. 移相全桥DSP数字控制开关电源设计拿到压缩包之后的正确打开方式这类资源在电气工程师之间流传度很高但大多数人的结局是相似的解压后看一眼原理图PDF看不懂计算说明书里的ZVS条件最后被软件工程里一堆寄存器配置卡住。问题不在文件本身而在于很多人拿到的是一个设计包不是一套教程它真正值钱的不是图纸而是计算结果、硬件时序、软件配置三者之间的对应关系。下面按“计算说明书确定边界 → DSP外设配置 → 原理图采样驱动 → 联调参数 → 波形验证”的顺序把这个对应关系讲清楚让做通信电源、车载充电机、大功率DC-DC的工程师能从一个压缩包走到板子上有稳定的输出波形。2. 计算说明书里先定死的那几项ZVS条件、死区与滞后臂谐振电感2.1 移相全桥的ZVS条件和两个桥臂差异移相全桥和普通全桥的本质区别在于四个开关管不再按对角同时开关而是超前臂两个管子先换流、滞后臂两个管子后换流同一桥臂上下管之间靠死区时间等待谐振完成。要让开关管在电压为零时被打开就必须让谐振电感、变压器漏感和开关管结电容之间完成一次能量交换。超前臂参与换流的电流就是输出电感折算过来的负载电流能量大ZVS容易实现滞后臂在续流阶段电流会变小甚至过零ZVS条件严格得多。计算说明书里通常会给出一个临界条件0.5 × Lr × Ib² ≥ (C1C2) × Vbus²。Lr是外加谐振电感Ib是滞后臂换流时的电流C1和C2是开关管结电容等效值。这个一次不等式就是整个设计包的灵魂它决定了谐振电感的下限也决定了滞后臂能不能软开关。如果Lr选得过大占空比丢失会变大变压器次级有效占空比变小需要回提变压器匝比来补偿选小了又满足不了ZVS的能量需求。所以计算说明书里给出的从来不是一个单点值而是一个区间联调时要回到这个区间里找问题。2.2 死区、谐振电感与占空比丢失的计算优先级多数计算说明书会按“输入范围 → 变压器匝比 → 输出电感 → 谐振电感 → 死区 → 吸收”的顺序展开但设计时的计算优先级建议调整为先定最大占空比丢失通常控制在0.1到0.15之间再反推谐振电感Lr的上限然后用ZVS条件计算Lr的下限两个约束取交集。交集为空时就要考虑增大励磁电流或换成非线性电感。死区时间的初始值一般落在100ns到300ns之间它既要让开关管结电容放电完成又要避免上下管直通可以用初算公式 td ≈ 2 × Coss × Vbus / Isw 估算。Coss取数据手册在对应电压下的等效输出电容Isw取该桥臂开关时的实际电流。这个值最终要在示波器上微调计算说明书给的是起点而不是终点。常见误用是把死区当常数写死在软件里换一批管子之后不重新算导致ZVS失效或者直通炸机。2.3 用表格把计算结果映射到设计指标把说明书里的关键结果整理成一张映射表很有用能避免原理图、代码、计算书各写一套。对照每一项的出处联调时才能知道改哪里设计项计算依据或出处对应到原理图对应到DSP代码最小输入电压下的最大有效占空比变压器匝比、输出电感压降变压器匝数比控制模式切换阈值谐振电感LrZVS能量条件与占空比丢失约束原边串联Lr影响死区与移相角范围死区时间结电容放电时间加余量驱动电阻与栅极电阻EPWM寄存器DBRED/DBFED开关频率原边开关管和磁芯选择MOSFET/IGBT选型TBPRD周期寄存器过流保护阈值最大输出功率与效率采样电阻与比较器ADC过流标志提示这块映射表在联调时价值极高。发现滞后臂VDS波形没有下降到零时第一反应不是盲目加大死区而是回到表里检查Lr是否够大如果原理图和计算书一致而问题依旧问题往往出在PCB寄生电感导致实际Lr偏小这时要量原边谐振电流波形而不是改代码。3. 在DSP里用EPWM实现移相时序与死区配置3.1 移相PWM的实现骨架移相全桥在DSP里通常用两个ePWM模块完成EPWM1作为master产生基准方波EPWM2作为slave并被EPWM1同步复位两者之间的相位差就是移相角。TI C2000系列支持通过TBPHS寄存器设置相位延迟代码骨架如下// EPWM1: masterPWM1A/PWM1B驱动超前臂 EPwm1Regs.TBCTL.bit.CTRMODE TB_COUNT_UPDOWN; // 增减计数产生对称载波 EPwm1Regs.TBCTL.bit.PHSEN TB_DISABLE; // 主模块不受同步 EPwm1Regs.TBPRD period; // 开关周期 EPwm1Regs.CMPA.bit.CMPA compare_a; // 比较值决定PWM占空比 EPwm1Regs.AQCTLA.bit.CAU AQ_CLEAR; // 增计数到达CMPA时清零 EPwm1Regs.AQCTLA.bit.ZRO AQ_SET; // 计到0时置位 EPwm1Regs.AQCTLB.bit.CAD AQ_SET; EPwm1Regs.AQCTLB.bit.ZRO AQ_CLEAR; EPwm1Regs.DBCTL.bit.OUT_MODE DB_FULL_ENABLE; // 全使能死区 EPwm1Regs.DBRED.bit.DBRED deadtime; // 上升沿延迟 EPwm1Regs.DBFED.bit.DBFED deadtime; // 下降沿延迟 // EPWM2: slave输出滞后臂相位延迟由TBPHS决定 EPwm2Regs.TBCTL.bit.PHSEN TB_ENABLE; // 从模块使能相位同步 EPwm2Regs.TBCTL.bit.SYNCOSEL TB_CTR_ZERO; // 主模块过零时发同步信号 EPwm2Regs.TBPHS.bit.TBPHS phase_count; // 相位延迟计数 EPwm2Regs.TBPRD period; EPwm2Regs.CMPA.bit.CMPA compare_a; EPwm2Regs.AQCTLA.bit.CAU AQ_CLEAR; EPwm2Regs.AQCTLA.bit.ZRO AQ_SET; EPwm2Regs.AQCTLB.bit.CAD AQ_SET; EPwm2Regs.AQCTLB.bit.ZRO AQ_CLEAR; EPwm2Regs.DBRED.bit.DBRED deadtime; EPwm2Regs.DBFED.bit.DBFED deadtime;逻辑说明EPWM1的时基在计数到零时产生同步信号EPWM2收到后把自己的计数器复位到TBPHS从而实现相位延迟。增减计数模式下移相角的寄存器和载波周期的关系不是线性比例更新时需要考虑计数方向。参数说明deadtime的单位是TBCLK的节拍数phase_count在初始化为0时两路PWM相位相同占空比相等输出电压约等于零。运行时更新TBPHS要在时基周期过零处加载所以需要配合影子寄存器自动装载。大多数C2000系列的TBPHS本身是双缓冲的在主时基计数归零时自动更新写代码时不用手动同步但要注意不要把TBPHS当作普通变量反复写给一个目标值让PWM模块自己加载即可。3.2 死区与移相角度的数字量换算移相全桥的输出电压由移相角决定等效占空比与相位差的关系按半周期计算是 D_out phase / 180°。所以PID输出先变换成占空比再换算成相位公式为 phase_count (1 - duty) × TBPRD × 2具体倍数随计数模式不同会有差异。这个公式最容易写反方向。调试时最典型的症状是增大移相角输出电压反而下降。这通常不是PID符号错了而是对角管时序关系反了占空比变成互补。建议在软件里定义一个结构体把pid_out、duty_ref、phase_ref、phase_count四层变量都保留下来用仿真器实时观察数值出问题时一眼就能看出在哪一层出错。死区时间换算则比较简单把秒数除以TBCLK周期。例如TBCLK100MHz时200ns死区对应DBRED20。死区值需要同时设置在上升沿和下降沿两个字寄存器都用同一个常数即可。值得注意的现象是死区过小不会立刻在示波器上看到直通但开关管温升会明显偏高因为直通电流是以微秒级脉冲形式出现的。3.3 软启动与保护时脉冲如何不发出畸变数字控制的开关电源容易在启动时出现尖峰或磁饱和原因往往是脉宽从零突跳。移相全桥软启动的正确做法是限制移相角的增量每个开关周期最多增加一个很小的Δphase直到达到PID闭环工作点同时在电压环未稳定前让PID输出钳位在一个较小的移相角。保护降载时要做对称处理不能直接把PWM封波否则输出电感电流断续会产生很高的dv/dt。常见做法是把移相角按每个周期递减到零再让桥臂进入同开同关状态最后封锁脉冲。代码实现上软启动限幅可以挂在PWM中断里也可以在PID输出函数里加饱和判断。关键在于增量限制要在PID输出之后、相位换算之前做这样PID内部状态不会因为输出被截断而积分饱和。4. 原理图里最容易出错的地方采样、驱动与保护电路4.1 桥臂中点电压隔离采样的两种接法原边桥臂中点电压直接驱动隔直电容和高频变压器波形是高压、高频且带负压的方波。直接用电阻分压再送DSP ADC的方案噪声很大而且共模干扰会让ADC结果出现台阶性跳变。可靠做法有两种第一种是差分电阻分压加高速隔离运放再进ADC适合需要精确控制输出电压的场合第二种是用高频电压互感器采样但相位延迟会随频率变化只适合做监测不适合做逐周期保护。无论用哪种ADC采样时刻都要避开开关管开关瞬间。在C2000里用EPWM的SOC事件触发ADC把采样点放在每个PWM周期的中点此时桥臂中点电压已经稳定。原理图上对应要检查的是采样电阻的寄生电容是否过大隔离运放次级的地是否靠近DSP的AGND而不是就近铺在功率地铜皮上。很多噪声问题不是滤波不够而是地线把功率回路的di/dt引到了模拟地。4.2 过流保护要单独走一条模拟快速通道计算说明书里的过流保护阈值最终要落到两条路径上一条是DSP ADC的逐周期限流配合软件把移相角拉回较小值另一条是纯硬件比较器直接关断驱动用于短路等极速事件。很多图纸的错误在于把电流采样同时送给ADC和比较器却共用一个RC滤波网络导致比较器响应时间被拖到微秒级以上。正确做法是从采样电阻引三根线一根进ADC滤波一根接过流比较器且滤波时间常数尽量小一根作硬件过温保护。比较器的输出直接接到驱动芯片的使能脚不经过DSP。这样DSP的PWM还在发波但驱动已经被硬件关断等故障解除后再通过GPIO清锁存。软件里如果没看到过流标志要优先检查比较器阈值是否和计算说明书一致以及比较器输出和驱动使能的逻辑电平是否正确而不是怀疑ADC采样慢。4.3 开机时序DSP初始化、驱动使能与母线电压的关系原理图设计完成后还要验证上电时序。常见隐患是DSP先跑起来、驱动使能被拉高而母线电容还未充满直接进入软启动。这时因为输出电压为零PID输出会很快冲到正限幅触发过流保护。正确时序为辅助电源先给DSP上电DSP完成所有PWM和ADC初始化并输出安全电平母线电容预充到额定电压的85%以上软件检测母线电压后解除驱动使能进入软启动。这个顺序需要硬件电路配合驱动使能信号最好由DSP GPIO和母线欠压比较器的与门共同控制而不是只用GPIO。这样即使软件跑飞母线欠压时驱动也绝不会开启。原理图审查时最容易漏掉的就是这条使能链路很多人只在软件里加了判断硬件上却没有对应的保护逻辑。5. 联调时优先调哪些量死区、PID限幅与中点波形5.1 用示波器确认移相时序联调第一步不是闭环而是开环验证PWM时序。示波器四个通道分别接Q1的GS、Q3的GS、桥臂中点A、桥臂中点B确认四路波形有正确的相移关系对角管之间先同时导通再交叉换流死区时间内两个驱动都为低。然后给一个恒定小移相角比如10%到15%接轻载电阻测量输出是否接近计算值。示波器时间轴要放到能看死区细节的刻度。死区窗口内桥臂中点电压仍然停留在高电平或低电平说明此时原边正在通过反向二极管续流这是ZVS的前兆。如果死区期间中点电压已经开始反向翻转说明死区过长或负载太轻滞后臂没有足够的电流完成谐振。这个判断比单纯看VDS波形更直观因为VDS会叠加母线高压谐波不容易看清开通瞬间。5.2 PID参数从输出限幅开始整定数字控制的PID整定顺序和模拟电源不太一样。先不追求响应速度而是先把PID输出限幅设置成只允许输出电压从空载到满载所需的移相角范围内运动。经验做法是先整定比例系数从很小的值开始让满载时移相角的变化只有10%左右逐步加大直到输出纹波开始变大再退回一半积分时间常数取输出滤波器RC的5到10倍微分项在数字电源里往往不用靠系统本身的LC滤波已经足够用微分反而引入高频噪声。PID代码要用增量式而不是全量式。积分可以先不设单独上限而是把PID输出整体限幅这样抗饱和行为是线性的控制中不会出现冲过头再拉回来的振荡。每次修改PID后记录输出电压的阶跃响应靠波形而不是手感判断收敛速度。数字控制的优势在于可以随时回读历史占空比变化把移相角变化率和输出电压超调量对照看整定效率明显高于模拟方案。5.3 常见问题对照表现象常见原因检查位置对策输出电压下降且开关管发烫占空比丢失过大计算Lr是否超过上限减小Lr或提高变压器匝比滞后臂DS波形硬开关死区过短或Lr过小死区时间与滞后臂电流增大死区到中点波形平坦空载上电炸机软启动移相角未限制软件里初始移相角增加周期级增量限制轻载输出电压振荡PID工作点进入断续区输出电感电流是否连续加最小负载或改突发模式ADC读数周期性突跳采样点叠加开关噪声SOC触发时刻把采样点移到周期中点6. 验证ZVS波形和环路裕度的两个实用技巧6.1 用桥臂中点波形判断ZVS是否成立ZVS波形验证不要只盯着漏源极电压最直观的是桥臂中点对直流母线负端的电压波形。ZVS正常时管子关断后电压应沿斜坡缓慢爬升不出现突变的跳沿滞后臂开始导通时桥臂中点电压应恰好回到零。测量时用短地线弹簧探头地不要用长夹子。电流波形用罗氏线圈或电流探头看原边谐振电流如果电流在死区过零后才换向说明确实是在零电压状态下打开的开关管。若电流在死区结束前仍有较大数值表示ZVS条件尚未满足要么加大死区要么提高谐振电流。6.2 用低频扰动和网络分析仪反推补偿器修正数字控制电源的环路补偿器不好直接扫频但可以在测试输出电压纹波时人为给电压参考值加一个固定斜率的斜坡扰动观察输出是否振荡或超调。若要更精确就用网络分析仪从误差放大器输出端注入信号扫描环路增益。得到实测相位裕度后不要急着改PID系数回到计算说明书里的LC转折频率和实测值对比。常见冲突是输出电容ESR比计算值低零点频率比预期高补偿器的相位裕度余量被吃掉。这时与其重推整套补偿参数不如在采样软件里加一个高频低通数字滤波把高频增益压下来效果接近在补偿器里增加一个高频极点改动小且结果可预期。最后检查输出纹波时有个快速判断方法开关频率附近的纹波是正常的如果看到频率远低于开关频率的低频波动几乎可以断定是环路仍在振荡如果只有开关纹波而无次谐波说明环路已经收敛。这个判断比任何仿真都直观也是数字移相全桥电源完成联调前最后一步该做的事。本文还有配套的精品资源点击获取
返回列表