In diesem Blogbeitrag lernst du, wie du den ACS712 Stromsensor mit einem Arduino verwendest, um Gleich- und Wechselströme zu messen. Am Ende dieses Tutorials hast du ein klares Verständnis davon, wie der ACS712 Sensor funktioniert, wie du ihn an einen Arduino anschließt und wie du Stromdaten mit Codebeispielen ausliest und anzeigst.
Benötigte Bauteile
Im Folgenden findest du die für dieses Projekt benötigten Bauteile. Anstelle des größeren 20×4 LCD Displays kannst du auch ein kleineres 16×2 LCD Display verwenden. Achte nur darauf, dass es eine I2C-Schnittstelle hat und nicht die ebenfalls häufige SPI-Schnittstelle.
Es gibt außerdem drei verschiedene Typen des ACS712 Stromsensors für unterschiedliche Strombereiche (5A, 20A, 30A). Der bereitgestellte Link führt zu einem Set dieser drei Sensoren plus einem zusätzlichen Spannungssensormodul. Wenn du den Strombereich deiner Anwendung kennst, kannst du die passenden Module auch einzeln kaufen.

Arduino Uno

Dupont Kabelset

Breadboard

USB-Kabel für Arduino UNO

LCD Display

ACS712 Stromsensor
Makerguides is a participant in affiliate advertising programs designed to provide a means for sites to earn advertising fees by linking to Amazon, AliExpress, Elecrow, and other sites. As an Affiliate we may earn from qualifying purchases.
Funktionsweise des ACS712 Stromsensors
Der ACS712 Stromsensor basiert auf dem Halleffekt-Prinzip, bei dem ein senkrecht zum Stromfluss stehendes Magnetfeld eine Spannung erzeugt, die proportional zum durch den Sensor fließenden Strom ist.

Diese Spannung kann dann durch Auslesen mit einem analogen Eingang des Arduino und Skalierung in eine Strommessung umgewandelt werden.
Der ACS712 Sensor ist ein kleiner IC mit integriertem Halleffekt-Sensor. Er erkennt das Magnetfeld, das durch den Strom im Leiter des Sensors erzeugt wird, und gibt eine Spannung aus, die proportional zum durchfließenden Strom ist (siehe Bild unten).

Beachte, dass der ACS712 Sensor sowohl für Gleich- als auch Wechselströme verwendet werden kann und auch negative sowie positive Gleichströme misst.
Interne Schaltung
Im Inneren des ACS712 IC befinden sich der Halleffekt-Sensor, ein Differenzverstärker und ein präziser Spannungsregler. Der Differenzverstärker verstärkt die vom Halleffekt-Sensor erzeugte Spannung, um eine genaue Strommessung zu ermöglichen. Der präzise Spannungsregler sorgt für einen stabilen Betrieb und genaue Messwerte.

Technische Daten
Die wichtigsten Merkmale des ACS712 sind unten aufgeführt. Für weitere Details siehe das Datenblatt des ACS712. Zusammengefasst läuft der Sensor mit 5V (oder anderen Spannungen), ist sehr schnell, deckt einen großen Strombereich ab und ist einfach zu verwenden.
- 5 µs Anstiegszeit des Ausgangssignals bei Sprungstrom
- 80 kHz Bandbreite
- Gesamtfehler am Ausgang 1,5 % bei TA = 25°C
- 1,2 mΩ interner Leiterwiderstand
- 2,1 kVRMS Mindest-Isolationsspannung
- 5,0 V Einzelversorgung
- 66 bis 185 mV/A Ausgangsempfindlichkeit
- Ausgangsspannung proportional zu Wechsel- oder Gleichströmen
- Werksseitig kalibriert für Genauigkeit
Verschiedene Versionen des ACS712 Stromsensors
Es gibt drei verschiedene Versionen des ACS712 Stromsensors für unterschiedliche Strombereiche wie 5A, 20A und 30A. Äußerlich sehen die ACS712 Module für die verschiedenen Ströme identisch aus. Siehe Bild unten.

Bei genauerem Hinsehen erkennt man, dass die ACS712 ICs auf den Platinen mit ELC-05B, ELC-20A und ELC-30A für die 5A-, 20A- und 30A-Versionen beschriftet sind. Neben den unterschiedlichen Strombereichen haben die Module auch unterschiedliche Empfindlichkeiten und typische Anwendungsgebiete.
ACS712-05B
- Misst bis zu ±5A Strombereich.
- Empfindlichkeit von 185mV/A.
- Ideal für Anwendungen mit niedrigem Strom.
- Geeignet für Kleinprojekte und Geräte mit geringem Stromverbrauch.
ACS712-20A
- Misst bis zu ±20A Strombereich.
- Empfindlichkeit von 100mV/A.
- Geeignet für Anwendungen mit mittlerem Strom.
- Häufig verwendet in Hausautomationssystemen und Robotikprojekten.
ACS712-30A
- Misst bis zu ±30A Strombereich.
- Empfindlichkeit von 66mV/A.
- Am besten für Anwendungen mit hohem Strom geeignet.
- Ideal für industrielle Automatisierung und Leistungsüberwachung.
Beachte, dass mit größerem Strombereich die Sensorauflösung abnimmt. Für maximale Genauigkeit solltest du das Modul wählen, das zum maximalen Strom deiner Anwendung passt.
Pinbelegung des ACS712 Stromsensormoduls
Normalerweise wird der ACS712 IC nicht direkt an einen Arduino angeschlossen, sondern über ein ACS712 Sensor Breakout Modul, das den ACS712 IC, einige zusätzliche Widerstände und eine Power-LED enthält. Diese Module sind viel einfacher anzuschließen. Das Bild unten zeigt die Pinbelegung eines typischen ACS712 Sensor Moduls.

An der Klemmen-Seite (grün) wird der zu messende Strom angeschlossen. Auf der anderen Seite befinden sich die Stromversorgung (VCC, GND) für den Sensor und der Sensor-Ausgangspin (OUT).
Messschaltung
Um einen Strom zu messen, musst du den ACS712 in eine Schaltung einfügen, die mindestens eine Stromquelle (Gleich- oder Wechselstrom) und eine Last enthält, z.B. einen Widerstand, Motor oder eine Lampe. Siehe Beispiel unten.

Beachte, dass du mit einer 9V-Batterie als Stromquelle und einer LED mit Widerstand als Last wenig Erfolg haben wirst. Der typische Strom in so einer Schaltung liegt bei etwa 0,020A. Da der kleinste Strombereich des ACS712 5 Ampere beträgt, erhältst du am Sensor-Ausgang kaum ein Signal.
Wähle stattdessen eine Stromquelle, die einige Ampere liefern kann, und eine Last, die ebenfalls einige Ampere verbraucht. Ein geregeltes Netzteil mit Strombegrenzung und ein Hochleistungswiderstand mit niedrigem Ohm-Wert (z.B. 8 Ohm, 100W) eignen sich besser, um den ACS712 auszuprobieren.

Wenn du überprüfen möchtest, ob die Strommessungen des ACS712 genau sind, kannst du ein Multimeter wie folgt in die Schaltung einfügen:

Achte darauf, dein Multimeter für Strommessungen anzuschließen und den richtigen Messbereich einzustellen.
Anschluss des ACS712 an Arduino
Den ACS712 Modul an einen Arduino anzuschließen ist sehr einfach. Verbinde VCC des Moduls mit dem 5V-Pin des Arduino (rotes Kabel) und GND des Moduls mit dem GND-Pin des Arduino (schwarzes Kabel). Schließlich verbindest du den Sensor-Ausgang (OUT) mit dem analogen Eingang A0 des Arduino (weißes Kabel).

