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:
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 ;-)
Wie ist denn deine "übliche" Beschaltung? Kann mir gerade nur wenig
drunter vorstellen und deckt sich wahrscheinlich nicht mit deiner
tatsächlichen Beschaltung.
Die Bürde ist meines Erachtens schon integriert - wenn ich das
Datenblatt richtig interpretiere:
'Output type: voltage output type built-in sampling resistor'
Mike M. schrieb:> dort warte ich 10ms und mache 10 Messungen (Mittelwert).
Das ist ein ziemlich schlechter Messzeitpunkt, 5ms nach Nulldurchgang
wäre besser :-)
Warten ist auch blöde. Setz in der ICR den OC auf IC + 5ms und dort
misst du dann. Alternativ kann du natürlich eine komplette Periode
samplen (etwa alle 0,1ms sollte bei halbwegs sinusförmigem Verlauf
genügen).
Deine Rechnung ist auch etwas abenteuerlich/aufwändig, geht viel
einfacher.
Und ja, der Faktor Divisor Wurzel2 muss rein. Wenn du allerdings an
deinem Pin 2V Vpp @15A misst stimmt da schon irgendwas nicht - das
müssten rund 2,8V sein. Oder der Widerstand im Wandler ist so ausgelegt,
dass aus 15A effektiv 1V Spitze werden? Glaub ich nicht.
Hi,
ich habe mir die ganze Sache noch einmal durch den Kopf gehen lassen und
bin zu dem Schluss gekommen, das es am Ende viel einfacher wäre, aus dem
AC-Signal eine DC-Spannung zu machen. In LTSpice sieht das ja recht
vernüftig aus. Was sagt ihr dazu...
(push)
würde gern noch einmal meine Idee diskutieren bevor ich anfange die
Leiterplatten zu fräsen...
In obiger Schaltung versuche ich einen 50Hz Spannungsverlauf in eine,
möglichst lineare, DC-Spannung zu verwandeln. Kann das so klappen? In
spice sieht es ja recht vernüftig aus,denk ich.
Mein Hintergrundgedanke ist der, das
ich ja so zu einem belibigen Zeitpunkt den ADC einlesen - ohne auf den
Sinus achten zu müssen.
Mike M. schrieb:> 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?
Das klappt nur bei guter Sinusform.
Will man rms ermittel, sampelt man NICHT synchron zu den 50Hz, entweder
deutlich schneller oder so daß 50Hz kein Vielfaches sind, und ermittelt
dann immer Quadrat, Mittelwert, Wurzel.
Das klappt auch bei nicht-Sinus, und wenn man jeweils Spannung und Strom
misst kann man sogar die Leistungsaufname berechnen, auch bei
nicht-ohmschen Verbrauchern.
Mike M schrieb:> es am Ende viel einfacher wäre, aus dem> AC-Signal eine DC-Spannung zu machen. In LTSpice sieht das ja recht> vernüftig aus.
Was willst du mit dem Aufwand und dann kommt doch nur der falsche
Spitzenwert (kurze Störflanke) bei raus.
Michael B. schrieb:> Will man rms ermittel, sampelt man NICHT synchron zu den 50Hz, entweder> deutlich schneller oder so daß 50Hz kein Vielfaches sind, und ermittelt> dann immer Quadrat, Mittelwert, Wurzel.
Das ist es ja was ich nicht verstehe: Wenn der ADC läuft, dann sampelt
der mit 250khz und das zu einem belibigen Zeitpunkt gegenüber dem Sinus.
D.h. das bei jedem adcread() wird ein anderer 'Punkt auf der Welle'
gemessen - wenn nicht vorher zum Nulldurchgang synchronisiert wurde!
An dieser Stell hakt es bei mir )-:
Ich hab noch ein bisschen im Netz geschaut...so langsam komm ich
dahinter wie es gemacht wird:
"... den Sinus mit gut 1kHz sampeln, quadrieren,
aufsummieren, Wurzel berechnen...."
theoretisch klar aber ich verstehe nicht wie ich das anstellen soll.
Muss man eine ganze Periode sampeln oder nur eine halbe oder wie?
..oder ich bin in Mathe wirklich sehr schlecht..