Unterrichts- und Lernmaterial für Mikrocontroller
Unterrichts- und Lernmaterial fürMikrocontroller

1 - Navigation mit IR-Scheinwerfern

Wir haben jetzt Erfahrungen gesammelt mit dem Einsatz von Whiskers, die dazu beitragen, dass der BoE-Shield Bot Arduino ein Objekt erkennt, indem er es rammt. Etwas eleganter und schöner sähe es aus, wenn der Roboter das Objekt vorher erkennt und dann entscheidet, was er weiterhin tun wird. Mit IR-Scheinwerfern gelingt dieses Vorhaben.

In jedem der beiden offenen Zylinder in Abb. 1 befindet sich eine IR-Diode, die ihr Licht wie eine Taschenlampe nach vorne abstrahlt. Als Augen werden zwei IR Empfänger eingesetzt, die dem Arduino HIGH/LOW Signale zurückliefern, je nachdem, ob sie ein Reflexionssignal der Sendediode erhalten oder nicht.

Abbildung 1 - links: Infrarotstrahl wird reflektiert, Hindernis erkannt - rechts: Infrarotstrahl wird nicht reflektiert - kein Hindernis vorhanden (Courtesy of Parallax Inc.)

2 - Infrarote Lichtsignale

Mit Infrarot (abgekürzt: IR) wird ein für das menschliche Auge nicht sichtbares Licht bezeichnet. Die in dieser Einheit benutzten IR LEDs emittieren infrarotes Licht in einem bestimmten Wellenlängenbereich, ähnlich wie man es im sichtbaren Bereich bei den roten LEDs beobachten kann.

Mit den in dieser Einheit eingesetzten IR Empfängern wird das IR Licht der LEDs nachgewiesen; es funktioniert ähnlich wie wir es schon von den Fototransistoren aus der Einheit Fototransistor kennen. Mit einem Unterschied - die IR Empfänger sind nicht empfindlich für das allgemeine Umgebungslicht, sondern ausschließlich für infrarotes Licht.

Die beim BoE Shield Bot Arduino eingesetzten IR Scheinwerfer ähneln denen, die in Fernbedienungen für Audiogeräte eingebaut sind. In einer Fernbedienung für Fernseher blinkt eine IR LED und überträgt damit eine Nachricht an den Fernsehempfänger. Der dort eingebaute Mikrocontroller wertet die Nachricht in gleicher Weise aus, wie wir es mit dem BoE-Shield Bot Arduino gleich zeigen werden.

Abbildung 2 - IR Fernbedienung mit codiertem Signal (Courtesy of Parallax Inc.)

Die Lichtsensoren in den meisten Digitalkameras und Mobilephones und Webcams sind in der Lage IR Licht nachzuweisen. Über den Sucher einer Digitalkamera kann man "sehen", ob eine IR LED blinkt oder nicht. Sie erscheint im Sucher als helles weißes Licht.

3 - IR Schaltungen zur Objekterkennung

An den beiden Ecken des Steckbrettes auf dem BoE-Shield Arduino, direkt vorn an der Kante, wird je ein IR Objektdetektor - bestehend aus einer IR LED und einem IR Empfänger - aufgebaut.

Aufgaben
  • Löse die Spannungsversorgung und das USB-Kabel vom Arduino Board.
  • Baue die beiden Schaltkreise nach der Schaltskizze auf dem Steckbrett auf.
  • Beachte, dass jeder Anodenanschluss der IR LEDs mit einem 2kOhm Widerstand verbunden wird. Der Kathodenanschluss befindet sich auf dem Steckbrett in einer Reihe mit den mittleren Anschlüssen der beiden IR Empfänger und ist über einen Steckdraht mit GND verbunden.

Schaltskizzen und Schaltungsaufbau

Abbildung 3 - Schaltskizze für zwei IR Objektdetektoren mit IR-LED und IR-Empfänger (Courtesy of Parallax Inc.)
Abbildung 4 - BoE-Shield Arduino mit IR-Schaltung zur Objekterkennung (Courtesy of Parallax Inc.)

Anschlussbelegung von Anode und Kathode bei einer IR LED

Eine Anode hat den längeren Anschlussdraht, der Kathodenanschluss ist kürzer und geht an der abgeflachten Seite in den Plastikkörper über.

4 - Programmbeispiel zur Objekterkennung

Die IR-Empfänger des BoE-Shield Bots sind für IR-Licht von 980nm Wellenlänge und 38kHz ausgelegt. Damit eine IR-LED diese Frequenz erreicht, nutzen wir die Funktion tone().

Der Empfang von IR-Licht erfordert drei Schritte

  1. Die IR-LED blinkt mit einer Frequenz vno 38kHz.
    
  2. Pause von 1ms oder mehr für den IR-Empfänger, damit er ein LOW-Signal als Antwort auf das 38kHz Signal absetzen kann.
    
  3. Überprüfe den Status des IR Empfängers auf HIGH- (kein IR Signal) oder LOW-Signal (IR Signal erkannt).
    

Die drei Schritte für die IR LED an P9 (links) und IR Empfänger an P10 sehen im Programmcode wie folgt aus:

  • tone(9, 38000, 8);
    delay(1);
    int ir = digitalRead(10);
    

