PRO-BOT128 bekommt Fühler
von Ulli Sommer, Auszug aus dem Buch PRO-BOT128
Ein „Bumper" wie er gerne bei Robotern bezeichnet wird, ist nichts anderes als ein Kollisions-Kontaktschalter. Wenn unser Roboter ein Hindernis mit seinem ACS-System nicht wahrgenommen hat, fährt er im jetzigen Zustand (keine Bumper vorhanden) einfach gegen das Hindernis ohne dass er es wahrnimmt bzw. wahrnehmen kann! Die Bumper sind die letzte Instanz um das Hindernis zu detektieren und darauf zu reagieren. Der Nachteil ist, das wenn unser Roboter zu schnell auf sein Hindernis auffährt die Räder durchdrehen können und dadurch ein Schlupf (Differenz zwischen gezählten Weg und tatsächlichen weg) auftreten kann und unsere Messergebnisse verfälscht.
Ganzen Artikel lesen...
Bumper-Sensoren bestehen im einfachsten Fall aus einem Mikrotaster oder einem Tastergürtel als Stoßstange. Für unseren PRO-BOT128 bauen wir uns die Schalter aber selber, das ist nicht nur preisgünstiger sondern bietet sich durch das Layout des Roboters förmlich an! Wir benötigen dafür nur ein paar cm Rundmessing aus dem Modellbau-Bereich, mit einem Durchmesser von 0,5 bis 1mm, ein paar cm flexible Schaltlitze und Lötnägel die wir durch die Platine stecken können sowie etwas handwerkliches Geschick.

Technologischer Aufbau der Bumper-Sensoren am PRO-BOT128
Die angelötete Seite der Fühler wird mit Masse (GND) verbunden, und der Schaltkontakt mit den I/O-Eingängen PC6 und PC7 der C-Control Pro.
Um nun die Schaltzustände abzufragen, müssen wir in der Software die internen Pullup Widerstände scharf schalten. Wird nun ein Bumper betätigt wird der Eingang gegen Masse gezogen und ein logisches Low wird erkannt. Aus dieser Information, können wir nun eine Ausweichroutine starten und unseren Roboter wieder aus der Bedrängnis navigieren.
Beispiel:
#define BUMPER_LEFT 22
#define BUMPER_RIGHT 23
Sub main()
PRO_BOT128_INIT()
DRIVE_ON()
ENC_LED_ON()
'Pins als Eingang
Port_DataDirBit(BUMPER_LEFT,0)
Port_DataDirBit(BUMPER_RIGHT,0)
'Pullup einschalten
Port_WriteBit(BUMPER_LEFT,1)
Port_WriteBit(BUMPER_RIGHT,1)
'Endlosschleife
Do While True
'Einfache Ausweichroutine (wurde ein Bumper betätigt?)
If Port_ReadBit(BUMPER_LEFT) = 0 Or _
Port_ReadBit(BUMPER_RIGHT) = 0 Then
DRIVE_BWD(170,10) 'speed = 170; für 1 Sekunde rückwärts fahren
TURN_LEFT(170,5) 'speed = 170; für 500ms links drehen
Else
DRIVE_FWD(180,1) 'speed = 180; für 100ms vorwärts fahren
End If 'danach wieder Bumper prüfen
End While
End Sub

PRO-BOT128 mit seinen neuen Sensoren

Lernen Sie die ganze Vielfalt vom Franzis Buch- und Softwareverlag kennen