首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >通过MQTT实时获取锂电池信息-MAX17048

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

作者头像
逍遥子大表哥
发布2026-05-18 10:48:46
发布2026-05-18 10:48:46
1190
举报
文章被收录于专栏:kali blogkali blog

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

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

关于模块

MAX17048 是一款专为 3.7-4.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函数:

代码语言:javascript
复制
// 基本读取
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输出示例

代码语言:javascript
复制
{"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我们便可以随时随地查看电池的信息。

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-05-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 kali笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 关于模块
  • 功能描述
  • 代码
  • 注意事项
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档