Hi
Kennst du das schon? https://www.roboternetz.de/phpBB2/ze...ght=led+sensor
Hallo Leute,
ihr kennt doch sicher alle das hier:
http://cs.nyu.edu/~jhan/ledtouch/index.html
Meiner Meinung nach funktioniert das ja auch ohne Licht (sieht zumindest im Video so aus). Ich glaube, dass hier die Leds gemultiplext werden und nach der Reihe (digital) abgefragt werden. Bin mir hierbei jedoch nicht ganz sicher.
Auf jeden Fall möchte ich soetwas nachbauen.
Könnt ihr mir erklären, wie das genau funktioniert? Hab mir jetzt zu testzwecken erstmal 4 leds im Quadrat auf eine Platine gelötet, jeweils mit 150Ohm Wiederstand.
Was ich jetzt möchte ist kein feriges Programm, sondern nur eine Funktionsbeschreibung. Ein link auf eine Seite mit Funktionsbeschreibung würde mir auch sehr helfen, da ich bisher keine passenden Seiten gefunden habe bzw. nur Seiten, auf denen ein anderes Prinzip angewendet wird (also die leds werden beleuchtet und der Finger, die Hand, wirft dann einen Schatten auf die Led, welche dies dann erkennt. Allerdings ist das nicht, was ich wollte!!!)
Würde das jetzt so machen:
1. 3 Leds einschalten
2. Den Zustand der 4. einlesen
3. diese Led einschalten, nächste ausschalten und deren Zustand einlesen
4. wieder von vorne
Aufgrund der Lichtreflektion an meinem Finger o.ä. müsste die LED, welche eingelesen wird, genügend Spannung erzeugen, um ein High signal am µC (mega32 mit 16MHz) zu erzeugen. Natürlich müsste der andere Pin dazu auf low gelegt werden.
Diese Daten (also 0 oder 1) würden mir reichen, möchte sie vorerst nur auf einem LCD darstellen.
Funktioniert das jetzt so oder habe ich einen Denkfehler?
Vielen Dank für eure Antworten
Gruß
Chris
Hi
Kennst du das schon? https://www.roboternetz.de/phpBB2/ze...ght=led+sensor
Hi Del,
ja, das kenn ich schon, ist aber NICHT das, was ich möchte, da diese Lösung nur mit externem Licht funktioniert.
Ich möchte nur mit dem Licht der LED's arbeiten.
Gruß
Chris
Hallo Che Guevara,
Deine Theorie funktioniert nur im dunkeln da die anderen LED's die nicht ausgelesen werden sonst überflüssig sind!
Du müsstest wenn schon die LED's vom Tageslicht abschirmen!!
Der LED an sich ist es egal wo das Licht herkommt, solange es genug ist um sich vom Hintergrund abzuheben.
Allerdings gibt die LED direkt kein einfache H / L Signal. Die LED funktioniert so wie eine Fotodiode: in Sperrichtung betrieben fließt ein kleiner Strom, der von der Hellikeit abhängt (etwa Proportional). Gemessen wird der Strom über die Zeit, die es benötigt einen Digitalen Eingang umzuladen. Je mehr Licht die LED sieht, desto schneller geht das. Die Zeiten sind relativ kurz, aber gut messbar, so daß man auch mehrfach "messen" kann um ggf. Fehler durch Störungen zu unterdrücken.
Hi,
sorry, dass ich mich länger nicht gemeldet hab, hatte etwas stress in der schule ....
Hab jetzt nochmal darüber nachgedacht und mir ist klar geworden, dass ich vohrer einen Knoten im kopf hatte. Eigentlich muss ich ja nur eine led nach der anderen abfragen, während alle anderen leuchten.
ABER:
hab jetzt gerade 2 ultrahelle grüne leds (18.000mcd) gefunden, bei welchen ich an jedem bein einen wiederstand angelötet habe, einmal 100ohm und einmal 47ohm.
Wenn ich jetzt mit folgendem Programm:
die leds abfragen möchte, "laufen" beide über, also der wert ist 30.000!Code:$regfile = "m32def.dat" $crystal = 16000000 $framesize = 80 $hwstack = 80 $swstack = 80 $baud = 19200 Ddra = &B11111111 Porta = &B11111111 Dim Dauer(2) As Long Porta.0 = 1 Porta.1 = 0 Porta.2 = 1 Porta.3 = 0 Do Porta.2 = 0 Porta.3 = 1 Waitus 1 Ddra.3 = 0 Porta.3 = 0 While Pina.3 = 1 Waitus 1 Incr Dauer(1) If Dauer(1) >= 30000 Then Exit While Wend Ddra.3 = 1 Porta.2 = 1 Porta.3 = 0 Porta.0 = 0 Porta.1 = 1 Waitus 1 Ddra.1 = 0 Porta.1 = 0 While Pina.1 = 1 Waitus 1 Incr Dauer(2) If Dauer(2) >= 30000 Then Exit While Wend Ddra.1 = 1 Porta.0 = 1 Porta.1 = 0 Print "Dauer(1): " ; Dauer(1) Print "Dauer(2): " ; Dauer(2) Dauer(1) = 0 Dauer(2) = 0 Waitms 100 Loop End
wenn ich jedoch an den pin, welcher eingelesen wird, meine hand halte, dann funktionierts in sofern, dass der wert ca. 14 (also 14us entladezeit) beträgt. allerdings ändert sich dieser nicht bei beleuchtung / verdunklung.
An was liegt das? hab schon alles mehrmals auf lötfehler usw. überprüft, konnte aber nichts feststellen.
leuchten tun sie normal. Irgendwas ist da faul :-S
mit einer normal-hellen gelben led hatts funktioniert...
liegt es evtl. an den GRÜNEN leds?? kann ich mir zwar nicht vorstellen, aber sonst weiß ich echt nicht weiter.
Wäre nett, wenn jemand eine idee hätte..
Gruß
Chris
Bei den grünen und blauen LEDs kann es welche geben, die kaum als Sensor geeigent sind. Die brauchen zum Teil als Sensor eine etwas kürzere Wellenlänge als sie aussenden.
Bei den Grünen LEDs täuscht man sich ohnehin leicht mit der Helligkeit, weil hier das Auge relativ empfindlich ist. Als Sensor ist verlutlich eine Rote LED besser geeignet.
Mir ist auch die Schaltung noch nicht klar. Wie sind die LEDs angeschlossen ?
aber trotzdem müsste sich die doch entladen, wenn auch etwas langsamer.. aber über 30ms?!?!
das ganze prinzip ist meiner meinung nach sehr gut auf http://reaktivlicht.de/kochbuch.pdf erklärt.
einen "pseudo-schaltplan" findet man auf seite 8 abbildung 3.1!
Ich habs genauso, nur dass bei mir ein 100ohm wiederstand an der anode und ein 47ohm an der kathode ist.
Gruß
Chris
ich hab den versuch gemacht mit einer grünen und eine alten roten bei keiner war auf dem oszi eine wirkliche entlade kurve zu sehen die lichtabhängig war.
Wenn die LED kein verwertbares Licht bekommt, der halt sehr unempfindlich ist, dauert es halt länger bis sie entladen ist.
Das hängt dann auch vom µC ab - der Lechstrom am Eingang kann größer sein als der Fotostrom bei der LED. Dann kann es auch passieren das die Kapazität nie entladen wird.
Lesezeichen