Sensor: Inkrementalgeber

Aus letsgoing
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Radencoder

Der Radencoder (oder engl. Wheel Encoder, auch Inkrementalgeber) besteht aus einem Sensor und einer Scheibe, welche sich mit dem Rad des Rovers dreht. Die Scheibe besitzt kleine Aussparungen in Regelmäßigen Abständen, die detektiert und gezählt werden um Rückschlüsse auf die zurückgelegte Distanz ziehen zu können.

Hw Sen encoder-LineSensor2 Fkt.JPG Hw Sen Encoder-LineSensor Hw.JPG


Anschließen

Hw Sen encoder-LineSensor u.JPG

Aufbau und Funktionsweise

Der Sensor des Radencoder ist eine Infrarotlichtschranke bei der Sender und Empfänger nebeneinander liegen. Wie beim IR-Distanzsensor (siehe IR-Sensor) kann nach dem Prinzip der aktiven Triangulation der Abstand zum detektierten Objekt ermittelt werden. Des Sensor ist somit genau genommen ein analoger Sensor, funktioniert aber wie ein digitaler.
Um die Aussparungen Zählen zu können ist wichtig zu wissen ob eine Aussparung detektiert wurde oder nicht, die Distanz spielt keine Rolle. Gesucht ist ein digitales Signal, also True/False oder High/Low.
Um aus dem analogen Sensorwert einen Digitalwert zu bekommen wird ein Schmitt-Trigger eingesetzt.
Dabei handelt es sich um eine Komparatorschaltung bei der ein analoges Eingangssignal in ein digitales Signal umgewandelt wird. Es wird eine Kippschaltung eingesetzt die bei einem bestimmten Schwellenwert der Eingangsspannung schaltet. Dann wird die Ausgangsspannung auf den Maximalwert (5 Volt beim Arduino Uno) gesetzt. Dieser Wert entspricht dem digitalen Signal High (True). Unterhalb dieses Wertes gibt der Sensor Low (false) zurück.
Zeichnet man den zeitlichen Verlauf der Werte als Kurve auf, ergibt sich für die analogen Werte eine geschwungene Kurve. Für die ermittelten digitalen Werte ergibt sich daraus ein Rechtecksignal, denn Zwischenwerte fallen raus. Es bleibt nur noch 0 Volt (für Low) oder 5 Volt (High).


Hw Sen Encoder-LineSensorKurve Fkt.png


Werden diese Werte nun invertiert, wird bei Detektion eines Stiftes der Zählscheibe High (true) zurückgegeben und sonst Low (false).


Interrupts

Eine wichtige Funktion, die vom Arduino unterstützt wird, sind Interrupts. Schickt ein Sensor ein Signal kann der Arduino sein laufendes Programm für einen kurzen Moment unterbrechen. Das bedeutet im Fall der Radencoder, es kann in diesem kurzen Moment der Zähler um eins erhöht werden. Danach wird das laufende Programm an der Stelle der Unterbrechung fortgeführt.

Integration in ein Programm

Der Arduino bekommt vom Sensor einen Impuls (High). Dann wird das laufende Programm für einen kurzen Augenblick unterbrochen und eine Variable (der Zähler) wird um eins erhöht. Die Unterbrechung wird Interrupt genannt. Das Programm kennt jetzt die Anzahl der durchlaufenen Aussparungen.
Um aus dieser Information Rückschlüsse auf die Distanz ziehen zu können, müssen zunächst die Aussparungen gezählt werden. Man muss wissen, nach wie vielen Impulsen sich das Rad einmal um die eigene Achse gedreht hat. Kennt man den Umfang des Rades ist klar: Nach einer Drehung der Scheibe ist der Rover die Distanz des Radumfangs gefahren.

Beispiel:
Die Scheibe hat 10 Aussparungen, es kommt zu 10 Interrupts bei jeder Umdrehung des Rades. Der Umfang des Rades beträgt 20 cm.

