Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Genaue AC-Strommessung mit ACS712 Sensor und Arduino

Komponenten und Materialien

Komponente Menge
Arduino UNO 1
ACS712 Stromsensor (30A Version) 1
OLED Display 128x32 I²C oder LCD 16x2 I²C 1 Alternative Anzeige

Projektbeschreibung

Tutorial zur Messung von Wechselstrom (AC) mit dem Hall-Effekt-Sensor ACS712. Der Sensor misst den magnetischen Feld eines stromführenden Leiters berührungslos. Wichtig: Der 30A-Sensor ist für Haushaltsanwendungen (kleine Ströme) ungenau – besser 5A oder 10A Version wählen!

Wichtige Sicherheitswarnung

ACHTUNG: Arbeiten an Netzspannung (230V) sind lebensgefährlich! Nur mit entsprechender Qualifikation und Sicherheitsvorkehrungen durchführen.

Test 1: Signalform visualisieren

Verkabelung: ACS712 VCC→5V, GND→GND, OUT→A0. Last (Glühlampe 75W) in Reihe mit Dimmer und Multimeter.

Code 1 (Serial Plotter): Liest Rohwerte (0-1023) und sendet an Serial Plotter. Zeigt Sinus bei vollem Dimmer, Phasenanschnitt bei gedimmtem Licht.

#define Current_sensor A0
float i;
void setup() { Serial.begin(9600); pinMode(Current_sensor, INPUT); }
void loop() { i = analogRead(Current_sensor); Serial.println(i); delay(100); }

Test 2: Peak-to-Peak Methode (nur Sinus)

Berechnet RMS aus Peak-to-Peak: RMS = (Peak-Peak) × 0.3536 × Kalibrierfaktor. Funktioniert nur bei reinem Sinus. Bei Phasenanschnitt (Dimmer) falsche Werte (z. B. 0,36A statt 0,21A).

#define SAMPLES 300
#define ACS_Pin A0
float High_peak, Low_peak, Amps_Peak_Peak, Amps_RMS;
void setup() { Serial.begin(9600); pinMode(ACS_Pin, INPUT); }
void loop() { read_Amps(); Amps_RMS = Amps_Peak_Peak * 0.3536 * 0.06; Serial.print(Amps_RMS); Serial.print("\t"); Serial.println(Amps_Peak_Peak); delay(200); }
void read_Amps() {
  High_peak = 0; Low_peak = 1024;
  for(int cnt=0; cnt High_peak) High_peak = val;
    if(val < Low_peak) Low_peak = val;
  }
  Amps_Peak_Peak = High_peak - Low_peak;
}

Test 3: Echte TRMS-Messung (alle Signalformen)

Verwendet Bibliothek Filters.h (statistische Verfahren: Integral, Sigma). Berechnet True RMS unabhängig von Signalform (auch Phasenanschnitt).

Kalibrierung:

  1. Ohne Strom: intercept so einstellen, dass Ausgabe 0,00A zeigt.
  2. Mit bekannter Last (z. B. 60W Lampe bei 230V = 0,26A): slope = Theorie / Gemessen.
#include 
#define ACS_Pin A0
float testFrequency = 50;
float windowLength = 40.0 / testFrequency;
float intercept = 0;
float slope = 0.0752; // nach Kalibrierung anpassen!
float Amps_TRMS, ACS_Value;
unsigned long printPeriod = 1000, previousMillis = 0;

void setup() { Serial.begin(9600); pinMode(ACS_Pin, INPUT); }

void loop() {
  RunningStatistics inputStats;
  inputStats.setWindowSecs(windowLength);
  while(true) {
    ACS_Value = analogRead(ACS_Pin);
    inputStats.input(ACS_Value);
    if(millis() - previousMillis >= printPeriod) {
      previousMillis = millis();
      Amps_TRMS = intercept + slope * inputStats.sigma();
      Serial.print("\t Amps: "); Serial.println(Amps_TRMS);
    }
  }
}

Test 4: Anzeige auf LCD oder OLED

Gleiche TRMS-Berechnung, Ausgabe auf Display.

LCD I²C (Adresse 0x27)

#include 
#include 
#define ACS_Pin A0
#define I2C_ADDR 0x27
// ... Pin-Definitionen für LCD ...
LiquidCrystal_I2C lcd(I2C_ADDR, En_pin, Rw_pin, Rs_pin, D4_pin, D5_pin, D6_pin, D7_pin);
// ... setup() wie oben, loop() gibt auf LCD aus ...

OLED 128x32 (Adafruit SSD1306)

#include 
#include 
#include 
#define ACS_Pin A0
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 32
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
// ... setup() initialisiert Display, loop() zeigt TRMS Wert an ...

Schaltpläne

Zusammenfassung

Herstellungsprozess

  1. Luftqualität messen mit OpenSensors: Arduino & Python Anleitung
  2. K30 CO₂-Sensor: Echtzeit-Luftqualitätsmessung mit Arduino
  3. Kommunikationshilfe für Taubblinde: 1Sheeld + Arduino + Sprachausgabe & Anzeige
  4. Smartes Sparschwein: Münzprüfer mit Arduino Nano steuern
  5. LED per Bluetooth mit Arduino steuern – Einfache DIY-Anleitung
  6. DFRobot Kapazitiver Fingerabdrucksensor mit Arduino oder ESP8266 einbinden
  7. Interaktives Nextion HMI Projekt mit Arduino Mega und Sensoren
  8. Arduino-basierter 6-DoF Roboterarm mit Nunchuk-Steuerung
  9. Billy Bass Fisch mit Audioquelle animieren – Schritt-für-Schritt-Anleitung
  10. Präzise Solareinstrahlungsmessung mit Arduino UNO & Ethernet Shield