带有诊断接口的电池组管理系统
2021-06-03张立强孙启海
王 潇,张立强,孙启海
(中国海洋大学工程学院,山东青岛 266100)
海洋仪器设备造价昂贵,使用环境条件苛刻,其安全性、可靠性备受研究者关注。海洋仪器设备中独立电源的维修或者更换成本较高,为了尽可能地减少成本,越来越多的海洋仪器设备开始采用可重复利用的高能量密度电源[1]。锂离子电池具有能量密度大、无记忆效应、环境友好度高、循环性能好等优点,常常被用作海洋仪器设备的电源[2]。但是海洋环境较为苛刻,高温差、高湿度、高盐度均可影响锂离子电池的健康状态,从而造成仪器失效等严重后果[3]。
根据国内外海洋仪器和设备故障的统计和分析,大约有70%的故障是由环境引起的,其中温度原因占40%,湿度原因占20%左右[4]。同型号的锂离子电池在海洋环境下的寿命要比正常环境下短,盐度较高的海洋水汽会导致锂离子电池组的电池被腐蚀,被腐蚀之后的锂离子电池组极易发生爆炸,造成设备损坏[5]。运行在海洋环境下,电池组会不可避免地出现海水渗漏的现象,海水进入锂离子电池组之后会造成设备短路,影响海洋仪器设备的正常运行[6]。此外,为了尽可能准确地估计电池的剩余使用寿命和健康状态,研究者采用电化学阻抗谱等数据作为健康特征,用以表征电池内部更为详细的状态[7]。但是现有的电池组管理系统鲜有提供其内部单体电池的测试接口,用户难以对单体电池的状态进行直接测试与评估[8-9]。目前有部分电池管理系统选择通过无线网络进行数据传输,但在海洋仪器工作的环境中,无线传输方式远不如诊断接口的通信方式稳定[10-11]。
为了解决海洋环境下的电池组管理和单体电池状态信息难以获取的问题,本文提出了一种带有诊断接口的锂离子电池组管理系统。该系统的诊断接口能够将内部状态信息发送到上位机平台,同时诊断接口也包含了电池组内部单体电池中间抽头接点。使用者可以通过中间抽头对单体电池直接进行阻抗谱测试等各种外部附加测试。为了适应复杂的海洋环境,该系统还设计了内部环境检测系统,能够对浸水、火灾等突发情况做出及时反应,从而保护电池组的安全。
1 系统整体结构设计
本文中的锂离子电池组采用16 并8 串的组成方式,电池组标称电压为25.6 V,工作电压为18.4~29.2 V。锂离子电池组的正负极通过2 芯防水插头引出,另外设置有14 芯防水插头作为诊断接口,诊断接口除上位机通讯功能外,还可以与专门的电池健康诊断系统连接,对电池组内部单体电池进行各类附加测试。
Arduino Nano(意大利产)单片机作为主控芯片控制整个系统的运行,并与上位机进行通信;基于LTC6811(美国产)芯片构建了电池组单体电池电压采集和均衡电路;基于AD8210(美国产)芯片构建了电池组电流采集电路;基于DS18B20(美国产)和DHT11(广州产)传感器构建了温度、湿度采集电路;通过水位传感器(深圳产)、火灾传感器(深圳产)对锂离子电池组内部环境进行监测;设计单片机控制MOSFET开关电路进行安全保护;单片机控制继电器组将电池中间抽头切换至单体电池电压采集电路或诊断接口上;并在控制模块与动作模块之间设计了驱动隔离电路以提高电池组的可靠性。电池组整体电路结构如图1 所示。
图1 电池组整体电路结构
2 硬件设计
2.1 电压数据采集与均衡电路
本文通过PMOS 和放电电阻R搭建了LTC6811 外部均衡电路。该电路能够对8 路单体电池分别进行电压数据采集和均衡。采集到的数据通过SPI 接口传输到Arduino Nano。电压数据采集与均衡电路如图2 所示。
图2 电压数据采集与均衡电路
2.2 电流数据采集电路
锂离子电池组的电流信息对电池组SOC估计具有重要的作用。本文采用单电源差分放大器AD8210 芯片构建电流数据采集电路。AD8210 通过放大高精度检流电阻RA两端的电压来确定待检测电流的大小。考虑电池组输出电流最大为60 A,AD8210 芯片测量增益为20 倍,Arduino Nano 的AD引脚最大读取电压为5 V,且考虑到1.5 倍的余量,高精度检流电阻阻值通过计算为2.8 mΩ,其计算如式(1):
因此选择采样电阻RA阻值为3 mΩ。电流采集电路如图3 所示。
图3 电流数据采集电路
2.3 内部环境检测
内部环境检测模块分为温度检测、湿度检测、火灾检测和漏水检测四个部分。
温度检测电路采用8 个DS18B20 数字式温度传感器分别对单体电池温度进行检测,DS18B20 传感器供电为5 V,数据线通过4.7 kΩ 上拉电阻连接到单片机的D5 引脚。
湿度检测电路采用DHT11 数字式温湿度传感器对电池组内部湿度情况进行检测,DHT11 数字式温湿度传感器数据引脚通过4.7 kΩ 上拉电阻连接到单片机的D3 引脚。
火灾检测电路通过火灾检测模块检测电池组内是否发生火灾,火灾检测模块的数字量输出端口连接单片机的D8引脚,当环境中的火焰光谱达到某一数值时,数字量端口电平为低电平,模拟量输出端口连接单片机的A5 引脚,模拟量输出端口能够输出环境火焰光谱更精准的数值,其检测光源或火焰的波长范围为760~1 100 nm。当数字量输出端口为低电平且模拟量端口输出值达到预设阈值时,可以确定电池组内部发生火灾。
漏水检测电路采用水位传感器检测,水位传感器供电电压为5 V,水位传感器模拟量输出引脚连接单片机的A6 引脚来获得水位的模拟量信息,以此换算出水位信息并判断电池组内是否发生漏水故障。
2.4 MOSFET 控制电路
MOSFET 控制电路用于在紧急情况下关断电池组总输出,以此实现对锂离子电池组的安全保护。驱动电路采用高压门驱动器UCC27211(美国产)芯片实现,为了保证MOSFET能够在单片机控制信号为高电平的情况下持续导通,本文使用隔离电源和高速光耦6N136 搭建浮地MOSFET 控制电路。MOSFET 选用低内阻N 沟道MOS 芯片IPT015N10N5(德国产)。MOSFET 控制电路如图4 所示。
图4 MOSFET控制电路
2.5 中间抽头切换电路
中间抽头切换电路采用一组AGQ20012(日本产)型双刀双掷继电器实现,其工作电压为12 V。中间抽头切换电路通过Arduino Nano 的I/O 管脚控制光耦,继而控制继电器组触点的切换。中间抽头切换电路如图5 所示(以V0 和V1 抽头为例)。
图5 中间抽头切换电路
3 软件设计
3.1 主程序设计
系统在上电之后,为保证系统的正常工作,需要对系统进行初始化,包括配置初始化、参数初始化、单片机引脚初始化、SPI 通信初始化、USART 通信初始化等。并在初始化的过程中保持MOSFET 关断,继电器组复位以保证电池组单体电池的中间抽头与电压测量与均衡电路连接。
开机初始化完成后,进入程序主循环,包括电池组内部的各参数状态数据读取、故障诊断、安全保护和接收执行命令几部分,嵌入式程序整体流程如图6 所示。
图6 嵌入式程序整体流程
其中,故障诊断对于保证电池的性能、安全和寿命具有重要意义。通过对电压、电流和温度等状态的检测,能够快速准确地确定锂离子电池组的故障原因,并采取相应的保护措施。
3.2 电池组数据采集程序设计
电池组采集的数据包括锂离子电池组单体电池电压和温度、电池组总电流、电池组总电压等。对采集到的数据进行预处理,去掉异常值、最大值和最小值后进行平均值滤波,以处理结果作为待测参数的最终值。同时采用扩展卡尔曼滤波对电池组荷电状态(SOC)进行估计。
3.3 故障诊断及保护程序设计
根据采集的数据(电压、电流、温度、湿度等)判断锂离子电池组管理系统是否出现故障,并根据故障程度确定故障保护优先级,按照电池组是否发生火灾、电池组是否发生漏水、温度是否异常、电压是否异常、单片机与LTC6811 芯片的通信是否异常、继电器组是否工作的顺序进行故障的诊断,如果存在故障则将相应的故障标志位置1,采取相应的保护动作,同时将异常信息或警告信息上传到上位机中。
4 诊断接口及通信协议设计
4.1 诊断接口
本文中,14 芯诊断接口使用防水插头(深圳产、型号SP/SD 20)实现,其定义如表1 所示。14 芯接口内包含电池组管理系统供电接口、基于MAX3232 芯片的上位机通信接口以及各单体电池的中间抽头。
表1 14 芯诊断接口定义
4.2 通信协议
故障信息通信协议和警告信息通信协议分别如表2~表3所示。例如:当电池组发生电压严重过高故障时,Arduino Nano 发送字符组“ERR:POVLT:1”,无电压严重过高故障时,发送字符组“ERR:POVLT:0”,1 表示故障发生,0 表示故障未发生。
表2 故障信息通信协议
表3 警告信息通信协议
可接收的上位机命令分为数据获取命令和控制命令两类,如表4 所示。电池组管理系统的应答格式中“A,B,…”代表相应的数据值,例如:当电流值为23.4 A 时,DATA:CURR:A格式应为DATA:CURR:23.4。多个字母的格式含义类似。控制命令中的ON/OFF,ON 为开或者动作,OFF 为关或者复位,例如:CTRL:MOS:ON 命令为控制MOSFET 开通命令,CTRL:MOS:OFF 命令为控制MOSFET 关断命令。
表4 上位机数据读取命令、控制命令通信协议
5 实验与结果
根据本文提出的设计,利用128 只IFR26650 型磷酸铁锂电池(深圳产,3.2 V,3.3 Ah)构成16 并8 串结构的锂离子电池组,如图7 所示。
图7 电池组外观
在室温27 ℃的情况下,通过串口可直接读取单体电池电压、温度数据;通过诊断接口中间抽头,新威CR-20V-2000 mΩ 型(深圳产)电池电压内阻测试仪可以直接测量电池组内部单体电池阻抗,各单体电池测量结果如表5 所示。
表5 各单体电池测量结果
可见温度测量误差在0.1~0.2 ℃以内。且由于电压采集和均衡电路的均衡功能,内部各单体电池之间的电压差异均极小。内部各单体电池阻抗较为一致,由于电池并联连接,其阻抗值较小,能够满足大电流放电的需求。
14 芯诊断接口未来可接入自主研发的电池健康诊断系统中,可直接对电池组内部单体电池进行阻抗谱等各类测试,可丰富电池健康状态评估所需的数据,其接法如图8 所示。
图8 诊断接口阻抗谱测试方法
6 结论
本文面向海洋仪器设备提出了一种带有诊断接口的锂离子电池组管理系统的设计方案。通过LTC6811、AD8210、UCC27211 等芯片构建了该系统的硬件结构,通过Arduino IDE 编写了相应的嵌入式程序。该锂离子电池组管理系统能够实现内部单体电池电压和温度、电池组总电流、电池组总电压等数据的测量,同时能够结合测得的数据对该系统中出现的故障进行初步诊断和故障保护。通过诊断接口亦可对电池组内部单体电池进行阻抗谱测试,可获得更加丰富的电池状态评估数据。本文提出的锂离子电池组管理系统可提高海洋仪器设备中电池供电系统的安全性和可靠性,从而增加海洋仪器设备的使用周期,降低使用成本,为今后的海洋仪器设备供电系统的研究提供有价值的参考。