Nach 10 Interrupts ist der Rover 20 cm gefahren.
10 Interrupts = 20 cm
Mit einem einfachen Dreisatz lässt sich berechnen:
Nach 5 Interrupts ist er 10 cm und nach 30 Interrupts 60 cm gefahren.

Oft kommt es am Inkrementalgeber zu prellenden Werten beim Zählen. Das heißt, es wird nicht korrekt gezählt. Das muss bei der Berechnung berücksichtigt werden. Die “’Fahre Distanz”’-Blöcke in unserem ArduBlocks erledigen diese Rechenaufgaben für uns.



Beispielcode

In diesem Programm fährt der Rover ein Quadrat mit 50cm Seitenlänge:

ArduBlock:

Sw Ab Encoder-LineSensor.png


Arduino-Code

Sw Ard Encoder-LineSensor.png

Anhang

Quellen und weitere Infos

Händler:
http://www.exp-tech.de/Sensoren/Entfernung-Naeherung/RedBot-Sensor-Line-Follower.html

Mehr über Lichtschranken:
http://de.wikipedia.org/wiki/Lichtschranke

Triangulationsverfahren:
http://de.wikipedia.org/wiki/Abstandsmessung_(optisch)#Lasertriangulation

Interrupts:
http://de.wikipedia.org/wiki/Interrupt

Genaueres zum Schmitt-Trigger
http://de.wikipedia.org/wiki/Schmitt-Trigger
http://www.elektronik-kompendium.de/sites/bau/0209241.htm
http://www.strippenstrolch.de/1-2-10-der-schmitt-trigger-cd-4093.html

Inkrementalgeber

Dieser Inkremetalgeber wurde in der ersten LGI-Roverserie verbaut.

Mit einem Inkrementalgeber kann auf ähnliche Weise die gefahrene Distanz ermittelt werden. Auch er misst die Rotation des Rades.


Hw Sen InkrementAlt Hw.jpg


Aufbau und Funktionsweise

Der Inkrementalgeber (oder engl. Wheel Encoder) besteht aus einem Sensor und einer Scheibe, welche sich mit dem Rad des Rovers dreht. Die Scheibe besitzt kleine Aussparungen in Regelmäßigen Abständen. Der Sensor funktioniert wie eine Lichtschranke und kann die Aussparungen detektieren. Mit diesem Sensor kann man nur zwei Fälle unterscheiden (Licht oder kein Licht). Er gehört zu den digitalen Sensoren.

Der Arduino bekommt einen Impuls wenn auf den Sensor Licht trifft. Dann wird das laufende Programm für einen kurzen Augenblick unterbrochen und eine Variable (der Zähler) wird um eins erhöht. Die Unterbrechung wird Interrupt genannt. Das Programm kennt jetzt die Anzahl der durchlaufenen Aussparungen.

Um aus dieser Information Rückschlüsse auf die Distanz ziehen zu können, müssen zunächst die Aussparungen gezählt werden. Man muss wissen, nach wie vielen Impulsen sich das Rad einmal um die eigene Achse gedreht hat. Kennt man den Umfang des Rades ist klar: Nach einer Drehung der Scheibe ist der Rover die Distanz des Radumfangs gefahren.

Hw Sen InkrementAlt2 Hw.jpg


Anhang

Quellen und Links für weitere Infos

http://www.dfrobot.com/wiki/index.php/Wheel_Encoders_for_DFRobot_3PA_and_4WD_Rovers_%28SKU:SEN0038%29
http://de.wikipedia.org/wiki/Interrupt
http://www.psurobotics.org/wiki/index.php?title=Wheel_Encoders

Meine Werkzeuge
Namensräume

Varianten
Aktionen
Navigation
Projekte
letsgoING Material
letsgoING Hardware
letsgoING Software
Sensoren
Aktoren
LED
Bluetooth
Wissen
Werkzeuge