Forum: FPGA, VHDL & Co. Drehzahlmessen in VHDL


von Pat R. (patrik)


Lesenswert?

Hallo Leute,
ich würde gerne mit meinem Spartan 3E Drehzahl einer Achse messen. Die 
Drehzahl bewegt sich zwischen 1000-20000. Ich bekomme von einem 
Schmidt-Trigger 12 Signale pro Umdrehung, der Spartan ist mit 50Mhz 
getaktet. Wenn ich die Taktzyklen zwischen 2 Signalen zähle, dann ist 
die Formel die zu berechnen gilt: 250*10^6/#Taktzyklen. Da aber Teilen 
ziemlich übel ist, wollte ich mal fragen ob es eine einfachere Lösung 
gibt.
danke
patrik

von Panzer H. (panzer1)


Lesenswert?

Moin,

zähle doch einfach eine Minute (generierst Du aus dem 50MHz Takt, also 
50.000.000 Takticks) lang die Impulse, die vom Sensor kommen und 
dividiere das Ergebnis durch 12.
Oder zähle 15sek (12.500.000 Taktticks) lang die Sensorpulse und 
dividiere einfach dann durch 4 (einfacher Shift um 2 Stellen).
Oder zähle gleich 3,75sek lang (3.125.000 Taktticks) die Sensorpulse und 
Du musst nicht mehr dividieren.
Je nach Dynamik des Systems kannst die Messdauer auch verkürzen und dann 
multiplizieren...

panzer

von hugo (Gast)


Lesenswert?

Da aber die Drehzahl der Achse nicht synchron mit der Taktfrequenz des 
FPGA ist, schwankt das Zählerergebnis immer um 1 . Kann man das 
irgendwie vermeiden?

von Tim R. (vref)


Lesenswert?

Wenn das ganze synchron wäre, müsstest du ja die Drehzahl nicht messen, 
oder?
Je länger dein Messzeitraum ist, desto genauer wird der Messwert.
Du musst entscheiden, in welchen Intervallen du mit deinem Drehzahlwert 
etwas anfangen willst (z.B. Motorgeschwindigkeit nachregeln)...
Da dein Motor eh eine gewisse Trägheit haben wird, wird das Schwanken um 
1 kaum eine Rolle spielen.

von Falk B. (falk)


Lesenswert?

@ hugo (Gast)

>Da aber die Drehzahl der Achse nicht synchron mit der Taktfrequenz des
>FPGA ist, schwankt das Zählerergebnis immer um 1 . Kann man das
>irgendwie vermeiden?

Nein, das ist ein prinzipielles Problem jeder Drehzahlmessung bzw. 
Quantisierung. Spielt aber bei richtiger Wahl der Torzeit keine 
Rolle. Ob du nun 2000,00 oder 2000,01 U/min misst ist doch egal.

MFG
Falk

von Der Experte (Gast)


Lesenswert?

Du must doch nur ganzzahlige Vielfach von 2t als Torzahlen verwenden.
Die Normierung auf die FPGA-Frequenz erfolgt durch Multilplikation mit 
k/f, was auch wieder sehr einfach ist, wenn die Frequenz ein Pendat zu 
60x60 ist. Das einfachste ist ein Addierer, der mit k x 60 x 60 x 1000 
(auflösung) abgetastet wird.

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.