Verwendung eines ACS712 zur Anzeige des Stroms auf einem LCD1602 oder LCD2004 mit I2C

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.

LCD1602-I2C display module with 4 wires

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

HerstellerAllegro Microsystems
TeilenummerACS712ELCTR-30A-T
Logik-/I/O-Spannung4,5–5,5 V
Versorgungsspannung5 V
Ausgangsstrom (pro Kanal)30 A
Hinweise zur PWM-FrequenzNicht zutreffend
Eingangslogik-Schwellenwerte0,5 V (Ruheausgang)
Spannungsabfall / RDS(on)/ Sättigung1,2 mΩ
Thermische Grenzenmax. 150 °C
PaketTO-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

Arduino wiring for Allegro ACS712 current sensor with LCD

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

Allegro ACS712 Gleichstrom/Wechselstrom-Stromsensor mit LCD1602/LCD2004 I2C mit Arduino-Code
Allegro ACS712 Gleichstrom/Wechselstrom-Stromsensor mit LCD1602/LCD2004 I2C mit Arduino-Code
LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
ACS712_in_series_with_load
ACS712_in_series_with_load
allegro_ACS712_module-1
allegro_ACS712_module-1
allegro_ACS712_module-2
allegro_ACS712_module-2
allegro_ACS712_module-4
allegro_ACS712_module-4
allegro_ACS712_module-0
allegro_ACS712_module-0
Arduino wiring for Allegro ACS712 current sensor with LCD
Arduino wiring for Allegro ACS712 current sensor with LCD
131-Allegro ACS712 DC/AC current sensor with LCD1602/LCD2004 I2C and Arduino code
Sprache: C++
Kopiert!

Dinge, die Sie vielleicht brauchen

Dateien📁

Arduino-Bibliotheken (zip)

Datenblatt (pdf)

Fritzing-Datei