· 788 ·
电 子 测 量 与 仪 器 学 报
第 25 卷
的数据通信, 一般是通过 CAN 总线, 通过上位机软
件实现对具体电池参数的显示与监控。
基于 MC9S12XEP100 单片机等硬件结构, 设计
下位机和上位机软件, 实现优化的 SOC 计算, 从而
设计了更加精确的高效的电池管理系统
[2-3]
。
2 电池管理系统硬件构成
本电池管理系统包括: 电池组模块部分, 在电
动汽车中的实际使用电池, 这里采用的是 1.2V×6×20
的电池组; 充放电控制电路模块, 其中又包括保护
电路, 电子负载和继电器阵列, 保护电路的作用是
为了对纯硬件结构实现过流和过温保护, 并且故障
解除后具有自恢复功能。电子负载主要起限流作用,
通过继电器阵列式实现充放电之间的切换, 保证电
路的安全性和可靠性。存储模块, 用于存储电池的实
时数据; AD 模块, 实现电压, 电流等所需要参数的
模数转换; CAN 通信模块, 用于实现下位机和上位
机之间的通信功能。系统框图如图 1 所示。
图
1 电池管理系统系统框图
Fig. 1 Battery management system block diagram
电池管理系统使用的电池组是由多节镍氢电池
组成, 镍氢电池电量储备大, 使用寿命长, 并且环保
高效, 已经在电子电力, 通信, 交通等部门得到广泛
应用。在电池使用时, 如果充放电设计不合理, 会导
致电池的寿命大大缩短。
电池剩余电量(SOC)是电池能够进行有效管理
的重要参数, 它的误差一般在 10%。当误差过大则会
导致电池出现一些过度充电或放电的不良后果。通
过一定的策略来保证电池充分发挥本身的能量, 提
高使用效率, 从而达到延长电池的使用寿命的功能。
目前有较多的方法计算 SOC, 常用的是安时法,
Kalman 滤波法, 开路电压法, 等效电路法, 本电池
管理系统采用修正的安时发和 Kalman 滤波法来实现
SOC 的计算
[4-5]
。
3 BMS 软件设计
Freescale 的 MC9S12XEP100 芯片是一款 16 位
双核的 MCU, 具有较强的运算能力, 抗干扰性好,
低成本, 低功耗和高效的代码率, 适用于电池管理
软件开发的硬件环境。
3.1 底层软件设计
MC9S12XEP100 内部的 AD 模块有 6 个 ATD 控
制寄存器, 2 个 ATD 状态寄存器, 1 个使能寄存器和
多个 ATD 转化结果寄存器, 通过对上述寄存器的设
置来完成 AD 转换波特率, 转换采样频率等参数的设
置, 完成 AD 转换函数的设置, 通过 CodeWarrior 自
动生成功能, 完成中断向量表的设置, 设置 RTI 控制
寄存器, 设置相应的控制字, 来得到所需要的时间中
断。因为电池 SOC 的计算对实时电压、电流的要求
较高, 所以实时中断函数的时间间隔设置为 1 ms。电
路中设置了 350 mA 的驱动, 根据设置值向低位开关
发送数据保持时钟极性来控制开关
[6-7]
。
在设计存储模块的, MC9S12XEP100 采用的是
P-Flash 存储器, 它的读写是以 8 个字节为一个单位
写数据到 Flash 上, 建立对应的数组, 以 4 个数组即 8
字节为一个单位, 利用指针偏移, 实现 16 个字节数
据的存储。若出现意外掉电的情况, 则不执行存储,
采用折半查找的算法找到当前 Block 空白的区域, 记
录掉电时候的地址, 下次上电时候, 接着上次掉电
的地址继续存储数据, 直到整个存储过程的结束。
3.2 SOC 估算软件设计
3.2.1 判温控制模块
通过实时中断函数, 进入中断, 执行 5 ms 调用
一次判温控制函数, 实时的监控温度和实现充放电
状态之间的切换, 保证电池安全正常的工作。程序流
程如图 2 所示。