IR-LED Lichtschranke - Aufbau, Komponenten, Durchführung?

Hallo zusammen,

ich habe folgende Situation:
Ich bin hobbytechnisch mit Arduino unterwegs. LED Schaltungen, bespielen von ATTinys, Steppermotor & Servosteuerungen - vieles in die Richtung schon gebaut und bis heute ohne Probleme im Einsatz.

Für viele der Dinge gab es Tutorials, die mich Dinge gelehrt haben, die ich heute immer wieder brauchen kann.
Jetzt bin ich aber an einem Punkt, an dem ich auf ein neues Thema stoße und sowohl in der Komponentenwahl als auch der Durchführung mit den bisherigen Komponenten an Grenzen stoße.

Bisher habe ich eine Steuerung mit einem Distanzsensor als Bewegungsmelder genutzt. Lief einwandfrei - bis darauf, dass dieser sogar "Winddurchzug" als Bewegung erkennt.
Also soll eine ordentliche Lichtschranke her. Standard gibts hier nicht, die Steuerung läuft auf Arduino also warum nicht irgendwas feines basteln?

So bin ich auf die Suche gegangen und bin auf viele, viele viele Gabellichtschranken gestoßen, die mir nix bringen, da ich eine Distanz von >1m mit der Lichtschranke kontrollieren muss.

Da der feine Herr für erste Tests nicht zu viel Geld ausgeben wollte, hat er bei einem Online-Elektronikhandel folgende Komponenten bestellt:
Infrarot-Empfänger SHARP GP1UD282RK, 36,7 kHz

Vishay TSHA650 IR-LED

So...
Zusätzlich noch den 43 Ohm Widerstand und einen 43 mü Kondensator dazu geholt.

Aufbau:
IR-Empfänger wie im Datenblatt angegeben, das Vout an den Arduino Pin 2 - Annahme: Digitales Signal. 1/0.
IR-Diode mit einem 5kOhm Widerstand an Pin 4 - Im Loop per DigitalWrite auf "AN" gestellt. Erstmal, später soll bei Auslösung die Funktion des Geräts stattfinden und die LED entsprechend ausgehen bis die Funktion des Geräts durchgeführt wurde.
Pin 13, die Interne LED, dient als Signal dafür, ob die Lichtschranke unterbrochen wurde oder nicht.

Alles klar, alles geprüft und... Nichts. LED leuchtet durchgängig und bei Unterbrechung der Lichtschranke passiert nix.

Also mit SerialPrint den Sensor ausgeben lassen. Ergebnis: "2" Dauerhaft. Es ändert sich >nichts< an dem Wert.
Die Status-Variable, auf die der Sensor geschrieben werden soll, flackert jedoch fröhlich durch die Gegend. Wenn ich ein Bauteil auf dem Steckbrett bewege wechselt die nach belieben zwischen 1 und 0.

Am Sensor liegen 0,9V an (was mich auch gewundert hat, da er mindestens 2,5V braucht wenn ichs richtig gelesen habe) und die IR-Diode ist natürlich nicht erkennbar, ob da nun was rauskommt oder nicht. Dort liegen 1,2V an.

// Pin Definition

const int SensorPin = 2; // Infrarot Sensor
const int IRPin = 4; // Infrarot LED
const int StatusPin = 13; // Status LED
int status;


void setup() {
  pinMode(SensorPin, INPUT);
  pinMode(IRPin, OUTPUT);
  pinMode(StatusPin, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  digitalWrite(IRPin, HIGH);
  status = digitalRead(SensorPin);
  Serial.print("Sensor:");
  Serial.println(SensorPin);
  Serial.print("Status:");
  Serial.println(status);
  if (status == 1)
  {
    digitalWrite(StatusPin, LOW);
  }
  else if (status == 0)
  {
    digitalWrite(StatusPin, HIGH);
  }
  delay(1000);

}

Der Delay ist am Ende nur dazu da, dass mir der serielle Monitor nicht zumüllt und ich nix verpasse.

Also: Mein Bauteilwissen ist noch sehr weit am Anfang. Wenn mir hier jemand sagt: "Die zwei Komponenten zusammen werden nicht funktionieren" - super, dann weiß ich schon mal woran ich bin.
Wenn jemand Alternativkomponenten hat (Irgendwo gab es ein Tutorial, wo direkt ein IR-Paar verlinkt war - was nicht mehr erhältlich ist) bin ich natürlich sehr dankbar!

Am Code scheint mir nix unschlüssig, am Aufbau auch nicht. Was Schaltplanprogramme betrifft bin ich auch noch am Anfang, ergo kann ich da leider nicht wirklich was liefern :confused: Könnte höchstens bei Bedarf was aufm Blatt aufzeichnen. Aller anfang ist halt eben schwer :slight_smile:

Besten Dank schon einmal im Voraus!

Ein IR Empfänger erwartet ein Signal mit 38-40kHz, siehe IRremote Bibliothek.

Da IR heftig reflektiert wird, können Lichtschranken nur völlig abgeschirmt aufgebaut werden. Für Bewegungsmelder eignen sich PIR Sensoren besser.

Ich stimme DrDiettrich zu.
Ein Bewegungsmelder ist dafür besser geeignet, du hast nur den falschen gewählt.

Verwende den Panasonic und du wirst sehen, es geht besser.

Für die Verwendung in einer Lichtschranke ist dieser Empfänger nicht wirklich geeignet.
Das steht auch recht deutlich im verlinkten Datenblatt, beginnend mit den ersten Worten auf der ersten Seite:

DEVICE SPECIFICATION FOR
Infrared Detection unit for Remote Control

  1. Application
    This specification applies to the model ... of infrared detecting unit for remote control.
    Main application: TV set, VCR, Radio cassette recorder, Stereo.

6.1) This infrared detection unit for remote control ...

