楠木轩

利用单点LED变色简化电池电量指示

由 蓝树芬 发布于 科技

随着嵌入式系统(尤其是IoT设备)的迅猛发展,业界越来越要求对为它们供电的可充电电池系统进行改进。特别是,有许多应用都可以从既高性价比又准确的电池电量指示当中受益。尽管大多数汽车、医疗和军事应用都需要提供完整的电池管理系统(BMS),但许多其他产品也可以通过更简单的电池电量指示来实现很好的服务,也即只需要利用它来告诉用户,可以为设备供电的电量是多少。

本设计实例是一个单点LED变色指示灯,相比于通常的四LED条形图电池电量指示[1],它提供了一种简单、紧凑、低成本和低功耗的替代方案。 它包括一个表贴(SMD)式的RGB LED,并通过一个超小尺寸的MCU驱动——在本例中为6引脚封装的Microchip PIC10F220或PIC10F222。最终的解决方案可以在面积仅为3.1×3.2mm2的PCB上实现,也可以轻松集成到现有设计中(图1)。

图1:1点式条形图显示器为通常的条形图电池电量提供了紧凑的低功耗替代方案。

原型板的尺寸很小,因此可很容易地添加到目前没有电池电量指示的现有产品中。在本例中,它安装在锂离子电池移动电源的外壳内,在此,PIC使用其内部0.6V带隙基准来测量电池电压(在其自身的Vdd引脚上检测)。ADC进行的测量将0.6V基准表示为在Vdd输入上所检测的电压的百分比。随着Vdd的增加,得到的数字将会减少,反之亦然,这样就可以得到被测电压与A/D输出值之间的“1/x”关系。Microchip应用笔记AN1072中提供了通过A/D输出推导出被测电压实际值的计算[2]。

与任何电量指示器一样,在选择MCU显示颜色(红、黄、绿或蓝色,与电池荷电状态对应)所对应的阈值电压时,本设计必须考虑锂离子电池所呈现的非线性电压与荷电状态关系曲线[3]。为了避免在每次测量Vdd时使用PIC有限的数学功能来计算充电状态时所遇到的麻烦,我们创建了一张查找表,可以将它存储在PIC的程序存储器中。这张表(可点此获取)是使用Microsoft Excel创建的,仅涵盖了预期的电池组电压范围,在本例中为2.9至4.3V。用PIC的8位ADC测量时,这些电压会产生52到35之间的输出值。

图2:使用查找表可以简化荷电状态的计算。

为了使功耗最小,本设计使用了高亮度RGB LED[4],并将MCU配置为保持睡眠模式,直到它从其看门狗定时器接收到周期性中断(大约每秒一次)为止。从睡眠模式唤醒后,MCU会测量其Vdd引脚上的电压,并通过驱动与最新测量值相对应的相关颜色的LED引脚,使相应的LED短暂闪烁(每0.25s发送1ms脉冲)。

点击此处可下载两个版本的MCU汇编程序源代码清单,借此,本设计就能驱动共阳极和共阴极RGB LED中的任何一种情况。代码清单进行了完全注释,大小也进行了优化,并使用了宏来简化阅读过程。此外,它们非常紧凑,仅需要85个程序字和3个数据字节,从而使得在几乎任何其他引脚有限的PICmicro MCU上都可以轻松实现该应用。请注意,再做一点试验,应该可以修改此处提供的程序,在阈值之间插值,从而根据电池的荷电状态按比例点亮两个LED。

Benabadji Mohammed Salim在阿尔及利亚奥兰科技大学攻读计算机科学硕士学位。