Das war’s. Wenn du deinen Arduino mit Strom versorgst, sollte die rote Power-LED des ACS712 Moduls leuchten. Im nächsten Abschnitt zeige ich dir den Code, um Daten vom ACS712 auszulesen.
Code zum Auslesen der ACS712 Stromdaten
Unten findest du den Code zur Strommessung mit dem ACS712. Schau dir zuerst den kompletten Code an, bevor wir ins Detail gehen.
// Measure current with ACS712
// and print on Serial Monitor
const int nSamples = 1000;
const float vcc = 5.0;
const int adcMax = 1023;
const float sens = 0.185; // 5A
//const float sens = 0.100; // 20A
//const float sens = 0.066; // 30A
float avg() {
float val = 0;
for (int i = 0; i < nSamples; i++) {
val += analogRead(A0);
delay(1);
}
return val / adcMax / nSamples;
}
void setup() {
Serial.begin(9600);
}
void loop() {
float cur = (vcc / 2 - vcc * avg()) / sens;
Serial.print("Current:");
Serial.println(cur);
}
Die Hauptfunktion des Codes liest 1000 Mal (mit 1 ms Verzögerung) die Spannung am analogen Eingang A0 aus, bildet den Durchschnittswert und wandelt diesen dann in einen Strom um.
Konstanten und Variablen
Wir beginnen mit der Definition mehrerer Konstanten wie nSamples für die Anzahl der Messwerte für den Durchschnitt, vcc für die Versorgungsspannung und sens für die Empfindlichkeit des ACS712 Sensors. Je nachdem, welchen Sensor du verwendest (5A, 20A, 30A), kommentierst du die entsprechende Zeile im Code ein.
Wir verwenden eine Versorgungsspannung VCC von 5V, aber der ACS712 kann auch mit niedrigeren oder höheren Spannungen betrieben werden (z.B. 3,3V bei Verwendung eines ESP32). In diesem Fall musst du die Konstante vcc entsprechend anpassen.
Schließlich gibt es den Maximalwert adcMax, den der Analog-Digital-Wandler (ADC) eines Arduino Uno zurückgeben kann. Wenn du einen anderen Arduino oder ESP32 verwendest, prüfe die Auflösung des ADC und setze adcMax entsprechend. ESP32-Boards haben z.B. meist einen ADC mit 4096 Schritten, also adcMax = 4095.
const int nSamples = 1000; const byte lcdAdr = 0x3F; const float vcc = 5.0; const int adcMax = 1023; const float sens = 0.185; // 5A //const float sens = 0.100; // 20A //const float sens = 0.066; // 30A
Mittelwertfunktion
Die avg() Funktion berechnet den durchschnittlichen analogen Wert vom Pin A0 über die angegebene Anzahl von nSamples. Sie liest die Werte ein, wartet jeweils 1 ms und berechnet dann den Mittelwert.
Das bedeutet, eine komplette Messung dauert 1 Sekunde. Wir verwenden Mittelung, um Schwankungen in den Sensorwerten zu glätten. Du kannst auch weniger Messwerte nehmen, z.B. 100, um schnellere Messungen zu erhalten, aber diese sind weniger stabil.
Beachte, dass wir val durch adcMax teilen, wodurch die Sensorwerte in einen Bereich von 0 bis 1 transformiert werden.
float avg() {
float val = 0;
for (int i = 0; i < nSamples; i++) {
val += analogRead(A0);
delay(1);
}
return val / 1024 / nSamples ;
}
Setup-Funktion
In der setup() Funktion wird die serielle Kommunikation mit 9600 Baud initialisiert. So können wir die Strommesswerte zur Analyse und Fehlersuche an den seriellen Monitor senden.
void setup() {
Serial.begin(9600);
}
Loop-Funktion
Die loop() Funktion berechnet den Strom anhand der Formel mit Spannung, durchschnittlichem analogen Wert und Sensor-Empfindlichkeit. Anschließend wird der berechnete Stromwert im seriellen Monitor ausgegeben.
void loop() {
float cur = (vcc / 2 - vcc * avg()) / sens;
Serial.print("Current:");
Serial.println(cur);
}
Wenn der ACS712 an keinen Strom angeschlossen ist, liefert er eine Spannung (OUT), die der Hälfte der Versorgungsspannung (VCC) entspricht. Werte unterhalb dieses Mittelpunkts zeigen einen negativen Strom an, Werte darüber einen positiven.
cur = (vcc / 2 – vcc * avg()) / sens
Wir multiplizieren also VCC mit unserem durchschnittlichen avg und subtrahieren das Ergebnis vom Mittelpunkt vcc/2, um einen Wert proportional zum Strom durch den Sensor zu erhalten. Je nach ACS712 Typ (5A, 20A, 30A) teilen wir diesen Wert durch die Empfindlichkeit sens, um den Stromwert cur in Ampere zu erhalten.
Und damit hast du es! Nun kannst du relativ hohe Ströme mit deinem Arduino messen. Im nächsten Abschnitt fügen wir ein LCD hinzu, um die Stromwerte auf einem Display anzuzeigen, anstatt den seriellen Monitor zu verwenden.
LCD zur Anzeige der Ströme hinzufügen
Das Hinzufügen des LCDs zur Schaltung ist einfach. Verbinde zuerst 5V und GND des Arduino mit VCC und GND des LCD. Dann verbindest du A4 des Arduino mit dem SDA-Pin des LCD und A5 mit dem SCL-Pin. Die Anschlüsse des ACS712 Moduls bleiben unverändert.