(Hervorhebungen von mir)

Du brauchst aber nicht "Remote Control" (Burst Mode) sondern "Light Barrier" (continous mode).

Fernbedienungen arbeiten mit Bursts: Wenn z.B. ein "Burst" von 10 bis 100 IR-38kHz Impulsen empfangen wird, schaltet der Empfänger seinen Ausgang HIGH, ansonsten LOW (oder umgekehrt). Entsprechende Empfänger sind zum Empfang von kurzen Impulsfolgen aus IR-Fernbedienungen optimiert.
Wenn man versucht sie in Lichtschranken zu verwenden kommt es häufig zu Fehlauslösungen.

Lichtschranken arbeiten im "Continous Mode" (Dauerstrich). Dafür brauchst du einen Empfänger, der dafür geeignet ist.
Zum Beispiel:

http://www.vishay.com/docs/82479/tssp58038.pdf
Suche im Datenblatt nach Continous Mode.

Hi Leute,

danke für die schnellen Antworten.

Da ist der große Elektrohandel ja etwas irreführend... Ich zitiere von der Artikelbeschreibung:

IR-Empfängermodul (36,7 kHz) für Geräte der Unterhaltungselektronik, zum Bau von Lichtschranken, Fernbedienungssystemen usw. Betriebsspannung 2,7...5,5 V-. 10 Stück.

Das mit dem Burst-Mode für diverse IR-Empfänger hatte ich mehrfach gelesen und dachte mir von der Seite her, dass ich dann nicht damit betroffen wäre. Haha.

Aber gut, dann bin ich ja nicht ganz doof, was die Umsetzung betrifft. Die müsste ja theoretisch vom Code her stimmen.

Der verlinkte Panasonic passt schätze ich auf eine Standard Lochrasterplatine?
Entsprechend müsste ich für den ein Gehäuse bauen / 3D Drucken, dass dem sein Erkennungswinkel ausschließlich nach vorne geht, korrekt?

Kommt mir sogar gelegener mit so was zu arbeiten, da die Ausrichtung von LED + Empfänger sich an dem Installationsort als schwierig gestaltet.
Interessant ist aber noch die "IR-Temperaturerkennung", nicht dass das wieder dazu führt, dass ein "kalter Windzug" das Teil zum Auslösen bringt...

JKF2015:
.....
Der verlinkte Panasonic passt schätze ich auf eine Standard Lochrasterplatine?
Entsprechend müsste ich für den ein Gehäuse bauen / 3D Drucken, dass dem sein Erkennungswinkel ausschließlich nach vorne geht, korrekt?

Kommt mir sogar gelegener mit so was zu arbeiten, da die Ausrichtung von LED + Empfänger sich an dem Installationsort als schwierig gestaltet.
Interessant ist aber noch die "IR-Temperaturerkennung", nicht dass das wieder dazu führt, dass ein "kalter Windzug" das Teil zum Auslösen bringt...

Ja, der passt auf eine Lochraster-Platine.

Problem mit kaltem Luftzug habe ich bisher noch nicht gehabt. Und ich habe einige Projekte damit bestückt.
Beispiel: Alarmsensor, Kleiderschrankbeleuchtung, Duschbadbeleuchtung, Gartenbeleuchtung usw.

Hi

Kleiner Tip(p) zur IR-Sende-Diode:
Schau Dir das Teil Mal mit Deiner Handy-Kamera an - Da siehst Du, ob die LED flackert (wird als weißlich 'gesehen').
Deine 1,2V passen gut zur Flußspannung einer IR-LED, @mc.net

