Hi,
vlt kann wer helfen...
Ich habe hier einen Atmega328p und möchte mit diesem 50Hz Wechselstrom
mittels des Sensors
SCT-013-015 (Stromzange; Datenplatt 0-15A -> 0-1V) messen.
Den 1:1 Spannungsteiler habe ich nach den üblichen Beispielen im Netz
beschaltet - ABER ich mag diesen Arduinorattenschwanz nicht einbinden...
Es ist ja so, das am analog Pin jetzt eine Spannung im positiven Bereich
alterniert Vpp ca. 2V...und wenn man jetzt mit dem ADC den Pin einliest
sollte man das entweder zum richtigen Zeitpunkt machen oder in Software
den Vp finden, durch Wurzel2 teilen um den Effektivwert zu haben...oder
nicht?
Oder gibt es vlt noch eine andere Möglichkeit?
Ersteres habe ich momenan umgesetzt, da eine Netzfrequenzmessung bereits
läuft.
InputCapture bei steigender Flanke...
In der ISR vom TIMER1_CAPT rufe ich am Schluss adcread(pin) auf,
dort warte ich 10ms und mache 10 Messungen (Mittelwert).
Meine Umrechnung dann:
1 | double V = (adc0 * Vref / 1024.0) / 1000.0; //calculate Volatge
|
2 | V = 15 * (V-(Vref/2)); //convert Voltage to Ampere
|
3 | dtostrf(V, 7, 2, buf);
|
4 | uart_puts(buf)
|
Naja, als Last habe ich eine Babyheizung dran, meine Voltcraft
Stromzange sagt 1.6A, der Atmega auch ca zumindest (leichter offset von
+0.2). Sogar die Stromrichtung wird mit einem '-' angezeigt wenn ich den
Sensor auf dem Kabel drehe. Alledings fehlt in der Berechnug '/ sqrt(2)'
was mich stuzig macht!
Ich würde mich auch lieber für die Vp Sache entschieden, da das auch
funktioniert wenn ich keine Frequenz messen würde - aber mir will nicht
einfallen wie ich das vernüftig anstellen kann (in C)
ADC läuft mit 250kHz (16MHz/prescaler 64)
Vref ist 3.3V
und ich bin in Mathe eine Null ;-)