Am Arduino Wechselspannung messen

OP #6425826
Lesenswert?

Liebes Forum,

nachdem mir Google und die Suchfunktion nicht wirklich helfen konnten, 
probier ichs nun direkt!

Ich möchte am Analogeingang eine Wechselspannung messen. Die Frequenz 
variiert zwischen 50 und 1000 Hz, die Spannung ist entsprechend 
aufbereitet und liegt zwischen 0 und 5 Volt.

Wenn ich den Sachverhalt mit analogRead angehe und anschließend mit 
"Map" auswerte, bekomme ich freilich immer nur die Momentwerte, die 
keinerlei Aufschluss über p-p liefern.

Gibt es eine vorbereitete Funktion (oder Libary?), mit der ich die 
maximalen Amplituden auslesen kann? Kritisch ist vermutlich die 
Abtastrate, um sicherzustellen, dass auch auch regelmäßig ein Peak 
erwischt wird.

Vielen Dank vorab!
OP #6425871
Lesenswert?

kenny schrieb:
> Schreib Dir doch flott ne kleine Funktion, welche dir nur die max Werte
> peak-peak speichert. Alle anderen Werte kannst Du verwerfen.

Du meinst, dass der Messwert in eine Variable geschrieben wird, sobald 
er größer als der vorherige ist? Aber wie merke ich dann, wenn die 
Spannung abfällt? Das muss alles recht schnell passieren, Latenz nicht 
größer 200 mS... .
#6425872
Lesenswert?

Henry T. schrieb:

> Ich möchte am Analogeingang eine Wechselspannung messen. Die Frequenz
> variiert zwischen 50 und 1000 Hz, die Spannung ist entsprechend
> aufbereitet und liegt zwischen 0 und 5 Volt.

Wirklich? Zeig mal deine Schaltung.

> Wenn ich den Sachverhalt mit analogRead angehe und anschließend mit
> "Map" auswerte, bekomme ich freilich immer nur die Momentwerte, die
> keinerlei Aufschluss über p-p liefern.

Logisch.

> Gibt es eine vorbereitete Funktion (oder Libary?), mit der ich die
> maximalen Amplituden auslesen kann?

Amplituden sind immer die Maximalwerte, das ist deren Definition.

https://de.wikipedia.org/wiki/Amplitude

Der Momentanwert ist die Elogation.

https://de.wikipedia.org/wiki/Auslenkung

(Ja, ich hab ab und an in Physik aufgepaßt ;-)

> Kritisch ist vermutlich die
> Abtastrate, um sicherzustellen, dass auch auch regelmäßig ein Peak
> erwischt wird.

Man kann es auch old school mit einem analogen 
Präzisionsspitzenwertdetektor machen, das schont die CPU-Resourcen. Bei 
1kHz ist das auch kein Problem.

https://sound-au.com/appnotes/an001.htm

Ok, das ist nur der Präzisionsgleichrichter, es gibt aber diverse 
App-Notes für Spitzenwertdetektoren.
OP #6425975
Lesenswert?

Falk B. schrieb:
>> Ich möchte am Analogeingang eine Wechselspannung messen. Die Frequenz
>> variiert zwischen 50 und 1000 Hz, die Spannung ist entsprechend
>> aufbereitet und liegt zwischen 0 und 5 Volt.
>
> Wirklich? Zeig mal deine Schaltung.

Rail-to-Rail-OPA, VSS=GND und VDD=5 Volt, Pin 1 -> ElKo 10uF -> Trimmer 
Pin 2 (Pin 1 auf VDD und Pin 3 auf Gnd) -> A0

Ziel war es eigentlich, die Sache digital zu lösen. Analog geht es 
natürlich einfacher, stimmt wohl.
Gast #6426011
Lesenswert?

#6426061
Lesenswert?

Henry T. schrieb:
> Gibt es eine vorbereitete Funktion (oder Libary?), mit der ich die
> maximalen Amplituden auslesen kann?

Nein.

Du erkennst schon selbst, daß der uC keine Analog-Peaks erkennen kann, 
die zwischen seinen Abtastungen lagen.

Arduino analogRead ist nun besonders langsam, mit direkter 
Programmierung lässt sich schneller abtasten, aber es bleibt immer noch 
langsam.

Du wirst einen externen Hüllkurvengleichrichter benötigen, also 
Hardware.

Dann geht es auch mit analogRead.
#7465568
Lesenswert?

Um Netzspannung zu messen könnte man folgenden Weg gehen. Es gibt keine Transformatoren 0,33VA 6V 55mA (ca 3€), den kann man als sichere Trennung zu Netzspannung benutzen. Die eine Seite des Transformators häng man auf 2,5 Volt, wenn der ADC mit 5 Volt versorgt wird. Die andere Seite des Transformators bekommt einen Spannungsteiler von 6:2 Damit hat man eine DC-Spannung die zwischen 0,5 und 4,5 Volt schwankt, der Nulldurchgang ist bei 2,5 Volt Das gibt man dann auf den ADC und muss nur noch in Software die RMS Spannung errechnen.

#7465581
Lesenswert?

Jens S. schrieb:

Um Netzspannung zu messen könnte man folgenden Weg gehen

Macht man aber nicht weil wegen Sättigungseffekten viel zu ungenau und zu gross.

Man verwendet zur galvanischen Trennung einen Stromwandlertrafo 1:1 wie https://www.ebay.de/itm/126000018415 und sorgt eben mit einem 230k Vorwiderstand auf Primarseite dafür, dass nur 1mA rms fliesset und sekundär 1V an einem 1k Widerstand ergibt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren