Liniensensor mit µC
von
am 21.10.2015 um 01:10 (4545 Hits)
Für meinen mobilen Roboter WR02 bastle ich jetzt an einem intelligenten Liniensensormodul, das eine schwarze Leitlinie mit 3bit Auflösung abtastet.
Es ist eine Schaltung mit PIC16F630, die 4 Photoreflexsensoren RPR220 zu einer 3 Bit Zahl auswertet. Das Ergebnis ist eine Zahl im Bereich -3 .. 3. Der Wert -4 signalisiert Fehler oder Linie nicht erkannt, Wert 0 signalisiert Linie exakt mittig. Die drei Bits werden über drei Signalleitungen an den HauptPIC des Roboters gesendet. Dort wird der 3bit Wert zu einer 8bit Regelabweichung erweitert, damit der 'Linienregler' was zu rechnen hat.
Die schwarze Linie ist ca. 1,5 mal so breit wie der Abstand der Reflexlichtschranken, so dass immer eine oder zwei LS bedämpft sind. Die theoretische Auflösung ist ca. 0,5 x Abstand der LS zueinander. Es ergibt sich folgendes Auswerteschema:
Hier der Schaltplan:
Die NPN Transistoren sorgen für eindeutige Logikpegel. Der RPR220 schaltet am besten beim Abstand von ca. 15mm und reagiert sehr gut auf mit Edding ausgemalte oder mit Laserdrucker ausegdruckte Linien und auf Isolierband. Weil das Isolierband glänzende Oberfläche hat und Reflexionen verursachen könnte, kucken die Sensoren etwas schräg nach vorn. So reagiert der Sensor sehr gut auf die schwarze Farbe vom Isolierband und nicht auf Reflexionen.
Bei Linienbreite von 30mm und 20mm Abstand zwischen den Sensoren sollte theoretisch eine Auflösung von 10mm erreicht werden.
Im Testaufbau funktioniert die Schaltung schon mal ganz gut. Der PIC schaltet die 4 IR LEDs der Sensoren nacheinander ein, und wertet das Signal der Phototransistoren aus. Das Quellcode in C für XC8 und PIC16F630 ist angefügt.