Mitu elektroonilist küünalt: 3 sammu
Mitu elektroonilist küünalt: 3 sammu
Anonim
Mitu elektroonilist küünalt
Mitu elektroonilist küünalt

Elektroonilisi küünlaid on Instructablesis mitu korda postitatud, miks siis see?

Kodus on mul need väikesed poolläbipaistvad jõulumajad, millel on LED-ülevaade ja väike aku. Mõnes majas on küünlaefektiga valgusdioodid ja mõnes lihtsalt põlevad LED -id. Väikesed patareid tühjenevad suhteliselt kiiresti ja kuna tahtsin kõigis majades küünla efekti saada, otsustasin teha sellest PIC -projekti. Muidugi saate selle muuta ka Arduino projektiks.

Mis teeb selle elektroonilise küünla eriliseks? Kõikidel PIC -il ja Arduino pardal on Pulse Width Modulation (PWM) riistvara, mida saab kasutada LED -i abil küünlaefekti loomiseks, kuid minu puhul tahtsin, et ühe kontrolleri abil oleks 5 sõltumatut elektroonilist küünalt, kuid seda pole, vähemalt mitte et ma tean ära. Lahendus, mida ma kasutasin, on muuta need viis sõltumatut PWM -signaali täielikult tarkvaras.

Samm: impulsi laiuse moduleerimine tarkvaras

Impulsi laiuse modulatsiooni on kirjeldatud mitu korda, nt. selles Arduino artiklis:

PIC ja Arduino pardal on spetsiaalne PWM -riistvara, mis muudab selle PWM -signaali genereerimise lihtsaks. Kui tahame tarkvaras teha ühte või mitut PWM -signaali, vajame kahte taimerit:

  1. Üks taimer, mida kasutatakse PWM sageduse genereerimiseks
  2. Üks taimer, mida kasutatakse PWM töötsükli genereerimiseks

Mõlemad taimerid genereerivad ja katkestavad, kui need on lõpetatud, nii et PWM -signaali käsitlemine toimub täielikult katkestusega. PWM -sageduse jaoks kasutan PIC -i taimerit 0 ja lasen sellel üle voolata. Sisemise ostsillaatorikellaga 8 MHz ja eelseadistusega 64 on valem järgmine: Fosc / 4 /256 /64 = 2.000.000 / 256 /64 = 122 Hz või 8, 2 ms. Sagedus peab olema piisavalt kõrge, et inimsilm seda ei tuvastaks. Selleks piisab sagedusest 122 Hz. Ainus asi, mida see taimeriga katkestamise rutiin teeb, on uue PWM -tsükli töötsükli kopeerimine ja kõigi LED -ide sisselülitamine. See teeb seda kõigi 5 LED -i jaoks eraldi.

PWM -töötsükli käsitlemiseks vajaliku taimeri väärtus sõltub sellest, kuidas me küünla efekti teeme. Oma lähenemisviisis simuleerin seda efekti, suurendades töötsüklit väärtusega 3, et suurendada LED -i heledust, ja vähendades seda väärtusega 25, et vähendada LED -i heledust. Sel viisil saate küünlalaadse efekti. Kuna kasutan miinimumväärtust 3, on kogu töötsükli ühe baidiga juhtimiseks vajalike sammude arv 255/3 = 85. See tähendab, et PWM töötsükli taimer peab töötama sagedusega, mis on 85 korda suurem kui PWM sagedustaimer, mis on 85 * 122 = 10,370 Hz.

PWM -töötsükli jaoks kasutan PIC -i taimerit 2. See on automaatse uuestilaadimisega taimer ja kasutab järgmist valemit: Periood = (uuesti laadimine + 1) * 4 * Tosc * Taimer2 eelskaala väärtus. Taaslaadimisel 191 ja eelskaalal 1 saame perioodi (191 + 1) * 4 * 1/8.000.000 * 1 = 96 us või 10.416 Hz. PWM töötsükkel katkestab rutiinse kontrolli, kui töötsükkel on möödas, ja lülitab välja LED, mille töötsükkel on lõppenud. Kui töötsüklit ei ületata, vähendab see töötsükli loendurit 3 -ga ja lõpetab rutiini. See teeb seda kõigi LED -ide jaoks iseseisvalt. Minu puhul võtab see katkestusrutiin umbes 25 inimest ja kuna seda kutsutakse iga 96 inimese järel, kasutatakse juba 26% protsessorist tarkvara PWM -töötsükli haldamiseks.

Samm: riistvara ja vajalikud komponendid

Riistvara ja vajalikud komponendid
Riistvara ja vajalikud komponendid

Skemaatiline diagramm näitab lõpptulemust. Kuigi ma juhtin iseseisvalt ainult 5 LED -i, lisasin 6. LED -i, mis töötab koos ühega 5 -st LED -ist. Kuna PIC ei saa ühe pordi tihvtiga kahte LED -i juhtida, lisasin transistori. Elektroonikat toidab 6 -voldine / 100 mA alalisvooluadapter ja see kasutab stabiilse 5 -voldise madalpingeregulaatorit.

Selle projekti jaoks vajate järgmisi komponente:

  • 1 PIC mikrokontroller 12F615
  • 2 keraamilist kondensaatorit: 2 * 100 nF
  • Takistid: 1 * 33k, 6 * 120 Ohm, 1 * 4k7
  • 6 oranži või kollast LED -i, kõrge heledus
  • 1 BC557 transistor või samaväärne
  • 1 elektrolüütkondensaator 100 uF / 16 V
  • 1 madalpingeregulaator LP2950Z

Ahela saate ehitada leivaplaadile ja see ei nõua palju ruumi, nagu on näha pildilt.

3. samm: järelejäänud tarkvara ja tulemus

Ülejäänud osa tarkvarast on peamine silmus. Põhiahel suurendab või vähendab valgusdioodide heledust, reguleerides töötsüklit juhuslikult. Kuna me suurendame ainult väärtusega 3 ja vähendame väärtusega 25, peame veenduma, et kahanemisi ei juhtu nii sageli kui juurdekasvu.

Kuna ma ei kasutanud ühtegi raamatukogu, pidin tegema lineaarse tagasiside nihkeregistri abil juhusliku generaatori, vt:

en.wikipedia.org/wiki/Linear-feedback_shif…

Küünla efekti mõjutab see, kui kiiresti PWM töötsüklit muudetakse, nii et põhiahel kasutab umbes 10 ms viivitust. Saate seda aega kohandada, et muuta küünlaefekti vastavalt oma vajadustele.

Lisatud video näitab lõpptulemust, kus kasutasin efekti parandamiseks LED-i kohal korki.

Kasutasin selle projekti programmeerimiskeelena JAL -i ja lisasin lähtefaili.

Lõbutsege selle juhendi tegemisel ja oodake oma reaktsioone ja tulemusi.