PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : led's als sensor



Che Guevara
05.04.2010, 23:51
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

Del
06.04.2010, 08:47
Hi

Kennst du das schon? https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=51680&highlight=led+sensor

Che Guevara
11.04.2010, 15:24
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

bnitram
11.04.2010, 18:17
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!!

Besserwessi
11.04.2010, 18:17
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.

Che Guevara
15.04.2010, 19:47
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:


$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

die leds abfragen möchte, "laufen" beide über, also der wert ist 30.000!
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

Besserwessi
15.04.2010, 21:00
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 ?

Che Guevara
15.04.2010, 22:36
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

Thomas$
15.04.2010, 22:44
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.

Besserwessi
15.04.2010, 23:47
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.

Che Guevara
18.04.2010, 15:18
Wenn ich die 30ms "Toleranzgrenze" entferne, passiert auch nichts, der Pin ist scheinbar immer high....

@Besserwessi:
Wie schaffe ich es dann / bzw. ist es überhaupt möglich, den Leckstrom zu minimieren?
Das hört sich nämlich ziemlich problemlösend an ^^

@Thomas$:
Hab mir das noch nie am Oszi angesehen, aber der Effekt (LED als kapazität) ist erwiesen und hat bei mir schon mal mit gelben LED's funktioniert, allerdings waren diese nicht hell genug, weßhalb ich jetzt diese Grünen (18.000mcd) verwenden möchte.

Oder sollte ich die Led's ohne Vorwiederstand betreiben, da diese ja immer nur kurz aufblinken?!
Bei dem "TicTacToe/Reaktivlicht - Led als Sensor" - Projekt werden glaube ich auch keine Wiederstände verwendet, zumindest wenn man der Skizze ganz am Anfang glaubt.


Gruß
Chris

Besserwessi
18.04.2010, 15:38
Die Vorwiderstände sollte man schon drinlassen. Für die Messung mit der LED Stören dieWiderstände auch nicht, denn da sind die Ströme (Größenordnung 1 µA) viel zu klein für.

Man könnte die Funktion der LEDs als Sensor sonst mal unabhängig testen. Im einfachsten Fall einfach ein emfpindliche Multimeter dranhänge. Wenn man hat, ein 20 µA Strommessbereich, sonst der 200 mV Bereich und ein Widerstand von z.B. 100 K Prallalel zur LED.

Bei der Refelxion am Finger kann die Grüne LED das Problem haben, das der Finger im Grünen kaum refelktiert.

Wenn die Messung mit der grünen LED nicht geht, dann müßte man für die Messung halt jeweils eine rote aufblitzen lassen. Das könnte für die Messung reichen, ohne das man es doll sieht.

Edit:
Gegen die Leckströme könnte es helfen ein anderes Exemplar beim µC zu testen und ggf. die Spannung zu reduzieren. Eine hohe Temperatur gibt auch mehr Leckstrom.

Che Guevara
18.04.2010, 15:47
Soll ich einfach nur ein Multimeter an beide Enden der Led hängen und diese dann Beleuchten / Verdunkeln, um den Strom (im µA Bereich) zu messen?!
So gut ist mein Multimeter glaube ich nicht, werds i-wie mitm Oszi machen.

Ich habe die Led ja auch mal mit einer anderen ultrahellen grünen Led beleuchtet, also am Finger liegts nicht.
Aber wenn ich dann noch rote leds einbaue... hm, weiß nicht, aber eigentlich wollte ich ja dann auch Grafiken anzeigen lassen, wenn die Finger-erkennung mal funtkioniert...

funkheld
18.04.2010, 17:11
Leckstrom

Wat it dat denn....,noch nie jehört...

Che Guevara
18.04.2010, 17:54
@funkheld:
Ich weiß was leckströme sind!
Nur habe ich keine Ahnung, wie man diese minimiert!
Wäre sehr nett, wenn du auch hilfreiche / nette Beiträge bringen könntest, v.a. weil du auch neu hier bist ;-)

Eine andere Möglichkeit wäre wahrscheinlich, den Fotostrom der Led zu vergrößern, allerdings bräuchte ich dann wieder mehr externe Beschaltung, was ich allerdings vermeiden möchte...
Oder aber ich schalte einen kleinen Kondensator (z.b. 10pf) parallel zur Led, würde das etwas bringen?

oberallgeier
18.04.2010, 18:45
Hallo Che,

