Liste der Anhänge anzeigen (Anzahl: 1)
Helligkeitsmessung mit LEDs
Zu Anzeigezwecken verwende ich in meinem aktuellen Projekt eine 3·9 Matrix aus LEDs an einem AVR. Die Anzeige soll einerseits bei heller Umgebung/Sonne gut ablesbar sein, andererseits aber bei Dunkelheit/Dämmerlicht nicht unangenehm hell sein.
Also muss die Umgebungshelligkeit gemessen werden. Was liegt da näher, als die LEDs selbst als Fotodioden zu nutzen?!
Die Anzeige besteht aus 3 Zeilen zu je 9 LEDs. Die LEDs in einer Spalte sind baugleich und können daher den gleichen Vorwiderstand R4 nutzen. Jede Spalte (Kathoden) braucht einen µC-Port, abenso jede Zeile (Anoden). Insgesamt brauchen die 27 LEDs also 12 Ports.
Die Zeilen werden im Zeit-Multiplex angesteuert. Unterschiedliche Helligkeiten werden realisiert, indem über dieses Zeit-Multiplex eine Software-PWM gelegt wird. Grundtakt (Interrupt-Last) ist 20kHz, selbst 30kHz sind problemlos realisierbar (mit avr-gcc und 16MHz Systemtakt).
Zur Helligkeits-Messung werden Anoden und Kathoden kurzzeitig (1µs) auf HIGH gelegt und danch der Kathoden-Port (AIN1) auf INPUT geschaltet. Der zum Input-Capture verdrahtete Analog-Komparator vergleicht die Spannung an den 3 LED-Kathoden mit der Spannung am Spannungsteiler R5-R6, welche dicht unter VCC liegt. Beim Unterschreiten der Schwelle wird ein Input-Capute-Ereignis ausgelöst und die zwischen "Loslassen" der Kathode und Unterschreiten der Schwellspannung verstrichene Zeit gemerkt. Diese Zeit (bzw. Zählerstand) ist ein Maß für die Umgebungshelligkeit.
Zum Einsatz kommen High-Efficiency LEDs: rote vom GaAlAs-Typ, gelbe vom InGaAlP-Typ, grüne und blaue vom GaInN-Typ. Gemessen wird Rot. Glau und Grün sind ungeeignet zur Messung.
Zusäzlich hängen in der LED-Matrix 3 Taster als Eingabe-Medien. Um einen Taster auszuwerten, wird die angeschlossene Anode als INPUT mit aktiviertem Pullup betrieben. Bei gedrücktem Taster liest man LOW, bei ungedrücktem HIGH. Die 3 Taster verbrauchen also keine extra-Ports! Die Dioden sichern die Anoden beim Drücken von mehr als einem Taster.
Die maximal 9 aktiven LEDs pro Zeile werden ohne externen Zeilentreiber direkt durch den AVR angesteuert. Der Maximalstrom von 20mA/Port reicht locker, auch in heller Umgebung alle LEDs mit ausreichen Saft zu versorgen – trotz Helligkeitsverlust durch Multiplex.
Das ganze geht natürlich auch, wenn man nur eine LED zum Messen nimmt und diese nicht in einer Matrix hängt...