风筝
发表于: 2022-4-2 16:51:35 | 显示全部楼层

在本篇文章中,我们将MAX17043锂电池电量测量模块与Arduino开发板连接。MAX17043/44可用于测量锂离子或锂聚合物电池的电量百分比以及充电和放电率。锂聚合物电池是为您的项目供电的好方法。它们体积小、重量轻,并且为它们的尺寸提供了相当不错的冲击力。


在之前的帖子中,我们搭建了一个在线电池监控系统。该系统使用了分压器网络来降低电压,以便ADC可以读取它。但这种方法并不是测量电池百分比的理想方法。这是因为,电池电压在开始时迅速下降,保持一段长时间稳定,然后在其寿命结束时突然下降。其次,锂离子或锂聚合物电池的电压不会线性下降。

Voltage-drop-Curve.png


这就是为什么我们需要一种更加准确的方法来线性测量电池百分比的原因。 MAX17043电量计将您的电池连接到您的项目,并使用复杂的算法来检测相对充电状态并指导电池电压的 A/D 测量。换句话说,它告诉你的微控制器油箱里还剩下多少燃料。 MAX17043锂电池电量计芯片通过I2C与Arduino通信并通知其电池电量百分比,并且Alert引脚还会告诉您电量何时降至某个百分比以下。


所需的组件

●    Arduino Pro Mini Atmega328开发板

●    Sparkfun MAX17043锂电池电量计

●    TP4056电池充电器模块

●    0.96寸I2C OLED显示屏(SSD1306)

●    锂聚合物电池(3.7V,1000mAh)

●    跳线

●    面包板


MAX17043 3.7V锂电池电量计

3.7V锂电池经常用在很多项目中。然而,这些电池的剩余电量和电压是非线性的。我们只能根据它的电压来估计电池是充满还是几乎耗尽。由于非线性放电,将电池电压映射到百分比函数非常不准确。

MAX17043.jpg


MAX17043单节锂电池电量计采用I2C接口,便于与微控制器连接。它具有超低工作电流,并通过Maxim的专利算法实时跟踪电池的相对充电状态 (SOC)。这消除了完全到空的重新学习和偏移累积错误的需要。


该模块还具有低电池电量警报中断功能。当电池电量低于指定阈值时,ALR引脚会产生一个下降脉冲来触发控制器的外部中断。通过使用此模块了解系统的功耗,您会发现对估计电池寿命有很大帮助。更多详细信息,请查看MAX17043数据手册


MAX17043锂电池电量计与Arduino的硬件连接

现在让我们将MAX17043锂电池电量计连接到Arduino开发板。以下是该项目的电路图。

Interfacing-MAX17043-LiPo-Fuel-Gauge-IC-with-Arduino.jpg


本文没有使用Arduino UNO或Nano,而是采用了Arduino Pro Mini开发板,因为Arduino Pro Mini可以使用较低的电压和锂电池。最受欢迎的MAX17043电量计模块由Sparkfun制造。所以最好使用SparkFun LiPo电量计模块。为电池充电的TP4056电池充电模块是市场上更便宜和最好的替代品。要显示电池电压和百分比,我们需要一些显示单元,如0.96寸I2C OLED显示屏。对于测试应用,可以使用500mAh或1000mAh的锂离子/聚合物电池。


Sparkfun MAX17043模块有6个引脚,分别是VCC、GND、SDA、SCL、QST和ALT。将MAX17043的SDA和SCL引脚分别连接到Arduino Pro Mini开发板的A4 和A5引脚。将MAX17043的VCC、GND和ALT引脚分别连接到Arduino Pro Mini开发板的RAW、GND和D2引脚。将3.7V锂电池连接到Sparkfun MAX17043模块的电池连接器。模块顶部有+ & - 引脚,连接到TP4056模块的+ & - 输入引脚。

MAX17043-Arduino-Connection.jpg


为了显示电池状态,我们使用了0.96寸 I2C OLED显示屏。将显示屏的SDA和SCL引脚连接到Arduino Pro Mini的A4和A5。将OLED的VCC和GND引脚连接到Arduino的3.3V和GND引脚。


MAX17043与Arduino连接的代码

在市面上有多个arduino库可用于将MAX17043与Arduino连接。其中一个库由porrey编写,另一个由lucadentella编写,Sparkfun提供的库也很受欢迎。


但我更喜欢Nlamprian的库,它更加易于使用、重写和修改。

lib.png


该代码还需要两个用于 OLED 显示器的库。从以下链接下载库并将它们添加到 Arduino 的库文件夹中。

1.   Adafruit GFX 库:https://github.com/adafruit/Adafruit-GFX-Library

2.   Adafruit SSD1306 库:https://github.com/adafruit/Adafruit_SSD1306


下载完整代码并使用USB转TTL模块将其上传到Arduino Pro Mini Board开发板中。以下是完整代码:

main.rar (1.04 KB, 下载次数: 30)


测试MAX17043电量计

将代码上传到Arduino Pro Mini开发板后,OLED显示屏将开始显示电池电压和以百分比表示的Soc。

LP1.jpg


连续使用锂电池后,电池可能会放电,这时可以将micro-USB电缆插入TP4056充电端口为电池充电。

LP2.jpg


在大多数的锂离子电池中,最大电池电压为4.2V。为了实现100%的充电,您必须将电池充电至4.2V。电池超过4.0V后,电池充电变慢。当电池电量严重不足时,会自动关闭整个系统功能。阈值电压在代码中设置为10%。您可以将其更改为更低或更高。

LP4.jpg


OLED显示屏一直显示电池电压和以百分比表示的SOC。也可以查看串口监视器时,您将获得更多有用的信息。

Capture.png


以上这就是如何使用MAX17043锂电池电量计模块和Arduino开发板计算正确的电池百分比。如果有任何疑问,请随时在本帖下面回复。


跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 700 | 回复: 1479



手机版|

GMT+8, 2024-3-29 22:13 , Processed in 0.251509 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表