Tartalomjegyzék:

Több elektronikus gyertya: 3 lépés
Több elektronikus gyertya: 3 lépés

Videó: Több elektronikus gyertya: 3 lépés

Videó: Több elektronikus gyertya: 3 lépés
Videó: ELSZÍVTAM ÉLETEM ELSŐ CIGIJÉT. vagy nyalókáját? #shorts 2024, November
Anonim
Több elektronikus gyertya
Több elektronikus gyertya

Elektronikus gyertyákat sokszor tettek közzé az Instructables -en, akkor miért pont ezt?

Itthon vannak ezek a kis félig átlátszó karácsonyi házak, amelyek LED-es betekintéssel és kis akkumulátorral rendelkeznek. Néhány házban gyertyahatású LED -ek vannak, néhányban pedig csak világítanak. A kis elemek viszonylag gyorsan lemerülnek, és mivel minden házban gyertyahatást akartam elérni, úgy döntöttem, hogy PIC -projektet készítek. Természetesen Arduino projektré is alakíthatja.

Tehát mitől különleges ez az elektronikus gyertya? A PIC és az Arduino mindegyikében megtalálható a Pulse Width Modulation (PWM) hardver, amellyel gyertyahatást lehet létrehozni egy LED segítségével, de az én esetemben 5 független elektronikus gyertyát szerettem volna egy vezérlővel használni, de ez nincs jelen, legalábbis nem hogy tudom. Az általam használt megoldás az volt, hogy ezt az öt független PWM jelet teljesen szoftverben állítsam elő.

1. lépés: Impulzusszélesség -moduláció a szoftverben

Az impulzusszélesség -modulációt többször leírták, pl. ebben az Arduino cikkben:

A PIC és az Arduino speciális PWM hardverekkel rendelkezik, amelyek megkönnyítik a PWM jel előállítását. Ha egy vagy több PWM jelet akarunk létrehozni a szoftverben, két időzítőre van szükségünk:

  1. Egy időzítő a PWM frekvencia előállítására
  2. Egy időzítő, amellyel a PWM munkaciklus generálható

Mindkét időzítő generál és megszakít, amikor befejeződött, és így a PWM jel kezelése teljesen megszakított hajtással történik. A PWM frekvenciához a PIC 0. időzítőjét használom, és hagyom, hogy túlcsorduljon. 8 MHz -es belső oszcillátorórával és 64 előre beállított skálával a képlet a következő: Fosc / 4 /256 /64 = 2.000.000 / 256 /64 = 122 Hz vagy 8, 2 ms. A frekvenciának elég magasnak kell lennie ahhoz, hogy az emberi szem ne tudja észlelni. Ehhez elegendő a 122 Hz -es frekvencia. Az időzítő megszakítási rutin egyetlen dolga, hogy lemásolja az új PWM ciklus működési ciklusát, és bekapcsolja az összes LED -et. Ezt mind az 5 LED -re függetlenül teszi.

A PWM munkaciklus kezelésére alkalmas időzítő értéke attól függ, hogyan végezzük el a gyertyahatást. Megközelítésemben ezt a hatást úgy szimulálom, hogy a működési ciklust 3 értékkel megnövelem a LED fényerejének növeléséhez, és 25 értékkel csökkentem a LED fényerejének csökkentéséhez. Ily módon gyertyaszerű hatást kap. Mivel minimum 3 értéket használok, a teljes munkaciklus egy bájttal történő vezérlésének lépései 255 /3 = 85. Ez azt jelenti, hogy a PWM munkaciklus -időzítőnek 85 -ször nagyobb gyakorisággal kell futnia, mint a PWM frekvencia időzítő, amely 85 * 122 = 10,370 Hz.

A PWM munkaciklushoz a PIC 2. időzítőjét használom. Ez egy időzítő automatikus újratöltéssel, és a következő képletet használja: Period = (Reload + 1) * 4 * Tosc * Timer2 prescale value. 191 újratöltéssel és 1 előskálával (191 + 1) * 4 * 1/8.000.000 * 1 = 96 us vagy 10.416 Hz periódust kapunk. A PWM munkaciklus megszakítja a rutinellenőrzést, ha a munkaciklus elmúlt, és kikapcsolja a LED -et, amelynél a munkaciklus befejeződött. Ha a munkaciklus nem teljesül, akkor a munkaciklus -számlálót 3 -mal csökkenti, és véget vet a rutinnak. Ezt minden LED -re függetlenül teszi. Az én esetemben ez a megszakítási rutin körülbelül 25 munkanapot vesz igénybe, és mivel ezt minden 96 -nak hívják, már a CPU 26% -át használják a PWM munkaciklus kezelésére a szoftverekben.

2. lépés: A hardver és a szükséges összetevők

A hardver és a szükséges alkatrészek
A hardver és a szükséges alkatrészek

A vázlatos diagram a végeredményt mutatja. Bár önállóan csak 5 LED -et irányítok, hozzáadtam egy 6. LED -et, amely együtt működik az 5 másik LED egyikével. Mivel a PIC nem tud két LED -et meghajtani egy porttűre, hozzáadtam egy tranzisztorot. Az elektronikát egy 6 voltos / 100 mA -es egyenáramú adapter táplálja, és egy alacsony cseppfeszültség -szabályozó segítségével stabil 5 V -ot állít elő.

A projekthez a következő összetevőkre van szüksége:

  • 1 PIC mikrokontroller 12F615
  • 2 kerámia kondenzátor: 2 * 100nF
  • Ellenállások: 1 * 33k, 6 * 120 Ohm, 1 * 4k7
  • 6 Narancssárga vagy sárga LED, nagy fényerő
  • 1 BC557 tranzisztor vagy azzal egyenértékű
  • 1 elektrolit kondenzátor 100 uF / 16 V
  • 1 kis esésű feszültségszabályozó LP2950Z

Az áramkört kenyérsütő táblára építheti, és nem igényel sok helyet, amint az a képen is látható.

3. lépés: A fennmaradó szoftver és eredmény

A szoftver fennmaradó része a fő hurok. A fő hurok a működési ciklus véletlenszerű beállításával növeli vagy csökkenti a LED -ek fényerejét. Mivel csak 3 -as értékkel növekszünk, és 25 -tel csökkenünk, gondoskodnunk kell arról, hogy a csökkenések ne történjenek olyan gyakran, mint a növekmények.

Mivel nem használtam semmilyen könyvtárat, egy véletlenszerű generátort kellett készítenem egy lineáris visszacsatolási eltolásregiszter segítségével, lásd:

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

A gyertyahatást befolyásolja az, hogy milyen gyorsan változik a PWM üzemciklus, így a főhurok körülbelül 10 ms késleltetést használ. Ezt az időt úgy állíthatja be, hogy a gyertyahatást igényei szerint módosítsa.

A mellékelt videó bemutatja a végeredményt, ahol a LED fölött sapkát használtam a hatás javítására.

A JAL programozási nyelvet használtam ehhez a projekthez, és csatoltam a forrásfájlt.

Jó szórakozást, hogy ezt az utasítást, és várja a reakciókat és eredményeket.

Ajánlott: