Forum: Mikrocontroller und Digitale Elektronik Drehzahlmessung von Kurbelwelle 60-2


von Sash u. (sashm)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich bin gerade dabei eine Drehzahlmessung eines Kurbelwellenrades mit 
60-2 Zähnen (2 aufeinanderfolgende Zähne fehlen) in einem Motorola 
MPC555 zu programmieren.
Leider komm ich nicht auf die Lösung. Vielleicht hat jemand von euch ja 
eine Idee oder erkennt meinen Denkfehler:

Ich nutze die TPU Funktion PMM (Period Measurement With Missing 
Transition Detection). Die Funktion erkennt die Zahnlücke, in dem es die 
Zeit zwischen aktuellem und nachfolgendem Zahn vergleicht (steigende 
Flanke) und löst einen Interrupt aus, wenn die nachfolgende Zeit 
1,0...1,99x (lässt sich einstellen. Hab es hier auf 1,5x eingestellt) 
größer ist. Jedesmal wenn zwei Flanken aufgetreten sind, wird die 
vergangene Zeit in dem Register PERDIO_HWLW abgespeichert.
Das heißt ich habe 58x die richtige Zeit und dann kommt die Zahnlücke, 
wo ich dann eine dreimal größere Zeit messe.

Mein Code sieht zur Zeit so aus:

-lese permanent das Register PERIOD_HWLW und berechne Drehzahl.
- speichere den Wert auch in eine Variable PERDIO_old ab
- Bei einem Interrupt benutze den Wert aus PERIOD_old zur Berechnung der 
Drehzahl.

Problem ist hierbei, dass nach Beendigung der Zahnlücke der 3x größere 
Wert ins Register geschrieben wird und dieser dann auch zur Berechnung 
verwendet wird.

Hat jemand von euch vielleicht eine Idee wie man am besten die Drehzahl 
bestimmt? Diese Funktion ist die einzige, welche ich verwenden kann. 
Oder sieht jemand meinen Denkfehler?

Ich wäre euch echt dankbar.

Im Anhang ist dann noch der aktuelle Code und der Signalverlauf.

Vielen Dank schonmal.

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.