Das war’s. Beachte, dass du eventuell die Helligkeit des LCDs anpassen musst, falls du keine Ausgabe siehst, wenn du den Code des nächsten Abschnitts ausführst.
Code zur Anzeige der Stromwerte auf dem LCD
Der Code zur Anzeige der Stromwerte des ACS712 auf dem LCD ist eine einfache Erweiterung des vorherigen Codes. Schau ihn dir kurz an, bevor wir die Details besprechen.
// Measure current with ACS712
// and print on LCD
#include "LiquidCrystal_I2C.h"
const int nSamples = 1000;
const float vcc = 5.0;
const int adcMax = 1023;
const byte lcdAdr = 0x3F;
const float sens = 0.185; // 5A
//const float sens = 0.100; // 20A
//const float sens = 0.066; // 30A
LiquidCrystal_I2C lcd = LiquidCrystal_I2C(lcdAdr, 16, 2);
void display(float cur) {
lcd.clear();
lcd.setCursor(2, 0);
lcd.print("Current [A]");
lcd.setCursor(5, 1);
lcd.print(cur);
}
float avg() {
float val = 0;
for (int i = 0; i < nSamples; i++) {
val += analogRead(A0);
delay(1);
}
return val / adcMax / nSamples;
}
void setup() {
lcd.init();
lcd.backlight();
}
void loop() {
float cur = (vcc / 2 - vcc * avg()) / sens;
display(cur);
}
Die Hauptunterschiede zum vorherigen Code sind, dass wir die LiquidCrystal_I2C Bibliothek importieren, eine Instanz davon erstellen und eine Funktion display() hinzufügen, um den gemessenen Stromwert auf dem LCD anzuzeigen.
Falls du die LiquidCrystal_I2C Bibliothek noch nicht installiert hast, musst du das vor dem Import erledigen.
LCD-Instanz
Beim Erstellen der lcd-Instanz musst du eventuell die I2C-Adresse lcdAdr (0x3f, 0x27) und die Größe (16×2, 20×4) an dein Display anpassen. Falls es nicht funktioniert, führe einen I2C scanner aus, um die Adresse deines Displays zu ermitteln.
Anzeige-Funktion
Die display() Funktion löscht einfach den LCD-Bildschirm und gibt den Stromwert in Ampere an der angegebenen Cursorposition aus.
void display(float val) {
lcd.clear();
lcd.setCursor(2, 0);
lcd.print("Current [A]");
lcd.setCursor(5, 1);
lcd.print(val);
}
Wenn du die Schaltung aufgebaut hast, den Code ausführst und einen Strom misst, solltest du folgende Ausgabe auf deinem LCD sehen.

Denk daran, die Helligkeit des LCDs mit dem Potentiometer auf der Rückseite anzupassen, falls die Buchstaben zu hell oder zu dunkel sind.
Setup-Funktion
In der setup() Funktion wird das LCD initialisiert und die Hintergrundbeleuchtung eingeschaltet, um die Anzeige der Strommesswerte vorzubereiten.
void setup() {
lcd.init();
lcd.backlight();
}
Loop-Funktion
Die loop() Funktion und der restliche Code sind identisch zum vorherigen Code.
void loop() {
float cur = (vcc / 2 - vcc * avg()) / sens;
display(cur);
}
Damit hast du ein Gleichstrommessgerät, das die Stromwerte auf einem LCD anzeigt.
Wenn du mehr Hilfe beim Anschluss und Betrieb des LCDs mit Arduino brauchst, schau dir unser Tutorial zu How to use a 16×2 character LCD with Arduino und Character I2C LCD with Arduino Tutorial (8 Examples) an.
Im nächsten Abschnitt verwenden wir die ACS712 Bibliothek, um Gleich- und Wechselströme zu messen.
Verwendung der ACS712 Bibliothek
Wie du oben gesehen hast, ist die Messung von Gleichströmen mit dem ACS712 recht einfach. Die Messung von Wechselströmen ist jedoch deutlich komplexer. Statt es selbst zu implementieren, verwenden wir die ACS712 Bibliothek von RobTillaart. Um diese Bibliothek zu installieren, öffne den Bibliotheksmanager, suche nach ACS712 und klicke auf installieren.

