1. LLC开环扫描测试方法概述
在电力电子系统中,LLC谐振变换器因其高效率、高功率密度等优势,已成为车载充电机(OBC)等应用中的主流拓扑。但LLC的控制环路设计一直是个技术难点,特别是工作点与开关频率之间的精确映射关系。本文介绍的V1版本测试方法,正是为了解决这个核心问题。
这个方法本质上是通过开环扫描的方式,建立输出电压(ADC.Vout)与开关频率控制量(Pctl)之间的线性关系模型。具体来说,我们通过注入直流信号来改变工作点,采集对应的输出电压和实际开关频率数据,最后通过线性拟合得到控制系数K。这个K值将成为后续闭环控制的基础。
注意:测试必须在安全工作区域内进行,建议先确认LLC的软启动和基本保护功能正常。
2. 核心原理与数学关系
2.1 信号注入与工作点调节
测试的关键在于通过Vinjected_dc这个直流分量来改变LLC的工作状态。这个信号直接叠加在控制环路上,相当于人为设定一个静态工作点。当Vinjected_dc变化时,LLC会自动调整开关频率来维持谐振状态,这就形成了不同的工作点。
2.2 ADC量化关系
对于12位ADC,其量化公式为:
code复制ADC.Vout = (Vinjected_dc / Vref_adc) * (2^12 - 1)
当Vref_adc=3.3V时,公式简化为:
code复制ADC.Vout = Vinjected_dc * (4095 / 3.3) ≈ Vinjected_dc * 1240.91
这个关系式告诉我们如何将实际电压转换为DSP内部处理的数字量。
2.3 控制系数K的物理意义
控制系数K建立了输出电压与频率控制量之间的线性关系:
code复制Pctl = K * ADC.Vout
其中:
- Pctl:DSP内部频率控制量(与开关周期或频率直接相关)
- ADC.Vout:量化后的输出电压数字量
- K:待求的控制系数(单位:Hz/count或s⁻¹/count)
3. 测试流程详解
3.1 测试准备
-
硬件连接:
- 确保LLC功率级与DSP控制板正确连接
- 验证ADC采样电路工作正常
- 检查信号注入点电路(通常通过DAC或PWM+滤波器实现)
-
软件配置:
- 初始化DSP的ADC、PWM等外设
- 设置保护阈值(过压、过流等)
- 准备数据记录功能(建议使用DSP的RAM缓存+串口导出)
-
安全确认:
- 输入电压设为额定值的50%开始测试
- 确认所有保护功能使能
- 准备紧急停机措施
3.2 测试步骤
-
参数设置:
- 设定Vinjected_dc的扫描范围(如0.5V-2.5V)
- 确定扫描步长(建议初始值为0.1V)
- 设置每个工作点的稳定时间(通常50-100ms)
-
自动扫描流程:
code复制for Vinjected_dc = Vstart to Vend step ΔV: 注入Vinjected_dc 等待稳定时间 记录ADC.Vout和实际f_sw end -
数据采集要点:
- 每个工作点采集10-20个样本取平均
- 同时记录输入电压、输出电流等辅助参数
- 标记异常数据点(如进入容性区)
3.3 数据处理与拟合
-
数据预处理:
- 剔除明显异常点(如保护触发时的数据)
- 将ADC.Vout转换为实际电压值
- 计算各点的Pctl值(根据f_sw与Pctl的映射关系)
-
线性拟合:
使用最小二乘法拟合ADC.Vout与Pctl的关系:code复制K = Σ(ADC.Vout[i] * Pctl[i]) / Σ(ADC.Vout[i]^2)同时计算相关系数R²评估线性度。
-
结果验证:
- 检查K值的合理性(与理论估算比较)
- 确认R² > 0.95(理想情况)
- 绘制散点图+拟合直线直观展示
4. 实现示例与参数计算
4.1 典型测试数据
假设测试得到以下数据:
| Vinjected_dc(V) | ADC.Vout(count) | f_sw(kHz) | Pctl(hex) |
|---|---|---|---|
| 1.0 | 1241 | 100.0 | 0x0800 |
| 1.5 | 1861 | 95.0 | 0x0780 |
| 2.0 | 2482 | 90.0 | 0x0700 |
4.2 K值计算过程
-
确定Pctl与f_sw的关系(假设线性):
code复制f_sw = 100kHz时,Pctl=0x0800 f_sw = 90kHz时,Pctl=0x0700 ⇒ Δf_sw/ΔPctl = -10kHz/0x0100 = -0.039kHz/count -
计算K值:
code复制K = ΔPctl/ΔADC.Vout = 0x0100/(2482-1241) ≈ 0.0207/count -
验证:
code复制当ADC.Vout=1861时: Pctl = 0.0207*1861 ≈ 0x0780(与实测一致)
4.3 固件实现建议
c复制// 定义K值
#define LLC_K (0.0207f)
// 控制函数
uint16_t LLC_FreqControl(uint16_t adc_vout) {
float pctl_f = LLC_K * (float)adc_vout;
return (uint16_t)(pctl_f + 0.5f); // 四舍五入
}
5. 测试注意事项与经验分享
5.1 常见问题排查
-
数据跳动大:
- 检查ADC参考电压稳定性
- 增加采样平均次数
- 确认PWM死区时间设置合理
-
线性度差(R²低):
- 可能工作点进入容性区
- 检查谐振元件参数偏差
- 尝试缩小扫描范围分段测试
-
保护频繁触发:
- 降低输入电压重新测试
- 检查电流采样电路
- 调整软启动参数
5.2 实测经验
-
扫描速度选择:
- 步长建议为Vin_max的5-10%
- 稳定时间要大于LLC的动态响应时间(通常3-5个开关周期)
-
工作点选择:
- 优先测试额定负载条件
- 轻载和重载下的K值可能有差异
- 建议在典型工作点附近加密扫描
-
温度影响:
- 谐振元件参数会随温度变化
- 关键应用需在不同温度下测试
- 考虑实现温度补偿算法
6. 版本规划与扩展功能
6.1 当前版本(V1)局限
- 仅建立静态工作点关系
- 未考虑动态响应特性
- K值为固定值,未适应宽范围工作点
6.2 后续版本规划
-
V2版本增强:
- 增加小信号频率响应测试
- 建立分段K值表(适应非线性区)
- 实现闭环增益调度
-
V3版本目标:
- 在线参数辨识
- 自适应控制算法
- 故障诊断集成
-
长期发展:
- 结合AI的智能调参
- 数字孪生仿真验证
- 预测性维护功能
在实际项目中,我们发现LLC的控制参数会随着元件老化而漂移。建议定期(如每1000工作小时)重新运行此测试更新K值,这对维持长期稳定性很有帮助。