Eine Lichtschranke ist eine tolle Sache, neben fertigen Modulen, LDR und Laser können auch IR Empfänger mit passender IR LED verwendet werden. Wird ein IR Empfänger wie der VS-1838 oder auch der OS-1838 mit einer IR LED verwendet, dann siehst du das Licht der Lichtschranke nicht. In diesem Tutorial geht es auch darum, zu verstehen wie so eine Lichtschranke mit Infrarot überhaupt funktioniert.
Verdrahtung der Lichtschranke mit VS-1838 IR-Empfänger und IR LED
Da ich in der Fritzing Software keinen 1838 Empfänger gefunden habe, habe ich einen anderen IR Empfänger gezeichnet. Hier der richtige Anschluss eines OS bzw. VS 1838.
Die Verdrahtung der restlichen Hardware sieht dann aus. Die rote LED an PIN 13 und die IR LED mit 940nm und einem Winkel 45 Grad, bekommen jeweils einen Widerstand mit 220 bis 330 Ohm. Die rote LED wird an PIN 13 und die IR LED wird an PIN 3 angeschlossen. Der IR Empfänger wird mit dem Data Pin links an Pin zwei mit dem Arduino verbunden. Die Mitte bekommt GND und rechts bekommt VCC mit 5 Volt.
Programm mit Ardublock und der Arduino IDE
Ein statisches Signal das nur unterbrochen wird, funktioniert bei einer IR Lichtschranke nicht. Die IR LED muss ein pulsendes Signal ausgeben. Dieses pulsen muss laut Datenblatt 38000 mal pro Sekunde stattfinden. In Ardublock braucht es also eine Funktion, die die LED 38000 Mal pro Sekunde für etwa 10 Millisekunden moduliert. Um die Ein- und Ausschaltzeit der LED herauszufinden, teilen wir 1 Sekunde durch 38000 und erhalten 0,000026 Sekunden oder 0,026 Millisekunden oder 26 Mikrosekunden. Du schaltest die LED für die Hälfte der Zeit ein und für die andere Hälfte der Zeit aus, was zu einer Einschaltdauer von 50 % führt. Nun teilst du 10 Millisekunden durch 0,026 Millisekunden, um herauszufinden, wie oft wir das Flackern der LED wiederholen müssen. Als Ergebnis erhältst du 384. Nun kannst du abfragen ob dieses Modulierte bzw. gepulste Signal anliegt oder nicht.
In Ardublock sieht das ganze dann so aus. Über einen Wiederhole Block wird die IR LED 384 mal ein und ausgeschaltet mit einer Wartezeit von 13 Microsekunden (nicht Millisekunden). Zusammen ergibt dass dann eine Pausenzeit von 26 Ms. Danach wird abgefragt ob der Data Pin des IR Empfängers HIGH oder LOW ist und die rote LED an 13 entsprechend geschaltet.
Der Arduino Code den Ardublock ausgibt sieht dann wie folgt aus:
void setup() {
pinMode(3, OUTPUT);
pinMode(2, INPUT);
pinMode(13, OUTPUT);
}
void loop() {
for (int i = 0; i < 384; i++) {
digitalWrite( 3 , HIGH );
delayMicroseconds( 13 );
digitalWrite( 3 , LOW );
delayMicroseconds( 13 );
}
if (digitalRead(2)) {
digitalWrite( 13 , LOW );
}
if (!( digitalRead(2) )) {
digitalWrite( 13 , HIGH );
}
delay( 100 );
}
Ist alles richtig verdrahtet und der Code hochgeladen dann sollte die LED an Pin 13 an sein wenn etwas zwischen Sender und Empfänger ist. Ist nichts zwischen Sender und Empfänger, dann wird das von der IR LED modulierte (gepulste) Signal vom IR Empfänger erkannt und die LED ist aus.
Dabei muss sich der zu erkennende Gegenstand nicht zwangsläufig zwischen Sender und Empfänger befinden (Bild links). Das ausgesendet Licht der IR LED kann auch von einem Gegenstand zurückgeworfen werden (Bild rechts), dann hast du einen einfachen Kollision-Sensor.
Ardublock Code fast ohne Delay Zeit
Im Bespiel oben wird das Programm zwei mal durch die Delay Funktion pausiert. Zuerst wird für 384x23 Microsekunden das Programm angehalten und dann für 100 Millisekunden. das Programm pausiert. In diesen beiden Zeiten kann das Programm nichts anderes machen aus warten. Deshalb habe ich im Programm unten den Wiederhole Block durch einen Zähler ersetzt. Die Wartezeit von 23 Microsekunden kannst du bedenkenlos in kauf nehmen. Das Delay von 100 Millisekunden habe ich ebenfalls durch einen Zähler und ein Delay von 1 Millisekunde ersetzt auch dieses Delay ist akzeptabel. So können im Programm weiter Aktionen durchgeführt werden ohne durch die Lichtschranke vollständig blockiert zu sein.
Wenn die Schaltung nicht funktioniert
Dann nimm als aller erstes dein Handy oder eine Digitalkamera und schau durch den Bildschirm auf die IR LED. Im Display deines Handy solltest du bei aktivierte Kamera das pulsen der IR LED sehen. In der LED sollte so ein schwaches blinken in hellem rosa zu sehen sein. Ist das nicht zu sehen, dann suche hier nach dem Fehler. Ist das Blinken zu sehen, dann richte die LED genau auf die Mitte des Empfängers aus.