- 3D-Druck Einstieg und Tipps         
Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 21

Thema: LED als Sensor - ADC_Messung funktioniert nur, wenn ein Multimeter angeschlossen ist.

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.04.2010
    Ort
    Im Städtedreieck Köln-Bonn-Aachen
    Alter
    37
    Beiträge
    106

    LED als Sensor - ADC_Messung funktioniert nur, wenn ein Multimeter angeschlossen ist.

    Anzeige

    Powerstation Test
    Guten Abend RN-Gemeinde!

    Ich habe mal wieder ein Problem und weis einfach nicht mehr weiter.

    Klicke auf die Grafik für eine größere Ansicht

Name:	Hilfe.jpg
Hits:	34
Größe:	18,2 KB
ID:	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

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von i_make_it
    Registriert seit
    29.07.2008
    Ort
    Raum DA
    Alter
    56
    Beiträge
    2.814
    Lass mich raten das Multimeter hast Du zwichen dem ADC Eingang und GND?
    Damit kann die Spannung über das Multimeter gegen GND abfließen, das Multimeter dürfte also als hochohmiger Pulldown Wiederstand arbeiten.

    Also einfach einen GROßEN Wiederstand als Pull Down gegen GND.

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.04.2010
    Ort
    Im Städtedreieck Köln-Bonn-Aachen
    Alter
    37
    Beiträge
    106
    Danke für den Tipp. Habe heute morgen mal schnell 10x 82kOhm angeschlossen. Dieser dann 820kOhm großer Widerstand ist schein bar nicht groß genug. Leider habe ich in meinen Sortiment nur ein 82k als größtem Widerstand. Ich überlege mir gerade, wie ich ein sehr großen Widerstand realisieren kann.

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von i_make_it
    Registriert seit
    29.07.2008
    Ort
    Raum DA
    Alter
    56
    Beiträge
    2.814
    Je kleiner der Pulldown Wiederstand, um so mehr Strom fließt und um so mehr wird die Spannung gegen 0V gezogen.
    Es muß also ein großer Wiederstand sein, damit der Spannungswert nicht verfälscht wird, aber halt nicht unendlich, damit die Spannung sinken kann wenn sie an der Quelle (LED) sinkt.
    Bei einem Voltmeter strebt man einen unendlichen Innenwiederstand an um die Messung nicht zu vrfälschen.
    Da das aber nicht so ohne weiteres möglich ist, nimmt man möglichst große Wiederstände im Megaohm Bereich bis zig Megaohm.
    Eventuell erst mal Googeln nach Schaltplänen für selbstbau Digitalmulitmeter und da dann die Wiederstandswerte nachsehen, für den Messbereich den dein Multimeter hatte als Du es benutzt hast.
    Der Innenwiederstand ist dann größer wie dieser Wiederstand.
    Also sollte es mit einem solchen Wiederstand oder einem etwas größerem funktionieren.
    Eventuell mal einen 1 Megaohm Spindeltrimmer (Poti) und ein paar Festwiederstände ab 1Megaohm holen und dann den besten Wert ermitteln.
    Das wäre dann die empirische Methode.
    Oder halt im Datenblatt des µC nachdehen was da für die Analogeingänge steht und dann von Da aus weitersuchen nach Daten oder Bespielschaltungen bzw. durchrechnen.

  5. #5
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Mit analogen Schaltungen kenne ich mich gar nicht aus. Entschuldigt deshalb die Frage: Warum so kompliziert?

    Eine LED wirkt in Sperrrichtung wie eine Kapazität die sich in Abhängigkeit der Beleuchtung ändert, weil der interne Leckstrom bei Beleuchtung steigt (wenn ich mich recht erinnere). Mit einem Mikrokontroller kann man diesen Effekt recht einfach auswerten. Man "lädt" die LED in Sperrrichtung und wertet dann aus, wie lange das Entladen dauert. Das ist sogar ohne ADC machbar:

    Kathode an 5V, Anode an µC-Pin. Pin auf Ausgang-Low schalten. LED wird geladen. Jetzt Pin auf Eingang umschalten und die Zeit messen (z.B. mit einer Zählschleife) bis der Pin wieder High wird. Fertig. Das funktioniert auch in einer Matix:



    Der Ausschnitt aus dem Code:
    Code:
       case 0: 	DDRB &= ~2; 			// Anoden der gewünschten Zeile auf Eingang
    					while(!(PINB & 2))   // warten bis Pegel high erreicht ist
    						temp++;          	// solange Zähler erhöhen
    					return(temp);   		// Messwert zurückgeben
    (Aus https://www.roboternetz.de/community...page3?p=495721)

    Gruß

    Micha
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.04.2010
    Ort
    Im Städtedreieck Köln-Bonn-Aachen
    Alter
    37
    Beiträge
    106
    Zitat Zitat von radbruch Beitrag anzeigen
    Hallo

    Mit analogen Schaltungen kenne ich mich gar nicht aus. Entschuldigt deshalb die Frage: Warum so kompliziert?

    [...]

    Gruß

    Micha
    Das Video kenne ich. Dieses Methode habe ich zuerst verwendet, aber wieder verworfen (Weil ich fest gestellt habe das es Teilweise zu lange dauert, bis der Pin ein Pegelwechsel festellt)

    Ich wollte, dass jede LED einzeln von einandere bemerken, ob was darüber steht oder nicht und es muss zügig laufen, unabhängig davon wie hell es ist (wegen Matrix mit 22x22LEDs, aber zum testen erstmal 3x3).
    So ähnlich wie hier:

    Nur ohne den IR-LED als Sensor bzw. Lichtquelle, sondern die LED an sich selber.

    Ich meine mich zu erinnern, dass ich in deinen Thread gelesen habe, dass du nur jede Zeile einzeln ansteuern kannst. Ich lese dein Thread noch mal quer, wenn ich ein wenig Zeit finde.

    Werde morgen mal ein Trimmer im MOhm Bereich auftreiben.

  7. #7
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Ja, ich kann die LED bei der PingPong-Matrix immer nur zeilenweise auswerten.

    Weil ich festgestellt habe, dass es teilweise zu lange dauert, bis der Pin einen Pegelwechsel feststellt
    Um die Einlesezeit generell zu optimieren kann man natürlich auch mehrere LED mit mehreren Pins gleichzeitig überwachen. Außerdem ist die Zeit bis der Pegel wieder High ist bei Hell deutlich kürzer als bei Dunkel. Wenn du also einen Schwellwert für "jetzt ist dunkel" definierst, kannst du beim Einlesen auch noch Zeit sparen, weil du nicht bis zum High warten mußt.

    Ich wollte, dass jede LED einzeln von einandere bemerken, ob was darüber steht oder nicht
    Es wäre hilfreich, wenn man wüßte, wie du deine Matrix ansteuerst.

    Gruß

    Micha
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.04.2010
    Ort
    Im Städtedreieck Köln-Bonn-Aachen
    Alter
    37
    Beiträge
    106

    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!


    Klicke auf die Grafik für eine größere Ansicht

Name:	klaerung.jpg
Hits:	10
Größe:	34,7 KB
ID:	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.

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von i_make_it
    Registriert seit
    29.07.2008
    Ort
    Raum DA
    Alter
    56
    Beiträge
    2.814
    Nun, der Collector von T1 hängt an 5V.
    Die Basis von T1 hängt an 5V.
    Die Basis von T12 hängt über T19 an 5V.
    Der Collector von T12 hängt über T1 an 5V.
    Der Ermitter von T12 geht auf den ADC Eingang.
    Da der ADC ja Spannungen mißt, hat er idealerweise einen unendlichen Widerstand.
    (praktisch einen sehr hohen)
    Über LED1 kommt zwar nicht so viel Strom, aber wenn die Leckströme größer sind wie der vom ADC, dann bleibt die Spannung immer oben.

    Da die LED nicht so viel Strom liefert, zieht wiederum ein zu kleiner Pulldown Widerstand den ADC Eingang ständig auf GND.
    Es kommt also darauf an das Gleichgewicht zu wahren.
    Fließt entsprechender Strom über LED1 muß der Pulldown Widerstand groß genug sein das sich eine Spannung aufbauen kann.
    Fließt ein kleiner oder kein Strom über LED1 muß der Pulldown Widerstand klein genug sein, das die Spannung trotz Leckströme absinken kann.

    Im Prinzip wie ein Ableitwiderstand bei einem ESD Armband. der statische Elektrizität mit einer ungefährlichen Stromstärke ableitet.

    Da in einigen Treads ja grade das Wassermodell zum Erklären gut ankommt, auch hier mal:
    Stell Dir Spannung als Wasserdruck vor und Strom als Volumenstrom (Menge pro Zeit)
    Den Widerstand als Wasserhahn und den ADC als Druckmeßdose.

    Du hast also ein Rohr an dem unten ein Wasserhahn ist und direkt daneben der Drucksensor.
    Kommt jetzt von oben ein Wasserstrahl mit 10 Bar aber nur durch eine Kanüle einer Spritze, dann darf der Wasserhahn nur minimal aufgedreht sein, damit der Drucksensor die 10 Bar anzeigen kann. kommen von oben nur noch 5 Bar, kann über den Wasserhahn aber schnell genug Wasser abfleißen, damit sich der Druck abbaut.
    Hängt oben ein C-Rohr von der Feuerwehr dran, muß man den Wasserhahn voll aufdrehen, sonst dauert es ewig bis der Druck abfällt nach dem man den Zufluß gedrosselt hat.
    Geändert von i_make_it (19.07.2016 um 21:52 Uhr)

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.04.2010
    Ort
    Im Städtedreieck Köln-Bonn-Aachen
    Alter
    37
    Beiträge
    106
    Okay... jetzt wird es klar.
    Mal kurz für mein Verständnis:

    In den meisten Fällen wird ja ein Spannungsteiler genutzt, um die Spannung zu messen.
    Wenn jetzt mein T1 mit T12 zusammen mein R1 wäre, der veränderbar ist, muss der 2MOhm Widerstand mein R2 sein.

    Wenn man jetzt nur den ADC-Eingang betreibt ohne den 2Mohm, ist mein R2 unendlich groß.
    Und das bedeutet, dass die Spannung die am R2 abfällt immer die max. Spannung sein wird, egal wie groß R1 ist.
    Habe ich das grob richtig verstanden?

    Andere Frage:
    Warum hängt die Basis vom T12 über T19 an 5V, wenn T19 doch sperrt?

Seite 1 von 3 123 LetzteLetzte

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 15.12.2012, 20:34
  2. Antworten: 3
    Letzter Beitrag: 02.06.2008, 12:44
  3. Gibts so nen Sensor? Wenn ja, Wo, und wie teuer?
    Von ToteHose im Forum Sensoren / Sensorik
    Antworten: 15
    Letzter Beitrag: 15.05.2008, 18:05
  4. Soft-SPI funktioniert nur wenn ISP .. Fehler gefunden -Danke
    Von Hei.Mor im Forum AVR Hardwarethemen
    Antworten: 3
    Letzter Beitrag: 28.11.2006, 18:09
  5. RS232 übertragung nur wenn ISP angeschlossen
    Von PcVirus im Forum Elektronik
    Antworten: 11
    Letzter Beitrag: 23.07.2006, 22:42

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test