Gerade mit 2MOhm getestet. Schaltung funktioniert. Werde mal nach vollziehen, warum das so ist. Will ja in Zukunft vorher wissen, ob ich einen hohen Pulldown-Widerstand benötige. Danke für den Tip!
Zur Erklärung wie die Schaltung funktioniert:
Beispiel für die LED1 (oben links):
Im Sensorbetrieb wird der Transistor T19 gesperrt, damit an der Anode keine 5V über den Arbeitswiderstand R10 anliegt. Die Kathode wird vom Controller auf 5V geschaltet und T1 wird ebenfalls angesteuert, damit er leitend wird. Nun kann ich eine Spannung am Emitter vom T12 messen, die in Abhängigkeit vom Lichteinfall ist.
Für den Leuchtbetrieb muss der Transistor T1 sperren und T19 Leitend. Zudem muss der Controller die Kathode auf GND schalten.
Für die Matrix habe ich mir gedacht, dass ich ein Multplexverfahren benutze. Dabei wird für den Sensorbetrieb Spalte für Spalte vorgegangen und in der Spalte dann LED für LED.
Nehmen wir an, dass die linke Spalte im Sensorbetrieb ist und die anderen beiden Spalten im Leuchtbetrieb.
Dann wird T19 die 5V für die linke Spalte sperren. T20 und T21 bleiben leitend. Da noch auf allen Kathoden der LEDs 0V anliegt, leuchten die Spalten "Mitte" und "Rechts"
Jetzt wird werden die Transistoren T1, T4 und T7 angesteuert, damit sie leitend werden. Dann in der 1. Zeile die Kathoden auf 5V geschaltet. Die LED der Zeile sind dann alle aus. Dann an LED1 die Spannung messen und die Kathode wieder auf 0V schalten. Im Controller dann den Kanal für die 2. Zeile wechseln und dann die Kathoden der 2. Zeile auf 5V schalten. Spannung am Emitter vom T13 messen. Und so dann für Zeile 3 widerholen.
Dann die Spalte wechseln und wieder von vorne beginnen.
Für den Leuchtbetrieb wird dann jede einzelne LED angesteuer. Linke Spalte 5V und 1. Zeile 0v ergibt, dass nur LED1 leuchtet und alle anderen dunkel sind.
Jetzt muss ich das einwig geschickt timen, damit man die LED im Sensorbetrieb nicht flackern sieht. Spricht nicht immer alle 9 LEDs nach ein ander im Sensorbetrieb betreiben, sonden Paketweise verteilt. Daher auch diese Lösung. Laut Datenblatt braucht der ADC vom Controller 50-200µs (abhängig vom Takt und dem Taktteiler) für eine Wandlung. Wenn ich jetzt zB. eine Wiederholzeit von 10ms anstrebe und dafür 1ms für das Messen abdrücke, sollte man es nicht bemerken und ich habe eine ganze Spalte erfasst. Dann brauche ich 30ms um die Matrix einmal komplett zuerfassen. Das sollte schnell genug sein, damit man keine verzögerung bemerkt.
So... Viel Text aus meinen verwirtem Gehirn. Bin mir ziehmlich sicher, dass ich in meiner Vorstellung, wie das ganze funktionieren soll, noch ein Denkfehler drin ist. Aber da werde ich jetzt nach dem Verfahren "Try and Error" weiter machen.
Lesezeichen