王 琢,吴细秀,魏洪涛,谢 洵,周 伟
(武汉理工大学 自动化学院,湖北 武汉 430070)
目前,在设计电子产品时通常采用电池供电。在使用电池供电时,电池的当前状态是用户所关心的,如手机、笔记本电脑等都能实时显示当前的电量状态。锂电池是整个灾害应急救生舱的能量来源,因此,电池余量的对实时监测就显得格外重要。为了实现上述要求,本文提出了一种基于DS2438智能电池监视芯片的电池电量监测系统,实现了对剩余电量的实时监测,并将测量数据传送至上位机。该系统具有稳定性高、功耗低的特点。经测试,该系统符合灾害应急救生舱的基本要求。
灾害应急救生舱中采用的电池是由若干节锂电池串联而成的锂电池组。本系统监测的锂电池组为75 A时,电压为24 V,最大电流为15 A。传统的电池组电量测量方案是在单节电池上装传感器,分别测量每节电池的电量信息,并利用开关进行分段循环检测,最后计算出整个电池组的电量信息。其缺点是测量周期长、硬件电路复杂、稳定性低[1]。
本测量方案是将整个锂电池组视为一个监测单元,采用电流变送器将大电流转换成0~20 mA的小电流信号,再利用DS2438智能电池监测芯片进行放电电流、端电压以及剩余电量的测量。硬件系统由监测模块、控制模块和通信模块组成。监测模块是系统的核心,由DS2438及其外围电路构成;控制模块采用ATmega 16单片机,该单片机具有运算速度快、片上资源丰富等优点;通信模块采用RS232串口与上位机进行通信。本系统的总体结构图如图1所示。
DS2438芯片是MAXIM公司推出的新一代智能锂电池监测芯片,集数据采集、信息储存、安全保护于一身,具有功能强大、硬件接线简单等特点。它可以完成对电池当前状态的监测[2],包括当前电池的充/放电状态、电压、电流、温度和剩余电量等参数的监测。DS2438芯片能自动采集这些数据,并将其放在存储器中。DS2438的引脚封装如图2所示。
DS2438各引脚功能如表1所示。
表1 DS2438引脚功能
系统控制器采用ATmega16单片机,该单片机具有16 KB的 系 统 内 可 编 程 Flash、512 B EEPROM、1 KB SRAM、32个通用 I/O口和 32个通用工作寄存器;其用于边界扫描的JTAG接口,支持片内调试与编程;外设包括3个具有比较模式的定时器/计数器、片内/外中断、可编程串行USART、有起始条件检测器的通用串行接口、8路10 bit具有可选差分输入级可编程增益的ADC、具有片内振荡器的可编程看门狗定时器、一个SPI串行端口,以及6个可以通过软件进行选择的省电模式[3]。
如图3所示,CHS-20ADS/A0为电流变送器,它能将20 A的电流转换至0~20 mA的标准信号;R1为采样电阻;R2和C1构成低通滤波器,可以消除电流尖峰的影响,使电流累加器正确反映流出、流入电池的总电荷[4];DS2438通过检测采样电阻R1两端的电压来获取放电电流和剩余电量的数据;R3和R4是一个3:1的分压电路;DS2438通过检测R4两端的电压来获取电池的端电压;J1为接负载的插座。
系统上电后,先对DS2438进行初始化。DS2438内部有10 bit A/D转换器,输入为VAD端。当单片机向DS2438发出采集电压控制命令时,ADC工作,将 VAD端所测电压存入DS2438内的电压寄存器。VAD端可测得的最高电压为10.23 V,因此,在DS2438前加了1:3的分压电路。电流测量不需要单片机发出控制命令,DS2438每27.45 ms测量一次 Vsens+和 Vsens-两端的压差(Vsens=Vsens+-Vsens-),然后将其转换成电流存入DS2438内的电流寄存器。电池的剩余电量可用电流累加寄存器(ICA)的值求得,DS2438通过对流过R1的电流进行累加来监测锂电池的放电量。ICA的值是由DS2438自动测量电池电流后更改的。单片机等待其采样完毕后,读取相应寄存器的数据。
为了满足系统的可扩展性,系统采用单片机串口中断的方式访问DS2438,进行电池参数的采集。首先对单片机的串口进行初始化,当上位机通过串口向单片机发送指令A时,电压标志置位,进行读电压的操作;当上位机发送指令B时,电流标志置位,进行读电流的操作;当上位机发送指令C时,电量标志置位,进行读电量的操作。最后单片机通过串口将数据发送至上位机。系统的主程序流程图如图4所示。
由于DS2438为单总线芯片,每次进行RAM操作前要先进行ROM操作。当执行读剩余电量子程序时,首先调用存储数据,将EEPROM/SRAM中的数据拷贝到暂存器scratchpad中;然后进行read scratchpad操作,将暂存器中的数据读出来;最后再用电池的总电量减去累计消耗的电量,即可得到当前的剩余电量。剩余电量采集子程序流程图如图5所示。放电电流、端电压的采集和剩余电量的采集类似。
电池电量监测系统与上位机之间采用RS232串口通信,上位机向电池电量监测系统发送指令,系统执行相应的操作,然后将测量数据传送至上位机。单片机本身提供了一组全双工串行传输接口,由TXD引脚传送数据,RXD引脚接收数据,但因其工作逻辑电平皆为TTL电平,故单片机与上位机之间的数据通信必须要经过 RS232信号电平的转换[5]。本系统使用MAX232电平转换芯片,只要加4只电容就能完成接口电平的转换。硬件电路如图6所示。其中,MAX232芯片的9、10脚与单片机连接,J2为通信接口,可以与上位机通信。
本系统设计完成后,安装在灾害应急救生舱内,对舱载电子系统进行剩余电量的实时监测,将剩余电量百分比和续航时间显示在上位机的屏幕上,供用户参考。到目前为止,监测效果良好,放电时间与实际定时测量结果吻合。部分实验测试结果如表2所示。
表2 部分测试结果
本文设计开发了一种基于DS2438智能电池监视芯片的电池剩余电量监测系统,实现了对电池组剩余电量的实时监测及对测量数据的传输。该系统结构简单、稳定性高、扩展性好,具有较强的实用性。
[1]战详真,刘和平,杨飞.基于CAN网络的磷酸铁锂动力电池管理系统的实现[J].低压电器,2011(22):27-31.
[2]严佳朋,王大志,金有超.基于 DS2438的大功率蓄电池状态监测[J].单片机与嵌入式系统应用,2011,11(3):40-42.
[3]李泓.AVR单片机入门与实践[M].北京:北京航空航天大学出版社,2002.
[4]张志国,孔庆,崔纳新.电动汽车电池组监测系统的设计[J].电源技术,2010,35(10):1224-1226.
[5]周兴华.AVR单片机 C语言高级编程设计[M].北京:中国电力出版社,2001.