Diese Bibliothek bietet mehrere Funktionen, die die Kalibrierung und Messung von Gleich- und Wechselströmen mit dem ACS712 sehr einfach machen.
In den nächsten Abschnitten stelle ich dir die Bibliothek vor, indem wir unsere Gleichstrommessung von vorher mit der ACS712 Bibliothek nachbauen. Danach ändern wir den Code leicht, um Wechselströme zu messen. Schließlich fügen wir den Code hinzu, um die Messwerte wieder auf dem LCD anzuzeigen.
Gleichstrommessung
Hier ein einfaches Beispiel, wie du die ACS712 Bibliothek zur Messung von Gleichströmen verwenden kannst.
#include "ACS712.h"
const float vcc = 5.0;
const int adcMax = 1023;
const int sens = 185; // 5A
ACS712 ACS(A0, vcc, adcMax, sens);
void setup() {
Serial.begin(9600);
ACS.autoMidPoint();
}
void loop() {
int cur = ACS.mA_DC();
Serial.println(cur);
delay(1000);
}
Wir importieren zuerst die ACS712 Bibliothek und definieren die für die Bibliothek benötigten Konstanten.
Konstanten und Variablen
Die Konstante vcc steht für die Versorgungsspannung (5,0V), adcMax ist der Maximalwert des Analog-Digital-Wandlers (1023) und sens die Empfindlichkeit des ACS712 Sensors (185 für 5A). Beachte, dass sens = 185 und nicht 0,185 ist. Wenn du einen ACS712 Sensor für einen anderen Strombereich hast, musst du diese Konstante anpassen.
const float vcc = 5.0; const int adcMax = 1023; const int sens = 185; // 5A
ACS712 Instanz
Als nächstes erstellen wir eine Instanz der ACS712 Klasse namens ACS mit den angegebenen Parametern. Der Sensor ist am analogen Pin A0 des Arduino angeschlossen. Wir verwenden die Konstanten vcc, adcMax und sens, die oben definiert wurden.
ACS712 ACS(A0, vcc, adcMax, sens);
In der setup() Funktion initialisieren wir die serielle Kommunikation mit 9600 Baud und rufen die autoMidPoint() Funktion des ACS Objekts auf, um den Nullstrompunkt zu setzen. Dies setzt voraus, dass der ACS712 Sensor beim Start nicht an eine Stromquelle angeschlossen ist. Andernfalls wäre der berechnete Mittelpunkt falsch. Die Bibliothek bietet auch Funktionen, um den Mittelpunkt manuell zu setzen und auszulesen.
void setup() {
Serial.begin(9600);
ACS.autoMidPoint();
}
Im vorherigen Code haben wir einen Mittelpunkt bei VCC/2 angenommen. Bei elektromagnetischen Störungen ist das nicht immer der Fall. Durch Anpassen des Mittelpunkts kannst du genauere Strommessungen erhalten.
Loop-Funktion
Die loop() Funktion liest kontinuierlich den Gleichstrom in Milliampere mit der mA_DC() Methode des ACS Objekts aus, gibt den Wert im seriellen Monitor aus und wartet dann 1 Sekunde, bevor sie den Vorgang wiederholt. Beachte, dass hier Milliampere und nicht Ampere gemessen werden.
void loop() {
int cur = ACS.mA_DC();
Serial.println(cur);
delay(1000);
}
Wie du siehst, macht die Bibliothek die Strommessung sehr einfach und bestimmt automatisch den Mittelpunkt, was genauere Messungen von positiven und negativen Strömen ermöglicht.
Im nächsten Abschnitt ändern wir den Code leicht, um Wechselströme statt Gleichströme zu messen.
Wechselstrommessung
Wie bereits erwähnt, ist die Messung von Wechselströmen deutlich komplexer als die von Gleichströmen, wenn man sie selbst implementieren möchte. Für mehr Details siehe dieses Tutorial: Measure Any AC Current with ACS712.
Mit der ACS712 Bibliothek müssen wir nur den Funktionsaufruf ACS.mA_DC() durch ACS.mA_AC() ersetzen, um Wechselströme statt Gleichströme zu messen. Der Rest des Codes, einschließlich der Bestimmung des Mittelpunkts, bleibt gleich. Siehe Code unten:
#include "ACS712.h"
const float vcc = 5.0;
const int adcMax = 1023;
const int sens = 185; // 5A
ACS712 ACS(A0, vcc, adcMax, sens);
void setup() {
Serial.begin(9600);
ACS.autoMidPoint();
}
void loop() {
int cur = ACS.mA_AC(); // AC
Serial.println(cur);
delay(1000);
}
Beachte, dass die ACS712 Bibliothek weitere Funktionen und Parameter bietet, um deine Strommessungen so genau wie möglich zu machen. Das README ist auf jeden Fall lesenswert.
Anzeige des Stroms auf dem LCD
Zum Schluss fügen wir einfach den Code hinzu, um die Strommessungen auf dem LCD anzuzeigen. Es gibt hier nichts Neues, außer dass wir die ACS712 Bibliothek verwenden und den Strom in Milliampere statt Ampere anzeigen.
#include "ACS712.h"
#include "LiquidCrystal_I2C.h"
const float vcc = 5.0;
const int adcMax = 1023;
const byte lcdAdr = 0x3F;
const float sens = 185; // 5A
//const float sens = 100; // 20A
//const float sens = 66; // 30A
ACS712 ACS(A0, vcc, adcMax, sens);
LiquidCrystal_I2C lcd = LiquidCrystal_I2C(lcdAdr, 16, 2);
void display(int cur) {
lcd.clear();
lcd.setCursor(2, 0);
lcd.print("Current [mA]");
lcd.setCursor(5, 1);
lcd.print(cur);
}
void setup() {
lcd.init();
lcd.backlight();
ACS.autoMidPoint();
}
void loop() {
int cur = ACS.mA_DC(); // DC
//int cur = ACS.mA_AC(); // AC
display(cur);
delay(1000);
}
Denk daran, die Konstanten je nach verwendetem ACS712 Sensor anzupassen. Wechsle auch zwischen Gleich- und Wechselstrom mit ACS.mA_DC() oder ACS.mA_AC().
Sei vorsichtig beim Umgang mit hohen Wechselspannungen (z.B. 110 V) oder hohen Strömen. Hohe Spannungen können lebensgefährlich sein und hohe Ströme können Brände verursachen!
Linearität und Genauigkeit des ACS712
Um die Linearität und Genauigkeit des ACS712 zu testen, habe ich ein geregeltes Netzteil mit Strombegrenzung, einen 8 Ohm, 100 Watt Widerstand und ein Multimeter verwendet. Das Bild unten zeigt den Aufbau, der im Wesentlichen der zuvor beschriebenen Messschaltung entspricht.

