Hallo Forum,
zur Zeit beschäftige ich mich damit ein paar Sensoren in ein RC-Auto einzubauen und mit dem Raspi auszulesen. Nachdem ich es nun geschafft habe, dass mein Auto seine LEDs anschaltet, wenn es dunkel wird, wäre es auch noch hübsch die Drehzahl der Antriebswelle auszulesen. Dazu habe ich mir einen Hallschalter (PIC H501) besorgt und einen kleinen Magneten an einem Zahnrad am Ende der Welle angebracht. Soweit... so gut.
Die Signale sehen am Oszi ganz brauchbar aus. HIGH-Pegel (3,3V) wenn sich Magnet und Sensor nicht gegenüberstehen und LOW (geht gegen Null) dementsprechend als Puls.
Bei langsamer Fahrt wird eine Wellenumlaufdauer von ca. 62,5ms angezeigt und die Pulsdauer entspricht ca. 5ms, bei Höchstgeschwindigkeit sind es ca. 9,37ms bzw. 0,75ms (HIGH:LOW demnach ungefähr 12,5:1).
Für die Aufnahme der Werte im Pi sehe ich bis jetzt zwei Möglichkeiten für mich:
1. Da ich sowieso schon einen AD-Wandler verbaut habe, hab ich zu Testzwecken das Hallsignal mal auf einen Kanal gelegt. Gibt mir für HIGH > 900 und für LOW < 100 aus. Könnte man also einfach so abfragen und prüfen wie lange der Wert unter 100 (oder lass es ruhig 500 sein) liegt.
2. Wahrscheinlich eleganter: ich benutze eine event detection für die fallende Flanke (vermutlich mittels:
) und messe die Zeit zwischen zwei Events.
Spätestens da liegt dann aber auch der Hund für mich begraben... Aus Schulzeiten hatte ich das bei der Programmierung am ATmega nicht mehr als so schwierig in Erinnerung (Zugriff auf Timer - Clock_Devide einstellen - Overflows zählen...), beim Pi ist mir aber leider nicht klar wie ich den Punkt "Zeitmessung" hier vernünftig unterbringen kann. Gibt es für einen meiner beide Ansätze schon eine bewährte Methode oder bin ich komplett auf dem Holzweg?
Recht herzlichen Dank für ihre Aufmerksamkeit