MfG

Die IR Empfänger von IR-Fernsteuerungen bzw solche für Lichtschrancken enthalten einen Frequenzfilter der nur die Nennfrequenz durchläßt. Im Falle des Infrarot-Empfänger SHARP GP1UD282RK sind das 36,7kHz. Die Empfänger für Infrarotfernsteuerungen haben ein nicht definiertes Verhalten im Falle daß das IR-Signal zu la
nge ist (Brust) Darum können solche Empfänger nicht mit einer Dauersignal bestrahlt werden. Du müßtest kurze Sequenzen aus 20 bis 30 36,7kHz schwingungen aussenden und kurz vor Ende den Empfänger abfragen.

Nimm einen Empfänger den uxomm vorschlägt.
Grüße Uwe

Mir ist nicht bekannt, daß die Länge von Bursts von Belang ist.
Das Filter sorgt dafür, daß (konstantes) Fremdlicht vom Empfänger ignoriert wird.

DrDiettrich:
Mir ist nicht bekannt, daß die Länge von Bursts von Belang ist.
Das Filter sorgt dafür, daß (konstantes) Fremdlicht vom Empfänger ignoriert wird.

Ich habe es auch nie experimentell kontrolliert. In den Angaben der TSOP ist eine max Brustlänge angegeben ohne konkret auf die Auswirkungen eines längeren Brusts einzugehen. Die Interpretation einiger Userkollegen ist, daß das Ausgangssignal trotz IR-Eingangssignals wieder auf LOW (kein IR Signal) geht.

Grüße Uwe

Danke noch mal für die rege Diskussion. Also mit Umständen könnte man entsprechend diese Installation nutzen, ich müsste den Empfänger per Arduino darauf programmieren, dass er das 36,7 kHz abfragt, während die LED einen Burst mit 36,7 kHz ausstößt. Dieser sollte in bspw einem halbsekundentakt stattfinden.
Erhält er das regelmäßig, ist alles gut. Ist es einmal abgehakt oder kommt gar nicht, würde der Empfänger entsprechend auslösen. Und der Empfänger kann es nicht erhalten, wenn er durch eine Bewegung "durch die Lichtschranke" blockiert ist.
Soweit richtig verstanden, dass das der Workaround für den Aufbau mit den vorhandenen Teilen ist?

Ich nehme an, die IR-Bibliothek von Arduino bietet hier schon vorgeschriebene Programme bzgl. der verschiedenen kHz Bursts an?

Zu dem Panasonic Bewegungsmelder noch einmal:
Bei der winzigen Bauform (10x13,5mm), schafft das Teil eine Abstrahldistanz von 130cm?
Wenn nur knapp (bspw 100 cm) ist es ausreichend. Wenn er sogar weit mehr als 130cm nimmt, kommt mir folgende Frage:
Die Installation findet auf einer Treppe statt. Die Treppe ist beidseitig offen, hat links ein Geländer, welches nicht stört.
Geplant ist, das Teil mit einem kompletten Schirm (Röhrchen o. viereckige Umhausung) rechtsseitig an der Treppe bei der ersten Stufe zu montieren.
Betritt nun einer die Treppe ganz links auf der ersten Stufe, soll der Sensor das ohne mucken erkennen.
Würde nun allerdings jemand links an der Treppe >vorbei laufen<, soll der Sensor nicht auslösen. Um das zu vermeiden, sollte ich vermutlich links an der Treppe >auf selber Höhe< einen Schirm anbringen, der entsprechend die Strahlung des PIR-Sensors nicht durchlässt. Somit hätte ich durch das Röhrchen / viereckige Umhausung des PIR Sensors eine "gebündelte Lichtschranke".

Soweit von meinem Verständnis korrekt?

Hoffe das war jetzt nicht zu verwirrend erklärt...

JKF2015:
.....
Zu dem Panasonic Bewegungsmelder noch einmal:
Bei der winzigen Bauform (10x13,5mm), schafft das Teil eine Abstrahldistanz von 130cm?
Wenn nur knapp (bspw 100 cm) ist es ausreichend. Wenn er sogar weit mehr als 130cm nimmt, kommt mir folgende Frage:
Die Installation findet auf einer Treppe statt. Die Treppe ist beidseitig offen, hat links ein Geländer, welches nicht stört.
Geplant ist, das Teil mit einem kompletten Schirm (Röhrchen o. viereckige Umhausung) rechtsseitig an der Treppe bei der ersten Stufe zu montieren.
Betritt nun einer die Treppe ganz links auf der ersten Stufe, soll der Sensor das ohne mucken erkennen.
Würde nun allerdings jemand links an der Treppe >vorbei laufen<, soll der Sensor nicht auslösen. Um das zu vermeiden, sollte ich vermutlich links an der Treppe >auf selber Höhe< einen Schirm anbringen, der entsprechend die Strahlung des PIR-Sensors nicht durchlässt. Somit hätte ich durch das Röhrchen / viereckige Umhausung des PIR Sensors eine "gebündelte Lichtschranke".

