Villogó LED megkülönböztetése

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Válasz küldése
Adamyno
DrótVégénSzéndarab
Hozzászólások: 35
Csatlakozott: 2015. április 16. csütörtök, 19:29

Villogó LED megkülönböztetése

Hozzászólás Szerző: Adamyno »

Sziasztok!

Addig rendben van, hogy a világító vagy a kikapcsolt LED-et megkülönböztessük egymástól. Ha a megfelelő feszültség van a lábán akkor világít, ha nem akkor nem. Én így érzékeltettem a dolgot analóg bemeneten. Viszont mi van ha villog? Másodpercenként kb 4x?

Szoftveresen is meg lehetne oldani szerintem ilyen átlagolásos módszerrel, de az sok számítási kapacitást emészt fel és viszonylag nagy a késése, ha pl. kikapcsol a LED villogás vagy világítás után, akkor addig nem jelzi a rendszer, hogy kikapcsolt, amíg az átlag le nem csökken egy beállított szint alá.

Én inkább hardveres megvalósításra gondoltam. Ha például a LED egyil lába 0V, a másik 3.3V-ra van kötve, akkor teszek egy kondenzátort a +3.3V-os lábára, a kondi másik lábát pedig földre kötöm egy ellenállással. Így a kondenzátor foylamatosan merül, de töltődik is a +3.3V miatt, tehát beáll egy szintre. Amikor ez van, akkor a LED be van kapcsolva. Ha elkezd villogni, lecsökken a kondenzátor feszültsége, illeteve hullámozni fog. Az a baj, hogy ezt a hullámzást nem igazán tudom hogy lehetne kiküszöbölni. Gondolom az ellenállás és a kondenzátor méreteinek változtatása a kulcs, de hogy hogyan lehet kiszámítani ezt, sajnos nem tudom. Ha ki van kapcsolva, egyértelmű, hogy rövid időn belül a 0V felé kifolyik belőle az áram és 0V lesz a feszültsége.

De hogy ne legyen ilyen "egyszerű", az én LED-em most kap 3.2V-ot az egyik lábán, a másikon 1.2V van, ilyenkor világít. Amikor ki van kapcsolva, akkor mindegyik lábon 3.2V van a 0V-hoz viszonyítva.

Szóval az a kérdés, hogy jó úton járok-e és valaki esetleg csinált-e már ilyet vagy hasonlót.

Igazából elég lenne nekem az tudni, hogy világít vagy nem a LED, a villogás nem is fontos annyira, csak az a baj, hogy ha beállítok egy változót, ami legyen mondjuk 1 ha világít és 0 ha nem, akkor annak az értéke folyamatosan változni fog, ha a LED villog és én ezt nem szeretném. Csak akkor legyen 1 ha világít, különben 0. De ezzel úgy érzem nem jutottam előrébb :D
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Villogó LED megkülönböztetése

Hozzászólás Szerző: Robert »

LEDdel paralell: 330R+optokapu LEDje.
A kimeneti tranzisztor meg GND-re kapcsol és van felhúzó-ellenállás.
És persze a opto kimenete PicChangeINT lábra megy...
Adamyno
DrótVégénSzéndarab
Hozzászólások: 35
Csatlakozott: 2015. április 16. csütörtök, 19:29

Re: Villogó LED megkülönböztetése

Hozzászólás Szerző: Adamyno »

Ezt nem teljesen értem :(

Még nem használtam optokaput (de hamarosan eljön az ideje). Most kipróbálok egy módszert, úgy tűnik működik. Ha jó lesz, leírom.
Adamyno
DrótVégénSzéndarab
Hozzászólások: 35
Csatlakozott: 2015. április 16. csütörtök, 19:29

Re: Villogó LED megkülönböztetése

Hozzászólás Szerző: Adamyno »

Úgy csináltam, hogy rátettem egy kondit és egy ellenállást. A működést most nem magyarázom. A mérési pont az a kondi és az ellenállás között van (a sarkon ha úgy vesszük).
Amikor a mért feszültség bizonyos értékek közé esik, akkor a változók értékei is változnak. Aztán a programban arra lehet hivatkozni. Ha ki van kapcsolva a LED, akkor kb. 3,3V, ha villog akkor 2-2,8 között nagyjából, ha világít akkor pedig 1,3-1,4V. a feszültsége. (Kikapcsolt állapotban természetesen 0V)

Kép


Kód: Egész kijelölése

switch (DSLOK) {
    case 0:
      if (((dslfreal) > 100) &&((dslfreal)) < 325) {
        DSLOKREGI = DSLOK;
        DSLOK = 1;
        }
      break;
      
     case 1:
       if (((dslfreal) < 150) || ((dslfreal) > 380)) {
          UPSTREAM = 0;
          DOWNSTREAM = 0;
          
          DSLOK = 0;
          }
      break;
    }
Válasz küldése