Verwendung eines Allegro ACS712-Stromsensors für Gleich- und Wechselstrom mit Arduino-Code
In diesem Tutorial lernen wir, wie man den Allegro ACS712-Stromsensor verwendet, um sowohl Wechsel- als auch Gleichstrom mit einem Arduino zu messen. Der ACS712-Sensor gibt eine Spannung aus, die proportional zum durch ihn fließenden Strom ist, sodass wir die Stromwerte einfach im seriellen Monitor des Arduino auslesen und anzeigen können. Dieses Projekt eignet sich besonders für alle, die den Strom in verschiedenen Anwendungen überwachen möchten, etwa in Netzteilen oder Batteriesystemen.

Wir bauen einen einfachen Schaltkreis, der den ACS712-Sensor mit dem Arduino verbindet, und schreiben dann ein Programm, um die Sensorausgabe auszulesen. Das erwartete Ergebnis ist die Anzeige von Echtzeit-Stromwerten im seriellen Monitor. Zur Verdeutlichung der Umsetzung sollten Sie sich unbedingt das Video ansehen (im Video bei 02:00).
Hardware erklärt
Der Allegro ACS712 Stromsensor ist ein kompaktes Modul, das je nach gewählter Version Ströme bis zu 30A messen kann. Er hat drei Pins: VCC für die Versorgung, GND für Masse und einen Ausgangspin, der die zur gemessenen Stromstärke entsprechende Spannung liefert. Der Sensor nutzt das Hall-Effekt-Prinzip, bei dem der durch einen Leiter fließende Strom ein Magnetfeld erzeugt. Dieses Feld wird erfasst und in eine Spannung umgewandelt, die dann an den Arduino gesendet wird.
Das Modul ist in verschiedenen Stromstärken (5A, 20A und 30A) erhältlich und gibt jeweils Spannungswerte von 185 mV/A, 100 mV/A und 66 mV/A aus. Das bedeutet, dass Sie für jeden Ampere Strom, der durch den Sensor fließt, eine entsprechende Ausgangsspannung erhalten, die Sie auslesen und weiterverarbeiten können. Diese Eigenschaft macht es vielseitig einsetzbar für verschiedene Anwendungen.
Datenblatt-Details
| Hersteller | Allegro Microsystems |
|---|---|
| Teilenummer | ACS712ELCTR-30A-T |
| Logik-/I/O-Spannung | 4.5-5.5 V |
| Versorgungsspannung | 5 V |
| Ausgangsstrom (pro Kanal) | max. 30 A |
| Hinweise zur PWM-Frequenz | Nicht zutreffend |
| Eingangslogik-Schwellenwerte | Nicht zutreffend |
| Spannungsabfall / RDS(on)/ Sättigung | 1,2 mΩ |
| Thermische Grenzwerte | max. 150 °C |
| Paket | TO-220 |
| Notizen / Varianten | Erhältlich in 5 A, 20 A und 30 A |
- Sorgen Sie für eine ordnungsgemäße Verkabelung, um Kurzschlüsse zu vermeiden.
- Verwenden Sie einen geeigneten Leiterquerschnitt entsprechend der Strombelastung (12 AWG für 30 A).
- Überwachen Sie die Temperatur des Moduls während des Betriebs.
- Erwägen Sie, für Anwendungen mit höheren Strömen einen Kühlkörper hinzuzufügen.
- Kalibrieren Sie den Sensorsausgang entsprechend Ihrer spezifischen Anwendung.
Verdrahtungsanleitung

Um den Allegro ACS712-Sensor an Ihren Arduino anzuschließen, verbinden Sie zunächst den VCC-Pin des ACS712 mit dem 5V-Pin des Arduino. Verbinden Sie anschließend den GND-Pin des Sensors mit einem der GND-Pins am Arduino. Der Ausgangspin des ACS712 sollte mit dem analogen Eingang A0 am Arduino verbunden werden.
Für die Strommessung verbinden Sie die Last in Reihe mit dem Sensor. Das bedeutet, dass der positive Leiter Ihrer Stromquelle in einen der Eingangsanschlüsse des Stromsensors führen sollte, während der andere Anschluss mit der Last verbunden wird. Die andere Seite der Last sollte zur Stromquelle zurückführen und den Stromkreis schließen. Achten Sie darauf, einen geeigneten Kabelquerschnitt für den von Ihnen zu messenden Strom zu verwenden, um Überhitzung zu vermeiden.
Codebeispiele und Schritt-für-Schritt-Anleitung
Der folgende Codeausschnitt initialisiert den analogen Pin und richtet den seriellen Monitor ein:
#define VIN A0 // define the Arduino pin A0 as voltage input (V in)
const float VCC = 5.0; // supply voltage is from 4.5 to 5.5V. Normally 5V.
Hier definieren wirVINals den analogen Eingangspin, an dem der Ausgang des Sensors angeschlossen ist. Wir setzen außerdem die VersorgungsspannungVCCauf 5 V.

In der Loop-Funktion lesen wir die Spannung vom ACS712-Sensor aus und berechnen den Strom:
float voltage_raw = (5.0 / 1023.0) * analogRead(VIN); // Read the voltage from sensor
float current = voltage / sensitivity[model]; // Calculate current based on sensitivity
Hier lesen wir die Rohspannung des Sensors und wandeln sie mithilfe des auf dem verwendeten Sensormodell basierenden Empfindlichkeitsarrays in den tatsächlichen Strom um.
Schließlich geben wir die aktuellen Messwerte auf dem seriellen Monitor aus:
if (abs(current) > cutOffLimit) {
Serial.print("V: ");
Serial.print(voltage, 3); // print voltage with 3 decimal places
Serial.print("V, I: ");
Serial.print(current, 2); // print the current with 2 decimal places
Serial.println("A");
} else {
Serial.println("No Current");
}
Dieser Abschnitt prüft, ob der Strom einen definierten Abschaltwert überschreitet, und gibt die Spannungs- und Stromwerte auf dem seriellen Monitor aus. Wenn der Strom unter dem Schwellenwert liegt, wird „Kein Strom“ ausgegeben.
Den vollständigen Code finden Sie im unter dem Artikel geladenen Code.
Demonstration / Was Sie erwartet
Wenn Sie den Code ausführen und die Schaltung mit Strom versorgen, sollten Stromwerte im seriellen Monitor angezeigt werden. Wenn Sie die Last anpassen, sollten sich die Messwerte entsprechend ändern, vorausgesetzt, der Strom liegt über der Abschaltschwelle. Achten Sie auf die Temperatur des Sensors, insbesondere wenn Sie ihn nahe seiner maximalen Spezifikationen betreiben.
Ressourcen & Referenzen
Noch keine Ressourcen vorhanden.
Dateien📁
Datenblatt (pdf)
-
Allegro ACS712 AC/DC 4A, 20A, 30A Stromsensor-Datenblatt
robojax-allegro_ACS712_current_sensor.pdf0.65 MB
Fritzing-Datei
-
Allegre ACS712 Stromsensor
Allegreo ACS712 Current Sensor.fzpz0.03 MB