elektronik-web.de


Helligkeitsempfindliche LED

Wird eine LED in Sperrrichtung betrieben, stellt der p-n-Übergang eine Art Kondensator dar. Die Grösse der Kapazität ist abhängig vom Lichteinfall. Diesen Effekt kann man nun gut nutzen um eine LED als Helligkeitssensor zu missbrauchen.
Die folgende kleine minimalistische Schaltung mit einem Atmel Tiny 13 als Herzstück, soll diesen Effekt einmal verdeutlichen.
Die LED – es handelt sich hier um eine rote 5mm Superhelle mit schmalem Abstrahlwinkel – wird lediglich über einen 180 Ohm Vorwiderstand zwischen den Portpins PB3 und PB4 angeschlossen. Der Rest ist dann nur noch Sache vom Mikrocontroller.



Gleich nach dem Einschalten des Tinys wird die LED ein paar mal Ein- und Ausgeschaltet. Es soll lediglich zeigen das alles soweit betriebsbereit ist. Danach werden PB3 und PB4 so geschaltet, dass sich die LED in Sperrrichtung befindet. Das Programm stoppt hier nun für eine kurze Zeit. Der „Kondensator“ wird unterdessen „aufgeladen“. Hiernach wird PB4 auf „Eingang“ umgeschaltet und nun läuft eine Programmschleife solange, bis sich der Kondensator entladen hat. Unterdessen wird eine Variable hoch gezählt. Je nach Lichteinfall ist der Wert der Variable nun ein Indikator für die Umgebungshelligkeit.

Jetzt beginnt das Ganze wieder von vorne. Allerdings wird jedes mal der erste Variablenwert der ersten Messung mit dem zweiten Variablenwert der zweiten Messung verglichen. Sobald die Differenz einen bestimmten Wert überschreitet, bekommt die LED nun endlich die Aufgabe für die sie ursprünglich auch gebaut wurde: Sie soll nämlich leuchten! Und zwar zunächst mit voller Helligkeit. Parallel dazu wird im Tiny nun ein Timer gestartet, mit der die LED von Hell bis Dunkel gesteuert wird (PWM). Das ganze dauert nur kurze Zeit.

„Wischt“ man nun mit der Hand über die LED, wird sie mit voller Helligkeit eingeschaltet und erlischt dann langsam wieder. Die Schaltung könnte man z.B. als Modul konzipieren und mehrere davon unter dem heimischen Glas-Wohnzimmertisch verbauen. Streicht man nun mit seinem Arm über die Glasplatte,  werden wie von Geisterhand die vielen LED’s nacheinander eingeschaltet und genauso erlöschen sie wieder. Das ist bestimmt ein sehr interessanter Showeffekt. :-)

Allerdings hat die Schaltung auch einen kleinen Haken: Eine gewisse Umgebungshelligkeit muss natürlich vorhanden sein. Ansonsten funktioniert das Ganze nicht mehr.



Programmbeispiel in Bascom:
 

$regfile = "ATtiny13.dat"
$hwstack = 10
$swstack = 10
$framesize = 20

Const True = 1
Const False = 0
Config Timer0 = Timer , Prescale = 64
Config Portb.3 = Output
Config Portb.4 = Output

On Timer0 Timer0_isr
Enable Interrupts
Disable Timer0
Dim A As Byte , Hi As Byte , Lo As Byte
Dim Ladung As Bit , Phase As Bit
Dim E1 As Long , E2 As Long

E2
= 10000000

'--LED Test nach Einschalten-------------
For A = 1 To 20
 
Toggle Portb.3
 
Waitms 100
Next A
'-----------------------------------------

Do
'--LED wird in Sperrrichtung "aufgeladen"-
 
Portb.3 = 0                            'an Anode von LED
 
Portb.4 = 1                            'an Kathode von LED
 
Waitus 100
'-----------------------------------------

Config Portb.4 = Input                  'PortB.4 auf Eingang schalten
 
Portb.4 = 0

'--Ladezustand abfragen bis Ladung=0------
 
Do
  Ladung
= Pinb.4
 
Incr E1
 
Loop Until Ladung = 0
'-----------------------------------------

 
Config Portb.4 = Output                'PortB.4 wieder auf Ausgang schalten
 
Portb.4 = 0

 
If E2 < E1 Then
 
Enable Timer0
 
For Lo = 1 To 255
   Hi
= 255 - Lo
  
Waitms 25
 
Next Lo
 
Disable Timer0
 
End If

 E2
= E1 * 1.5
 E1
= 0

Loop
End

Timer0_isr
:
 
If Phase = True Then
 
Portb.3 = 1
 
Timer0 = Lo
  Phase
= False
 
Else
 
Portb.3 = 0
 
Timer0 = Hi
  Phase
= True
 
End If
Return