调小车电机的时候我吃过一个亏:万用表夹在电源两端测电压,另一只表串进去测电流,两只手一忙,接线一松,板子就跟着重启。测功耗这件事本来就该交给一颗专门的芯片。INA219 就是干这个的——一颗挂在 I2C 上、能同时读母线电压和直流电流的电流检测模块,Adafruit 把这颗 INA219B 做成了小板子,官方商店标价 9.95 美元(2026 年 10 月 29 日查的价)。这篇把接线、装库、跑官方示例、读数怎么换算一次讲透。

它能测什么:量程和分辨率这笔账
INA219B 板子上焊了一颗 0.1 欧、精度 1% 的分流电阻,芯片内部的精密放大器去量这颗电阻两端的压差。放大器的最大输入差是 ±320mV,配 0.1 欧电阻,正好对上 ±3.2A 的量程。内部是 12 位 ADC,在这个 ±3.2A 档位下分辨率是 0.8mA。
它支持增益档位。把内部增益设到最小的 div8,量程收到 ±400mA,分辨率能细到 0.1mA。这就很适合测待机电流、测一颗传感器板子到底吃多少毫安——量程小、分辨率高,小电流才看得见。要测更大的电流,官方说法是动手能力强的人可以把那颗 0.1 欧电阻拆掉,换成自己焊的分流电阻,比如换 0.01 欧就能测到 32A,分辨率 8mA。这一步要热风枪和手感,新手别硬上。
另一个容易被忽略的点是它测的是高压侧。多数便宜的电流表只能测低压侧,得把采样电阻塞在负载地和真正的地之间,结果地电位随电流飘,很多电路会因此出怪毛病。INA219 直接把采样电阻放在电源正极那一侧,最高能扛 26V 直流,自己却只用 3V 或 5V 供电,还能顺手把母线电压报回来——测电池电量、看太阳能板输出都靠这个。
接线:先分清你手上是哪个版本
这块板子有两个版本,代码完全通用,接线方式不一样。新版带 STEMMA QT 接口(也兼容 SparkFun 的 qwiic),I2C 和电源线都不用焊,一根四芯转接线插上就行;老版只有排针,得自己焊排针再拉杜邦线。买的时候注意转接线不随板附送,要单独配。

STEMMA QT 版按这六步接:板子的 VIN 接 Arduino 的 5V(如果你用的是 3V 板子就接 3V);GND 接 Arduino 的 GND;SCL 接 SCL;SDA 接 SDA;Vin+ 接被测电路的电源正极;Vin- 接负载的正极引脚。

原始排针版更直白:GND 对 GND,VCC 对 5V,SDA 对 SDA,SCL 对 SCL。这里有个年代坑——R3 以前的 Arduino,SDA 和 SCL 不是独立引脚,而是模拟口 A4 和 A5;R3 之后才有 AREF 旁边那两个专用脚。老款 Mega 更特殊,SDA、SCL 在 20、21 号脚。接错脚的现象是程序跑起来直接报找不到芯片。
把传感器串进被测电路
供电接完只完成一半,真正测电流要把采样电阻串进回路里。做法是:Vin+ 接被测电路电源的正极,Vin- 接负载的正极,再从电源负极拉一根线到 GND。这样分流电阻就串在电路里了,而且传感器能同时量到负载电压。

