大多数手持设备使用碱性或可充电电池,因此测量电池容量是此类设计的关键特征。但是,在大多数情况下,对于预算紧张的项目而言,使用电池电量监控IC可能是一种奢望。这是一个更简单,更便宜的选择。
如今,即使是最便宜的微控制器也经常包括内部模数转换器(ADC)模块,并且由于其(相对)较低的分辨率和较高的噪声水平,一直没有使用该模块。但是,那些未使用的内部ADC通道之一足以执行测试以确定电池是否仍然可用。
用于检测电池状态的方法称为电化学动态响应(EDR)(参考文献1),并由Cadex Electronics的美国专利号7,622,929授予专利。
EDR通过施加负载脉冲并评估电池对攻击和恢复的响应时间,将负载下的电池状况与存储的与电池性能相关的参数进行比较。如图1所示,好的电池具有很强的恢复特性,而接近耗尽的电池则具有较高的放电斜率和较差的恢复能力。耗尽电池的响应存在这些差异的原因有很多,例如内部电阻增加。
图1比较了各种充电状态下电池对临时负载脉冲的响应,表明了它们在EDR方面的差异。
使用EDR理论,对电池电压进行采样以在特定时间(例如发生最大功耗时)找到最小电池电量,即可获得有关电池运行状况的信息。系统的初始开启时间(也称为“打招呼”)是衡量电池健康状况的特别好机会。在系统完全激活之前,电池电量似乎处于安全操作水平,但是,如果电池快要用尽,则当系统达到满负荷时,电池电量可能会立即降至安全水平以下。该设备将在不执行EDR测试的情况下以正常模式启动,但在第一个重载时将无法控制地关闭(即,电压下降到如图1所示的关键电池电量水平)。
EDR测试实现的简化硬件版本如图2所示。选择负载电阻来代表整个系统负载,因此其电阻值可能会因系统而异。生成此处显示的数据的系统需要一个10Ω的值。电阻R1和R2用作电池电压(Vcc)测量的分压器,而升压电路可确保ADC的基准保持恒定,即使在测试期间电池电压下降时也是如此。电阻R3是开关晶体管的下拉电阻。
图2此简化的示意图显示了EDR测试实现的总体设计。
测试系统在设定的时间段(约200毫秒(msec))内对电池电压进行采样。在固件控制下,MOSFET仅在测量周期的一半时间内导通,然后关闭。这样,系统就可以在满载情况下测量电压,并在最小负载时测量电池的恢复响应。(可以在固件中更改时间段,但是我发现200毫秒足以充分评估电池容量。)测量完成后,可以通过UART链接读出结果。
用您独特的设计让工程界赞叹不已:设计理念提交指南
在为演示EDR而构建的示例系统中,我使用了两节AA碱性电池,Vcc的最大值为3.2V。升压电压Vdd设置为恒定的3.6V。系统通常消耗55毫安(mA),但在满载时消耗127 mA。使用“好”电池(图3a)和“坏”电池(即耗尽的电池(图3b))对系统进行测试时得到的示波器轨迹表明,欠载电压差异可能有多大。
图3电池电压的负载测试显示,充满电的电池(a)和几乎耗尽的电池(b)的响应之间存在显着差异。
我在某些项目中使用的示例设计基于STM32F303微控制器,其固件使用KEIL IDE用C编写。可以在此GitHub页面上找到固件。
测试代码的流程图出现在图4中。UART收到“ S”字符后,将执行测试。ADC采样频率设置为250赫兹,并且如前所述,测试周期约为200毫秒。
图4EDR测试代码打开负载,采样时间为测试时间的一半,然后关闭负载并完成采样周期。
此代码仅进行测试并收集数据。处理数据有很多选择。在最简单的情况下,您可以查看数据的最小值,并将其与系统的安全工作电压水平(也称为临界水平)进行比较。如果在测试期间电池电压接近临界水平,则可以警告系统用户该更换电池了。
可以编写更全面的算法来精确确定电池运行状况,例如显示电池电量指示器。为了更新并在显示器或电池指示器上向用户显示适当的数据,应过滤所获取的数据。负载变化使原始数据在没有适当过滤的情况下完全无用。缓慢的无限脉冲响应(IIR)滤波器将使信号正常平滑。
总之,借助微控制器的非常基本的ADC,借助EDR方法,可以廉价地检测电池状态。初始加电期间的电池读数约为200毫秒,足以对几乎所有系统实施基本的电池运行状况测试。