LED som Touch Sensor

Lysdioder, Optiska sensorer, Fiberoptik, Displayer, Lasrar, Optiska kopplare
Användarvisningsbild
Kezo
Inlägg: 711
Blev medlem: 28 november 2005, 19:53:12
Ort: Linköping

Inlägg av Kezo »

Nu är jag tillbaka från en tids isolation från världen (nätet var nere)!

Jo, jag fick det att funka och så men jag försökte få den att lysa samtidigt som den läste av med då gick det inte alls bra :(
Så om någon hade tips på hur man kan fixa det vore jag glad...
Användarvisningsbild
Jeppsson
EF Sponsor
Inlägg: 810
Blev medlem: 3 oktober 2005, 18:00:43
Ort: Karlskrona

Inlägg av Jeppsson »

Du kan inte få den att lysa samtidigt som du läser av!

1. Tänd LEDen i några ms (Forward-bias)
2. "Ladda" LEDen genom att ge den spänning polvänt (Backward-bias)
3. Kolla om LEDen håller laddningen?
4. Gå tillbaka till nr 1

Detta går så snabbt att det ser ut som om LEDen är tänd hela tiden!
Användarvisningsbild
Kezo
Inlägg: 711
Blev medlem: 28 november 2005, 19:53:12
Ort: Linköping

Inlägg av Kezo »

nej, jag vet att jag inte kan ge forward och back-bias samtidigt men när jag gjorde som du skrev så syntes det inte att LED:en lyste... det gick väl för långsamt eller nått... aja, får trimma koden lite då
Användarvisningsbild
grapetonix
Inlägg: 293
Blev medlem: 14 juli 2004, 17:20:50
Skype: grapetonix
Ort: Hägersten, Stockholm

Inlägg av grapetonix »

Ledsen, men urladdningskurvan tycks stabil som en sten oavsett om jag har fingret på dioden eller inte (har prövat flera). Skopet tillsammans med prob har ingångsimpedansen 10MOhm/10pF vilket vore vara i storleksordningen av en cmos-ingång. Konstigt att jag inte ser nåt :(
Användarvisningsbild
Jeppsson
EF Sponsor
Inlägg: 810
Blev medlem: 3 oktober 2005, 18:00:43
Ort: Karlskrona

Inlägg av Jeppsson »

Vad menar du med "stabil"?

Att den håller laddningen hela tiden oavset om du rör LEDen eller inte, eller att den laddas ur på samma sätt oavset om du är nära LEDen eller inte?

Kör du med samma ASM-kod som jag gjorde?

Tänkte så att du på µprocessor går direkt från backward-bias till ingång så att LEDen inte hinner ladda ur sig!
Användarvisningsbild
grapetonix
Inlägg: 293
Blev medlem: 14 juli 2004, 17:20:50
Skype: grapetonix
Ort: Hägersten, Stockholm

Inlägg av grapetonix »

Tidskonstanten ser identisk ut, den tar alltså lika lång tid på sig att ladda ur oavsett hur jag håller fingret.

Jag applicerar en cirka 200us lång laddpuls (Rs=390 ohm) och switchar sedan omedelbart till ingång. För övrigt har jag dessutom prövat att forwarda vad ingången tycker till en utgångspinne och mäta bara där (hindra ev störningar från oscilloskopet). Högpulserna är lika långa oavsett. Skumt!
maxxflow
Inlägg: 1150
Blev medlem: 17 mars 2004, 16:11:14

Inlägg av maxxflow »

Får man "låna" tråden lite? :)
Tyckte att detta lät intressant, så jag tänkte prova med en AVR ATtiny15 som jag hade liggandes...
Dock är jag helt nybörjare på asm/µP-programmering...
Följande kod har jag lyckats skriva hittills: :)

Kod: Markera allt

-edit-
Hur ska jag fixa if-satsen i pseudokoden?
Alltså att kolla på PINB om dioden är urladdad?

Och Delay1ms ska justeras sedan ja, så att det blir rätt delay-tid...
maxxflow
Inlägg: 1150
Blev medlem: 17 mars 2004, 16:11:14

Inlägg av maxxflow »

Kan detta funka?

Kod: Markera allt

.include "tn15def.inc"

.def Temp = R16
.def Delay  = R17
.def Delay2 = R18

.org 0x0000 ; Interrupt vector
  rjmp Mainloop

Mainloop:
  ldi    Temp,    0xFF
  out    DDRB,    Temp    ; Sätt PortB som utgång

  ldi    Temp,    0x01
  out    PORTB,   Temp  ; "Ladda" sensor-dioden
  rcall  Delay1ms
  ldi    Temp,    0x00
  out    PORTB,   Temp  ; Sluta ladda


  ldi    Temp,    0x00
  out    DDRB,    Temp    ; Sätt PortB som ingång
  rcall  Delay1ms
  sbic   PINB, 0      ; "Skip if bit 0 on PINB is 0"
  rjmp   StatusLED

  rjmp Mainloop

Delay1ms:
  ldi    Delay, 0x04
  Delayloop:
    ldi Delay2, 0xFF
    Delayloop2:
      dec Delay2
      brne Delayloop2
    dec Delay
    brne Delayloop
  ret

StatusLED:
  ldi    Temp,    0xFF
  out    DDRB,    Temp    ; Sätt PortB som utgång
  ldi    Temp,    0x02
  out    PORTB,   Temp  ; Tänd status-LED:n

  ldi    Delay, 0xFF
  Longdelay:
    ldi Delay2, 0xFF
    Longdelay2:
      dec Delay2
      brne Longdelay2
    dec Delay
    brne Longdelay
  ldi    Temp,    0x00
  out    PORTB,   Temp  ; Släck status-LED:n
  ret
