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ß
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.
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.
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.
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
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 :)
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. ;-)
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 ;)
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.