通过MQTT实时获取锂电池信息-MAX17048

 

在物联网方案中,我们需要读取锂电池的电压、容量、输出电流等信息。以便我们对电池状态有较好的掌握,以免造成设备停电带来故障。

在前期的文章中,我们也讲到过利用INA219模块来实现对电池信息的获取,但是效果感觉不是很理想。而本次,我们采用MAX17048模块。

关于模块

MAX17048 是一款专为 3.74.2V 锂聚合物 / 锂离子电池设计的低成本、高精度电量监测模块。可以读取电池的实时电压、电池电量(SOC)、充/放电速率。双 JST 端口设计:两个等效的 JST 2PH 端口,可同时连接电池和负载 / 充电器,实现边充电边使用,无需额外切换电路。

功能描述

利用18650锂电池给ESP8266或ESP32等设备供电,并通过MQTT将传感器的数据和电池信息发送到MQTT服务器,供用户查看!
☢️设备清单:

  • • ESP8266
  • • MAX17048模块
  • • 18650锂电池(可并联不能串联)

😘线路连接:

ESP8266
MAX17048
3.3V
3.3V
GND
GND
D1
SCL
D2
SDA

注意,线路连接时一定要注意,请勿正负极接反,不然容易烧掉板子。

线路连接
线路连接

代码

代码完全开源,项目地址见下方:

项目地址: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的值。

MQTT数据

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

可以看到,测量的数据还是比较准确的。配置MQTT我们便可以随时随地查看电池的信息。

 

更多精彩文章 欢迎关注我们

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容