1AVR450:为SLA、NiCd、NiMH和Li-Ion电池设计的充电器特点•完整的电池充电器设计方案•模块化的“C”源代码和极紧凑的汇编代码•低成本•支持多数电池类型•快速充电算法•10位ADC实现高精度测量•可选的串行接口•充电参数极易修改•片内EEPROM可用于存储电池信息说明本参考设计完全实现了电池充电器设计的昀新技术,可以对各种流行的电池类型进行快速充电而无须修改硬件,从而围绕单个硬件平台实现一个完整的充电器产品系列。只需要将新的充电算法通过ISP下载到处理器的FLASH存储器就可以得到新的型号。很显然,这种方法可以大大缩短新产品上市的时间,而且只需要库存一种硬件。本设计提供完整的适合SLA、NiCd、NiMH和Li-Ion电池的库函数。Figure1.电池充电器参考设计8位微处理器应用实例本文是英文数据手册的中文翻译,其目的是方便中国用户的阅读。它无法自动跟随原稿的更新,同时也可能存在翻译上的错误。读者应该以英文原稿为参考以获得更准确的信息。Rev.1659A–AVR–03/022AVR4501659A–AVR–03/02参考设计实现了两个充电器,分别由高端产品AT90S4433和高集成度、低成本的8引脚器件ATtiny15构成。当然,也可以用任意一款带A/D转换器、PWM输出、具有足够程序存储器的AVR器件来实现电池充电器。介绍随着越来越多的手持式电器的出现,对高性能、小尺寸、重量轻的电池充电器的需求也越来越大。电池技术的持续进步也要求更复杂的充电算法以实现快速、安全的充电。因此需要对充电过程进行更精确的监控,以缩短充电时间、达到昀大的电池容量,并防止电池损坏。AVR已经在竞争中领先了一步,被证明是下一代充电器的完美控制芯片。AtmelAVR微处理器是当前市场上能够以单片方式提供Flash、EEPROM和10位ADC的昀高效的8位RISC微处理器。由于程序存储器为Flash,因此可以不用象MASKROM一样,有几个软件版本就库存几种型号。Flash可以在发货之前再进行编程,或是在PCB贴装之后再通过ISP进行编程,从而允许在昀后一分钟进行软件更新。EEPROM可用于保存标定系数和电池特性参数,如保存充电记录以提高实际使用的电池容量。10位A/D转换器可以提供足够的测量精度,使得充好后的容量更接近其昀大容量。而其他方案为了达到此目的,可能需要外部的ADC,不但占用PCB空间,也提高了系统成本。AVR是目前唯一的针对象“C”这样的高级语言而设计的8位微处理器。AT90S4433参考设计就是用“C”写的,说明用高级语言进行软件设计是多么的简单。C代码似的此设计很容易进行调整以适合当前和未来的电池。而ATtiny15参考设计则是用汇编语言写的,以获得昀大的代码密度。3AVR4501659A–AVR–03/02工作原理电池充电是通过逆向化学反应将能量存储到化学系统里实现的。由于使用的化学物质的不同,电池有自己的特性。设计充电器时要仔细了解这些特性以防止过度充电而损坏电池。AVR8位RISCMCU参考设计包括两个独立的充电器。一个使用的是AT90S4433,另一个使用的是ATtiny15。AT90S4433设计用于说明用C实现电池充电器的高效性,而ATtiny15设计则是目前市场上可以得到的集成度昀高、成本昀低的电池充电器。AT90S4433可通过UART与PC接口以监控电池电压和温度。表1说明了两个设计的不同。电池技术现代消费类电器主要使用如下四种电池:•密封铅酸电池(SLA)•镍镉电池(NiCd)•镍氢电池(NiMH)•锂电池(Li-Ion)在正确选择电池和充电算法时需要了解这些电池的背景知识。密封铅酸电池(SLA)密封铅酸电池主要用于成本比空间和重量更重要的场合,如UPS和报警系统的备份电池。SLA电池以恒定电压进行充电,辅以电流限制以避免在充电过程的初期电池过热。只要电池单元电压不超过生产商的规定(典型值为2.2V),SLA电池可以无限制地充电。镍镉电池(NiCd)NiCd电池目前使用得很普遍。它的优点是相对便宜,易于使用;缺点是自放电率比较高。典型的NiCd电池可以充电1,000次。失效机理主要是极性反转。在电池包里第一个被完全放电的单元会发生反转。为了防止损坏电池包,需要不间断地监控电压。一旦单元电压下降到1.0V就必须停机。NiCd电池以恒定电流的方式进行充电。镍氢电池(NiMH)在轻重量的手持设备中如手机、手持摄象机,等等镍氢电池是使用昀广的。这种电池的容量比NiCd的大。由于过充电会造成NiMH电池的失效,在充电过程中进行精确地测量以在合适的时间停止是非常重要的。和NiCd电池一样,极性反转时电池也会损坏。NiMH电池的自放电率大概为20%/月。和NiCd电池一样,NiMH电池也为恒定电流充电。锂电池(Li-Ion)和本文中所述的其他电池相比,锂电池具有昀高的能量/重量比和能量/体积比。锂电池以恒定电压进行充电,同时要有电流限制以避免在充电过程的初期电池过热。当充电电流下降到生产商设定的昀小电流时就要停止充电。过充电将造成电池损坏,甚至爆炸。Table1.设计差异AT90S4433ATtiny15编程语言C汇编代码大小1.5K字节350字节电流测量需外部运放调节增益片内具有差分增益调节功能PWM频率14kHz,8位100kHz,8位时钟外部晶体,7.3MHz片内经过标定的RC振荡器,1.6MHz串行接口YesNoISPYesYes4AVR4501659A–AVR–03/02电池的安全充电现代的快速充电器(即电池可以在小于3个小时的时间里充满电,通常是一个小时)需要能够对单元电压、充电电流和电池温度进行精确地测量,在充满电的同时避免由于过充电造成的损坏。充电方法SLA电池和锂电池的充电方法为恒定电压法要限流;NiCd电池和NiMH电池的充电方法为恒定电流法,且具有几个不同的停止充电的判断方法。昀大充电电流昀大充电电流与电池容量(C)有关。昀大充电电流往往以电池容量的数值来表示。例如,电池的容量为750mAh,充电电流为750mA,则充电电流为1C(1倍的电池容量)。若涓流充电时电流为C/40,则充电电流即为电池容量除以40。过热电池充电是将电能传输到电池的过程。能量以化学反应的方式保存了下来。但不是所有的电能都转化为了电池中的化学能。一些电能转化成了热能,对电池起了加热的作用。当电池充满后,若继续充电,则所有的电能都将转化为电池的热能。在快速充电时这将使电池快速升温,若不及时停止充电就会造成电池的损坏。因此,在设计电池充电器时,对温度进行监控并及时停止充电是非常重要的。5AVR4501659A–AVR–03/02停止充电的判别方法电池的不同应用场合及工作环境限制了对判断停止充电的方法的选择。有时候温度不容易测得,但可以测得电压,或者是其他情况。本文以电压变化率(-dV/dt)为基本的判断停止充电的方法,而以温度和绝对电压值为辅助和备份。但是本文所描述的硬件支持以下讲述的所有的方法。t–时间这是决定何时停止充电的昀简单的方法。通常用于快速充电时的后备方案。有时也作为普通充电(14-16小时)方法的基本方案。适用于各种电池。V–电压当电压超出上限时停止充电。通常与恒定电流充电配合使用。昀大电流由电池决定,通常为1C。为了防止充电时电流过大导致电池过热,此时电流限制是非常关键的。这个方法是锂电池的基本充电和停止方案。实际锂电池充电器往往在达到昀大电压之后还继续进行第二阶段的充电,以达到100%的电池容量。对于NiCd电池和NiMH电池本方法可以作为后备的判断停止充电方案。-dV/dt–电压变化率这个判断停止充电的方法利用了负的电压变化率。对于某些类型的电池,当电池充满后继续充电将导致电压的下降。此时本方案就非常合适了。这个方法通常用于恒定电流充电,适用于对NiCd电池和NiMH电池的快速充电。I–电流当充电电流小于某个预先设定的数值时停止充电。通常用于恒定电压充电法。适用于SLA电池和锂电池。T–温度绝对温度可以作为NiCd电池和NiMH电池停止充电的依据,但是更适合于作为备份方案。温度超出设定值时任何电池都得停止充电。dT/dt–温度上升速率快速充电时温度的变化率可以作为停止充电的依据。请参考电池生产商的规范(NiCd电池的典型值为1oC/min)–适用于NiCd电池和NiMH电池。DT–超出环境温度的温度值当电池温度和环境温度之差超过一定门限时需要停止充电。此方法可以作为NiCd电池和SLA电池停止充电的方案。在寒冷环境中充电时这个方法比绝对温度判定法更好。由于大多数系统往往只有一个温度探头,只好将充电之前的温度作为环境温度。dV/dt=0–零电压差这个方法与-dV/dt方法极其类似,而且在电压不会再升高的情况下更准确。适用于NiCd电池和NiMH电池。6AVR4501659A–AVR–03/02硬件实现参考设计包括两个完整的电池充电器设计。如图2所示,本设计可以分为5个主要的模块。Figure2.电池充电器参考设计的主要模块电源包括模拟基准源、按键和LED。输入电压由D9-D12进行整流,然后通过C13进行滤波。整流后的输入电压可以在板上标有“VIN”处测得。VIN同时提供给BUCK转换器和LM7805。LM7805为单片机提供5V电源。此电压可以在标有襐CC”的测试点处测得。若标有“5VOK”的LED亮则说明电源就绪。PC接口与AT90S4433的UART相连,可用来获取电池充电时的数据。这些数据可以导入到spreadsheet以显示电池特性。进一步的信息请参阅应用手册“VR451:DataLoggerforBatteryChargerReferenceDesign”,以获取例子的源代码以及用于导入数据的Microsoft®Excelspreadsheet。使用ATtiny15电池充电器时也可以用AT90S4433来获取数据。LED和按键电路板上有几个LED和按键用于调试和监控。在目前的应用中只用到了几个。•LED0:与AT90S4433的PortB0连接,用于指示当前充电模式为快速模式还是涓流模式。•LED1:与AT90S4433的PortB2连接•LED2:与AT90S4433的PortB3连接•LED3:与AT90S4433的PortB0连接,用于指示系统出现了错误•LED4:无连接•LED5:无连接•LED6:与ATtiny15的PortB1连接,用于指示当前的PWM频率。•VCCPower:指示当前的电源状态•SW0:与AT90S4433的PortD4连接,用于启动充电器•SW1:与AT90S4433的PortD5连接•SW2:与AT90S4433的PortD6连接tiny15BatteryCharger2333BatteryChargerPowerSupplyLEDsandSwitchesPCInterface7AVR4501659A–AVR–03/02•SW3:与AT90S4433的PortD7连接•RESET:复位程序以便从错误中恢复ISP接口两个充电器都有10引脚的ISP插座。可以通过AVRISPPC软件对程序FLASH和EEPROM数据存储器进行编程。ATtiny15及100kHzBuck变换器ATtiny15的特性使其非常适合于设计电池充电器。片内的100kHzPWM与buck变换器相连。高速开关频率以及高精度降低了对外围线圈和电容的要求。电路板上加入了测试点以便于监控PWM输出,输入电压和输入电流。ATtiny15具有内部增益调节功能以放大两个ADC引脚之间的差分信号,从而避免了使用外部运放。充电电流流过0.25W的电阻,并由两个ADC取得差分信号。充电器的电源在附录2里说明。AT90S4433及14kHzBuck变换器90S4433型充电器使用了外部运放来放大电流信号,以保证精度。充电器可以与PC进行通讯,用来监控充电参数及调试充电算法。充电器可以对SLA、NiCd、NiMH和Li-Ion电池进行充电。充电算法包括快充模式和涓流模式,以昀大限度减少充电时间,获