基于微处理器的锂电池检测系统

近年来 , 便携式电子产品的迅猛发展促进了电池技术的更新换代 。锂离子电池由于其具有高能量密度、长寿命、低自放电率、无污染等特性 , 迅速成为市场的主流电池产品 。为了防止电池出现过充电或过放电状态、保证电池的安全性能和避免出现电池特性恶化现象 , 必须在锂离子电池组中安装保护电路 。同时要锂电池能够稳定可靠的为设备提供能量 , 对于电池的智能检测与监控是必须考虑的环节 。锂电池供电是现代便携式设备  合适的供电方案 , 但其充放电安全性不如镍铬电池、镍氢电池及普通  性干电池的传统电源 。如果充放电方法不对 , 将会导致锂电池发生安全问题 , 甚至爆炸 , 故锂电池有必要加入监控电路以实时监控充放电过程 。本文以珠海炬力 SOC 芯片 ATJ2085 来设计锂电池的外围检测系统 , 该设计方案以微处理器作为各种功能控制的   ,  除了对锂离子电池组提供过充、过放、过流保护外 ,  还可有效的对锂离子电池组内各单节锂电的充、放电提供平衡保护、能够实时检测出电池所处状态并对锂电池进行保护 。
2、ATJ2085 的电池监测的功能的使用
ATJ2085 为 LQFP 封装 , 64 针脚 , 采用内嵌式的 MCU 和 24-bit DSP 双处理器体系结构 , 分别完成针对操作事件控制和多媒体数据编 / 解码算法的系统级优化 , 通过数模混合信号技术 , 在单一硅片上集成了高   ADC/DAC 转换器、USB 控制器 , 实时时钟 RTC 等 。支持 USB2.0(FULLSPEED) , 支援 MP3/WMA/WAV/WMV/ASF 等格式媒体播放;支持 MTV 电影播放;支持 JPG、GIF、BMP 图片浏览 。其系统集成度高 , 外围应用电路简单 , 拥有功能完善而成熟的开发工具和环境 。
在 ATJ2085 中 , 电池电压从电池电压检测引脚 VBATPIN 输入 , VBAT 的电压范围小于 3.0 伏 , 所以无论一节碱性电池(1.5V)供电还是两节碱性电池(3.0V)供电 , 在外部电池供电电压小于 3.0 伏时外部都无需要加分压电阻 。ATJ2085 中有一个 4bit 的 ADC , 它把 0.9-1.5 伏之间的电压 16 等分为:0.90V , 0.94V , 0.98V , 1.02V , 1.06V , 1.10V , 1.14V , 1.18V , 1.22V , 1.26V , 1.30V , 1.34V , 1.38V , 1.42V , 1.46V , 1.50V 。当电池电压大于 3.0 伏供电时 , BATSEL 接高电平 , 决定了从 VBATPIN 脚输入的电压在比较前会被分压 。并且 A/D 变换出来的数值会每 2 秒  被记录在 IO PORT(D8H).BIT[3:0]里 , 这样软件就可以读回 IO PORT(D8H)中的值 , 与功能规格表(表 1)中的值作比较 , 来确定要显示的电池电量及采取的动作 。很明显 ATJ2085 能在更多点上监测电池电压 。
举例如下:
假设 VL0》VL1》VL2》VL3 , 电池电量显示为 3 格
选 VL0=1.30V ,  即 IO PORT(D8H).BIT[3:0]=0AH , 
VL1=1.10V ,  即 IO PORT(D8H).BIT[3:0]=05H , 
VL2=0.98V ,  即 IO PORT(D8H).BIT[3:0]=02H , 
当 VBAT》VL0 时 , 电池电量显示为满格;
当 VL0》VBAT》VL1 时 , 电池电量显示为缺 1 格;
当 VL1》VBAT》VL2 时 , 电池电量显示为缺 2 格;
当 VBAT《VL2 时 , 电池电量显示为缺 3 格 , 即空格 , 并闪烁 。
另外 , 当电池的电压低于某个电压时(假设 VL2) , 软件把一些耗电大的电路关断(利用 IO PORT 控制) , 如 DSP , DAC 等等 。当 VBAT PIN 脚上的电压低于 LBD PIN 脚的电压时 , ATJ2085 仍会被无条件复位 。
3、电池检测系统设计
3.1 电路设计
在本文中检测电路仅仅列出锂电池检测电路的原理图 , 该设计考虑到了锂电池的过压特性 , 于是选用 SC805 电池检测芯片来进行硬件电路的设计 。如下图所示 , 电路图一部分是对于 USB 充电和过压的保护设计 , 另一部分为电池电量检测
正如 ATJ2085 的电池监测的功能的使用描述一样 , 需要在电池两端连接电阻 R424 和电阻 R422(理想状态下电阻 R424 和电阻 R422 比值应该为 1:2)来分压 。但是考虑到非理想 ADC 的量化间隔是非等宽的 , 这势必导致 ADC 器件不能完全正确地把模拟信号转化成相应的二进制码 , 从而造成信噪比的下降;且 ADC 每个量化的二进制码所对应的量化间隔都不同 , 为了使设计的系统参数尽可能准确 , 我们需要克服微分非线性量化误差 。于是需要调整 R424 和 R422 的组值(如图 1 所示) 。
3.2 电压检测
ATJ2085 内部有一个 4 Bit 非理想 ADC. 作为检测电源电压之用 。此 4 bit ADC 可以根据固件(F/W)设定的电压值 , 产生 LB- 和 LBNMI- 信号 。对于锂电池 , 由于自身特性不可能使产生的电压直接可以达到 0~1.5 , 需要利用如下公式分压:
将分压后的值与锂电池实际值进行对应 , 其电压检测如表 2 所示:
通过硬件后可以将表 2 的值对应到表 1 中去通过调用以下软件流程进行处理 。
3.3 软件流程
该检测系统软件设计流程如图 2 所示:
首先清 watchdog , 然后通过 GPIO_A0 检测 USB 状态 , 接下来进行充电引脚 GPIO 确认并开始充电 , 充电时将 GPIO_A0(如检测电路图)寄存器的对应位置高电平 , 同时利用 GPIO_B6 进行电池状态检测[6][7] 。当需要对 4 位 ADC 寄存器读写数据时 , 需要设置其端口值参数 , 通过电池状态检测后 ,   将检测到的电池参数通过显示函数显示在 LCD 上 。
其初始化代码如下:
output8(0x4e , input8(0x4e)|0x08)// 清 watchdog
output8(0xee , input8(0xee)|0x01); // 初始化端口参数 , 开始充电
output8(0xf0 , input8(0xf0)&0xbf);
output8(0xf1 , input8(0xf1)|0x40);
output8(0xee , input8(0xee)& 0xfe);
if((input8(0x50)&0x40)!=0x40)
if(!(input8(0xee)&0x04)) // 防止充电黑屏后拔掉 USB 不开
4、结束语
【基于微处理器的锂电池检测系统】通过该方法设计的锂电池检测系统不仅可以有效防止电池的过压、过充、过放、过温 , 同时可以智能监控电池的电压状态;该设计方案简单易行 , 稳定可靠 , 对于嵌入式系统的设计与研发具有一定的指导意义和实践价值 。该方法的创新之处在于不管外接干电池、锂电池还是镍氢电池均可以用该电路设计方法对电池进行监控 。

    推荐阅读