Fototransistor an Arduino: Arbeitswiderstand korrekt berechnen/wählen

Hi alle zusammen,

ich experimentiere seit einiger Zeit mit meinem Arduino zwecks einer einfachen Lichtschranke.
Dabei habe ich mich auf die Infos aus diesem Forum bzw. dieser Seite hier verlassen.

Das ganze ist aufgebaut aus folgenden Teilen:
LED: LED5 15-10500 GN (LED Grün; 10500mcd) Link zu Reichelt
Fototransistor: SFH 309 Link zu Reichelt

Angeschlossen habe ich es nach dem Schema im Anhang.

Bei allen von mir gefundenen How-Tos bzw. Tutorials war die Rede von einem 10k Ohm Widerstand vor dem Abgreifen des Signals. Da hat mir mein Arduino jedoch egal welche LED oder Lichtquelle ich verwendet habe immer eine Analoge 0 ausgegeben.
Ich habe dann ein wenig mit Widerständen herumgespielt und für mich einen 270k Ohm Widerstand als praktibel "entdeckt".

Mein Interesse liegt jedoch nicht darin, per try'n'error eine funktionierende Schaltung herzustellen sondern zu verstehen warum es so funktioniert. Kann mir hier evtl. jmd. ein paar Tips/Ratschläge geben, wie man soetwas berechnen kann bzw. generell eine evtl. etwas ausführlichere Erklärung warum ich einen 270k Ohm Widerstand verwenden musste?

Danke und viele Grüße

Üblicherweise werden Fototransistoren im Schaltbetrieb betrieben.

Sie geben also ein HIGH oder ein LOW ab. Dafür sind die 10k völlig ok.
Wenn deine Schaltung nur mit 270k funktioniert, dann ist das was faul.

Es wäre schön, wenn du schon deine Schaltung mit Fritzing machst, dass du dann nicht die Steckbrettansicht, sonder den Schaltplan postest. Der ist aussagekräftiger.

Mir sind zwei Sachen aufgefallen:
a) kann es sein, dass dein Fototransistor verpolt eingebaut ist?
b) dein Fototransistor hat seine maximale Empfindlichkeit im Infraroten Bereich. Da bist du mit deiner grünen LED recht weit weg. Du sollest zumindest eine rote nehmen.

Hi,

danke für die schnelle Rückmeldung.
Ich dachte eigentlich, dass der Fototransistor auch für das grüne Spektrum ausreichend sei, da im Datenblatt angegeben ist:
Wellenlänge: 380...1080nm
und ich mit der grünen LED bei 525nm liege.

Ich habe es dennoch einmal mit einer roten LED vom Typ: LED 5-16000 RT (Link zu Reichelt) probiert.
Leider waren hier die Ergebnisse nur minimal besser.

Ich habe dann noch ein wenig herumgesucht und schließlich den Fehler doch gefunden.
Der Transistor war falsch herum eingebaut :frowning:
Ich bin vom Anschluss einer LED ausgegangen und hatte das "lange Beinchen" als "+"-Interpretiert.
Das wara jedoch offensichtlich falsch.
Nachdem ich den Transistor gedreht habe, passen auch die Empfangswerte und es genügt ein 10 kOhm Widerstand.

Danke und Grüße,

Heiko

Vorschlag zur Verbesserung:
Anstatt eines Fototransistors nimmt man oft einen IR-Fernsteuerungempfänger zb der serie TSOP. Der hat intern einen geregelten Verstärker und einen Filter für die Empfangsfrequenz. Standartfrequenz ist 38kHz, aber auch andere Frequenzen sind erhältlich.

Die Ansteuerung erfolgt über eine LED mit der entsprechenden Frequenz.

Der Vorteil ist daß die Lichtschranke auch bei Tageslicht oder Lampen funktioniert.

Grüße Uwe

my0name:
Wellenlänge: 380...1080nm
und ich mit der grünen LED bei 525nm liege.

Schau dir mal das Diagramm zur spektralen Empfindlichkeit an. Auf Seite 5 oben links. Da siehst du dass der da zwar leitet, aber mit ca. 35% der Empfindlichkeit als im IR-Bereich. Das haben aber die meisten Fototransistoren so an sich.

uwefed:
Vorschlag zur Verbesserung:
Anstatt eines Fototransistors nimmt man oft einen IR-Fernsteuerungempfänger zb der serie TSOP. Der hat intern einen geregelten Verstärker und einen Filter für die Empfangsfrequenz. Standartfrequenz ist 38kHz, aber auch andere Frequenzen sind erhältlich.

Für Lichtschranken gut geeignet, aber komplizierter von der Ansteuerung. Dauersignal mögen die TSOPs nicht, also muss das modulierte Licht noch gepulst werden. Das bewirkt wieder einen gepulsten "Datenstrom" der auf das Unterbrechen = Licht weg für länger als x Millisekunden geprüft werden muss.

Hab damit auch rumprobiert, mich aber auch letztlich für die einfache Variante per Fototransistor entschieden. Nur nehm ich nen Laser als Lichtquelle, das geht super XD

Der versprochene Sketch für die Ansteuerung einer LED mit 38kHz und auswertung des Signals.

Soweit ich verstanden habe gibt es Modelle von Empfängern die nur kurze zeit ein ausgangssignal geben und andere dauernd wenn sie ein Signal bekommen.

#define RXTSOP 2      //Pin output TSOP 
#define TXIR 11        //or pin 3 LED IR
#define LED13 13      //LED on pin 13


//flag
boolean transmitting_IR; //transmission flag

// turn_off , turn_on, detect functions come as is from
// http://www.eng.utah.edu/~cs1410/Labs/lab09.html
void turn_off_IR ()
{
  // Instead of just adjusting the output on pin 11, this code also
  // turns off the timer controlling the PWM output on pin 11
  
  TCCR2A = 0; // Disconnect PWM
  TCCR2B = 0; // Stops the timer
  OCR2A = 0;  // No timer top
  digitalWrite(TXIR, LOW);  // Ensure output is off
  
  transmitting_IR = false;
}

void turn_on_IR ()
{
  //   Set up Timer2 (which can be connected to pins 3 and 11)
  //   For full details, see:
  //   arduino.cc/en/Tutorial/SecretsOfArduinoPWM
  //   The syntax here has me baffled, but the patterns of usage
  //   are clear if you look at the ATMega328 diagrams.
  //   _BV appears to stand for 'bit value'
  //   Different bits need to be set to control each timer
  //   Refer to diagrams for clarity

  TCCR2A = _BV(WGM21) | _BV(COM2A0); // This mode toggles output once per timer cycle
  TCCR2B = _BV(CS20);  // Do not scale the clock down - use 16 MHz timer rate.
  OCR2A = 210; // Divide sys. clock by 210, 1/2 cycle = 76 khz, 1 cycle = 38 khz
  
  // Output pin 11 should now be emitting a 38 khz signal.
  
  transmitting_IR = true;
}


void detectIR()
{
    if(digitalRead(RXTSOP)){
    digitalWrite(LED13 ,LOW);
    }else{
    digitalWrite(LED13 ,HIGH);
    }
}


void setup(){  
  pinMode(TXIR, OUTPUT);
  pinMode(RXTSOP, INPUT);
  turn_on_IR();
  delay(100);
}

void loop(){
  detectIR(); // search for IR
  delay(50);  
}