Arduino soll die Laufrichtung erkennen und reagieren

Hallo zusammen,

bisher habe ich dafür noch keine brauchbare Lösung gefunden und hoffe ihr könnt mir helfen.

Ich verwende einen Hall-Effekt-Sensor um die Geschwindigkeit eines Rades zu messen. Das funktioniert alles prima. Ich möchte aber auch gerne haben, dass der Arduino erkennt, dass die Laufrichtung falsch oder richtig ist und dann entsprechend z.B. auf Pin 13 ein low oder high ausgibt.

Ich dachte da bisher an zwei Hall-Effekt-Sensoren und an einen Sketch, bei dem man dem Arduino irgendwie beibringt, dass wenn die eine Hall-Sonde vor der zweiten Hall-Sonde reagiert, dass er dann Pin 13 auf high schalten soll. Geht das irgendwie? Wenn ja, mit welchem Befehl?
Danke schon im Voraus für eure Hilfe!

Martin

In dem man sich mal ein bisschen mit Arduino/C beschäftigt. Also auch üben an einfacheren Projekten!!

Ansonsten wird es mit 2 Sensoren, welche um 180° verschoben sind, schlecht gehen. Sollten diese aber nur wenige ° auseinander liegen geht es weitesgehend sehr einfach.

PseudoCode

Wenn HS1 innerhalb der letzten ms gekommen ist, und dann HS2 angesprochen wird → Vorwärts
Wenn HS2 innerhalb der letzen ms gekommen ist, und dann HS1 angesprochen wird → Rückwärts

Das Programmieren wird dir keiner Abnehmen. Tip BlinkWithoutDelay

Dann mach doch den 2. Hallsensor daneben und lese ihn aus. je nach dem, ob die kleinere zeitDifferenz vor oder nach dem Hauptsensor ist, hast du die Drehrichtung.

So oder so ähnlich stelle ich mir das wenigstens vor.

Die Sensore sollten um 90° verschoben sein, das heißt wenn der Magnet 10mm lang ist dann sollten die Sensoren 5mm voneinander entfernt angebracht sein. Du triggerst auf den Wechsel des Signals eines der beiden Sensoren. Der andere wird in einer Drehrichtung des Rades HIGH sein , in der anderen LOW.

eine Richtung:
<<MAGNET
S1
S2

andere Richtung

MAGNET
S1
S2

Grüße Uwe

Hallo Martin, willkommen im Forum!

Wenn Du es machst, wie Uwe vorschlägt, bringt Dich das Studium einer Drehencoderauswertung möglicherweise im Thema weiter.

Vielen Dank für euere Hilfe! War sehr hilfreich

Hallo,

Mit den 90° versetzt halte ich für nicht gut. Wegen der Magnetenanordnung.
Das kannste mit Pappscheibe und Lichtschtranken machen, ja, aber nicht Hallsensoren.
Ich kann dir nur empfehlen, lese die das hier durch von Peter Dannegger.

Erklärung:
http://www.mikrocontroller.net/articles/Drehgeber

  1. Beitrag Code:
    http://www.mikrocontroller.net/topic/drehgeber-auslesen

Ich nutze den Code. Habe mir den Anfangs Schritt für Schritt angeschaut was der wie macht, genial. Den bringt nichts aus der Ruhe. Voraussetzung ist jedoch immer, dass die Anordnung der Magneten und Sensoren richtig sind. Das Magnetfeld muß zusammenhängend wirken. Es darf keine Lücke dazwischen entstehen. Das heißt, wenn über jeden Sensor ein Magnet steht muß dazwischen auch noch ein Magnetfeld vorhanden sein. Der erste Sensor muß aktiv bleiben wenn du die Magneten drüber schiebst bis beide aktiv werden. Dann weiter schieben, der erste Sensor geht aus, der zweite muß ohne Magnetfeldunterbrechung aktiv bleiben bis der letzte Magnet drüber weg ist.
Das wird auch aus dem Diagramm ersichtlich. Oder guckst dir Pappscheiben für solche Endcoder an, wie die schwarz/weiß Flächen angeordnet sind. Das muß dann auch das Magnetfeld der Magneten leisten. Nur das diese in Drehrichtung hintereinander liegen. Das alles funktioniert zum Bsp. mit einem TLE4905 Hallsensor. Alle Magnet(en) müssen mit Südpol zum Sensor zeigen.

Was du natürlich auch machen kannst. Ohne jeden Code. Nimmst einen TLE4966. Hier kannst du an beliebiger Stelle auf dem Radius je einen Nord- und einen Südpol Magneten anbringen. Der Sensor liefert damit 2 unabhängige Signal. Einmal den Takt (Geschwindigkeit) und einmal die Richtung. Je mehr Nord/Südpol Magnetpaare du anordnest, um so kürzer ist die Reaktionszeit auf Richtungsänderungen. Ein Paar reicht aber auch erstmal aus.