Hallo R.,
Zitat:Gibt es denn irgendwie eine andere Möglichkeit die Drehzahl im FPGA zu ermitten über Impulse? Das Problem ist doch bestimmt schon öfters bearbeitet wurde, da werde ich doch nicht der erste sein?
Nein, du bist nicht der erste.
Das Problem ist: wenn dein Motor steht, kommen keine Encoderpulse. Ohne Impulse aber keine neue Drehzahlberechnung. Das hast du ja selbst erkannt:
Zitat:Genau das ist das Problem an dem Ich gerade hänge. Auch das der FiFo leer ist, wenn ich nicht verfahre, oder die Impulse zu lage auseinander sind. Ich bekomme also nicht dauerhaft die richtige Drehzahl.
Lösung in Pseudocode, als Ergänzung zum obigen Code-Vorschlag:
Code:
IF count >= max_count THEN
output := max_count+1
count := 0
ENDIF
Wenn der Zähler ein Maximum erreicht, geht die Routine von einem stehenden Motor aus. Dann gibt man eben einen Wert in den FIFO, der dem RT-Host eben diesen stehenden Motor signalisiert…
Eine Drehzahlbestimmung über Pulse hat immer zwei Messbereichsgrenzen:
- die maximale Drehzahl wird durch Anwendung von Nyquist auf deine Samplerate bestimmt
- die minimale Drehzahl wird (in meiner Methode) durch den Maximalwert des Counters bestimmt - und ist eben dadurch
größer als Null…
Zu deinem Bild:
Was machst du da eigentlich in diesem VI? Warum wird der DIO-Pin an zwei Stellen abgefragt? Wo kommt die lokale Variable "Timeout" her?
Einfach mal Ctrl-U benutzen und gelegentlich Kommentare im BD verteilen würde hier sehr helfen…