Gleichstrommessung mit Arduino
Es gibt viele Gründe, warum wir den Gleichstrom mit Arduino messen müssen. Möglicherweise möchten wir überprüfen.
Die meisten Arduino -Boards und Mikrocontroller haben ADC eingebaut, damit wir zuerst die DC -Spannung messen müssen, die durch den Arduino -Analogeingang später gelesen werden können Skalierungsfaktor Während der Programmierung konvertieren wir diesen ADC -Spannungswert in Strom.
Um den DC -Strom mit Arduino zu messen, sind auf dem Markt verschiedene Sensoren und Module erhältlich. Einer der beliebtesten und kostengünstigsten Sensoren auf dem Markt ist die ACS712 Hall-Effekt-Sensor.
ACS712 Hall -Effekt -Sensor
Beide AC Und DC Strom kann mit dem ACS712 Hall Effect -Sensor gemessen werden. Heute konzentrieren wir uns nur auf die Messung des Gleichstroms. ACS712 arbeitet über 5 V und erzeugt eine Ausgangsspannung am Vout Stift des Sensors, der proportional zum von ihm gemessenen Strom ist.
Drei verschiedene Variationen dieses Sensors sind gemäß dem von ihm gemessenen aktuellen Wert verfügbar:
ACS712-5A: 5A -Sensor kann den Strom zwischen Messung zwischen messen -5a bis 5a. 185MV ist der Skalierungsfaktor oder die Empfindlichkeit des Sensors, der zeigt 185mv Die Änderung der Anfangsspannung repräsentiert 1A -Änderung des Stromeingangs.
ACS712-20a: 20A -Sensor kann den Strom zwischen messen -20a bis 20a. 100 mV ist der Skalierungsfaktor oder die Empfindlichkeit des Sensors, der zeigt 100mv Die Änderung der Anfangsspannung repräsentiert 1A -Änderung des Stromeingangs.
ACS712-30A: 30A -Sensor kann den Strom zwischen Messung zwischen messen -30a bis 30a. 66MV ist der Skalierungsfaktor oder die Empfindlichkeit des Sensors, der zeigt 66MV Die Änderung der Anfangsspannung repräsentiert 1A -Änderung des Stromeingangs.
Der Sensor gibt 2 aus.5 V Wenn kein Strom nachgewiesen wird.5V zeigt einen positiven Strom.
Skalierungsfaktor:
5a | 20a | 30a |
---|---|---|
185 mV/Amp | 100 mV/Amp | 66 mV/Amp |
Formel zur Messung des Stroms
Um nach dem Skalierungsfaktor zu überprüfen, schauen Sie sich den ACS712 -Chip am Hall -Effekt -Sensor an, wie unten im Diagramm gezeigt. Hier in unserem Fall werden wir die 20A -Version verwenden.
Schaltplan
Stellen Sie sicher, dass die Verbindung von Hall -Effekt -Sensoren mit Ladung immer in Serie angeschlossen wird, da der Strom in Reihe konstant bleibt. Das Anschließen des Sensors parallel kann das Arduino -Board oder ACS712 beschädigen. Verbinden Sie den Sensor in der folgenden genannten Konfiguration:
Arduino Pin | ACS712 PIN |
---|---|
5v | VCC |
GND | GND |
Analogstift | Aus |
Simulation
Code
/*Definierte zwei Variablen für Sensor -Vout und gemessener Laststrom*/
Doppelsenorvout = 0;
doppelter Autofahrer = 0;
/*Konstanten für den Skalierungsfaktor in v*/
/*Für 5A -Sensor nimm scale_factor = 0.185;*/
const double scale_factor = 0.1; /*Für 20A -Sensor*///
/*Für 30A -Sensor nehmen scale_factor = 0.066;*/
/* Variablen, die zum Konvertieren analogen Daten in digital definiert sind, da Arduino 10 Bit ADC hat, sodass maximal mögliche Werte 1024*/sind
/ * Referenzspannung beträgt 5 V */
/* Standardspannungswert für den Sensor ist die Hälfte der Referenzspannung, die 2 ist.5v*//
const double refvolt = 5.00;
const double adcresolution = 1024;
double adcValue = refvolt/adcresolution;
doppelter Standard -SensorVout = Refvolt/2;
void setup ()
Serie.Beginnen Sie (9600);
void Loop ()
/* 1000 Messwerte, die mehr Präzision erhalten*/
für (int i = 0; i < 1000; i++)
SensorVout = (SensorVout + (ADCValue * AnalOgrad (a0)));
Verzögerung (1);
// vout in MV
SensorVout = SensorVout /1000;
/* Verwenden der Stromformel Vout vom Sensor in Laststrom*//
Motorcurrent = (SensorVout - defaultSensorVout)/ scale_factor;
Serie.print ("sensorvout ="); /*Druckt Sensor -Vout auf Serienmonitor*/
Serie.print (Sensorvout, 2);
Serie.print ("Volt");
Serie.print ("\ t Autourcurrent ="); /*Druckt gemessene DC -Strom*//
Serie.Druck (Autofahrer, 2);
Serie.println ("Ampere");
Verzögerung (1000); /*Verzögerung von 1 Sekunden wird gegeben*/
Hier im obigen Code werden zwei Variablen initialisiert Sensorvout Und Autofahrer, Beide Variablen speichern Werte als Spannung bzw. Strom. Der nächste Skalenfaktor ist auf 0 gesetzt.1 V (100 mV) nach dem 20A-ACS712-Sensor. Die Referenzspannung wird auf 5 V eingestellt und um den analogen Eingang in die digitale ADC -Auflösung umzuwandeln, wird auf 1024 initialisiert. Da Arduino 10-Bit-ADC hat, bedeutet dies, dass das Maximum, das es speichern kann, 1024 Werte beträgt.
Wie oben erläutert Skalierungsfaktor wird das Lesen gemäß den gesamten abgelenkten Spannungen von 2 nehmen.5v. Also 0.1V -Änderung des Vout of Sensors entspricht 1a Eingangsstrom.
Als nächstes in der Schleife Abschnitt a Für Schleife wird initialisiert, um 1000 Messwerte vorzunehmen, um einen genaueren Wert des Ausgangsstroms zu erhalten. Der Sensor -Vout wird durch 1000 geteilt, um Werte in MV umzuwandeln. Mit der Motorstromformel haben wir unseren Laststrom bestimmt. Der letzte Codeabschnitt druckt sowohl Sensor -Vout -Spannungen als auch den gemessenen Strom aus.
Ausgang
Hier im Ausgangssensor ist Vout weniger als 2.5 V Der motorische Ausgangsmotorstrom ist negativ. Der Ausgangsstrom ist aufgrund der Umkehrpolarität des Gleichstrommotors negativ.
Abschluss
Messung des Gleichstroms mit Arduino benötigte einen externen Sensor oder ein Modul. Einer der weit verbreiteten Hall -Effekt -Sensoren ist ACS712, das nicht nur einen großen Stromverhältnis für DC sowie Wechselstrom aufweist. Mit diesem Sensor haben wir den Gleichstrom eines laufenden Gleichstrommotors gemessen, und das Ausgangsergebnis wird im Klemmefenster angezeigt.