Die Funktion tone arbeitet im Hintergrund und erzeugt eine Rechteckschwingung. Meine eigenen Messungen haben ergeben, dass das Signal bei eingegebenen 8ms tatsächlich nur 1.1ms - 1.2ms dauert. Da der IR Empfänger in zehntel Millisekunden auf das 38kHz Signal antwortet, verhindert ein delay von 1ms, dass der Befehl ir = digitalRead(10) mehrfach ausgeführt wird.

Im folgenden Programm gibt es eine neue Funktion irDetect mit den drei Parametern: ir_LedPin vom Typ int, IR_EmpfaengerPin vom Typ int und frequenz vom Typ long.

  • int irDetect(int irLedPin, int irEmpfaengerPin, long frequenz)
    

In der Methode loop() taucht dann die Programmzeile auf

  • int irLinks = irDetect(9, 10, 38000);
    

Der Paramter irLedPin wird auf 9 gesetzt, irEmpfaengerPin auf 10 und die Frequenz auf 38000 eingestellt. Die Funktion führt die o.g. drei Schritte zur Objekterkennung aus und gibt eine 1 zurück, falls kein Objekt erkannt wurde und eine 0, wenn kein Objekt erfasst wurde. Der Rückgabewert wird  der Variablen irLinks zugewiesen.

5 - Test des linken IR Detektors

Um die Fehleranfälligkeit beim Aufbau der IR Detektoren so gering wie möglich zu halten, konzentrieren wir uns jetzt nur auf den linken Detektor und bringen erst einmal ihn zum Laufen. Wenn alles richtig verdrahtet ist, sollten im Terminalfenster Nullen und Einsen auftauchen. Die 1, wenn kein Objekt erkannt worden ist, die 0, wenn doch.

Abbildung 5: Terminalausgabe des linken IR-Detektors. 1 -> kein Objekt erfasst, 0 -> Objekt erfasst.
Aufgaben
  • Verbinde die Batteriehalterung mit dem Arduino Board.
  • Schiebe den Power-Schalter in Position 1.
  • Übertrage das Programm IR_TestLinks.ino in den Editor und speichere es ab.
  • Starte das Programm.
Programm IR_TestLinks.ino
Aufgaben
  • Verbinde den BoE-Shield Bot Arduino über das USB-Kabel mit dem PC und öffne das serielle Terminal, nachdem das Programm in den Arduino geladen wurde.
  • Stelle vor den IR Detektor ein Objekt in einem Abstand von ca. 2-3 cm. Überprüfe, ob im Terminal eine 0 erscheint, sobald ein Objekt vor den Detektor gehalten wird und eine 1, wenn sich kein Objekt vor dem Detektor befindet.

 

Jetzt kommst du! - Test des rechten IR Detektors

Aufgaben
  • Verändere das Programm so, dass auch der rechte Detektor getestet werden kann.
  • Speichere das Programm IR_TestLinks.ino unter dem Namen IR_TestRechts.ino.
  • Ändere pinMode(10, INPUT); pinMode(9, OUTPUT) in pinMode(3, INPUT); pinMode(2, OUTPUT).
  • Ändere int irLinks = irDetect(9, 10, 38000) in int irRechts = irDetect(2, 3, 38000).
  • Ändere Serial.println(irLinks) in Serial.println(irRechts).
  • Wiederhole die Überprüfungsschritte vom vorherigen Test.

Das komplette Programm für den Test des rechten IR Detektors habe ich sicherheitshalber noch einmal abgedruckt.

Programm IR_TestRechts.ino

6 - Feldtest

Für einen Feldtest, bei dem man i.d.R. keinen Laptop und damit auch keine Terminalausgabe zur Verfügung hat, kann man auf dem BoE Shield Arduino zusätzlich zwei LED-Schaltkreise aufbauen. Die LEDs müssen dann über das Programm so angesprochen werden, dass sie leuchten, sobald ein Gegenstand von den IR-Detektoren erkannt wird. Sie sind jetzt die Indikatoren, dass die Detektor-Schaltkreise ihre Funktion erfüllen.

Schaltskizzen und kompletter Schaltungsaufbau

Abbildung 6 - Ergänzungsschaltkreise mit zwei LEDs für den Feldtest
Abbildung 7 - IR-Detektoren mit zwei LED-Schaltkreisen und Tonausgabe für Feldversuch (Courtesy of Parallax Inc.)

Test des Schaltungsaufbaus

Wie man jetzt unschwer erkennen kann, ist die Verdrahtung auf dem Steckbrett schon recht umfangreich und das erhöht die Fehleranfälligkeit. Es ist deshalb immer vorteilhaft, über Testprogramme eine Bauteilegruppen vorher auszutesten, bevor man sich an die nächste Baugruppe heranmacht und sie auf dem Steckbrett aufbaut.

Überzeuge dich mit Hilfe des Programms IR_Feldtest.ino, dass alle Schaltkreise korrekt arbeiten und löse erst ganz zum Schluss das USB-Kabel vom Arduino. Jetzt kann der Feldtest unabhängig vom Laptop und einer Terminalausgabe beginnen. Die LEDs und der Lautsprecher sind dabei die Indikatoren dafür, dass die Detektoren richtig arbeiten. 

Programm IR_Feldtest.ino
Druckversion | Sitemap
© Reinhard Rahner - Gettorf