Liste der Anhänge anzeigen (Anzahl: 1)
LED als Sensor - ADC_Messung funktioniert nur, wenn ein Multimeter angeschlossen ist.
Guten Abend RN-Gemeinde!
Ich habe mal wieder ein Problem und weis einfach nicht mehr weiter.
Anhang 31830
Den Schaltplan habe ich aktuelle auf mein Steckbrett aufgebaut. Dieser ist ein Teil aus einer späteren Matrixschaltung von 9 LEDs, habe aber zu Testzwecken nur eine LED mit beschaltung aufgebaut.
Die angezeigten Spannungen sind im "Sensobetrieb" und am ADC-EingangµC wird auch über dem Multimeter eine Spannungsänderung von 0,6 bis 5V in Abhängigkeit vom Lichteinfall gemessen.
Der ADC im µC läuft, da ich zum testen an einen anderen Port LEDs geschaltet habe, die mir das ADC-Ergebnis anzeigen.
Nun habe ich das Problem, dass das ADC-Ergebnis (somit auch die Spannung am Emitter vom T12) sich nur ändert, wenn ein Multimeter angschlossen ist. Entferne ich diesen, bleibt die LED anzeige fest auf einen Wert stehen.
Dann habe ich einen Impedanzwandler dazwischen geschaltet und hatte das selbe Spiel. Messe ich mit dem Multimeter am Eingang des Wandlers, also direkt Emitter vom T12 läuft die Schaltung.
Nehme ich das Multimeter weg und messe am Ausgang vom Impedanzwandler bleibt die Spannung bei ca 3,6V stehen. Egal wieviel Licht einfällt.
Hat jemand eine Idee, was das Multimeter in der Schaltung macht, damit diese funktioniert?
Gruß
Jim
Liste der Anhänge anzeigen (Anzahl: 1)
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!
Anhang 31834
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.