... den Fotostrom der Led zu vergrößern, allerdings bräuchte ich dann wieder mehr externe Beschaltung, was ich allerdings vermeiden möchte ...Deine Fragestellung hatte ich auch einmal - ich hatte sie ungelöst ans Ende meiner Warteliste geschoben *ggg*. Übriggeblieben sind ein paar Links :
Ein Thread (http://www.mikrocontroller.net/topic/147023) - mit allerlei Vorschlägen.
Eine ausgeführte Schaltung. (http://forum.mini-pc-pro.de/gehaeuse/2739-daemmerungsschalter-fuer-power-led.html)
Etwas Theorie. (http://www.physik-jena.de/login/praktikas/praktikas/messtechnik_7(optischeelemente)_ss08_versuchsproto koll__silviofuchsundsimonstuetzer.pdf)
Edit: ein Tutorial (http://www.mikrocontroller.net/articles/Lichtsensor_/_Helligkeitssensor) dazu.

Vielleicht hilft Dir dies weiter. Viel Erfolg.

@funkheld: klick mal. (http://www.gidf.de/leckstrom)

Besserwessi
18.04.2010, 18:46
Ein extra Kondensator bringt nichts. Das verlängert nur noch die Zeit die man zum messen braucht. Es könnte etwas bringen, wenn man an der anderen Seite der LED mißt, die Leckströme bei den Eingängen sind nicht unbedingt symetrisch. Das Problem ist ja dass man nach Datenblatt weniger als 1 µA Leckstrom garantiert hat, es aber darum geht, ob es auch weniger als 10-100 nA sind. Meistens ist es auch weniger Leckstrom, der Wert von 1 µA soll ja auch noch gelten wenn es etwas wärmer wird.
Es muß auch nicht jedes Exemplar und jeder Eingang gleich gut sein.

Eingänge mit einer extra analogen Funktion könnten etwas mehr Leckstrom haben, also besser nicht die mit AD, Komperator oder Quarz funktion nehmen.

Ich habe mal eine kleinen Test mit den LEDs gemacht die ich noch so rumliegen hatte: die meisten LEDs geben einiges an Fotostrom, aber einige auch nicht. Kein nennenswertes Signal hab ich bei einer IR LED (LD274), einer roten Type, einer grünen (extra hell), und 2 Sorten blau bekommen. Andere rote und blaue Typen gingen aber. Es bracht aber schon einiges an Helligkeit um auf 1µA zu kommen.

Che Guevara
18.04.2010, 18:59
@oberallgeier:
Danke für die Links, werds sie mir dann so um halb 8 mal ansehen und dann berichten, obs was gebracht hat ;-)
Testweise werde ich jetzt auch nochmal andere Leds verwenden, um GANZ sicher zu gehen, ob mein Programm funktioniert.

@Besserwessi:
An der anderen Seite der Led kann ich nicht messen, da das Prinzip der Aufladung dann nicht mehr funktioniert, oder doch?!
Das mit den Leds dachte ich mir schon fast, danke für den Tipp.
Auf "eventuelle kleinere Leckströme bei bestimmten µC", welche nur durch ausprobieren herausgefunden werden, möchte ich mich nicht verlassen, da ich dann ein riesen Problem hätte, wenn mal einer kaputt ist.

oberallgeier
18.04.2010, 19:31
... Testweise werde ich jetzt auch nochmal andere Leds verwenden ...Ich will Dir die Suche oder Lesearbeit etwas erleichtern. Hier ist genau Deine Frage (http://www.mikrocontroller.net/articles/Lichtsensor_/_Helligkeitssensor#LED)/Aufgabe aus Deinem Eingangspost beschrieben - komplett mit einem Codebeispiel. Das Problem ist eigentlich, dass Du mit dem AD C nur drei Größenordnungen messen kannst - aber die üblichen Beleuchtungsstärken gehen über etwa sechs Größenordnungen . . . und das vermutlich auch nur, wenn man die Nacht nicht komplett dazunimmt.

Che Guevara
22.04.2010, 23:39
Hi Leute,

sorry, dass ich mich so lange nicht gemeldet hab, hatte viel für die Schule zu tun...
Hab mir heute 6 ultrahelle rote Leds gekauft, mit denen funzt es wunderbar :)
Werd meine Ergebnisse zum Thema Geschwindigkeit, Zuverlässigkeit, usw. in den nächsten Tagen posten ;)

Gruß
Chris