Stromsensor

Hallo,

ich habe mir letztens ein Arduino Nano zugelegt und möchte damit Strom messen.
Dazu habe ich mir den Stromsensor ACS712 20A Range Modul Current Sensor gekauft.
Allerdings komme ich nun mit der Programmierung nicht ganz klar.

Das hier ist mein ProgrammCode bisher. An mein ADC ist noch ein LCD dran, auf dem die Werte ausgegeben werden sollen.

#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11 , 10, 7, 6, 5, 4);

/*

ReadAnalogVoltage
Reads an analog input on pin 0, converts it to voltage, and prints the result to the serial monitor.
Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground.

This example code is in the public domain.
*/

// the setup routine runs once when you press reset:
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
}

// the loop routine runs over and over again forever:
void loop() {
// read the input on analog pin 0:
int sensorValue = analogRead(A0);
// Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V):

float voltage = (sensorValue-511) * (5.0 / 1024.0 );
// print out the value you read:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print(voltage);
lcd.setCursor(0, 1);
}

Im Moment wird mir die Voltzahl ausgegeben.
Wie gehe ich nun weiter vor, damit mir auch der Strom angezeigt wird? Bzw wie rechnet man das um?
Der ADC kann Ströme von -20 bis 20 A messen.

Schon mal vielen lieben Dank im Voraus,

Merve Can

In der Amazon-Beschreibung heißt es zum Sensor:

Analog Ausgang 100mV / A fließt kein Strom - Ausgangsspannung ist VCC / 2

Hast du ein Problem mit der Mathematik dahinter oder mit der Programmierung?

Ich würde "mein" ;) Programm so ändern:

  // Analogwert (0 ... 1023) entspricht Strom  (-20 ... +20 A)
  float current = (analogRead(A0) - 512) * 20. / 1024;

Das sollte sth's Frage nach Mathematik und Programmierung gleichermassen beantworten.

  lcd.begin(16,2);

gehört übrigens nach setup.

Den anderen Kommentar würde ich entfernen, denn falscher Kommentar ist schlechter als gar keiner.

Danke für eure Antworten ;)

int sensorValue2 = analogRead (A0);

float current = (sensorValue2 - 512) * (20.0 / 512.0);

So habe ich es jetzt stehen, allerdings sind die Messwerte super ungenau. Habt ihr da noch Vorschläge? Muss ich eine Art Fehlerrechnung machen?

Liebe Grüße,

Merve

Möglicherweise schon. Aber vielleicht misst du auch einfach zu oft? Ich kenne den Sensor nicht, aber es gibt viele, die einfach ne gewisse Zeit benötigen, um ordentlich zu messen.

Was soll denn gemessen werden? AC oder DC

Gruß Peter

allerdings sind die Messwerte super ungenau

Kriegt der Sensor seine Versorgungsspannung von den Arduino 5V ? ( Sollte er, damit wenigstens 0 A in der Nähe von 511 ... 512 landet. ) Die muss nicht genau 5V sein, sollte aber konstant sein, da sie auch als ADC Refernz verwendet wird. Evtl. noch ein Glättunskondensator am Sensor...