Nr. 41 – Stromstärkesensor (ACS712)

 

Stromsensoren mit dem ACS712 Chip können sehr leicht mit Arduino-Mikrocontrollern verwendet werden, da die Signalausgabe in Form einer Spannung zwischen 0 bis 5 Volt erfolgt. Eine Auswertung über einen analogen Eingang am Mikrocontroller ist daher mit nur wenig Aufwand möglich. Der Sensor ist aktuell in drei Varianten erhältlich, mit maximalen Messbereichen von 5A, 20A und 30A. Die grundlegende Funktionsweise der Module ist identisch und beruht auf den Hall-Effekt, also auf magnetische Felder. Daher sollten die Module nicht in der Nähe von anderen Magnetfeldern verwendet werden.

Sensorspezifikationen

5A Version: Chip ACS712ELCTR-05B-T
Spannungsversorgung: 5V | Messbereich: -5A bis +5A |
Spannungsänderung am Sensor pro 1A: 185mV

20A Version: Chip ACS712ELCTR-20A-T
Spannungsversorgung: 5V | Messbereich: -20A bis +20A |
Spannungsänderung am Sensor pro 1A: 100mV

30A Version: Chip ACS712ELCTR-30A-T
Spannungsversorgung: 5V | Messbereich: -30A bis +30A |
Spannungsänderung am Sensor pro 1A: 66mV

Alle Daten im Detail finden Sie im Datenblatt zu dem Sensor im Downloadbereich.

Das folgende Bild zeigt die Pinbelegung für den Stromstärkesensor mit ACS172-Chip.

Der Sensor kann sowohl eine positive, als auch eine negative Stromstärke messen, je nachdem, wie die Kabel der gemessenen Leitung am Sensor angeschlossen werden. Solange kein Strom am Sensor fließt, gibt er Sensor eine Spannung von 2,5 Volt aus. Als eingelesener Analogwert am Arduino wird diese Spannung als Zahlenwert 512 gespeichert. Fängt der Strom in der gemessenen Leitung nun an zu fließen, dann gibt der Stromstärkesensor als Signal eine Spannung von mehr oder weniger 2,5 Volt aus, je nachdem, in welche Richtung der Strom fließt.

Für die Signalausgabe des Stromstärkesensors hat das folgende Bedeutung:

Sensor für 5 Ampere:
Bei einer Signalspannung des Sensors von 2,5 Volt beträgt die Stromstärke 0 Ampere.
Bei einer Signalspannung des Sensors von 0 Volt oder 5 Volt beträgt die Stromstärke 5 Ampere.

Sensor für 20 Ampere:
Bei einer Signalspannung des Sensors von 2,5 Volt beträgt die Stromstärke 0 Ampere.
Bei einer Signalspannung des Sensors von 0 Volt oder 5 Volt beträgt die Stromstärke 20 Ampere.

Sensor für 30 Ampere:
Bei einer Signalspannung des Sensors von 2,5 Volt beträgt die Stromstärke 0 Ampere.
Bei einer Signalspannung des Sensors von 0 Volt oder 5 Volt beträgt die Stromstärke 30 Ampere.

Funktionsbeschreibung in einer Anwendung

In diesem Beispiel soll die Stromstärke im Kabel zur Glühlampe gemessen werden.

Wenn in dem abgebildeten Stromkreis kein Strom fließt, gibt der Sensor eine Ausgangsspannung von 2,5V ab. Der Arduino-Mikrocontroller erkennt diese am analogen Port als Zahlenwert von ca. 512.

Nach dem Anschließen der Spannungsquelle fließt Strom. Bei Verwendung eines 5A Moduls und einer Stromstärke von 1 Ampere würde der Sensor eine Spannung von 2,685 Volt ausgeben. Diese Spannung würde als analoger Messwert am Arduino das Ergebnis 550 hervorbringen.

Vertauscht man an der Spannungsquelle die beiden Pole ( + und – ), fließt der Strom in die andere Richtung. Der Sensor würde bei 1 Ampere in die andere Richtung nun die Spannung 2,315Volt ausgeben. Diese Spannung würde als analoger Messwert am Arduino das Ergebnis 474 hervorbringen.

Die angegebenen Messwerte müssen nun in der Arduino-Software verarbeitet werden.

Sketch

int Sensor = A0; // Der Stromstärkesensor wird am Pin A0 (Analog "0") angeschlossen.
int VpA = 185; // Millivolt pro Ampere (100 für 20A Modul und 66 für 30A Modul)
int sensorwert= 0;
int Nullpunkt = 2500; // Spannung in mV bei dem keine Stromstärke vorhanden ist
double SensorSpannung = 0;
double Ampere = 0;

void setup()
{ 
Serial.begin(9600); // Serielle Verbindung starten, damit die Daten am Seriellen Monitor angezeigt werden.
}

void loop()
{
sensorwert = analogRead(Sensor);
SensorSpannung = (sensorwert / 1024.0) * 5000; // Hier wird der Messwert in den Spannungswert am Sensor umgewandelt.
Ampere = ((SensorSpannung - Nullpunkt) / VpA); // Im zweiten Schritt wird hier die Stromstärke berechnet.

// Ausgabe der Ergebnisse am Seriellen Monitor
Serial.print("Sensorwert = " ); // Ausgabe des reinen Sensorwertes
Serial.print(sensorwert); 
Serial.print("\t Sensorspannung in mV = "); // Zeigt die Sensorspannung an
Serial.print(SensorSpannung,3); // Die "3" hinter dem Komma erzeugt drei Nachkommastellen
Serial.print("\t Ampere = "); // shows the voltage measured 
Serial.println(Ampere,3); // Die "3" hinter dem Komma erzeugt drei Nachkommastellen
delay(1000); 
}

Nach der Programmierung wird der Serielle Monitor geöffnet. Dort werden nun abhängig von der gemessenen Stromstärke die Messwerte angezeigt.