Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

einleitung:lichtintensitaet_messen_mit_dem_phototransistor

Dies ist eine alte Version des Dokuments!




Vom Licht zum Strom über die Spannung zur Zahl: Helligkeit messen mit einem Phototransistor

Phototransistoren bieten eine einfache Möglichkeit, um mit einem Microcontroller Helligkeiten zu messen und so etwas über die Umgebung zu erfahren. Damit kann man z.B. Lichtquellen suchen, Linien auf dem Boden erkennen, Lichtschranken aufbauen, Radumdrehungen zählen oder die Signale einer Fernbedienung empfangen.

Detaillierte Informationen zu Aufbau, Funktionsweise und Verwendung dieser Bauteile gibt es hier: http://www.radio-electronics.com/info/data/semicond/phototransistor/photo_transistor.php.

Phototransistoren sind Strom-"Ventile", die durch Licht geöffnet werden

Je mehr Licht auf einen Phototransistor fällt, desto mehr Strom kann maximal durch ihn hindurch fließen

Bei dem im Kurs verwendeten Typen SFH309 liegt die Stromdurchlässigkeit bei einer angelegten Spannung von 5V im Bereich zwischen 0.01mA (dunkel, 0.01mW Strahlung/cm²) und 10mA (hell, ca. 1/10 direkte Sonne, 10mWStrahlung/cm²).

Phototransistoren leiten nur in eine Richtung gut

Ein größerer Strom kann immer nur vom Kollektor (plus, „Sammelt den Strom ein“) zum Emitter (minus, „Gibt den Strom wieder heraus“) fließen.

In die Gegenrichtung leiten sie nur einen sehr niedrigen (Leck)Strom. Falls eure Schaltung also mal nicht funktioniert, liegt das in 95% der Fälle daran, dass die Richtung vertauscht ist.

Beim SFH309 ist das kurze Beinchen der Kollektor, das lange Beinchen der Emitter.

Alle (un)möglichen Informationen zum einem elektronischen Bauteil findet man im Datenblatt (Datasheet).

Dort ist z.B. eingezeichnet, welches der Beinchen der Kollektor (plus) und welches de Emitter ist (minus), wie viel Strom bei welcher Helligkeit fließt, wie hoch die angelegte Spannung höchstens sein darf usw.

Vom Strom zur Spannung: Eine Schaltung zum Anschluss an den Arduino

Die Analogeingänge des Arduino messen die anliegende Spannung. Um eine „maximale Stromdurchlässigkeit“ zu messen sind also zusätzliche Bauteile nötig, die dafür sorgen, dass irgendwo eine Spannung entsteht, die proportional zur Stromdurchlässigkeit ist.

Die einfachste Möglichkeit, die Stromdurchlässigkeit des Phototransistors in eine Spannung umzuwandeln, ist, den PT in Serie mit einem Widerstand zu schalten und eine feste Spannung anzulegen. Der Strom, der durch den PT fließt muss so auch durch den Widerstand, an dem eine messbare Spannung abfällt.

In unserem Fall sieht die Schaltung dann so aus:

Der Kollektor-Anschluss ist direkt mit den 5V verbunden. Der Phototransistor begrenzt den Strom, der von 5V zum Widerstand R1 fließen kann. Über den Widerstand fließt der Strom dann weiter zu 0V.

Die Spannung $U_{Widerstand}$, die über den Widerstand abfällt, wenn der vom Phototransistor kommende Strom $I_{Photo}$ durch ihn hindurch fließt, ist durch das Ohmsche Gesetz gegeben:

$U_{Widerstand}=R_{Widerstand}*I_{Photo}$

Die Spannung, die über den Widerstand abfällt, wird durch den Analogeingang A0 des Arduino gemessen. Durch diesen Eingang fließt nur ein sehr geringer Strom ab, man sagt daher, er ist hochohmig. Von der Spannung zur Zahl: Spannungen messen mit dem A/D Wandler des Arduino

Wie schon in der letzten Lektion beschieben, kann mit der Funktion analogRead(pin#) die Spannung, die an einem Analogeingang des Arduino anliegt, gemessen werden.

Im Beispiel Basics/AnalogReadSerial ist beschrieben, wie das geht. Im Beispiel wird statt des Phototransistors ein einstellbarer Widerstandsteiler (Potentiometer) benutzt, aber der Code funktioniert ganz genauso.

Ein Beispiel für globale und lokale Variablen sieht ihr im folgenden Programm, welches den höchsten bisher gemessenen Wert ausgibt. maximum in diesem Fall ist eine globale Variable (sie soll den Wert speichern, auch wenn die loop()-Funktion durch ist); measurement ist eine lokale Variable – sie existiert nur innerhalb eines Aufrufs der loop()-Funktion.

int maximum = 0; // groesster gemessener Wert
 
void setup() {
  Serial.begin(9600);
}
 
void loop() {
  int measurement = analogRead(A0); // Messung Phototransistor
  if (measurement > maximum) {
    maximum = measurement;
  }
 // mein Maximum ausgeben:
  Serial.println(maximum);
  delay(100);
}
einleitung/lichtintensitaet_messen_mit_dem_phototransistor.1524658076.txt.gz · Zuletzt geändert: 2018/04/25 14:07 von d.golovko