1. 项目背景与核心挑战
在新能源汽车电控系统开发中,车载充电机(OBC)的电压环控制是确保充电安全与效率的关键环节。最近在调试某800V平台项目时,我们遇到了一个棘手问题:当电压环控制从"软启动"状态切换到"刚使能"(Hard Enable)模式时,系统会出现约50ms的电压波动,导致充电电流瞬间跌落。这个问题在实验室环境下可能被忽视,但在实际车辆充电场景中,会触发BMS的保护机制,造成充电中断。
这个现象的本质是控制环路的相位对齐问题。传统解决方案往往采用固定延时补偿,但我们在实测中发现,由于功率器件开关特性的批次差异和温度影响,固定延时会导致某些工况下出现超调或响应滞后。经过三周的实验验证,我们最终开发出一套动态对齐方案,将电压波动控制在±2%以内,完全满足车规级要求。
2. 电压环控制原理深度解析
2.1 典型双环控制结构
现代OBC通常采用电压外环+电流内环的双闭环控制架构:
code复制电压参考 → 电压环PI → 电流环PI → PWM调制 → 功率器件
↑ ↑
输出电压反馈 电感电流采样
在"刚使能"瞬间,系统需要完成三个关键同步:
- 数字控制器的PWM载波相位
- ADC采样窗口位置
- 软件控制算法的执行时序
2.2 问题根源定位
通过示波器捕获的异常波形显示(图1),问题发生在以下时序:
- t0时刻:使能信号上升沿
- t0+10μs:DSP开始执行电压环算法
- t0+25μs:PWM比较值更新
- t0+35μs:ADC采样启动
此时若PWM载波正好处于峰值附近,会导致:
- 新输出的占空比无法立即生效
- ADC采样到的仍是旧状态
- 产生控制时序"空洞"
3. 动态对齐方案设计
3.1 硬件同步机制
我们在原有电路基础上增加了三个关键设计:
- PWM-ADC硬件联动:
c复制// 在DSP事件触发配置中
EPwm1Regs.ETPS.bit.SOCAPRD = 1; // 每个PWM周期触发ADC
EPwm1Regs.ETSEL.bit.SOCASEL = 4; // 在计数器=0时触发
- 数字锁相环(DPLl)电路:
- 采用CDCE62005时钟发生器
- 将PWM载波同步到系统时钟的上升沿
- 抖动控制在<50ps
- 快速响应ADC通道:
- 保留ADCIN0作为专用同步通道
- 采样保持时间缩短至75ns
- 采用12位精度模式
3.2 软件时序优化
在控制算法中引入动态延时补偿:
c复制void VoltageLoop_Execute(void) {
static float lastDuty = 0;
float currentDuty = PI_Calc(&voltagePI, Vref - Vfb);
// 动态延时补偿算法
if(fabs(currentDuty - lastDuty) > 0.1) {
uint16_t delayCnt = (uint16_t)(currentDuty * PWM_PERIOD * 0.2);
DELAY_US(delayCnt);
}
PWM_UpdateDuty(currentDuty);
lastDuty = currentDuty;
}
关键参数计算依据:
code复制补偿时间 = K * (ΔDuty) * Tsw
其中:
K = 0.2(经验系数,通过扫频测试确定)
ΔDuty = 本次占空比变化量
Tsw = PWM开关周期(如50kHz对应20μs)
4. 实现步骤与调试方法
4.1 校准流程
- 硬件准备:
- 示波器(建议4通道,带宽≥200MHz)
- 高精度电流探头(如TCP0030A)
- 电子负载(可编程动态模式)
- 时序校准步骤:
- 注入阶跃信号(如300V→400V)
- 测量以下时间差:
- PWM更新到实际驱动变化(t1)
- 驱动变化到输出电压响应(t2)
- 电压采样到算法执行完成(t3)
- 计算总延时:Td = t1 + t2 + t3
- 在软件中配置补偿值:
ini复制[SYNC_CONFIG]
pwm_adc_delay = 1.2us
algo_exec_offset = 0.8us
4.2 验证方法
设计六组测试用例:
- 空载到满载阶跃(0→6.6kW)
- 输入电压瞬变(AC 220V±20%)
- 温度循环(-40℃~85℃)
- 电池电压模拟跳变(200V→800V)
- 并联充电场景
- 紧急停止恢复
通过标准:
- 电压超调<2%
- 恢复时间<10ms
- 无振荡现象
5. 典型问题解决方案
5.1 案例1:低温下补偿失效
现象:-20℃环境下,电压环出现5%的周期性波动
分析:MOSFET开关速度变慢导致t2延时增加
解决:
- 在NTC采样电路中增加低温校准点
- 动态调整补偿系数:
c复制float tempCompFactor = 1.0 + 0.005*(Temp + 20); // -20℃时补偿5%
delayCnt = (uint16_t)(delayCnt * tempCompFactor);
5.2 案例2:并联系统拍频振荡
现象:双OBC并联时出现100Hz低频振荡
根因:两台设备PWM不同步导致环流
方案:
- 采用CAN总线同步时钟
- 主从模式配置:
c复制// 主机发送同步帧
CAN_SendSyncFrame(EPwm1Regs.TBCTR);
// 从机接收同步
void CAN_SyncCallback(uint16_t masterCnt) {
EPwm1Regs.TBCTR = masterCnt;
EPwm1Regs.TBPHS.half.TBPHS = 0;
}
6. 工程经验总结
-
示波器触发技巧:
- 使用"序列触发"模式捕获使能瞬间
- 建议触发条件:使能信号上升沿 + 电压>5%阈值
- 存储深度至少10Mpts
-
参数优化心得:
- 先调电流环带宽(建议1/10开关频率)
- 再整定电压环(带宽≤1/5电流环)
- 最后微调补偿时间
-
生产测试要点:
- 必须做高低温时序验证
- 建议增加PWM-ADC相位差测试项
- 使用自动化测试脚本记录关键参数:
python复制def test_sync_timing():
set_voltage(300)
enable_system()
capture = scope.capture(channels=[1,2,3])
assert capture.rise_time < 10e-6
assert capture.overshoot < 0.02
这套方案已在三款量产车型上验证,累计路测里程超过50万公里。实际应用中我们发现,在电网电压畸变(THD>5%)时,建议额外增加一个前馈环节:
c复制void VoltageLoop_Execute(void) {
// 新增电网前馈
float gridFeedForward = 0.2 * (GridVoltage - 220)/220;
currentDuty += gridFeedForward;
...
}