INA219模块怎么测电流?I2C接线与校准方法实测

数据媛小满硬件DIY 2026-10-13 23:03:56 16阅读 举报

给机器人做电池电量监测,最烦的是想知道“现在到底用了多少毫安”。串一块万用表进去太麻烦,只靠锂电池电压又估算不准。后来我换了INA219,一个I2C小模块,同时测电压电流还能算功率,几行代码就能读出来,这篇文章把接线和校准一次讲明白。

INA219本质上是个零温度漂移的电流传感芯片,模块上有一对采样电阻,能感知流过它的微小压降反推电流。它走I2C总线,所以只需要四根线:VIN和GND接被测电路电源,SCL和SDA接到主控的I2C引脚,电路就能边供电边测量,不用把表串进回路里。

四根线别接反,地址先弄对

接线就四根,但方向很关键。VIN是模块供电和测量的入口,通常接电池正极,GND接公共地。被测电路的正极要从模块的“电流输入”这头进、从另一头出,也就是串接在电源回路里,这样测出来的才是流过负载的真实电流。

INA219默认I2C地址是0x40,靠模块上A0、A1两个跳线可以改到0x41、0x44、0x45等等,一套系统里挂多块还能各自区分。I2C要共地和共电源,SCL拉到主控A5、SDA拉到A4(Arduino Uno),或者对应的硬I2C脚。

用现成库,档位别选错

Arduino和ESP32都有成熟的INA219库,初始化后直接读busVoltage()、shuntVoltage()、current()就能拿到数据。关键在校准档位:库里有不同量程可以选,比如32V/2A、32V/1A、16V/400mA这些。选档要覆盖你实际的电流范围,选太小读数会饱和不准,选太大精度会变差。

我自己的测量习惯是先把量程设得比预计电流稍大一点,读取正常后再根据需要换更贴合的量程提精度。模块内部有校准寄存器,库会根据设定的量程把原始ADC值换算成真实电流,所以在读数据前一定要先跑一下把量程写进寄存器。

避坑:共地与供电的顺序

最容易翻车的是地线没接好。INA219测量电压是相对模块自己的地来算的,如果模块地和被测电路的负端没连在一起,读数会漂得很离谱。所有模块务必共地。

再有就是别让电流穿错了路径。有时候模块串在电池和负载之间,但负载还有别的地回路,电流分走了导致测出来偏小。把供电回路理清楚,保证被测电流全部流经模块的采样电阻,读数才准。

INA219给我最大的帮助是把“猜电池还剩多少”变成了“看实时电流就知道负载状态”。做遥控车、机械臂或太阳能供电项目,用它测功率、做低电量告警都特别顺手,值得每个玩电池的都备一块。

版权声明:
作者:数据媛小满
链接:https://www.aiddithome.com/p/8abe2d631fda2.html
来源:硬件DIY
实践版权归作者所有,未经允许请勿转载,若此实践存在违规行为,您可以点击 “举报”。


登录 后发表评论
3条评论
胶佬憨憨
1楼 · 2026-10-13 23:12:12

共地这个点太关键了,之前读数乱跳一天

拆机党
2楼 · 2026-10-13 23:12:11

四个地址跳线终于搞明白了,谢谢

锡点
3楼 · 2026-10-13 23:12:11

量程档位选错读数飘,这篇讲得实在