Obsah:
2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-13 06:58
Elektronické sviečky boli mnohokrát zverejnené na stránke Instructables, tak prečo práve táto?
Doma mám tieto malé polopriehľadné vianočné domčeky, ktoré majú LED prehľad a malú batériu. Niektoré domy majú LED diódy so sviečkovým efektom a niektoré majú iba rozsvietené LED diódy. Malé batérie sa vybíjajú relatívne rýchlo a keďže som chcel mať vo všetkých domoch sviečkový efekt, rozhodol som sa urobiť z toho projekt PIC. Samozrejme ho môžete zmeniť aj na projekt Arduino.
Čím je teda táto elektronická sviečka výnimočná? PIC a Arduino majú na palube hardvér Pulse Width Modulation (PWM), ktorý je možné použiť na vytvorenie efektu sviečky pomocou diódy LED, ale v mojom prípade som chcel mať 5 nezávislých elektronických sviečok pomocou jedného ovládača a ten nie je k dispozícii, prinajmenšom nie že to viem. Riešenie, ktoré som použil, je vytvoriť týchto päť nezávislých signálov PWM úplne softvérovo.
Krok 1: Pulzná šírková modulácia v softvéri
Modulovanie šírky impulzu bolo viackrát popísané, napr. v tomto článku Arduino:
PIC a Arduino majú na doske špeciálny hardvér PWM, ktorý uľahčuje generovanie tohto signálu PWM. Ak chceme v softvéri vytvoriť jeden alebo viac signálov PWM, potrebujeme dva časovače:
- Jeden časovač, ktorý sa používa na generovanie frekvencie PWM
- Jeden časovač, ktorý sa používa na generovanie pracovného cyklu PWM
Oba časovače generujú a prerušujú po dokončení, a tak sa spracovanie signálu PWM vykonáva s úplným prerušením. Pre frekvenciu PWM používam časovač 0 PIC a nechám ho pretekať. S hodinami interného oscilátora 8 MHz a predvoľbou 64 vzorec je: Fosc / 4 /256 /64 = 2 000 000 /256 /64 = 122 Hz alebo 8, 2 ms. Frekvencia musí byť dostatočne vysoká, aby ju ľudské oko nezistilo. Frekvencia 122 Hz je na to dostačujúca. Jediná vec, ktorú táto rutina prerušovania časovača robí, je skopírovanie pracovného cyklu pre nový cyklus PWM a zapnutie všetkých LED diód. Robí to pre všetkých 5 LED diód nezávisle.
Hodnota časovača na zvládnutie pracovného cyklu PWM závisí od toho, ako vytvoríme sviečkový efekt. Vo svojom prístupe simulujem tento efekt zvýšením pracovného cyklu o hodnotu 3, aby sa zvýšil jas LED a znížil o 25, aby sa jas LED znížil. Takýmto spôsobom získate efekt podobný sviečke. Pretože používam minimálnu hodnotu 3, počet krokov na ovládanie celého pracovného cyklu s jedným bajtom je 255/3 = 85. To znamená, že časovač pracovného cyklu PWM musí bežať s frekvenciou 85 -násobkom frekvencie Frekvenčný časovač PWM, ktorý je 85 * 122 = 10,370 Hz.
Pre pracovný cyklus PWM používam časovač 2 PIC. Toto je časovač s automatickým opätovným načítaním a používa nasledujúci vzorec: Obdobie = (Znovu načítať + 1) * 4 * Tosc * Predvolená hodnota časovača2. S opätovným načítaním 191 a preskálom 1 dostaneme periódu (191 + 1) * 4 * 1/8 000 000 * 1 = 96 us alebo 10,416 Hz. Rutina prerušenia pracovného cyklu PWM kontroluje, či pracovný cyklus prešiel, a vypne LED, pre ktorú je pracovný cyklus dokončený. Ak pracovný cyklus neprejde, zníži počítadlo pracovného cyklu o 3 a ukončí rutinu. Vykonáva to pre všetky LED diódy nezávisle. V mojom prípade táto rutina prerušenia trvá asi 25 nás a keďže sa nazýva každých 96 us, už 26% CPU sa používa na správu pracovného cyklu PWM v softvéri.
Krok 2: Hardvér a požadované súčasti
Schematický diagram ukazuje konečný výsledok. Napriek tomu, že nezávisle ovládam iba 5 diód LED, pridal som 6. diódu LED, ktorá beží spoločne s jednou z ďalších 5 diód LED. Pretože PIC nemôže poháňať dve LED diódy na jednom pine portu, pridal som tranzistor. Elektronika je napájaná jednosmerným adaptérom 6 V / 100 mA a pomocou stabilizátora nízkeho napätia vytvára stabilných 5 voltov.
Na tento projekt potrebujete nasledujúce komponenty:
- 1 PIC mikrokontrolér 12F615
- 2 keramické kondenzátory: 2 * 100nF
- Rezistory: 1 * 33k, 6 * 120 Ohm, 1 * 4k7
- 6 oranžových alebo žltých diód LED, vysoký jas
- 1 tranzistor BC557 alebo ekvivalent
- 1 elektrolytický kondenzátor 100 uF / 16 V
- 1 regulátor nízkeho napätia LP2950Z
Obvod môžete postaviť na doske a nevyžaduje veľa miesta, ako je vidieť na obrázku.
Krok 3: Zostávajúci softvér a výsledok
Zostávajúca časť softvéru je hlavná slučka. Hlavná slučka zvyšuje alebo znižuje jas LED diód náhodným nastavením pracovného cyklu. Pretože zvyšujeme iba hodnotu 3 a znižujeme hodnotu 25, musíme dbať na to, aby k zníženiu nedochádzalo tak často ako k prírastkom.
Pretože som nepoužil žiadne knižnice, musel som vytvoriť náhodný generátor pomocou posuvného registra lineárnej spätnej väzby, pozri:
en.wikipedia.org/wiki/Linear-feedback_shif…
Efekt sviečky je ovplyvnený tým, ako rýchlo sa zmení pracovný cyklus PWM, takže hlavná slučka používa oneskorenie asi 10 ms. Tento čas môžete prispôsobiť svojim požiadavkám a zmeniť tak efekt sviečky.
Priložené video ukazuje konečný výsledok, kde som na vylepšenie efektu použil krytku nad diódou LED.
Ako programovací jazyk tohto projektu som použil JAL a pripojil som zdrojový súbor.
Bavte sa pri tvorbe tohto návodu a tešte sa na vaše reakcie a výsledky.