官方在接线页上用红框专门提醒了一件事:别拿它去测那种电流会突然抽一下的负载,直流电机最典型。电机启动的瞬间电流冲得很高,电源线上全是尖峰,INA219 可能被冲得复位,读数乱跳。真要在电机回路上测,得并一颗大电容把电机和电源隔开,再加一颗续流二极管挡反电动势。官方还强调所有电压都是相对处理器地测量的,共地这根线不能省,不然负载电压会飘。
装库、跑示例、看读数
库不用手找。打开 Arduino IDE 的库管理器,搜 Adafruit INA219,装官方那个库。装完从 File 菜单进 Examples,找 Adafruit_INA219 下面的 getcurrent,示例会自动开在新窗口。上传完打开串口监视器,波特率设成 115200。
代码我按官方仓库里的 getcurrent.ino 原样贴出来,只把尖括号的 include 改成引号形式(站点会把尖括号当成标签吃掉,这是发布侧的老坑,不是代码本身的问题):
#include "Wire.h"
#include "Adafruit_INA219.h"
Adafruit_INA219 ina219;
void setup(void)
{
Serial.begin(115200);
while (!Serial) {
// some platforms require an active serial port before continuing
delay(1);
}
Serial.println("Hello!");
if (! ina219.begin()) {
Serial.println("Failed to find INA219 chip");
while (1) { delay(10); }
}
//ina219.setCalibration_32V_1A();
//ina219.setCalibration_16V_400mA();
Serial.println("Measuring voltage and current with INA219 ...");
}
void loop(void)
{
float shuntvoltage = 0;
float busvoltage = 0;
float current_mA = 0;
float loadvoltage = 0;
float power_mW = 0;
shuntvoltage = ina219.getShuntVoltage_mV();
busvoltage = ina219.getBusVoltage_V();
current_mA = ina219.getCurrent_mA();
power_mW = ina219.getPower_mW();
loadvoltage = busvoltage + (shuntvoltage / 1000);
Serial.print("Bus Voltage: "); Serial.print(busvoltage); Serial.println(" V");
Serial.print("Shunt Voltage: "); Serial.print(shuntvoltage); Serial.println(" mV");
Serial.print("Load Voltage: "); Serial.print(loadvoltage); Serial.println(" V");
Serial.print("Current: "); Serial.print(current_mA); Serial.println(" mA");
Serial.print("Power: "); Serial.print(power_mW); Serial.println(" mW");
Serial.println("");
delay(2000);
}跑起来之后串口会持续打印五行:母线电压、分流电压、负载电压、电流、功率,每两秒一轮。官方示例截图的输出格式就是这五行。

读这五行要先明白它们的含义。母线电压是 Vin+ 相对地的电压,也就是电源电压;分流电压是那颗 0.1 欧电阻两端的压差,单位毫伏,正负号代表电流方向;负载电压等于母线电压加上分流电压换算成伏,代码里写的就是 busvoltage + shuntvoltage/1000;电流是芯片按分流电阻值和增益档算出来的;功率是电压电流相乘。
示例里有两行被注释掉的校准调用:setCalibration_32V_1A 和 setCalibration_16V_400mA。前者是 32V 量程配 1A 档,后者是 16V 量程配 400mA 档。要测几十毫安级别的小板子,把 16V_400mA 那行放开,分辨率立刻从 0.8mA 变成 0.1mA 级别,小电流的变化才看得出来。这也是很多人第一次用觉得"读数太粗"的真正原因——档位没换。
几个真会踩到的坑
第一个是精度预期。官方给的精度是 1%,这个 1% 是整块板子在标定条件下的水平,不是说你测一颗 5mA 的待机电流能精确到 0.05mA。量程档选大了,小电流的读数基本就是噪声。第二个是采样节奏,示例里 delay 2000 意味着两秒一次,想看电机启动的电流尖峰,这个节奏根本抓不到,得自己把延时压到几十毫秒,同时接受读数抖动变大。
第三个是线长。I2C 是短线总线,杜邦线拉太长、和电机线捆在一起走,读数会莫名跳变甚至通信失败。能短就短,非要在电机旁边测,把 SDA、SCL 远离动力线。第四个是负载类型,前面说的感性负载必须加保护,这不是可选项。
最后一个坑反而最实用:这颗芯片的价值不在"测一次电流",而在"一直测"。接在小车电池和主控之间,串口一直打印,你就能看见待机、空载、爬坡、堵转四种状态各自的电流,然后才谈得上算续航、算电池够不够。我见过太多人电池选小了,就是因为从来没量过真实功耗。
值不值得上手
9.95 美元买到 26V、±3.2A、1% 精度的双通道监测,还能顺手读母线电压,对做小车、做太阳能小系统、做电池供电节点的玩家来说,这是性价比很高的一颗器件。缺点是它只有一路,多路供电得挂多颗;量程靠分流电阻定死,想既测大电流又测微安级待机,一块板子做不到。所以先想清楚你要看的是"电机吃了多少"还是"待机漏了多少",量程选错了,读数再准也没意义。











之前用万用表测小车电流,表笔一滑就短路,看完接线那段才明白,Vin+ 和 Vin- 的顺序真是关键。
32V_1A 和 16V_400mA 这两个档位一直没搞懂区别,作者把分辨率算出来就清楚了,测小板待机电流终于能看见数。
提醒得实在,我上次就在电机回路上测,读数跳得没法看,加电容加二极管之后才稳。
老 Mega 的 20、21 脚这个坑我踩过,找了一晚上才发现是引脚问题。
9.95 美元算下来还行,比来回换表笔省事。