Go Down

Topic: ACS 712 sketch (Read 7774 times) previous topic - next topic

strohhirn

Hallo,
Ich hab einen ACS 712 Strommesser (20A) geholt.(s.Bild)
Ich wollt fragen ob den auch jemand hat und mir nen einfachen sketch geben kann damit ich mit ihm Ampere messen kann?

Mfg

strohhirn
Gruß

strohhirn

pylon

Auf Seite 7 des Datasheets findest Du das Diagramm "Output Voltage versus Sensed Current". Wie Du daraus ersehen kannst, ist der Output 2.5V bei 0A, 0.5V bei -20A und 4.5V bei +20A. Somit

Code: [Select]
float a =((float) analogRead(A0) / 512.0 - 1.0) * 2.5 / 2 * 20;

Auf Seite 5 ist auch noch aufgeführt, dass der Wert von 100mV/A im Range von 96mV - 104mV liegt. Somit hast Du in etwa eine Genauigkeit von +/- 4%.

strohhirn

Ich hab hier mal eine seite gefunden dort ist alles gut erklärt:
http://www.lucadentella.it/en/2011/11/29/sensore-di-corrente-con-arduino/

Daher habe ich auch meine jetztige formel:
Code: [Select]
#include <LiquidCrystal.h>

LiquidCrystal lcd(22, 23, 24, 25, 26, 27, 28);
int backLight = 29;
void setup() {
  pinMode(backLight, OUTPUT);
  digitalWrite(backLight, HIGH);
  lcd.begin(20, 4);
}

void loop() {

  float average = 0;
  for(int i = 0; i < 1000; i++) {
    average = average + (0.048875855327468 * analogRead(A0) -25) / 1000;
    delay(1);
  }
  float watt;
  for(int i = 0; i < 1000; i++) {
    watt = 220 * average;
    delay(1);
  }
 
  lcd.setCursor ( 0, 0);
  lcd.print(average); 
  lcd.print("A       ");
 
  lcd.setCursor ( 0, 1);
  lcd.print(watt); 
  lcd.print("W       ");
}


Natürlich habe ich die formel meinem 20A sensor angepasst.
Ich habe auch noch eine formel zum umrechnen in Watt aufgestellt.
Eig. klappt es relativ genau. Wenn kein strom fließt wird mir meißt 0.04A angezeigt, doch in Watt sind das 8,8W  und das ist ja doch schon ziehmlich ungenau.
Kann ich denn Sensor noch irgendwie genauer trimmen?

Desweiteren habe ich ein paar tests durchgeführt:
Ich habe eine kleine 6V 0,1A glühlampe angeschloßen und es wure mir 0,12-0,15A angezeigt. Diese lampe wurde mit gleichstrom betrieben.
Denn habe ich eine 220V, 40W glühlampe angeschloßen, d.h. sie müsste ca. 200mA verbrauchen, doch diese werden nicht angezeigt, stattdessen wird als wär nichts 0,04-0,08A gezeigt. Diese lampe wurde mit wechlesstrom betrieben.

Ist der Sensor bei wechselstrom ungenauer ? Oder brauche ich für wechselstrom eine andere formel?
Gruß

strohhirn

uwefed

#3
Jan 20, 2013, 02:15 pm Last Edit: Jan 20, 2013, 02:16 pm by uwefed Reason: 1
Wenn Du die Meßwerte eine Wechselspannung über eine oder mehrere Periode summierst erhälst Du null (der positive Teil entspricht dem negaiven Teil). Du mußt die Absolutwerte (bzw die Differenz zum Offset) vorzeichenlos summieren.

Bei kleinen Strömen ist der Sensor und die AD-Wandlung ungenau. 1-2 digit fehler ist dabei fisiologisch (das sind Deine 0,04A weil 1 digit 0,0488A entspricht).
Grüß Uwe

Marcus W

Sorry, ich kaper hier einfach mal den Thread. Wie sieht es eigentlich mit der Dauerbelastbarkeit bei diesen ACS712-modulen aus? Ich hab mir überlegt einige direkt im Sicherungskasten an den Phasen einiger Stromkreise unterzubringen, um zu sehen, welcher Stromkreis wieviel Strom verbraucht...

uwefed

#5
Jan 20, 2013, 03:52 pm Last Edit: Jan 20, 2013, 03:55 pm by uwefed Reason: 1
Ich entkapere mal den tread.
Die Spezifikationen stehen im Datenblatt.
2.1 kVRMS minimum isolation voltage from pins 1-4 to pins 5-8

The internal resistance of this conductive path is 1.2 mΩ typical, providing low power
loss. The thickness of the copper conductor allows survival of the device at up to 5× overcurrent conditions.

Also kann der Sensor dauernd mit 20 A und 230V beaufschlagt werden.

Grüße Uwe

Marcus W

Vielen Dank fürs entkapern Uwe.  XD
Das heißt, ich könnte das so umsetzen, ohne alle paar tage den ACS auszutauschen.

Gruß
Marcus

strohhirn

Hallo,

Quote
Wenn Du die Meßwerte eine Wechselspannung über eine oder mehrere Periode summierst erhälst Du null (der positive Teil entspricht dem negaiven Teil). Du mußt die Absolutwerte (bzw die Differenz zum Offset) vorzeichenlos summieren.


Ich versteh nicht  richtig wie ich das vorzeichenlos summieren soll. Könntest du mir das näher erläutern?

Mfg

strohhirn
Gruß

strohhirn

pylon

Quote
Ich versteh nicht  richtig wie ich das vorzeichenlos summieren soll. Könntest du mir das näher erläutern?


Wenn Du als Werte 2, 8, 3, -1, -5, -9, -6 kriegst, dann musst Du 2 + 8 + 3 + 1 + 5 + 9 + 6 ausrechnen.

strohhirn

Ahh, ok, jetzt verstehe ich besser.
Aber wie summiere ich vorzeichen los? Gibt es da irgend einen befehl?
Gruß

strohhirn

pylon

Die Funktion abs() entfernt ein allenfalls vorhandenes negatives Vorzeichen.

strohhirn

Danke,
hab das so umgesetzt:
Code: [Select]
average = abs(average) + abs((0.048875855327468 * analogRead(A0) -25) / 1000);

Jetzt wird auf jeden fall schon mal annähernd was angezeigt.

Ich habe den ACS an einen spiral Wasserkocher angeschlossen, auf dem steht 1kw. Also ca. 4,5 A.
Bei mir wird angezeigt 3,7A und 800W .

Wieso ist das so ungenau?
Gruß

strohhirn

uwefed

Woher kommt das 25 in
Code: [Select]
average = abs(average) + abs((0.048875855327468 * analogRead(A0) -25) / 1000);
?

Kein Strom bedeutet einen Ausgang von 0,5* Versorgungsspannung.

Grüße Uwe

strohhirn

http://www.lucadentella.it/en/2011/11/29/sensore-di-corrente-con-arduino/

2,5 V ist die offset spannung. Da dieses in der Formel durch 0,1 geteilt wird, weil ich ja die 20A version habe mit einer sensivity von 100, ergibt das 25.
Gruß

strohhirn

strohhirn

Hab gerade mit nem Messgerät nachgemessen. Da wurde 4,3A angezeigt, der auf dem Arduino LCD stand 3,3A.
Das sind 1A unterschied, aber ich seh den fehler nicht.
Gruß

strohhirn

Go Up