一、引言
目前设计便携式设备,为了满足移动性和轻便性的要求,通常采用电池供电。在使用电池供电时,电池的当前状态是用户所关心的,如MP3播放器、手机、笔记本电脑等都实时显示电池的当前状态。为此在设计本文所涉及的仪器时,智能电池监测系统被充分考虑。本文实现的电池监测系统由DS2438智能电池监测芯片、51单片机、液晶显示模块组成,其中核心功能是由DS2438智能电池监测芯片完成的。本文介绍了本系统的硬件实现和软件设计,以及DS2438芯片特性和相关控制软件程序。
二、系统硬件实现
本系统的硬件设计力求简洁,目的是尽量减少对单片机指令周期的占用,以便使单片机能够完成更多其他功能。系统的硬件实现框图见图1。
本系统由DS2438智能电池监测芯片、51单片机、液晶显示模块组成。
DS2438芯片完成对电池当前各种状态的监测,包括当前电池的充/放电状态、电压、电流、温度、剩余电量、消逝时间等参数的监测。DS2438芯片能够自动采集这些参数,并将其放在SRAM/EEPROM中。51单片机根据需要发出命令读取这些参数,然后处理这些参数,显示电池状态。由于存放这些参数的EEPROM具有非易失性,所以本系统具有掉电保护的功能。
51单片机按照用户需要对电池状态的相应参数读取和处理,然后送往液晶显示模块显示。由图1可见,单片机是整个系统的控制、处理中心。由于大量工作由单片机的软件完成,明显地降低了系统硬件复杂度。
液晶显示模块显示用户需要了解的电池当前状态信息,仅仅接受单片机的控制和访问。
由此可见,本系统的主要功能是由DS2438芯片和51单片机的软件程序完成的,其中51单片机、液晶显示模块的用法与其在其他系统中的用法相同,所以以下主要介绍DS2438芯片的功能特性和单片机软件编程。
三、DS2438芯片介绍
DS2438芯片是DALLAS公司推出的新一代智能电池监测芯片,具有功能强大、体积小、硬件接线简单等优点。
1.特性 (1)仅有一根双向数据线,故单片机仅需一个端口与之连接。 (2)内含数字温度传感器(免去在电池块内设装热敏电阻)。 (3)片内模数转换器可进行电池电压监测,从而可判定充电和放电的结束。 (4)片内的积分电流累加器可实时记录电池流入、流出电流的总量,便于统计电量。 (5)内含二进制格式的消逝时间表。 (6)内含40字节可用于存放电池特殊参数的掉电保护的用户访问存储器。
2.芯片硬件接线(见图2)
3.存储空间
DS2438的存储空间有8页,每页8个字节,共64个字节,每一页都有对应的高速暂存页,因此存储器包括RAM高速暂存器和SRAM/EEPROM (掉电保护)两部分,这两部分是镜像关系。高速暂存器可确保在用一线通讯时数据能够保持一致性(数据写入DS2438时先写入高速暂存器,仅当数据被确认后,才能用暂存器复制命令将暂存页的数据写入相应的掉电保护空间中),单片机对DS2438进行数据读/写时只能对高速暂存器进行操作。存储空间内包括一些特殊功能寄存器和用户可使用的存储单元。下面仅对存储空间中与我们设计的实际系统有关的特殊寄存器做一下说明。
(1)状态/标志寄存器 状态/标志寄存器决定了DS2438的工作状态,单片机通过对特殊功能寄存器进行读/写操作,可实现DS2438的各种功能,因此在对其进行操作之前,必须对这一寄存器进行初始化,即对相应的控制位进行写操作。
(2)电流寄存器 DS2438内含一个可有效测量流入、流出电池块电流的模数转换器,电流的测量是通过测量外部传感电阻两端的电压来实现的。测量的结果存放于电流寄存器中。
实际上电流寄存器存的是电压值,要得到流入、流出电池的电流可用公式(1)行计算。 I=电流寄存器的值/(4096×RSENS) (1)
(3)电流积分累加寄存器 DS2438对电池剩余电量的测量是借助其内部的电流积分累加器(ICA)实现的。ICA存放的是流入、流出电池总电流的净累加值,因此,存储在这个寄存器内的值可用于计算电池的剩余电量。
(4)电压寄存器 存放采集的电压值。
(5)温度寄存器 存放采集的电池温度值。
(6)消逝时间记录寄存器 消逝时间记录寄存器记录相对于内部基准时间的电池充电完毕、其脱离系统的精确时刻,便于用户了解电池的使用情况,正确地使用和维护电池。
4.DS2438的操作命令 DS2438的操作命令有两类,一类是存储功能命令,有读/写暂存页、复制暂存页、读SRAM/EEPROM页、温度转换、电压转换等命令,此类命令的主要作用是进行数据采集和存储。另一类是ROM功能命令,包括对DS2438的RAM序列号进行读、比较、跳过、寻找等四种操作,用户可使用这类命令随意访问一条总线上连接的多个DS2438芯片。 [page]
四、系统功能软件实现及流程图
为了满足监测的实时性,本系统单片机采用定时中断的方式访问DS2438,进行电池参数采集。首先设置单片机的计数器为定时方式,开启计数器,定时长短可随需要灵活设定。然后单片机运行其它程序,等待定时中断的到来。定时中断发生之后进入中断服务程序,调用DS2438的控制操作程序,进行数据采集,并将采集来的数据进行处理和显示,最后重新初始化定时中断,返回。图3是系统总体流程图,图4是中断服务程序流程图。
DS2438与单片机进行数据通讯时仅用一根数据线,因此必须严格按照芯片的读写时序要求来编写程序,这样才能保证数据的正确读写。这一过程虽然繁琐,但并不复杂,因篇幅有限,本文对此不予说明。下面介绍如何实现利用基于DS2438芯片的智能电池监测系统对仪器的供电方式(直流或交流)和电池的电压、电流、温度、剩余电量进行监测。
1.供电方式的监测
要确定仪器在使用中处于何种供电方式,可利用前面介绍的电流寄存器的值进行判定。
首先单片机控制DS2438使其电流A/D转换器使能,DS2438便会以每秒36.41次的速度对流入、流出电池块电流自动进行测量,测量的结果存放于电流寄存器中。电流寄存器的高字节的高六位是流入电池电流的符号位,为1时表示电池正在充电,也就是仪器正由交流电源供电;为0表示电池正在放电,即仪器正由直流电池供电。因此,单片机读出电流寄存器的值,对其高六位进行判断就可获悉供电方式,同时也获得了电流值。软件流程图见图5。
2.电池电压、温度的测量
由于DS2438内部有A/D转换器和数字温度传感器,要获得电池的电压、温度只需要由单片机对DS2438发出采集电压、温度的控制命令,然后等待其采集完毕并自动将电压、温度测量值存入相对应的寄存器后,再由单片机读取寄存器的内容即可。在读取寄存器值时,若单片机与DS2438之间的数据线为低电平,则表明DS2438正在进行电压、温度转换,此时不能读取数据,只有当数据线为高电平时,才能正确的读取数据。 3.剩余电量的监测
电池的剩余电量是仪器在使用过程中用户所需要的重要信息,它可用电流积分累加(ICA)寄存器的值求得。ICA寄存器的值是由DS2438定时自动测量电池电流后更改的,无需对其进行控制,只需单片机读出ICA寄存器的值,然后将读出的值代入公式(2),便可得到电池的剩余电量。剩余电量监测的流程图见图6。
剩余电量=ICA/(2048×RSENS) (2) 其中RSENS的单位为Ω。
说明:(1) 单片机对DS2438进行任意存储命令操作时,在发出每个命令之前都必须按照DS2438的复位时序要求,先发复位信号且等待DS2438的应答(以示 DS2438准备接受或发送数据),然后再发出一个ROM命令用以选择总线上要访问的DS2438,在本文的程序流程图中,此过程用“DS2438的初始化”来代替; (2) 在对DS2438控制之前,必须先写状态/标志寄存器; (3) 在读取寄存器的值时,为防止读取错误,先要检查DS2438是否正在修改寄存器的内容,这可通过对状态/标志寄存器中的NVB位进行判断实现。
五、结束语
本文介绍的基于DS2438芯片的智能电池监测系统是一种便携式仪器的一部分,实际使用证明本系统运行可靠、功能强大、操作方便、能够与其他功能协同工作。随着各种便携式电子产品的广泛应用,电池实时监测已成为一种必不可少的功能。因此本文所介绍的电池监测系统具有较强的实用性。
|