在物联网方案中,我们需要读取锂电池的电压、容量、输出电流等信息。以便我们对电池状态有较好的掌握,以免造成设备停电带来故障。
在前期的文章中,我们也讲到过利用INA219模块来实现对电池信息的获取,但是效果感觉不是很理想。而本次,我们采用MAX17048模块。
关于模块
MAX17048 是一款专为 3.7–4.2V 锂聚合物 / 锂离子电池设计的低成本、高精度电量监测模块。可以读取电池的实时电压、电池电量(SOC)、充/放电速率。双 JST 端口设计:两个等效的 JST 2PH 端口,可同时连接电池和负载 / 充电器,实现边充电边使用,无需额外切换电路。

功能描述
利用18650锂电池给ESP8266或ESP32等设备供电,并通过MQTT将传感器的数据和电池信息发送到MQTT服务器,供用户查看!
☢️设备清单:
-
• ESP8266 -
• MAX17048模块 -
• 18650锂电池(可并联不能串联)
😘线路连接:
|
|
|
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
注意,线路连接时一定要注意,请勿正负极接反,不然容易烧掉板子。

代码
代码完全开源,项目地址见下方:
项目地址:https://github.com/Priess0503/MQTT_18650_MAX17048
代码核心API函数:
// 基本读取
float cellVoltage(); // 读取电池电压 (V)
float cellPercent(); // 读取电量百分比 (%)
float chargeRate(); // 读取充放电速率 (%/hr)
// 初始化
bool begin(); // 初始化芯片
uint8_t getChipID(); // 获取芯片ID
// 休眠模式
void hibernate(); // 进入休眠
void wake(); // 唤醒
bool isHibernating(); // 检查休眠状态
// 告警功能
void setAlertVoltages(float minV, float maxV); // 设置电压告警阈值
uint8_t getAlertStatus(); // 获取告警状态
bool isActiveAlert(); // 检查是否有告警
MQTT输出示例
{"voltage":3.251,"soc":18.5,"rate":-5.23,"state":"Discharging"}
rate是CRATE寄存器的值,表示电池的充放电速率。如:-5.23%/hr 电池正在以 每小时5.23% 的速度放电(+为充电)。
注意事项
初次使用,电池的电量需要充电到(4.2v)满电。这样会触发quickStart,从而校准SOC的值。


如上,我们测得电池电压为4.13V,电池电量SOC=91.8%。接下来我们用万用表测量。

可以看到,测量的数据还是比较准确的。配置MQTT我们便可以随时随地查看电池的信息。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END














暂无评论内容