Sieh dir die Daten (Datenblatt) an. Die Reichweite ist mit 5 m angegeben. Das ist auch zu erreichen, wenn eine optimale Montage und Umgebung vorhanden ist.

Was deine Abschirmung betrifft, sollte auch funktionieren, musst du aber ausprobieren.
Ich habe eine Richtungeinschränkung erreicht, indem ich einen Klebestreifen (undurchsichtig) darauf geklebt habe.

Habe schon ein paar Lichtschranke mit diversen TSOP Empfänger Modulen aufgebaut.
(allerdings noch nie mit dem genannten Modul)

Ja, die SenderDiode sollte die passenden Impulsfolgen ausgeben.
Das ist gut, da der Empfänger daran seine Verstärkung bestimmt.
Und weil eben das Sonnenlicht nicht/selten so moduliert ist.

Kurze Papprohre auf beiden Seiten verringern die Gefahr von unerwünschten Reflektionen.

Es ist schlecht, dass der Empfänger mit dynamischer Verstärkung arbeitet.
Er wird ohne Signal die Verstärkung so hoch fahren, dass er wieder was sieht.
Er sieht so auch Reflektionen.
Er wird auch bei vollkommener Unterbrechung(z.B. Ausfall des Senders) willkürlich "schnattern".
Man muss lernen Nutz- von Störsignal zu unterscheiden.

So. Es hat ein wenig gedauert und endlich habe ich das ganze nach meinen Vorstellungen realisieren können.

Ich hatte in einem Arduino Bausatz noch einen Bewegungsmelder drin. Den in ein 3D gedrucktes Gehäuse und voila - läuft.
Musste am Ende noch mit der Platzierung spielen und dann gings.

Jetzt ist mir aber vor kurzem etwas aufgefallen, was ich dann weiter getestet habe.
Trotz der Konzentrierung des Bewegungsmelders auf einen möglichst geringen Kegel, wurde das gesamte System manchmal vollkommen willkürlich aktiviert.

Irgendwann fiel mir auf, dass es insbesondere dann los ging, wenn ein anderer Verbraucher auf der selben Phase anfing, heftig Strom zu ziehen. Nachstellen konnte ich das dann sogar mit einem Aktenvernichter aus Anno Dazumal, welcher beim Anlaufen des Schredders den Arduino dazu brachte, seine Funktionen auszuführen.

Ergo - Der hohe Anlaufstrom des Verbrauchers auf der Phase sorgt für eine Spannungsschwankung im Netz, welche den Arduino denken lässt, dass ein Signal gesendet wurde.
Dies würde ich gerne zukünftig umgehen. Die Frage ist - Wie?

Vom Aufbau her bin ich aktuell wie folgt aufgestellt:
12V 5A NT => Versorgung Motor / Treiber / Relais und andere Komponenten
12V > 5V Stepdown => Raw Input vom Arduino
Und natürlich Arduino => Alle nötigen Signalsteuerungen

Da mein erster Motortreiber damals defekt war (der ENB-Pin war funktionslos) habe ich damals einfach den gesamten Treiber über das Relais vom Strom gekappt. Somit: Eingangssignal Bewegungsmelder => Arduino => Relais auf => Treiber an => Motor dreht. Nach dem Programm Arduino => Relais zu.

So viel zum theoretischen Aufbau.
Knackpunkt jetzt für mich: Baukomponenten hab ich bisher immer aus Tutorials rausgefischt oder mir aus dem Wissen zusammengefuchst. Meine Vermutung: Entstörung der Stromversorgung mittels Kondensator. Aber!

  1. Welcher und welche Bauform?
  2. Muss noch was dazu?
  3. Wo genau einsetzen? Heißt: Direkt nach dem NT? Vorm Arduino?
  4. Welche Größenordnung? Wie gesagt, System läuft auf 12V 5A.

Besten Dank im Voraus für jegliche Anhaltspunkte :slight_smile:

Ein zusätzlicher Elko in der Spannungsversorgung ist immer gut, wird aber vermutlich bei deinem Problem nicht helfen.
Ich vermute eher ein nicht sauber definierter Eingangspin an deinem Arduino.

Tastereingänge o.ä. musst du mit einem Pullup-Widerstand oder Pulldown-Widerstand beschalten, damit diese ein definierten Zustand erhalten.