Verwendung eines ACS712 zur Anzeige des Stroms auf einem LCD1602 oder LCD2004 mit I2C
In diesem Tutorial lernen wir, wie man den Allegro ACS712 Stromsensor verwendet, um sowohl Wechselstrom (AC) als auch Gleichstrom (DC) zu messen und die Messwerte über I2C auf einem LCD1602 oder LCD2004 anzuzeigen. Dieses Projekt ist besonders nützlich zur Überwachung des Stroms in verschiedenen Anwendungen und bietet eine visuelle Darstellung von Echtzeit-Stromdaten. Am Ende haben Sie eine funktionierende Einrichtung, die Strommesswerte genau auf einem LCD anzeigen kann.


Zur Klärung der Verkabelung und des Codes sollten Sie sich unbedingt das Video an den angegebenen Zeitmarken ansehen (im Video bei 00:00).
Hardware erklärt
Die Hauptkomponente dieses Projekts ist der Stromsensor ACS712, der Stromstärken von bis zu 30 A messen kann. Er arbeitet mit dem Halleffekt, um den durch ihn fließenden Strom in eine proportionale Ausgangsspannung umzuwandeln. Diese Ausgangsspannung kann vom Arduino ausgelesen werden, um die Stromstärke zu berechnen. Der Sensor hat drei Anschlussstifte: VCC für die Versorgung, GND für Masse und OUT für das Spannungssignal.
Das LCD1602- oder LCD2004-Display wird über I2C angeschlossen, was eine einfachere Verkabelung und Steuerung ermöglicht, da nur zwei Datenleitungen (SDA und SCL) zusätzlich zu Versorgungsspannung und Masse benötigt werden. Dadurch ist es einfach, Stromwerte anzuzeigen, ohne die Verkabelung mit mehreren Verbindungen zu verkomplizieren.
Datenblattdetails
| Hersteller | Allegro Microsystems |
|---|---|
| Teilenummer | ACS712ELCTR-30A-T |
| Logik-/I/O-Spannung | 4,5–5,5 V |
| Versorgungsspannung | 5 V |
| Ausgangsstrom (pro Kanal) | 30 A |
| Hinweise zur PWM-Frequenz | Nicht zutreffend |
| Eingangslogik-Schwellenwerte | 0,5 V (Ruheausgang) |
| Spannungsabfall / RDS(on)/ Sättigung | 1,2 mΩ |
| Thermische Grenzen | max. 150 °C |
| Paket | TO-220 |
- Stellen Sie bei Strömen über 20 A eine ausreichende Wärmeabfuhr sicher.
- Verwenden Sie einen geeigneten Leiterquerschnitt (12 AWG für 30 A), um Überhitzung zu vermeiden.
- Verbinden Sie VCC mit 5V und GND mit Masse für einen ordnungsgemäßen Betrieb.
- Stellen Sie sicher, dass der OUT-Pin mit einem analogen Eingangspin des Arduino (z. B. A0) verbunden ist.
- Beachten Sie die Empfindlichkeitsunterschiede verschiedener ACS712-Modelle.
- Verwenden Sie Kondensatoren zur Entkopplung, wie im Datenblatt angegeben.
Verdrahtungsanleitung

Um den ACS712-Stromsensor mit dem Arduino und dem LCD zu verdrahten, beginnen Sie damit, den VCC-Pin des ACS712 mit dem 5V-Pin am Arduino zu verbinden. Verbinden Sie als Nächstes den GND-Pin des ACS712 mit einem GND-Pin am Arduino. Der OUT-Pin des ACS712 sollte mit dem analogen PinA0am Arduino, wo das Spannungssignal ausgelesen wird.
Für das LCD1602 oder LCD2004 verbinden Sie den VCC-Pin mit dem 5V-Pin und den GND-Pin mit Masse. Der SDA-Pin des LCD sollte mit dem SDA-Pin des Arduino verbunden werden (gewöhnlichA4bei einem UNO), und der SCL-Pin sollte mit dem SCL-Pin auf dem Arduino verbunden werden (normalerweiseA5auf einem UNO). Stellen Sie sicher, dass alle Verbindungen sicher sind, um eine ordnungsgemäße Funktion zu gewährleisten.
Codebeispiele & Schritt-für-Schritt-Anleitung
Im Code definieren wir den analogen Eingangspin zum Auslesen des Sensorsignals mit#define VIN A0. Dadurch können wir im gesamten Programm problemlos auf den Pin verweisen, an dem der Sensor angeschlossen ist.
#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.
Als Nächstes legen wir die Empfindlichkeit anhand des verwendeten ACS712-Modells fest. Die Empfindlichkeitswerte werden in einem Array gespeichert, sodass sie je nach Modellauswahl leicht zugänglich sind.

const int model = 2; // enter the model number (0, 1, or 2 for 5A, 20A, or 30A)
float sensitivity[] = {0.185, 0.100, 0.066}; // sensitivity values for each model
In demsetup()In der Funktion initialisieren wir den seriellen Monitor und das LCD-Display. Dadurch können wir die aktuellen Messwerte sowohl auf dem LCD als auch über den seriellen Monitor zur Fehlersuche anzeigen.
void setup() {
Serial.begin(9600); // initialize serial monitor
lcd.begin(); // initialize the LCD
lcd.backlight(); // turn on the backlight
lcd.print("Robojax ACS712"); // display initial text
delay(2000); // wait for 2 seconds
}
Derloop()Die Funktion liest die Spannung vom Sensor, berechnet den Strom basierend auf der Empfindlichkeit und zeigt die Ergebnisse entsprechend an. Wenn der Strom einen angegebenen Abschaltwert überschreitet, zeigt sie den Wert an; andernfalls zeigt sie an, dass kein Strom erkannt wurde.
Demonstration / Was Sie erwartet
Beim Einschalten der Schaltung sollte das LCD "Robojax ACS712" anzeigen, gefolgt von "Current: " zusammen mit dem gemessenen Stromwert in Ampere. Wenn der Strom unter der Abschaltschwelle liegt, zeigt das Display "No Current." Seien Sie beim Testen mit hohen Strömen vorsichtig, da der Sensor heiß werden kann (im Video bei 12:00).
Um die Einrichtung zu testen, erhöhen Sie schrittweise den Strom durch den ACS712 und beobachten Sie die Änderungen auf dem LCD und im seriellen Monitor. Stellen Sie sicher, dass der Strom die Nennwerte des Sensors nicht überschreitet, um Schäden zu vermeiden.
Bilder
Dinge, die Sie vielleicht brauchen
-
AmazonKaufe Allegro ACS712 bei Amazonamzn.to
-
AmazonLCD1602-I2C bei Amazon kaufenamzn.to
-
eBayKaufen Sie LCD1602-I2C bei eBay.ebay.us
-
AliExpressKaufen Sie 10 Stück LCD1602-I2C von AliExpresss.click.aliexpress.com
Ressourcen & Referenzen
Dateien📁
Arduino-Bibliotheken (zip)
-
LCD1602 LCD Arduino-Bibliothek von Robojax
robojax-LCD1602-I2C-library-master.zip0.01 MB
Datenblatt (pdf)
-
Allegro ACS712 AC/DC 4A, 20A, 30A Stromsensor-Datenblatt
robojax-allegro_ACS712_current_sensor.pdf0.65 MB
Fritzing-Datei
-
LCD LCD1602-I2C-Modul mit 4 Drähten
LCD1602-I2C.fzpz0.01 MB -
Allegre ACS712 Stromsensor
Allegreo ACS712 Current Sensor.fzpz0.03 MB