1. 项目概述:3.3 kW双向车载充电机固件设计
作为一名长期从事电力电子控制系统开发的工程师,我想分享一个基于TMS320F28035的3.3 kW双向车载充电机(OBC)固件设计方案。这个项目最吸引人的地方在于,它仅用单颗C2000系列DSP就实现了PFC+双LLC谐振变换器的全数字控制,同时支持电网到电池(G2V)和电池到电网(V2G)两种能量流向。
在实际工程中,我们经常面临如何在有限硬件资源下实现复杂控制算法的挑战。这个设计方案通过精心设计软件架构,充分利用F28035的外设资源(双200 ksps ADC、150 ps分辨率的HRPWM、eCAP和eCAN等),在没有外部协处理器的情况下,实现了高效率的能量转换和智能电网交互功能。
2. 硬件架构与芯片选型
2.1 TMS320F28035核心优势
选择F28035作为主控芯片主要基于以下几点考虑:
- 高精度PWM:150 ps分辨率的HRPWM对于LLC谐振变换器的变频控制至关重要,可以实现精确的频率调节
- 丰富的外设集成:双ADC通道可以同时采样输入输出电压电流,eCAP模块用于电网锁相,eCAN用于与充电桩通信
- 实时性能:60 MHz主频配合C28x内核的定点运算能力,足以处理10 kHz的控制环路
- 成本效益:相比使用FPGA+MCU的方案,单芯片解决方案显著降低了BOM成本
提示:在实际PCB布局时,ADC采样电路应尽量靠近芯片引脚,并做好模拟地和数字地的隔离,以降低噪声干扰。
2.2 功率拓扑结构
系统采用两级功率变换架构:
- 前级双向PFC:实现电网侧单位功率因数运行,THD<3%
- 后级双LLC谐振变换器:实现高效率的DC-DC转换,峰值效率>96.5%
这种拓扑选择主要基于以下考虑:
- LLC谐振变换器天然适合宽范围电压转换,特别适合电动汽车电池的充电需求
- 双LLC交错并联可以减小电流纹波,提高功率密度
- 全桥结构便于实现能量双向流动
3. 软件架构设计
3.1 硬件抽象层(HAL)实现
硬件抽象层是保证代码可移植性和可靠性的关键。我们的实现包括:
- 外设驱动封装:所有寄存器操作都通过TI官方头文件定义的宏进行,确保不同版本编译器兼容
- 时钟管理:支持内部振荡器和外部晶振的动态切换,在待机模式下自动切换到低功耗时钟源
- GPIO安全设计:关键保护信号(如过流、过压)连接到具有硬件滤波功能的引脚,防止误触发
c复制// 示例:GPIO初始化代码
void HAL_GPIO_Init(void)
{
EALLOW;
GpioCtrlRegs.GPAPUD.bit.GPIO0 = 0; // 使能上拉
GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0; // 配置为GPIO
GpioCtrlRegs.GPADIR.bit.GPIO0 = 1; // 输出模式
EDIS;
}
3.2 实时任务调度
系统提供两种实时内核方案供选择:
3.2.1 非BIOS方案
- 纯中断驱动架构
- 中断响应时间<2 μs
- 资源占用少,适合对成本敏感的应用
3.2.2 DSP/BIOS方案
- 任务划分清晰,便于维护
- 采用多任务优先级调度:
- TSK_GridPeriod(锁相环):优先级3
- SWI_ADC(控制环):优先级2
- HWI_PWM(载波生成):优先级1
- 通过信号量(SEM)和周期函数(PRD)实现任务同步
经验分享:在初期调试阶段建议使用BIOS方案,便于问题定位;量产时可根据资源情况考虑切换到非BIOS方案以降低成本。
3.3 控制算法实现
3.3.1 双环控制结构
- 外环:可选择母线电压、电池电压或电池功率作为控制目标
- 内环:谐振电流或PFC电感电流控制
- 采用带抗饱和的增量式PID算法,避免积分饱和问题
c复制typedef struct {
float Kp;
float Ki;
float Kd;
float max_out;
float min_out;
float integral;
float prev_error;
} PID_Controller;
float PID_Update(PID_Controller *pid, float error)
{
float p_term = pid->Kp * error;
pid->integral += pid->Ki * error;
// 抗饱和处理
if(pid->integral > pid->max_out) pid->integral = pid->max_out;
else if(pid->integral < pid->min_out) pid->integral = pid->min_out;
float d_term = pid->Kd * (error - pid->prev_error);
pid->prev_error = error;
float output = p_term + pid->integral + d_term;
// 输出限幅
if(output > pid->max_out) output = pid->max_out;
else if(output < pid->min_out) output = pid->min_out;
return output;
}
3.3.2 LLC谐振变换器专用控制
- 变频+移相混合控制:频率范围80-350 kHz,移相0-180°
- 软启动策略:电压斜坡50 V/s,电流斜坡0.5 A/s,防止变压器饱和
- 死区自适应:根据负载电流动态调整死区时间(50-250 ns),优化效率
3.4 锁相环(PLL)设计
电网锁相是V2G功能的关键技术,我们的实现特点:
- 基于eCAP模块捕获电网过零点
- 单周期锁相误差<0.5°
- 支持45-65 Hz电网频率跳变
- 内置谐波抑制算法,抗电网干扰能力强
4. 能量管理与通信
4.1 双向电能计量
- 22位高精度累积电能寄存器
- 每1 ms更新一次,精度±0.5%
- 支持DIN 70121标准协议与充电桩通信
4.2 V2G功能实现
- 接收电网调度指令后,20 ms内完成功率反向
- 支持削峰填谷策略,根据SOC和分时电价自动优化充放电计划
- EEPROM存储10年日历数据,便于能量管理策略优化
4.3 通信接口设计
- eCAN:250k/500k/1M三档波特率,支持UDS Bootloader
- RS-485:隔离设计,Modbus-RTU协议
- LIN:预留与BMS通信接口
- 在线升级功能,支持断电回滚
5. 保护机制设计
5.1 硬件保护路径
- 关键故障信号(Bat-OCP、Bat-OVP、Bus-UVP)直接连接至ePWM的TZ引脚
- 保护响应时间<100 ns
- 温度保护采用ADC采样+比较器的双冗余设计
5.2 软件保护策略
- 符合多国电网标准(CHINA_SUN/VDE0126/RD1663/DK5940)
- 故障记录采用环形缓冲区,保存最近256条带时间戳的事件
- 故障恢复策略可配置,支持自动重试和手动复位
6. 性能优化与实测结果
6.1 效率优化措施
- 死区时间动态调整算法,轻载效率提升1.2%
- 开关频率优化,降低开关损耗
- 数字控制延迟补偿,提高环路响应速度
6.2 关键性能指标
| 指标 | 参数 | 测试条件 |
|---|---|---|
| 峰值效率 | 96.5% | 230VAC→400VDC, 3.3kW |
| 待机损耗 | <5W | 满足EuP Lot 6 |
| 电流环带宽 | 2kHz | - |
| 电压环带宽 | 200Hz | - |
| 故障响应 | <1μs(硬件) | - |
| 代码规模 | 82KB Flash | 保留38KB供扩展 |
7. 开发与认证
7.1 开发环境
- CCS 3.3.81.6 + DSP/BIOS 5.33.06
- CGT 5.2.4编译器
- 通过MISRA-C 2004静态检查
- 关键路径单元测试覆盖率100%
7.2 合规认证
- IEC 61851-1(电动汽车传导充电系统)
- IEC 61851-21-2(EMI要求)
- IEC 61000-4-x(EMS抗扰度)
8. 二次开发指南
8.1 新增工作模式
- 在StateUpdate模块中扩展enum SYS_STATE
- 在保护掩码表中注册新故障位
- 添加对应的状态处理逻辑
8.2 替换功率拓扑
- 仅需重写ePWM和ADC初始化函数
- 控制算法接口保持不变,保证上层应用兼容性
8.3 系统校准
- 利用片上ADC自校准功能
- 全软件校准,无需外部电位器
- 校准参数存储在非易失性存储器中
在实际项目中,我们发现这套架构具有很强的适应性。从2011年最初版本到现在,它已经成功应用于多个量产车型,仅通过软件升级就支持了V2G等新功能。对于计划开发6.6 kW或SiC平台的工程师,这个设计提供了很好的参考基线。