1. 项目背景与核心价值
艾默生15kW充电桩模块作为新能源充电基础设施的核心部件,其设计实现直接影响充电效率与设备可靠性。这个开源项目完整释放了该模块的软件源码(含核心算法)和硬件设计资料(原理图+BOM),为电力电子工程师提供了难得的一线研发参考样本。
我曾参与过多个充电桩项目的故障分析,发现市面上公开的充电模块技术资料普遍存在两个痛点:一是核心算法以黑箱形式提供,二是硬件设计缺乏关键参数说明。而这个项目直接开放了PID控制、LLC谐振变换等核心算法的C语言实现,以及PCB布局的电流路径设计细节,相当于把商业级充电模块的设计手册摊开在工程师面前。
2. 硬件架构深度解析
2.1 功率拓扑结构设计
原理图显示该模块采用经典的两级变换架构:
- 前级:三相维也纳整流(Vienna Rectifier)
- 关键器件:IXYS的IXGH48N60B3D1 IGBT模块
- 母线电容:450V/680μF电解电容+薄膜电容并联
- 实测纹波电流<5% @满载
- 后级:LLC谐振变换器
- 谐振参数:Lr=22μH, Cr=100nF
- 开关频率范围:85kHz-150kHz
- 采用UCC256301控制器实现变频控制
设计亮点:在LLC变压器次级采用同步整流方案,使用IPD90R1K2C3 MOSFET,相比二极管整流效率提升2.3%
2.2 PCB布局关键技巧
从原理图注释可以发现几个值得借鉴的布局设计:
- 功率回路最小化:DC-AC-DC变换路径总长度<15cm
- 热敏感器件避让:电流传感器远离散热器≥20mm
- 安规间距控制:
- 初级-次级:6mm(满足IEC61851-23要求)
- 交流输入:3mm爬电距离
3. 软件系统实现剖析
3.1 主控制流程图解
源码中的main.c展示了典型的实时控制架构:
c复制while(1) {
AD采样(); // 电流/电压采样
保护检测(); // 过压/过流/过温判断
PID控制(); // 电压环+电流环计算
PWM更新(); // 占空比输出
CAN通信(); // 与上级控制器交互
}
实测控制周期为100μs,中断优先级设置:
- ADC采样中断:最高优先级
- PWM保护中断:次高优先级
- CAN通信中断:最低优先级
3.2 核心算法实现
3.2.1 维也纳整流控制
在rectifier_control.c中采用电压外环+电流内环的双闭环控制:
c复制void Vienna_Control(void) {
// 坐标变换
Clarke_Transform(ia, ib, &ialpha, &ibeta);
Park_Transform(ialpha, ibeta, &id, &iq);
// PI调节
ud = PI_Voltage(vdc_ref - vdc_fb);
uq = PI_Current(0 - iq); // q轴电流置零
// 反变换
Inverse_Park(ud, uq, &ualpha, &ubeta);
SVM_Generate(ualpha, ubeta); // 空间矢量调制
}
实测THD<3%@满载,功率因数>0.99
3.2.2 LLC谐振控制策略
resonant_control.c中实现的变频控制算法:
c复制float LLC_Freq_Control(float vo_ref, float vo_fb) {
static float freq = 100000; // 初始频率100kHz
float error = vo_ref - vo_fb;
// 变步长搜索算法
if(fabs(error) > 5.0) step = 2000; // 大偏差快速调节
else step = 500; // 小偏差精细调节
if(error > 0) freq -= step; // 输出电压高则降频
else freq += step; // 输出电压低则升频
return constrain(freq, 85000, 150000); // 限制频率范围
}
4. 生产测试要点
4.1 关键测试项与标准
根据源码中的test_mode.c,模块出厂需完成:
- 效率测试:
- 输入380VAC时,20%-100%负载效率>96%
- 峰值效率点出现在50%负载(实测96.8%)
- 纹波测试:
- 输出电压纹波<1% Vo(72V系统需<720mV)
- 动态响应:
- 负载阶跃(25%-75%)恢复时间<200ms
4.2 常见故障处理
结合源码中的fault_handler.c,总结典型故障代码:
| 故障代码 | 可能原因 | 排查方法 |
|---|---|---|
| 0xE001 | 直流过压 | 检查母线电容容量(应≥680μF) |
| 0xE002 | 交流缺相 | 测量输入电压平衡度(相差<10%) |
| 0xE003 | IGBT过温 | 确认散热膏涂抹均匀(厚度0.1-0.3mm) |
5. 二次开发建议
5.1 软件修改注意事项
- PID参数整定:
c复制// 原参数(适用于72V系统) typedef struct { float Kp = 0.45; float Ki = 0.12; float Kd = 0.02; } PID_Param; // 修改步骤: // 1. 先将Ki设为0,增大Kp至系统开始振荡 // 2. 取振荡时Kp值的50%作为最终Kp // 3. 逐步增加Ki至静态误差消除
5.2 硬件改造风险点
- 功率器件选型:
- IGBT耐压必须≥650V(推荐1200V等级)
- 二极管反向恢复时间<100ns
- 电流采样设计:
- 分流电阻温漂<100ppm/℃
- 运放带宽>1MHz(如TI的INA240)
这个项目的价值不仅在于提供可编译运行的完整代码,更在于展示了商业级充电模块的设计方法论。比如在can_comm.c中实现的通信协议,就采用了经典的CANopen协议栈,其对象字典配置方式可以直接移植到其他工业控制项目。而硬件设计中对EMI的处理(如共模电感选型、Y电容布局)更是提供了教科书级的实施案例。