想知道电路里到底走了多大电流、马达是不是堵转、电池还有多少电,ACS712是一款很好用的电流传感器模块。它用霍尔原理,非侵入地串接在负载回路里测电流,输出对应的模拟电压,Arduino直接读A0就行。这篇文章把接线和换算讲清楚。
ACS712是什么,认准量程版本
ACS712是Allegro的霍尔效应电流传感器,把被测量的电流流过内部走线产生磁场,再通过霍尔芯片转成电压。市面常见按量程分几个版本:5A、20A、30A,灵敏度不同,选型时要按你的负载电流挑,别拿30A的板子去测毫安级小电流。
模块引出几个脚:VCC(5V)、GND、OUT(模拟输出),以及串在负载里的IP+和IP-两个端子。直流电从IP+进、IP-出(或反过来),电流方向影响输出电压是偏上还是偏下。板子照片见下。

接线表:负载串接,OUT接A0
ACS712连Arduino Uno:VCC接5V、GND接GND、OUT接A0。负载要断开一路,把电源的正极接到IP+,再从IP-接到负载的输入端,也就是把模块“串”进电流回路里,模块才能感知流过的大电流。
接的时候务必先断电再动线,量程内大电流、接反方向都会让读数异常。满载接线固定好位置,别让大电流走线在板子附近乱甩,免得串扰。
读数换算:先找零点再乘灵敏度
ACS712输出是以2.5V(Vcc半量程)为零点的线性信号。没电流时OUT约2.5V,对应analogRead大约512;每通过电流,输出电压按灵敏度变化——5A版约185mV/A,20A版约100mV/A,30A版约66mV/A。换算电流=(当前电压-2.5V)/灵敏度。
实际用串口读A0,先把值转成电压,减掉基线2.5V,再除以灵敏度,就是安培数。做程序时建议多次采样取平均,能大幅压掉底噪,读数更稳。
读不准或偏漂?几个排查点
第一,零点会随温度略有漂移,最好在程序启动时先空载采样一次当作基线。第二,测的是叠加在直流上的交流分量时,采样要取多点到峰值,否则平均下来会把波动抹平。
第三,选错量程版本会导致读数比例不对,先核对模块上的丝印(5A/20A/30A),再套对应的灵敏度系数。
把换算做好,就能做马达电流监测、电池电量估算、负载断路报警这些实用项目。ACS712是理解霍尔电流传感和模拟量换算很好的一课,串对线、找好零点,电流就到手。







测电池电流和马达负载很实用,串对线零点找好就行
5A版约185mV/A,选对量程版本灵敏度才不会错
程序里多次采样取平均,底噪能压下去读更稳
负载要串进IP+到IP-之间,模块才能感知到电流
没电流时OUT约2.5V约512,拿这个当零点再换算