Impressum


Strom und Spannung mit Arduino UNO messen geschrieben am 19.11.2011

Um den Ertrag einer Solaranlage mitzuloggen habe ich hier mal eine Beispielschaltung mit einem Arduino Uno und dem Stromsensor ACS709 entworfen:

Arduino Uno und dem Stromsensor ACS709

Hardware

Die Gleichspannung wir über eine Spannungssteiler (im Bild rot) mit Hilfe von zwei Widerstände (390OHM, 100OHM) gemessen. Bei dieser gibt dann eine Spannnug von 0 bis 5V aus die am Port A1 gemessen wird.

Schaltplan Strom und Spannung messen
Der Strom wird mit dem Stromsensor ACS709 (im Bild grün) an Port A0 gemessen.

Im Serial-Monitor sieht es dann so aus:

Hier habe ich mein Notebook angeschlossen. Der 75A-Sendsor ist etwas hoch gegriffen (Auflösung 0.19A pro Bit) - da gibt es im Niedrigen Bereich kaum genaue Werte. Deshalb werde ich den gegen einem 5A-Sensor (ACS714 Auflösung 0.009A pro Bit) austauschen. Mehr als 5A kommt im späteren System eh nicht zum Einsatz, der ACS709 landet dann erst mal in der Bastelkiste.

Quellcode

#include "floatToString.h" int sensorPinStrom = A0; int sensorPinSpannung = A1; int sensorValue = 0; float messw=0; //****Programm****** void setup() { //Serielle Schnitstelle für Ausgabe öffnen Serial.begin(9600); Serial.println("Get Strom & Spannung"); } void loop() { //******STROM***** sensorValue = analogRead(sensorPinStrom); //Hole Wert //510=0A sensorValue = sensorValue -510;//510=0A 0=-75A 1023=75A //springen um 0 reduzieren if(sensorValue==1)sensorValue=0; if(sensorValue==-1)sensorValue=0; //Umwandeln um einen Wert zuwischen -75 und +75 zu erhalten messw=(float)75/512*sensorValue; //über Serielle Schnitstelle ausgeben Serial.print(floatToString(buffer,messw,2)); Serial.print("A"); Serial.print("\t"); //******SPANNUNG***** sensorValue = analogRead(sensorPinSpannung); //Hole Wert //Wert umwandeln für Anzeige 0..24.0 Volt messw=(float)24/1023*sensorValue; //über Serielle Schnitstelle ausgeben Serial.print(floatToString(buffer,messw,2)); Serial.println("V"); //\n delay(1000); //1 -Sekunde warten }
für die Formatierung des String habe ich die floatToString Funktion von Tim Hirzel benutzt.

Diese musste im Header aber noch etwas angepasst werden:
#include <stdio.h> #include <stdlib.h> char buffer[25]; // floatToString.h

Im Web/downloads

Das Projekt kann unter fritzing.org/projects/strom-und-spannung-messen geladen werden.

oder auch hier gibt es den download:
FrizingFiles.zip 39.52kb (Frizing Projekt- und Bauteildatei)
quellcode.zip 1.82kb (Quellcode inkl. floatToString.h)


schreibe den ersten Kommentar:


Inhalt zur freien Verwendung gibs es beim Thema Downloads.
nach oben springen