当为不同电池芯容量的多种化学类型电池充电时,在不同的充电阶段上,电池电压可能会高于或低于电源电压。因此,需要对电源电压做升压或降压,以配合电池的电压。例如,当为一个典型电压为1.25V的单芯NiMH(镍金属)电池充电时,必须对3.3V的电源做衰减或降压。当要为一个单芯4.1V锂离子电池充电时,输入电压需要做升压。为解决这些问题,应用一种SEpIC(单端初级电感转换器)作为主充电路径(参考文献1)。这种开关模式的dc/dc转换结构可以同时在某个电压区间内完成升降压工作,从而提供了电源电压的灵活性。
锂离子与NiMH化学类型需要不同的充电曲线,但一个灵活的充电架构可以方便地用于两种情况。较为灵活与简便的实现方式是,用微控制器上的固件,从一种化学类型切换到另一种类型。如果设计一种模块化的充电子系统,并将各种功能封装到各个模块中,就可以根据系统需求,使用某个系列中的不同微控制器,实现相同的应用。模块化的使用简化了设计,开发人员就能够为其它主要应用增加电池充电功能,如电机控制与医疗测量等(参考文献2)。
在控制充电电流时,电池充电器必须要确定出电池的电压、电流与温度。确定电池状态的硬件对所有电池类型都是共同的,电池电压可以高于或低于微控制器的输入范围。因此,工程师们一般都会用一个电阻分压电路测量电压,做电压衰减。他们可以测量高侧的电流,即进入电池的电流;也可以测量低侧的电流,即离开电池的电流;或者,在SEpIC情况下,可以在电感的次级端使用一只电阻。电池通常都内嵌有热敏电阻,可以用于监控和确保电池温度的精度。有些商用电池制造商为降低成本而省略了这些热敏电阻。这种情况下,用户可以外接一只热敏电阻,并使之与电池接触。
采用这些测量参数,微控制器就能确定并控制进入电池的充电电流。从电池充电器的角度来说,不同化学类型之间的主要区别就是充电曲线(图1与参考文献3)。锂离子电池采用的是恒流恒压的充电曲线。如果电池电压在启动时低于恒流阈值,则电池充电器会以少量电流供电,大约为电池容量的10%。在这个预处理阶段,电池电压会随着充电电流而逐步增加。当电压达到快充阈值时,微控制器将充电电流增加到约为100%容量。这个恒流阶段一直保持下去,直到电池电压达到规定的电压值。然后,电池充电器进入恒压阶段,在此期间,充电电流减小,同时电池电压保持在规定的电压值。当电流降低到终止电流时,电池电压保持不变,而电池充电过程终止。
在充电期间,电池中的电流随温度的变化而变化。如果有任何电池状态参数(电压、电流或温度)超出了相应电池充电阶段所规定的范围,则电池充电器会停止充电做保护。
NiMH电池的前两个充电阶段与锂离子电池类似,即:20%容量的激活段,以及100%容量的恒流段。电压下跌与温度下跌表明了NiMH电池的恒流段结束,而电流保持恒定。在这次电压下跌后,NiMH充电器的充电曲线进入了充电完成阶段,在此期间,电流降低到约5%容量的涓流水平。这一阶段提供一个恒定时间的小充电电流,直到充电终止。
使用这些充电需求,就可以将电池充电过程简化为不同的水平,方法是用一个预先定义了电压、电流、温度和超时等数值的状态机。微控制器的状态机控制着电池的状态,以及充电所需要的电流量。图2是一个可为这两种电池充电的简化的状态机。
根据所选择的电池化学类型,微控制器会检查电池的状态机,控制充电电流。电池充电的曲线可以有预编程、启动前或自动决定三种形式。对于前两种方式,微控制器会从用户的输入获得电池类型。对预编程情况,模块软件会选择充电电池的类型,用所需曲线为微控制器编程。这种决策方式适用于那些充电是附加功能的应用。在这些应用中,电池类型是已知的。
在启动前方式中,微控制器会做一个附加检查,这种检查可以简单到在启动时由微控制器检查开关的位置,从而确定电池的充电曲线与选择。对于自动检查方式,微控制器会在启动后自动地做出决策,通过检测电池的类型而选择电池充电曲线。例如,一只单芯NiMH电池的典型电压范围为0.9V~1.25V,而一个锂离子电池芯的电压范围为2.7V~4.2V。同样,不同电池的温度范围也有差异,微控制器可以在启动时保存和比较这些数值。自动检查方案只能用于某些情况。一般来说,预编程与启动前方法可用于大多数应用。本文主要讨论预编程决策,面向那些电池充电是附加功能的应用。
两种化学类型都使用了相同的硬件,用于电池充电器的检测与控制(图3)。要确定电池的状态,就要将电压、电流和温度以多工方式输入到微控制器中的一只ADC,完成测量。固件使用这些数值确定出状态,通过改变pWM(脉冲宽度调制器)的占空比而控制充电电流。pWM的输出连接到SEpIC中MOSFET的栅极上,控制流经电池的电流。这些步骤都与CpU有关,因此会有一些延迟。有些电池(包括锂离子电池芯)对过充很敏感,在较高电压下会变得不稳定。比较器增加了防止过压和过流状况的硬件保护电路。这些比较器会在必要时中止充电,直到用户将其复位,或电池回到安全的状况下。
根据测得的参数值以及电池的化学类型,CpU确定出电池的状态,并相应地改变pWM占空比。按传统方法,CpU用于确定充电曲线的条件都是代码中的常数,程序员要手工修改它们(代码清单1)。
当需要修改充电曲线时,将电池充电曲线设为0或1,可在两个充电曲线之间做切换。程序将针对所有状态的电压、电流和温度极限保存为常数,并做相应的修改。如果某种电池类型需要不同的电压水平,则必须修改代码,输入新的参数,这意味着应用的用户必须了解修改充电曲线的代码,以及电池充电的限制条件。而采用模块化方案后,当选择了相应的Ip(智能产权)块时,就可以输入用于修改电池充电器曲线的参数。图4给出了锂离子电池与NiMH电池的模块参数。
使用这些模块后,应用的设计者就可以为应用增加充电器模块,建立相应的充电曲线。模块还生成了所有其它的硬件块,包括比较器与pWM,以及软件状态机。采用可重新编程的架构时,如Cypress半导体公司的pSoC(可编程系统单芯片),就可以用软件应用,对硬件模块做编程和实现。采用这种方式,开发人员可用NiMH电池的充电曲线为图3中的硬件编程。为产品增加一个USB(通用串行总线)模块,开发人员就可以将电池参数发送给计算机。用C#语言的一个软件工具就可以绘出这些数据,当然也可以采用其它类型的通信方式和相近的工具。电池仿真器用于模仿锂离电池和NiMH电池,获得实时的图像(图5)。
由于使用了电池仿真器,电压的变化便产生了电流的开关噪声。因为使用电池仿真器的电压变化较快,pWM输出对一个电压变化的响应与安定时间可看作开关噪声。一块电池中的电压变化是渐进的,因此开关噪声在一块实际电池中并不明显。
通过对SoC(系统单芯片)固件的简单修改,就可以用相同硬件,开发出用于多种化学类型电池的充电器。将充电曲线模块做到元件中,便于主应用附加电池充电的功能。