1. 项目概述:直流充电桩主控方案设计背景
去年参与某新能源汽车充电站项目时,我们团队需要开发一套支持60kW功率输出的直流快充桩控制系统。当时市面上商用控制器要么成本过高,要么协议兼容性不足,最终决定基于STM32F407自主开发主控方案。这套经过实际验证的方案包含完整的硬件设计(原理图+PCB)和经过量产测试的嵌入式程序,今天就把核心设计思路和踩坑经验分享给大家。
直流充电桩主控板相当于整个系统的"大脑",需要同时处理:
- 充电通信协议(GB/T 27930-2015)
- 功率模块控制(PWM信号生成)
- 安全监控(绝缘检测/过流保护)
- 人机交互(触摸屏/指示灯)
- 支付系统对接(RFID/4G通信)
2. 硬件设计关键点解析
2.1 主控芯片选型考量
选择STM32F407ZGT6作为主控主要基于三点:
- 通信接口需求:至少需要3路CAN(充电通信/ BMS通信/调试接口)、2路USART(扫码模块和4G模块)、1路以太网(远程监控)
- 实时性要求:PWM信号生成需要定时器精度达到100ns级(TIM1高级定时器满足)
- 扩展空间:512KB Flash+192KB RAM可容纳完整的充电协议栈和OTA升级功能
注意:F4系列与H7系列的选择需权衡成本与性能,实测60kW场景下F407的M4内核已足够,H7的M7内核更适合120kW以上高功率场景
2.2 电源电路设计要点
充电桩主控板的电源设计尤为关键,我们的方案采用三级供电架构:
| 电源层级 | 输入电压 | 输出电压 | 关键器件 | 特殊处理 |
|---|---|---|---|---|
| 一级转换 | 220VAC | 12VDC | LNK306PN | 增加TVS管防雷击 |
| 二级转换 | 12VDC | 5VDC | LM2596 | π型滤波电路 |
| 三级转换 | 5VDC | 3.3VDC | AMS1117 | 并联100μF钽电容 |
实测中遇到的典型问题:
- 初期未在AC-DC级加入NTC热敏电阻,导致冷启动时保险丝熔断
- CAN总线收发器电源未与MCU电源隔离,造成通信干扰
- 解决方法是增加DC-DC隔离模块(选用B0505S-1W)
2.3 安全防护电路设计
充电桩必须通过GB/T 18487.1-2015标准认证,关键防护措施包括:
- 绝缘检测电路:采用对称分压电阻+STM32内置ADC采样(需校准到0.5%精度)
- 急停回路:硬件双路冗余设计(软件检测+硬件看门狗)
- 泄放电路:继电器控制+功率电阻组合,确保充电枪拔插时无残余电压
PCB布局特别注意:
- 强电弱电分区明显(间距>8mm)
- 采样走线采用差分对并包地处理
- 所有接插件采用防误插设计(如PWM输出用JST-VH系列)
3. 软件架构与协议实现
3.1 充电流程状态机设计
国标充电流程包含6个主要阶段,我们将其建模为状态机:
c复制typedef enum {
IDLE, // 空闲状态
HANDSHAKE, // 握手阶段
PARAM_CONFIG, // 配置协商
CHARGING, // 充电中
STOPPING, // 结束中
FAULT // 故障状态
} ChargeState;
// 状态转移条件判断
void StateMachine_Update(void) {
switch(currentState) {
case IDLE:
if(检测到枪插入 && 刷卡成功)
TransitionTo(HANDSHAKE);
break;
// 其他状态处理...
}
}
经验:状态机超时处理必须严格遵循国标时间要求(如握手阶段超时应设为15s±1s)
3.2 CAN通信协议栈实现
GB/T 27930协议栈开发要点:
- 使用CubeMX配置CAN过滤器(验收屏蔽模式)
- 关键报文处理示例:
c复制void Process_BMS_Message(CAN_RxHeaderTypeDef *header, uint8_t *data) {
if(header->StdId == 0x1806F456) { // BMS电池信息帧
battery_voltage = (data[0]<<8 | data[1]) * 0.1f;
// 数据有效性校验
if(battery_voltage > 1000.0f)
Enter_FaultState(OVERVOLTAGE);
}
}
- 错误处理机制:
- 通信中断超时(500ms无报文)
- 数据校验错误(CRC8校验)
- 协议版本不匹配
3.3 功率控制算法
采用电压电流双闭环控制:
- 电压环:PI控制器计算目标电流
c复制float VoltageLoop_Update(float target, float actual) {
static float integral = 0;
float error = target - actual;
integral += error * 0.001f; // 积分时间1ms
return KP_V * error + KI_V * integral;
}
- 电流环:生成PWM占空比(TIM1触发ADC采样同步)
调试技巧:
- 先调电流环再调电压环
- 示波器观察动态响应时,建议用电子负载模拟电池阻抗变化
- PID参数整定从保守值开始(KP=0.5, KI=0.1)
4. 生产测试与现场问题
4.1 出厂测试项目清单
我们建立的测试流程包含38个检测项,关键项目包括:
| 测试类别 | 测试项目 | 合格标准 | 测试工具 |
|---|---|---|---|
| 安全测试 | 绝缘电阻 | >500V DC/1MΩ | 绝缘测试仪 |
| 通信测试 | CAN通信 | 误码率<1e-6 | CAN分析仪 |
| 功能测试 | 急停响应 | <100ms动作 | 示波器+IO板 |
| 性能测试 | PWM精度 | 偏差<0.5% | 高精度频率计 |
4.2 典型现场问题排查
- 问题现象:充电中途异常终止
- 排查步骤:
- 检查CAN日志发现0x18FF消息丢失
- 用示波器测量CANH/CANL差分电压(发现峰峰值不足1V)
- 最终确认为终端电阻焊接不良(设计要求120Ω±1%)
- 问题现象:触摸屏偶尔失灵
- 解决方案:
- 在I2C线上增加10pF电容滤波
- 修改PCB布局使显示屏排线远离电源走线
- 软件增加触摸数据校验重传机制
- 问题现象:高温环境下ADC采样漂移
- 改进措施:
- 采用内部温度传感器自动校准
- 关键采样通道改用外部基准源(REF3025)
- 在结构设计上增加散热孔
5. 方案优化与扩展建议
经过三个版本迭代,总结出以下优化方向:
- 硬件层面:
- 改用四层板设计(现有两层板EMC测试勉强达标)
- 充电枪检测电路增加冗余光耦隔离
- 预留RS485接口用于储能系统对接
- 软件层面:
- 引入FreeRTOS实现任务隔离(当前为裸机轮询)
- 增加基于ISO15118的即插即充功能
- 开发微信小程序远程监控功能
- 生产测试:
- 制作自动化测试工装(当前部分项目需手动测试)
- 增加高温老化测试环节(85℃/8小时)
- 建立每台设备的完整测试档案
这套方案目前已累计部署200+台,最长无故障运行时间超过8000小时。在实际开发中,最深刻的体会是:充电桩作为涉及人身安全的设备,必须坚持"安全优于成本,可靠重于性能"的设计原则。特别是在绝缘检测、急停回路等安全关键功能上,必须采用硬件冗余设计,不能依赖软件单路检测。