Forum: Mikrocontroller und Digitale Elektronik Atmega8 mit SCT-013-015


von Mike M. (mike303)


Lesenswert?

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 ;-)

von H.Joachim S. (crazyhorse)


Lesenswert?

Wie ist denn deine "übliche" Beschaltung? Kann mir gerade nur wenig 
drunter vorstellen und deckt sich wahrscheinlich nicht mit deiner 
tatsächlichen Beschaltung.

von Mike M (Gast)


Lesenswert?


von spess53 (Gast)


Lesenswert?

Hi

>https://www.mikrocontroller.net/attachment/286422/...

Das ist aber ein Sensor mit Stromausgang. Der SCT-013-015 besitzt nur 
einen Bürdewiderstand.

MfG Spess

von Mike M (Gast)


Lesenswert?

Die Bürde ist meines Erachtens schon integriert - wenn  ich das 
Datenblatt richtig interpretiere:

'Output type: voltage output type built-in sampling resistor'

von H.Joachim S. (crazyhorse)


Lesenswert?

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.

von Mike M (Gast)


Angehängte Dateien:

Lesenswert?

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...

von Mike M. (mike303)


Lesenswert?

(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.

von Michael B. (laberkopp)


Lesenswert?

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.

von Mike M. (mike303)


Lesenswert?

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 )-:

von Mike M. (mike303)


Lesenswert?

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..

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.