Och Delay1ms borde bli ungefär 1ms va?
Tiny15 gör 1 MIPS. Delay2-loopen innehåller två instruktioner. Delay2-loopen körs FF (256) gånger, och Delay-loopen körs fyra gånger, alltså 4*256=1024 + instruktionerna i Delay-loopen, men ungefär 1000 ändå... Alltså ungefär 1ms?


edit: Det ska alltså fungera så att först laddar den upp sensor-dioden i 1ms, sen ställs PORTB om till ingång, den väntar i 1ms, och kollar sen om sensor-ingången är hög. Om den är det (ingen urladdning - ingen "touch") så hoppar den till början av huvudloopen igen, om den inte är hög så hoppar den till StatusLED, som tänder status-LED:n och kör en delayloop så att man hinner se LED:n. Fulhack javisst, men bara för att testa :P
Användarvisningsbild
grapetonix
Inlägg: 293
Blev medlem: 14 juli 2004, 17:20:50
Skype: grapetonix
Ort: Hägersten, Stockholm

Inlägg av grapetonix »

Ni som har fått det här att fungera:

Ni kör inte med nåt ytterligare knep ni inte tänker på?
Pullups/pulldowns?
Annat?
Ser ingångsttegen kanske lite lätt olika ut mellan olika picar?
Jag kör med 12F675 och no luck whatsoever.

Av vad allt jag läst verkar det som att det inte är någon kapacitansändring p.g.a. fingrets närhet som används,
utan snarare kapacitansändrande ljusavkänning (laddningsbärargen. i PN-övergången)

Se t.ex. http://www.edn.com/article/CA6335303.ht ... ryid=44217

Denna märker jag mycket tydligt av. Faktiskt om jag bara kopplar en gul diod till en multimeter ser jag 100mV i ett ljust rum och 5mV om jag sätter fingret på. Funkar era sensorer verkligen i ett dödmörkt rum?
Användarvisningsbild
JimmyAndersson
Inlägg: 26578
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

För ca 2 veckor sedan så var det någon på mIRC'en som höll på med detta. Kanske Jeppsson? Minns då att personen (vem det nu var) hade upptäckt att "status-Lysdioden" reagerade oavsett om den första lysdioden var inkopplad eller inte. Dvs att kretsen verkade fungera pga störningar från handen när man hade den nära PIC-kretsen.

Har inte sett en bokstav om detta i den här tråden, så jag tänkte bara kolla om det problemet är löst?
Användarvisningsbild
Kezo
Inlägg: 711
Blev medlem: 28 november 2005, 19:53:12
Ort: Linköping

Inlägg av Kezo »

Det var jag!
Jo, jag labbade lite och det funkade och så, men så drog jag ut sensor-LED:en (minns inte varför) och då reagerade som sagt status-LED:en på mitt finger i närheten av labbplattan. Jag glömde visst att skriva det här :?
Men vad tror ni det kan bero på? Kapacitans i labbplattan?
Användarvisningsbild
Jeppsson
EF Sponsor
Inlägg: 810
Blev medlem: 3 oktober 2005, 18:00:43
Ort: Karlskrona

Inlägg av Jeppsson »

Det jag har kommit framtill är att en LED oxå kan fungera som en fotodiod och av ge en spänning när den träffas av ljus i en viss våglängd!

I mina tester med LED som en touch sensor så kunde jag ha släckt, tänt eller lyssa med en lampa rakt in i LEDen utan att det påverka. Men så fort jag kom i närheten med fingert eller någon annan "kroppsdel" 8) så reagerade den. (Jag menar att LEDen reagera inte kroppsdelen :shock: )

Jag kunde även få LEDen att reagera när jag kom i närheten av den från undersidan och lampan lös uppifrån... Därför är jag rätt så säker på att det är kapacitansen i kroppen som har den största inverkan.
Användarvisningsbild
grapetonix
Inlägg: 293
Blev medlem: 14 juli 2004, 17:20:50
Skype: grapetonix
Ort: Hägersten, Stockholm

Inlägg av grapetonix »

Oavsett vad det är frågan om, verkar allt detta vara för instabilt för att användas i någon praktisk tillämpning.

Jag menar, en till synes stabil reaktion har jag också fått från närhet med fingret till flytande ingångar på CMOS-grindar.
Användarvisningsbild
$tiff
Inlägg: 4941
Blev medlem: 31 maj 2003, 19:47:52
Ort: Göteborg
Kontakt:

Inlägg av $tiff »

:?:

Vad har vi nu kommit fram till, att Jeppssons experiment från första posten fungerar lika bra utan sensor-lysdioden inkopplad, och att det alltså är banorna i experimentbrädan som utgör den kapacitanskänsliga utrustningen (en öppen kondensator).

Eller är det någon som kan bekräfta att det inte fungerar om man tar bort lysdioden?
Användarvisningsbild
Jeppsson
EF Sponsor
Inlägg: 810
Blev medlem: 3 oktober 2005, 18:00:43
Ort: Karlskrona

Inlägg av Jeppsson »

Jag har inte LED sensorn uppkopplad längre, andra projekt på gång!
Men klart att man kan koppla upp och kolla, det är inte så många komponenter som behövs!

Får se om jag hinner imorgon söndag! Rapport kommer i denna tråden!
Skriv svar