管 州,李晨轩,朱 江,吴 烨(安徽大学电气学院,合肥 230601)
基于DS2438的大功率蓄电池电量监测系统的设计
管 州,李晨轩,朱 江,吴 烨
(安徽大学电气学院,合肥 230601)
介绍一种基于DS2438芯片为采集器,以STC89C51为控制器的大功率蓄电池实时状态监测系统的设计。该系统的可实现对蓄电池的剩余电量的准确预测,避免传统的测试电压代替剩余电量的方式。让电动汽车运行时更为可靠,提高了电池性能。
DS2438;STC89C51;剩余电量;大功率蓄电池
当前电动车逐渐普及,蓄电池作为一种简单有效的储电方式而被广泛使用在电动车中。而蓄电池的储电能力有限,因此需要精确的计算剩余电量和续航路程,保证车子的正常行驶。目前蓄电池剩余电量的计算有很多种方法,例如密度法(比重法)、电压法、安时法。传统方法是测电池电压代替电量,在启动时电流增大,端电压降低,故剩余电量表的指针明显偏转,不能达到精确测量电量的目的。本系统的原理是安时法,能够对电流积分来记忆电池的充放电,测算电池电量,故而精确计算剩余电量。同时能够实时监测电池的温度、电压等参数,有利于延长蓄电池的循环使用次数。
DS2438芯片被命名为 Smart Battery Monitor,是Maxim公司推出的智能电池监测芯片,是一种十分小巧、快速、精确的电池检测芯片。它具有功能强大、体积小、硬件接线简单等优点,内部自带A/D,通过单总线来读取,可以方便地实现对蓄电池组运行状态的监测。DS2438的引脚排列如图1所示。
图1 系统流程图
1.1 温度测量
DS2438内集成的温度传感器。将芯片紧贴于被测电池就能够测量温度。结果放入温度寄存器中,可通过单总线接口串行传送。
DS2438测量的温度范围为-55℃~125℃,分辨率为0.03125℃。
1.2 电压测量
图2 芯片引脚图
图3 温度寄存器
DS2438内置10位的电压A/D转换器,用于测量电压。当芯片收到转换电压的命令时,片内ADC转换器将对Vad管脚上的电压进行数字转换,转换时间为4ms。结果被保存在两字节的电压寄存器。电压寄存器格式。
图4 电压寄存器
DS2438 ADC 的测量范围为0~10V,分辨率为10mV,最大量程为0~10.23V。
1.3 电流测量
DS2438内置电流A/D转换器,用于测量蓄电池的电流。芯片通过VSENS+和VSENS-两引脚之间电阻的电压间接得出电流。测量系统硬件电路图7。VSENS+接线端外接电阻R1,VSENS-端接RC低通滤波电路,滤除尖波电流干扰。电流A/D转换器每工作频率约为36Hz。结果保存在两字节的电流寄存器中。最高位S为符号位,表示电池是充电还是放电。电流寄存器格式如图5所示。
图5 电流寄存器
该寄存器存储的实际数值是RSENS两端的电压值,电池电流可由下面的公式计算出来。
I=电流寄存器中的值/(4096*RESES)(RSENS的单位是Ω)
1.4 剩余电量的测量
DS2438集成电流累加器Integrated Current Accumu-lator(ICA),可以跟踪测量电池的剩余电量。ICA是对电池组投入使用后的全部流入和流出电池进行积分的一个电流寄存器,故ICA的值可以表示为电池的剩余电量。如上所述,电池组电流是通过频率为36Hz的外接电阻RSENS上的电压获得的。根据此值的正、负而将此值进行积分存储在ICA寄存器中。ICA是一个8位的二进制计数器,它综合了每次测得的外接电阻RSENS上的电压。
图6 ICA寄存器
剩余电量可由下式计算得出:
剩余电量=ICA/(2048*RSENS)(Ahr)
本系统以STC89C51单片机为核心,通过单总线对DS2438芯片进行读写,测算剩余电量、电压、电流、温度参数。加入了LCD1602液晶,可以对电池的剩余电量和温度进行实时显示,同时充分利用了DS2438自带的EEPROM进行掉电保护,保存计算好的电量的值。
由于本系统测量的是大功率蓄电池组电量,而DS2438是用来测量容量和电流比较小的电池,所以必须选择合适的电流传感器以保证测量精度与测量范围。在这里选择了广泛应用于电流测量的LA200-P。启动电动车电机会产生几十安倍的大电流,通过电流传感器LA200-P使测量电路的电流变换为为主工作电路电流的2000分之一,LA200-P输出为正负电流形式,且在DS2438的正常承受范围之内,能达到精确测量的目的。
电压的测量时通过将被测的电压通过分压的方法将电压的值限制在测量范围内(0-10.23V)。
关于电路中电阻R1的选择,电流的最小位不同,会造成最小的单元表示的电量大小不同,从而造成能够用一个字节表示不同电量大小。选取合适的值会有合适的精度和范围,具体的取值和电量范围可参照DATASHEET。
图7 系统硬件图
本系统的程序主要由DS2438读模块,DS2438写模块、显示程序和上位机通信程序。
DS2438读程序能够实现对电压、电流、电量和温度的读取,然后将读到的数字量转换成对应的实际数值,这是软件的基础部分。显示模块是基于LCD1602来显示的,可以实时根据读取的数据来显示参数。上位机通讯是为了和上位机或者他控制器进行通信,具体的做法是将电压、电流、电量和温度这些参数转换成一个一维数组,然后通过UART通信协议来向外发送数据,设置好波特率,有相应的开始位和结束位,这样方便上位机和其他控制器数据的接收。
最后重点介绍DS2438的写模块。最初的程序不能对芯片进行写数据,这就没有工程的实用性。因为如果不能对芯片的电量寄存器ICA设置初始化的值,就意味着电量寄存器工作之后只能从零开始,这样蓄电池的初始值就只能设置成0,只能把电池放完电,然后接入芯片,这样才能保证电量数据的正确性,但是这样对电池的损害很大。基于这些考虑,对芯片的写数据必须实现,在和团队深入研究芯片的DATASHEET后,才发现这款芯片写数据时是先写到缓存区,然后在复位脉冲的作用下才能写入指定的地址中,修改程序之后能够实现对芯片的写数据。且可以对电量寄存器的初值进行设置和校正,同时DS2438芯片自带40个字节的EEPROM,可以把想保存的数据写到这个区域而掉电保护,不需要用外部的EEPROM。
reset();//复位脉冲不能少,因为WriteByte这个函数只是将数据写到缓冲区,需要复位脉冲,才能真正将数据写入寄存器中
WriteByte(0xcc);
WriteByte(0x48);
WriteByte(page);}
本文主要讲诉了使用测量小容量电量的芯片来测量大功率电量的方法,成功的实现对电池的电流、电压、电量和温度的测量,并且充分利用该芯片的功能,实现对芯片的写数据,将该技术真正具有工程实用性。并且实现电量的精准测算,对电动车的续航能力有一定的预测,减少电量不足对电池的损害,有利于蓄电池的循环利用。
[1]严加朋,王大志,金有超.基于DS2438的大功率蓄电池状态检测[J].单片机与嵌入式系统应用,2010(11).
[2]郭屹松.基于DS2438的智能电池监测系统设计[J].北京石油化工学院学报,2008(03).
[3]郭天祥.新概念51单片机C语言教程——入门、提高、发、拓展[M].电子工业出版社,2009(01).
[4]Dallas Semiconductor.DS2438 Smart Battery Monitor,2003-02-06.
项目名称:安徽大学 国家级大学生创新创业训练计划项目“基于双电源自由切换车内安全监控的电动车的研究”。项目编号:201410357065。