Es geht um ein Windrad mit Drehstrom. Ein programmierbarer Mikrokontroller mißt Spannung und Strom, und errechnet Leistung und schaltet Widerstände über Relais. Wir haben digitale und analoge Eingänge zur Verfügung.
Wie kann ich die Frequenz und damit die Drehzahl überwachen?
Wie sind die denn zur Spannungs- und Strommessung beschaltet? Willst Du vielleicht Spannung, Strom und Frequenz messen?
Die naheliegende Antwort hat Izur ja schon gegeben, passend dazu gibt es ja den Thread "Wie Netzspannung mit Microcontroller auswerten" mit den entsprechenden Schaltungen.
kommt darauf an wie genau die Frequenz gemessen werden soll und was der Mikrokontroller dafür bietet. Mit einem 16 Bit Zähler mit 10 MHz könnte man die 20 ms Periodendauer auf +- 0,1 µs Auflösung messen, das wären +- 0,3 mHz.
Spannung vom Windrad über eine geeignete Schaltung auf einen Microcontroller geben. Wenn man es robust haben will mit einem kleinen Trafo. Da kann man dann auch gleich die Spannung messen. Geht aber wie an anderer Stelle beschrieben auch mit einem einfachen Widerstand.
Es gibt grundsätzlich zwei Varianten, die Frequenz zu messen:
Man zählt die Signalflanken über eine feste Zeit, z.B. 1 Sekunde.
D.h. man erzeugt mit einem Timer des Prozessors Interrupts in einem festen Abstand, z.B. 1 Sekunde. Das Signal vom Generator gibt man auf einen Zählereingang des Prozessors. Man kann dann jede Sekunde den Zähler auslesen und hat direkt die Frequenz. Wenn man eine Auflösung besser als 1 Hz möchte, z.B. 0,1 Hz, muss man entsprechend länger zählen. Bei 0,1 Hz also 10 Sekunden lang.
Man ermittelt die Periodendauer
Dazu programmiert man einen Counter des Mikrocontrollers so, dass er mit dem Prozessortakt hochgezählt wird. Mit dem Signal vom Generator löst man einen Capture aus, d.h. mit der Flanke des Signals wird der Inhalt des Zählers in ein Capture Register kopiert. Gleichzeitig löst man mit derselben Signalflanke einen Int aus. In der Int-Routine liest man das Capture Register aus. Der Inhalt, bzw. die Differenz zwischen zwei Ereignissen, entspricht dann der Periodendauer des Signals aus der man leicht die Frequenz berechnen kann.
Vorteil der 2. Methode ist, dass man bei niedrigen Frequenzen eine höhere Auflösung bei kurzer Messzeit erhält, also bei 50 Hz erhällt man so alle 20ms einen Messwert mit einer deutlich besseren Auflösung als mit der Methode 1. Man kann das Compare Register auch z.B. nach jeder
oder 50. Flanke auslesen. Die Auflösung wird dann entsprechend besser.
Eine Compare/Capture Einheit gibt bei vielen modernen Prozessoren, z.B. PIC oder Atmega, aber auch bei einigen alten 8031 Derivaten (80535/80537).
Für eine Regelung sollte man noch beachten, dass eine solche Frequenzmessung immer mit einer Verzögerungszeit verbunden ist. Das kann sehr leicht zu ekligen Regelschwingungen führen.
Ich würde nicht das ADU-Signal auswerten. Ist viel zu aufwendig. Gib das Signal einfach auf einen Komparatoreingang und löse mit der steigenden Flanke einen Capture aus. Damit bekommt man eine Auflösung im Bereich des Prozessortaktes.
Beispiel:
Prozessor mit mit 20 MHz. Macht in 20ms 400000 Takte.
n = 1/f * 20MHz
n: Anzahl Takte f: gesuchte Frequenz
=> f = 20 MHz / n
bei n = 400000 macht das 50Hz bei n = 400001 macht das 49,999875000312499218751953120117 Hz
Es gibt auch Archäologen die beim Ausmessen unregelmäßig geformter Steine den Nonius des Meßschiebers auf 1/20 mm ablesen. Aber ein Phasentrigger eines gestörten Pseudosinus auf 0.002 Grad genau ist noch sportlicher, Respekt.
Ergänzend zu den Beiträgen die Pulszeit (oder Zeit zwischen Nulldurchgängen) zu messen:
Es kann eklige Störungen geben, die Deinen Komperator auch mal zwischendurch triggern. In der Software solltest Du einen Erwartungsbereich vorsehen und Werte außerhalb dieses verwerfen oder mit weniger Glaubwürdigkeit merkieren. Schnelle Änderungen sind ja nicht zu erwarten, der Erwartungsbereich kann also ein Mittelwert +/- ein paar Prozent sein. Nur beim Einschalten müssen plausible Werte für den Mittelwert angenommen werden.
Ciao Dschen
--
Dschen Reinecke
=== der mit dem Namen aus China ===
http://WWW.DSCHEN.DE mailto:usenet@dschen.de
Ist schon klar. Mir ging es nur darum, darzulegen, dass man bei sowas besser die Periodendauer misst und daraus die Frequenz berechnet, als dass man die Anzahl der Perioden pro Sekunde misst. Und dazu eignet sich die Capture Funktion, die viele Prozessoren haben ganz hervorragend.
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here.
All logos and trade names are the property of their respective owners.