Forum: Mikrocontroller und Digitale Elektronik Wechselstrommessung SCT-013-030 + Arduino


von JumpY (Gast)


Lesenswert?

Hallo,
ich befasse mich derzeit mit der Wechselstrommessung. Ich habe mir ein 
paar Sensoren des Typs "SCT-013-030" bestellt und diese sind heute 
eingetroffen.
Das sind Nicht-invasive AC Stromwandler mit einem Messbereich von 30A , 
wobei der Ausgang 0-1V beträgt.

Hat mit diesem Modell schon jemand gearbeitet? Also wenn ich das richtig 
verstehe, würde ja dann bei 30A - 1V anliegen, bei 10A - 1/3V. Sehe ich 
das richtig?

Wenn das so ist, kann ich den Sensor (3,5mm Klinke Anschluss), einfach 
in eine 3,5mm Klinke Buchse anschließen und da dann den Spannungspin mit 
dem Arduino auswerten, oder brauche ich noch zusätzliche Widerstände, 
Kondensatoren oder ähnliches?

Wie führe ich die Messung programmtechnisch vom Prinzip am besten durch? 
Mehrere male pro Sekunde messen und Mittelwert bilden, oder wie kann ich 
das möglichst genau abdecken?

Gruß

von Easylife (Gast)


Lesenswert?

Da der Sensor für AC ist, kommt auch eine 0-1V Wechselspannung raus.
Wenn du ein Oszilloskop hast, schaue dir doch erstmal damit an, wie das 
Ausgangssignal aussieht.

von JumpY (Gast)


Lesenswert?

Oszilloskop habe ich leider nicht, aber wenn Wechselspannung rauskommt, 
muss ich diese dafür ja dann gleichrichten.

http://www.technik-fan.de/index.php/Open_Energy_Monitor

So dann?

von Easylife (Gast)


Lesenswert?

So dann... ja, aber nicht gleichrichten.

Du entkoppelst deinen Sensor mit einem Kondensator, und hebst das Signal 
mit einem Spannungsteile auf genau die Hälfte der ADC Referenzspannung 
(Vref).
Genau das sieht man auch auf dem "Converter Board" hinter deinem Link.

Für den Kondensator nimmst du z.B. 4.7uF oder 10uF, und für die 2 
Widerstände 100K.

Mitteln deiner Messungen macht keinen Sinn, da Wechselspannung. Im 
Idealfall käme dabei genau Vref/2 raus.

Du musst stattdessen mit einer möglichst hohen Samplingrate, oder einem 
entsprechend langen Samplingfenster die Spitzenwerte (high/low) 
ermitteln.
Aus der Differenz dieser Werte lässt sich dann der Strom errechnen.

von Easylife (Gast)


Lesenswert?

Ah, die Schaltung ist ja noch viel besser.
http://openenergymonitor.org/emon/node/54

Zunächst wird eine Hilfsspannung von Vref/2 erzeugt, über einen 
Widerstandsteiler von 2x 10K.
Diese Hilfsspannung wird über einen Kondensator gut abgestützt (z.B. 
10K, ich würde noch 100n und 10n parallel schalten).
Diese Hilfsspannung geht in deinen Sensor, und der Sensorausgang 
direkt auf den ADC.
Dadurch reduziert man sämtliche Verzerrungen, dir durch einen 
Koppelkondensaltor entstehen könnten.

von Easylife (Gast)


Lesenswert?

Sorry, der Stützkondensator hat natürlich nicht 10K, sondern z.B. 10uF.

von JumpY (Gast)


Lesenswert?

Hi,
nunja, meine erste Überlegung war es die Sinuskurve die ausgegeben wird 
eben möglichst oft abzutasten um einen möglichst genauen Wert daraus 
errechnen zu können, habe bis grade gedacht das wäre völliger Blödsinn 
gewesen ;D

Was genau meinst du mit zusätzlich parallel schalten? Kannst du mir dies 
irgendwie mit da reinmalen oder ein Schaltbild oder ähnliches?

Ich habe auch den Code vorliegen, der in diesem Projekt verwendet wird. 
Werde mich morgen mal daran setzen um zu sehen wie die das 
Softwareseitig abtasten bzw was die da genau machen.

Code den derjenige benutzt ist hier zu finden: 
http://nopaste.info/119403c7c4.html

von Easylife (Gast)


Lesenswert?


von JumpY (Gast)


Angehängte Dateien:

Lesenswert?

So, hier bin ich wieder. Die Elektronikbauteile habe ich leider erst ab 
Dienstag komplett zur Hand, deswegen habe ich mir das ganze mal 
aufgezeichnet und mir das angeschaut.

Auf dem Schaltplan sollte man nun alles erkennen, so wäre es richtig?
Das Diagramm zeigt den Ausgang der in den Arduinoeingang kommen würde. 
Als "Ersatzsensor" habe ich eine Wechselspannung von 1V eingebaut, die 
dem Sensor bei voller Auslastung zeigen würde.

Wie man an der Sinuswelle sieht, ist diese um 2,5V nach oben verschoben 
und schwingt von 1,5V - 3,5V , also halt wie die 1V Wechselspannung die 
der Sensor einbringt.

Dazu habe ich noch folgende Fragen:

1) Die Kondensatoren habe ich jetzt ganz simple parallel geschaltet, 
aber was genau soll das bringen? Damit erhöhe ich doch nur die Kapazität 
des "Gesamtkondensators" den ich dadurch erzeuge, könnte ich nicht 
einfach einen größeren einzelnd einbauen?
2) Das wäre nun alles was ich Hardwareseitig benötige für diese Messung? 
Den Rest setze ich dann Softwaremäßig durch eine möglichst hohe 
Abtastrate um und errechne mir dadurch die tatsächliche Spannung? 
(Vref/2 dann halt noch abziehen.

Vielen Dank schonmal für eure Hilfe, so verstehe ich die Schaltung 
mitlerweile wenigstens :)

von Easylife (Gast)


Lesenswert?

JumpY schrieb:
> So, hier bin ich wieder. Die Elektronikbauteile habe ich leider erst ab
> Dienstag komplett zur Hand, deswegen habe ich mir das ganze mal
> aufgezeichnet und mir das angeschaut.

sehr gut.

> > Auf dem Schaltplan sollte man nun alles erkennen, so wäre es richtig?

ja.

> Das Diagramm zeigt den Ausgang der in den Arduinoeingang kommen würde.
> Als "Ersatzsensor" habe ich eine Wechselspannung von 1V eingebaut, die
> dem Sensor bei voller Auslastung zeigen würde.

richtig so.

> > Wie man an der Sinuswelle sieht, ist diese um 2,5V nach oben verschoben
> und schwingt von 1,5V - 3,5V , also halt wie die 1V Wechselspannung die
> der Sensor einbringt.
>
> Dazu habe ich noch folgende Fragen:
>
> 1) Die Kondensatoren habe ich jetzt ganz simple parallel geschaltet,
> aber was genau soll das bringen? Damit erhöhe ich doch nur die Kapazität
> des "Gesamtkondensators" den ich dadurch erzeuge, könnte ich nicht
> einfach einen größeren einzelnd einbauen?

Es geht dabei nicht um die Kapazität, sondern um die Filterwirkung.
Grob gesagt ist der 10uF für die niedrigen Frequenzen zuständig, und die 
anderen beiden für hohe Frequenzen.

> 2) Das wäre nun alles was ich Hardwareseitig benötige für diese Messung?

Genau.