Ich habe das Netzteil auf 20V eingestellt, die Strombegrenzung auf verschiedene Werte geändert und die entsprechenden ADC-Werte aufgezeichnet. Das Diagramm unten zeigt den ADC-Wert (0…1023) über den Strom in Ampere (-2…2).

Wie du siehst, ist die Reaktion im Wesentlichen linear (wie erwartet) mit einigen Abweichungen, die wahrscheinlich durch elektromagnetische Störungen verursacht wurden. Da der ACS712 einen Halleffekt-Sensor verwendet, ist er empfindlich gegenüber Magnetfeldern. Du kannst das leicht überprüfen, indem du einen Magneten nahe an den Sensor hältst und beobachtest, wie sich der Ausgang ändert.
Für stabile Messwerte solltest du wahrscheinlich eine Abschirmung um den Sensor anbringen. Ich hatte auch Schwierigkeiten, einen stabilen Mittelpunkt zu finden, sodass negative und positive Ströme genau gemessen werden. Der Sensor ist für ungefähre Strommessungen geeignet, aber erwarte keine hohe Genauigkeit.
Fazit
In diesem Tutorial haben wir untersucht, wie man den ACS712 Stromsensor mit einem Arduino verwendet, um sowohl Gleich- als auch Wechselströme zu messen. Durch das Verständnis des Funktionsprinzips des ACS712 Sensors und die Schritt-für-Schritt-Anleitung zum Anschluss an einen Arduino kannst du nun Ströme in deinen Projekten genau messen.
Mit den bereitgestellten Codebeispielen kannst du einfach Stromdaten vom ACS712 Sensor auslesen und anzeigen. Außerdem haben wir gezeigt, wie du dein Projekt durch Hinzufügen eines LCDs verbessern kannst, um die Stromwerte in Echtzeit anzuzeigen und so eine benutzerfreundlichere Oberfläche zu schaffen.
Experimentiere mit verschiedenen Stromstärken und entdecke die Möglichkeiten, diesen Sensor in verschiedenen Anwendungen einzusetzen.
Viel Spaß und wenn du Fragen hast, zögere nicht zu fragen!
Häufig gestellte Fragen
Wie genau ist der ACS712 Stromsensor?
Der ACS712 Stromsensor ist bekannt für seine hohe Genauigkeit bei der Strommessung, mit typischer Empfindlichkeit von 66mV/A für das Modell ACS712-05B und 185mV/A für das Modell ACS712-30A. Beachte jedoch, dass externe Faktoren wie Störungen und Interferenzen die Genauigkeit beeinflussen können.
Kann der ACS712 Sensor sowohl Gleich- als auch Wechselströme messen?
Ja, der ACS712 Stromsensor kann sowohl Gleich- als auch Wechselströme messen. Er ist ein vielseitiger Sensor, der in verschiedenen Anwendungen zur Stromüberwachung eingesetzt werden kann.
Wie kann ich den ACS712 Sensor für genaue Messungen kalibrieren?
Um den ACS712 Sensor genau zu kalibrieren, kannst du eine bekannte Stromquelle verwenden, um die Sensorwerte mit den tatsächlichen Stromwerten zu vergleichen. Durch Anpassen von Offset- und Empfindlichkeitswerten im Code stellst du sicher, dass der Sensor präzise Messungen liefert.
Ist es möglich, mehrere ACS712 Sensoren mit einem einzigen Arduino zu verwenden?
Ja, du kannst mehrere ACS712 Sensoren an einen Arduino anschließen, indem du jeden Sensor an einen separaten analogen Eingang des Arduino anschließt. Passe deinen Code entsprechend an, um die Daten jedes Sensors einzeln auszulesen.
Kann ich den ACS712 Sensor mit anderen Mikrocontrollern als Arduino verwenden?
Ja, der ACS712 Sensor kann mit anderen Mikrocontrollern wie ESP32, Raspberry Pi und mehr verwendet werden. Solange der Mikrocontroller analoge Eingänge hat, kannst du den Sensor anschließen, um Ströme zu messen. Vergiss nicht, die Konstanten vcc und maxAdc entsprechend anzupassen.
Wie schließe ich den ACS712 Sensor an einen ESP32 an?
Um den ACS712 Sensor an einen ESP32 anzuschließen, verbinde den Ausgangspin des Sensors mit einem der analogen Eingänge des ESP32. Lese dann den analogen Wert im ESP32-Code aus, um den Strom zu messen. Setze vcc=3,3V und maxAdc=4095.
Kann ich den ACS712 Sensor mit einer anderen Spannung als dem Mikrocontroller betreiben?
Ja, du kannst den ACS712 Sensor mit einer anderen Spannung als dem Mikrocontroller betreiben, solange der Betriebsbereich des Sensors eingehalten wird. Prüfe unbedingt das Datenblatt für die Spannungsanforderungen des Sensors.
Was ist der maximale Strom, den der ACS712 Sensor messen kann?
Der ACS712 Sensor ist in verschiedenen Modellen mit unterschiedlichen Strommessbereichen erhältlich. Der maximale messbare Strom hängt vom verwendeten Modell ab, z.B. 5A, 20A oder 30A.
Wie kann ich Störungen und Rauschen bei der Verwendung des ACS712 Sensors reduzieren?
Um Störungen und Rauschen bei der Verwendung des ACS712 Sensors zu reduzieren, solltest du geeignete Entkopplungskondensatoren verwenden, die Sensoranschlüsse abschirmen und Signalleitungen von Hochstromleitungen oder elektromagnetischen Störquellen fernhalten.
Ist es möglich, den ACS712 Sensor in Hochspannungsanwendungen zu verwenden?
Der ACS712 Sensor ist für Niederspannungsanwendungen ausgelegt und sollte nicht in Hochspannungsumgebungen eingesetzt werden. Für hohe Ströme in Hochspannungskreisen solltest du speziell dafür ausgelegte Stromsensoren verwenden.
Kann ich den ACS712 Sensor zur Messung bidirektionaler Ströme verwenden?
Ja, der ACS712 Sensor kann bidirektionale Ströme messen, da er sowohl positive als auch negative Stromflüsse erkennt. Durch Auswertung der Sensorwerte im Code kannst du die Stromflussrichtung bestimmen.
Wie kann ich den ACS712 Sensor vor Überstrom schützen?
Um den ACS712 Sensor vor Überstrom zu schützen, kannst du eine strombegrenzende Schaltung oder Sicherung in dein Schaltungsdesign integrieren. So verhinderst du Schäden am Sensor bei zu hohem Stromfluss.
Kann ich den ACS712 Sensor in der Automobiltechnik verwenden?
Ja, der ACS712 Sensor kann in der Automobiltechnik zur Überwachung von Strömen in verschiedenen Systemen wie Batteriemanagement, Motorsteuerung und Beleuchtung eingesetzt werden. Stelle sicher, dass der Sensor richtig kalibriert ist und die Spannungs- und Stromanforderungen des Fahrzeugs erfüllt.
Wie schnell reagiert der ACS712 Sensor?
Die Ansprechzeit des ACS712 Sensors ist relativ schnell, typischerweise im Mikrosekundenbereich. Dadurch eignet er sich für Anwendungen, die eine Echtzeit-Stromüberwachung erfordern.
Kann ich den ACS712 Sensor in Hochtemperaturumgebungen verwenden?
Der ACS712 Sensor hat einen spezifizierten Betriebstemperaturbereich, typischerweise von -40°C bis 85°C. Es wird nicht empfohlen, den Sensor in Umgebungen außerhalb dieses Bereichs zu verwenden, da dies die Genauigkeit und Leistung beeinträchtigen kann.
Wie kann ich die Auflösung der Strommessungen mit dem ACS712 Sensor verbessern?
Um die Auflösung der Strommessungen mit dem ACS712 Sensor zu verbessern, kannst du das Ausgangssignal des Sensors mit einer Operationsverstärkerschaltung verstärken. Das erhöht die Empfindlichkeit und Präzision der Messwerte.
Kann ich den ACS712 Sensor für die Batteriemonitoring-Anwendungen verwenden?
Ja, der ACS712 Sensor kann für Batteriemonitoring verwendet werden, um den Stromfluss in und aus einer Batterie zu messen. Durch Integration des Sensors in dein Batteriemanagementsystem kannst du Lade- und Entladeströme überwachen.
Wie genau ist der ACS712 Sensor typischerweise über seinen Betriebsbereich?
Der ACS712 Sensor bietet typischerweise eine Genauigkeit im Bereich weniger Prozentpunkte über seinen spezifizierten Betriebsbereich. Faktoren wie Temperaturschwankungen und externe Störungen können die Gesamtgenauigkeit beeinflussen.
Wie kann ich den ACS712 Sensor mit einer Batterie betreiben?
Du kannst den ACS712 Sensor mit einer Batterie betreiben, indem du den VCC-Pin des Sensors mit dem Pluspol der Batterie und den GND-Pin mit dem Minuspol verbindest. Achte darauf, dass die Batteriespannung im Betriebsbereich des Sensors liegt.
Was ist der Unterschied zwischen den ACS712 Modellen mit unterschiedlichen Stromstärken?
Die ACS712 Modelle mit unterschiedlichen Stromstärken wie 5A, 20A und 30A haben unterschiedliche Empfindlichkeitswerte und Messbereiche. Je höher die Stromstärke, desto niedriger die Empfindlichkeit und desto größer der Messbereich des Sensors.
Wie kann ich mit dem ACS712 Sensor eine Überstromschutzfunktion implementieren?
Um eine Überstromschutzfunktion mit dem ACS712 Sensor zu implementieren, kannst du im Code einen Schwellenwert setzen, bei dessen Überschreitung ein Alarm oder Abschaltmechanismus ausgelöst wird. Durch kontinuierliche Überwachung der Stromwerte kannst du Überstromsituationen effektiv erkennen und darauf reagieren.
Kann ich den ACS712 Sensor für Motorsteuerungsanwendungen verwenden?
Ja, der ACS712 Sensor kann in Motorsteuerungsanwendungen verwendet werden, um den vom Motor aufgenommenen Strom zu überwachen. Durch Messung des Motorstroms kannst du Regelmechanismen zur Steuerung von Drehzahl und Drehmoment implementieren.
Wie kann ich den Stromverbrauch mit dem ACS712 Sensor berechnen?
Um den Stromverbrauch mit dem ACS712 Sensor zu berechnen, multipliziere den gemessenen Stromwert mit der Spannung über der Last. Das ergibt die momentane Leistungsaufnahme. Durch Integration dieser Leistungswerte über die Zeit kannst du den Gesamtenergieverbrauch bestimmen.



UweZ
Monday 30th of March 2026
Hallo, im Programmbeispiel steht folgendes: const float sens = 0.185; // 5A //const float sens = 0.100; // 20A //const float sens = 0.66; // 30A
Bei dem ACS721-30A ist die Empfindlichkeit 66mV/A. Der müsste es in der 3.Zeile heißen: //const float sens = 0.066; // 30A Ist mir gerade aufgefallen.
Der Hinweis aud die ACS712 library ist sehr interessant. Kannte ich noch nicht. Viele Grüße
Uwe
Stefan Maetschke
Tuesday 31st of March 2026
Hallo, Vielen herzlichen Dank für den Fehlerhinweis! Das ist nun korrigiert (0.66 -> 0.066) Nochmals schönen Dank für die Hilfe Stefan