> Den Rest setze ich dann Softwaremäßig durch eine möglichst hohe
> Abtastrate um und errechne mir dadurch die tatsächliche Spannung?
> (Vref/2 dann halt noch abziehen.

So einfach ist es nicht. Der Spannungsteiler wird nicht ganz exakt 
Vref/2 ergeben.

Daher ermittelst du in der Software 2 Werte: max und min.
Die Differenz von max und min ergibt dann die tatsächliche Amplitude, 
egal wie groß der Offset war.

Die Samplingrate muss ein mehrfaches der Netzfrequenz sein, damit du 
möglichst genau die Scheitelpunkte "mitbekommst".

>
> Vielen Dank schonmal für eure Hilfe, so verstehe ich die Schaltung
> mitlerweile wenigstens :)

Freut mich, dass du nicht einfach nur abmalen sondern auch verstehen 
möchtest. ;-)

von JumpY (Gast)


Lesenswert?

Easylife schrieb:
> Daher ermittelst du in der Software 2 Werte: max und min.
> Die Differenz von max und min ergibt dann die tatsächliche Amplitude,
> egal wie groß der Offset war.
>
> Die Samplingrate muss ein mehrfaches der Netzfrequenz sein, damit du
> möglichst genau die Scheitelpunkte "mitbekommst".

Okay, ich hätte zur Referenz ansonsten die tatsächliche Spannung am 
Spannungsteiler gemessen und verrechnet, mit der Aplitude ist eigentlich 
aber dann besser umzusetzen.

Die Netzfrequenz ist 50Hz, also dauert eine Periode 0,02s/20ms/20.000µs. 
Der Arduino benötigt ca 100µs für eine Messung, d.h. ich könnte ca. 200 
Messungen pro Periode durchführen.

Gehen wir davon aus, ich würde 150 Messungen machen, dann filtere ich 
mir daraus den höchsten Wert und den niedrigsten raus, ziehe die beiden 
voneinander ab und erhalte den momentanen Spannungswert. In der 
Zwischenzeit messe ich natürlich dauerhaft weiter und die Berechnung 
läuft paralell.

Dann sollte das Ergebnis ziemlich genau werden, nur stellen sich mir 
hierzu noch ein paar Fragen:

1) Liegt die Messdauer von 100µs am einzelnen Pin oder am Chip?
2) Wenns am Chip liegt, kann ich sicherlich bei 3 Sensoren nicht jeden 
Eingang gleichzeitig Messen in 100µs sondern müsste dies nacheinander 
tun? Oder gehts doch paralell, das wäre natürlich besser.
3) Hält der Arduino eine "fast maximale" Abtastgeschwindigkeit überhaupt 
dauerhaft aus, oder muss ich die Geschwindigkeit reduzieren, damit das 
Gerät lange hält anstatt ner Woche?

Wenn dies beantwortet ist, denke ich dass ich vorerst bereit bin mir 
dies zu programmieren und dann am Dienstag/Mittwoch Tests zu fahren.

PS: Ich möchte im übrigen wirklich verstehen, wieso das so ist und wie 
das geht, sonst steh ich beim nächsten Projekt ja sofort wieder hier ;)

von Easylife (Gast)


Lesenswert?

Das mit der Spitzenwertmessung/-auswertung funktioniert natürlich nur, 
wenn deine Last gleichmäßig ist.
Sobald hier induktive Lasten oder Phansenanschnitte im Spiel sind, geht 
das nicht mehr so einfach.

Besser ist es dann doch, die einzelnen Messwerte zu integrieren.
Schau dir mal den Code an, der in dem von dir genannten Projekt 
verwendet wird.

Der uC wird die ADC Kanäle vermutlich nicht gleichzeitig samplen können. 
Meistens sitzt hier ein Multiplexer vor einem ADC, der die Kanäle 
nacheinander digitalisiert. Wenn du diese Ungenauigkeit vermeiden 
möchtest, müsstest du wohl 3 externe, synchronisierte ADCs nehmen.

Die Verwendung der maximal möglichen Samplerate schadet dem Arduino 
nicht.

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.