Obsah:

Wakeup Light: 7 krokov (s obrázkami)
Wakeup Light: 7 krokov (s obrázkami)

Video: Wakeup Light: 7 krokov (s obrázkami)

Video: Wakeup Light: 7 krokov (s obrázkami)
Video: Какого числа от 1 до 31, родился человек, такая у него и вся жизнь 2024, November
Anonim
Svetlo na prebudenie
Svetlo na prebudenie

Keď píšem tento návod, je polovica zimy na severnej pologuli, čo znamená krátke dni a dlhé noci. Som zvyknutý vstávať o 06:00 a v lete už bude svietiť slnko. V zime však svieti o 09:00, ak máme šťastie, že deň nie je zamračené (čo … nie je často).

Pred nejakým časom som čítal o „budiacom svetle“vyrobenom spoločnosťou Philips, ktoré sa používalo v Nórsku na simuláciu slnečného rána. Nikdy som si nič nekúpil, ale stále som premýšľal o tom, ako si ho vyrobiť, pretože vyrobiť si ho sám je zábavnejšie, ako si ho len kúpiť.

Zásoby:

Rám obrazu "Ribba" 50 x 40 cm od IKEA

perforovaný sololit z železiarstva

Vývojová doska STM8S103 prostredníctvom Ebay alebo iných

Hodiny v reálnom čase DS1307 (Mouser, Farnell, Conrad atď.)

Kryštál hodiniek 32768 Hz (Mouser, Farnell, Conrad atď.)

3V lítiový coincell + držiak coincell

BUZ11 alebo IRLZ34N N-kanálové MOSFETY (3x)

BC549 (alebo akýkoľvek iný NPN tranzistor)

toľko bielych, červených, modrých, zelených atď. LED diód, koľko chcete

niektoré odpory a kondenzátory (pozri schému)

Powerbrick, 12V až 20V, 3A alebo viac (napr. Napájanie starého notebooku)

Krok 1: Vstávanie bude (trochu) jednoduchšie

(Trochu) jednoduchšie vstávanie
(Trochu) jednoduchšie vstávanie

Ide o to, že je ťažké vstať z postele ráno, keď je ešte tma. A ak žijete blízko alebo dokonca nad polárnym kruhom, bude veľmi dlho tma. Na miestach, ako je Tromsö v Nórsku, sa vôbec nedostane svetla, pretože tam slnko zapadá do polovice novembra, aby sa znova objavilo v polovici Januari.

Philips teda simuloval východ slnka.

Spoločnosť Philips pomaly zvyšuje jas žiarovky, ktorá je pravdepodobne vyrobená pomocou niekoľkých LED diód, ale je skrytá za jedným difúzorom. Ich čas od vypnutia do plného jasu trvá 30 minút.

Budiace svetlá Philips nie sú také drahé, ale majú iba jednu farbu a vyzerajú trochu malé. Myslím si, že to môžem urobiť lepšie.

Krok 2: Viac farieb

Viac farieb
Viac farieb

Moje budiace svetlo používa štyri farby, bielu, červenú, modrú a zelenú. Najprv nájdite biele LED diódy, potom červené a vydržte niekoľko modrých a zelených LED diód. Moja predstava bola, že môžem simulovať nielen zvýšenie jasu, ale aj posunutie farby ranného svetla, a to tak, že začnem trochou bielej, o niečo neskôr pridám červenú a na záver zmiešam modrú a zelenú. Nie som si istý, či skutočne pripomína skutočné ranné svetlo, ale páči sa mi farebný displej tak, ako je teraz.

Ten môj je tiež rýchlejší ako svetlo prebúdzania Philips, namiesto 30 minút svetla Philips, moje prejde z 0% na 100% jasu za menej ako 5 minút. Moje slnko teda vychádza oveľa rýchlejšie.

POZNÁMKA:

Je veľmi VEĽMI ťažké odfotiť svetlo prebudenia. Skúsil som to s niekoľkými fotoaparátmi a smartfónmi, ale všetky obrázky, ktoré som urobil, nie sú skutočnou spravodlivosťou.

Krok 3: Sigmoidová krivka, blikanie a „rozlíšenie“

Sigmoidová krivka, bliká a
Sigmoidová krivka, bliká a

Samozrejme som chcel, aby bolo rozjasnenie čo najhladšie. Ľudské oči sú logaritmicky citlivé, čo znamená, že v úplnej tme sú citlivejšie než za denného svetla. Veľmi malý nárast jasu pri nízkych úrovniach „pociťuje“to isté ako oveľa väčší krok, keď má svetlo povedzme 40% jas. Aby som to dosiahol, použil som špeciálnu krivku nazývanú Sigmoid (alebo S-krivka), ktorá začína ako exponenciálna krivka, ktorá sa do polovice opäť vyrovná. Zistil som, že je to veľmi pekný spôsob zvýšenia (a zníženia) intenzity.

Taktovacia frekvencia mikrokontroléra (a časovačov) je 16 MHz a na vytvorenie troch signálov šírky impulzu (PWM) používam maximálne rozlíšenie TIMER2 (65536). Pulzy preto prichádzajú 16000000 /65536 = 244 krát za sekundu. To je ďaleko nad hranicou očí, aby ste videli akékoľvek blikanie.

LED diódy sú napájané signálom PWM, ktorý je vyrobený týmto 16 bittimerom mikrokontroléra STM8S103. Minimálne tento signál PWM môže byť ZAPNUTÝ a má dĺžku 1 impulz a zvyšných 65535 dĺžok impulzov je vypnutý.

LED diódy pripojené k tomuto signálu PM budú potom ZAPNUTÉ 1/65536-tý čas: 0,0015%

Maximálne sú ON 65536/65536-tý čas: 100%.

Krok 4: Elektronika

Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika

Mikrokontrolér

Mozog budiaceho svetla je mikrokontrolér STM8S103 od spoločnosti STMicroelectronics. Rád používam diely, ktoré majú na prácu dostatok schopností. Na jednoduchú úlohu, ako je táto, nie je potrebné používať mikrokontroléry STM32 (moje ďalšie obľúbené), ale Arduino UNO nestačilo, pretože som chcel tri signály PWM so 16 -bitovým rozlíšením a na UNO nie je časovač s tromi výstupnými kanálmi.

Hodiny v reálnom čase

Čas sa odčítava z hodín reálneho času DS1307, ktoré pracujú s kryštálom 32768 Hz a majú 3V záložnú batériu.

Aktuálny čas, deň a čas prebudenia sa nastavujú pomocou dvoch tlačidiel a zobrazujú sa na 16 -palcovom LCD displeji. Aby bola moja spálňa v noci skutočne tmavá, podsvietenie LCD displeja sa zapne iba vtedy, keď sú diódy LED jasnejšie ako podsvietenie a keď nastavujete čas, deň a čas prebudenia.

Moc

Napájanie pochádza zo starého prenosného zdroja, môj produkuje 12 V a môže dodávať 3 A. Keď máte iný zdroj napájania, môže byť potrebné nastaviť odpory v sérii s LED reťazcami. (Pozri nižšie)

LED diódy

LED diódy sú pripojené k napájaniu 12 V, zvyšok elektroniky je napájaný 5 V pomocou lineárneho regulátora 7805. V schéme je uvedené, že používam regulátor TO220, ktorý nie je potrebný, pretože mikrokontrolér, displej a hodiny v reálnom čase používajú iba niekoľko miliampérov. Moje hodiny používajú menšiu verziu TO80 modelu 7805 schopnú dodávať 150 mA.

Prepínanie LED reťazcov sa vykonáva pomocou N-kanálových MOSFETov. Opäť v schéme ukazuje iné zariadenia, ako som použil. Náhodou som mal namiesto novších MOSFETov IRLZ34N presne tri veľmi staré BUZ11 MOSFETy. Fungujú dobre

Samozrejme môžete vložiť toľko diód, koľko chcete, pokiaľ MOSFETy a napájanie zvládne prúd. V schéme som nakreslil iba jeden reťazec ľubovoľnej farby, v skutočnosti ich je niekoľko paralelných k iným reťazcom tejto farby.

Krok 5: Rezistory (pre LED diódy)

Rezistory (pre LEDky)
Rezistory (pre LEDky)

O odpore v led strunách. Biele a modré LED diódy majú zvyčajne pri plnom jase napätie 2,8 V.

Červené LED diódy majú iba 1,8 V, moje zelené LED diódy majú nad sebou 2 V pri plnom jase.

Ďalšou vecou je, že ich plný jas nie je rovnaký. Trvalo teda niekoľko experimentov, aby boli rovnako jasné (pre moje oči). Tým, že budú diódy LED rovnako jasné pri plnom jase, budú vyzerať rovnako jasne aj pri nižších úrovniach, signál šírky impulzu ich vždy zapne pri plnej jasu, ale počas dlhších a kratších časov sa vaše oči starajú o priemerovanie.

Začnite s týmto výpočtom. Napájací zdroj dodáva (v mojom prípade) 12V.

Štyri biele LED diódy v sérii potrebujú 4 x 2,8 V = 11,2 V, čo ponechá 0,8 V pre odpor.

Zistil som, že sú dostatočne jasné na 30 mA, takže odpor musí byť:

0,8 / 0,03 = 26,6 ohmov. Na schéme vidíte, že som vložil odpor 22 ohmov, čím sa diódy LED stali o niečo jasnejšie.

Modré LED diódy boli pri 30 mA príliš jasné, ale v porovnaní s peknými bielymi LED pri 15 mA mali pri 15 mA tiež asi 2,8 V, takže výpočet bol 4 x 2,8 V = 11,2 V a opäť zostalo 0,8 V

0,8 / 0,015 = 53,3 ohmov, preto som zvolil odpor 47 ohmov.

Moje červené LED diódy tiež vyžadujú, aby približne 15 mA bolo rovnako jasných ako ostatné, ale v tomto prúde majú iba 1,8 V. Takže by som mohol dať viac do série a stále mať nejaký „priestor“pre odpor.

Šesť červených diód mi poskytlo 6 x 1,8 = 10,8 V, takže cez odpor bolo 12 - 10,8 = 1,2 V.

1,2 / 0,015 = 80 ohmov, dotiahol som to na 68 ohmov. Rovnako ako ostatné, o niečo svetlejšie.

Zelené LED diódy, ktoré som použil, sú pri približne 20 mA také jasné ako ostatné. Potreboval som len niekoľko (rovnako ako modrých) a rozhodol som sa dať štyri do série. Pri 20mA majú nad sebou 2, 1V, čo dáva 3 x 2,1 = 8,4V

12 - 8,4 = 3,6 V pre odpor. A 3,6 / 0,02 = 180 ohmov.

Ak postavíte toto budiace svetlo, je nepravdepodobné, že budete mať rovnaké napájanie, budete musieť nastaviť počet LED v sérii a potrebné odpory.

Malý príklad. Povedzme, že máte napájací zdroj, ktorý dáva 20V. Rozhodol by som sa nastaviť 6 modrých (a bielych) LED v sérii, 6 x 3V = 18V, takže 2V pre odpor. Povedzme, že sa vám páči jas pri 40mA. Odpor potom musí byť 2V / 0,04 = 50 ohmov, odpor 47 ohmov bude v poriadku.

Odporúčam, aby ste bežnými (5 mm) LED diódami neprechádzali nad 50 mA. Niektorí toho zvládnu viac, ale rád som na bezpečnej strane.

Krok 6: Softvér

Celý kód je možné stiahnuť z:

gitlab.com/WilkoL/wakeup_light_stm8s103

Ak chcete postupovať podľa vysvetlenia, nechajte zdrojový kód otvorený vedľa zvyšku tohto návodu.

Main.c

Main.c najskôr nastaví hodiny, časovače a ďalšie periférie. Väčšinu „ovládačov“som napísal pomocou štandardnej knižnice od STMicroelectronics a ak máte k nim otázky, napíšte ich do komentára pod pokynom.

Eeprom

Kód „textu na zobrazenie“som nechal ako komentáre na vloženie textov do eepromu STM8S103. Nebol som si istý, či mám dostatok pamäte Flash pre celý svoj kód, a tak som sa pokúsil vložiť do eeprom čo najviac, aby mal program všetok flash. Nakoniec sa to ukázalo ako nepotrebné a text som presunul na blesk. Ale nechal som to ako komentovaný text v súbore main.c. Je pekné to mať, keď potrebujem urobiť niečo podobné neskôr (v inom projekte)

Eeprom sa stále používa, ale iba na uloženie času prebudenia.

Raz za sekundu

Po nastavení periférií kód skontroluje, či uplynula jedna sekunda (vykonané pomocou časovača).

Ponuka

Ak je to tak, skontroluje, či bolo tlačidlo stlačené, ak áno, vstúpi do ponuky, kde môžete nastaviť aktuálny čas, deň v týždni a čas prebudenia. Nezabudnite, že prepnutie z vypnutého stavu do plného jasu trvá asi 5 minút, preto nastavte čas prebudenia o niečo skôr.

Čas prebudenia je uložený v eeprom, aby aj po výpadku napájania „vedel“, kedy vás má zobudiť. Aktuálny čas je samozrejme uložený v hodinách reálneho času.

Porovnanie prúdu a času prebudenia

Keď nebolo stlačené žiadne tlačidlo, skontroluje aktuálny čas a porovná ho s časom prebudenia a dňom v týždni. Nechcem, aby ma to zobudilo cez víkend:-)

Väčšinu času nie je potrebné nič robiť, takže nastaví premennú „led“na VYPNUTÉ, inak na ZAPNUTÉ. Táto premenná sa kontroluje spolu so signálom „change_intensity“, ktorý tiež pochádza z časovača a je aktívny 244 -krát za sekundu. Keď je teda premenná „LED“zapnutá, intenzita sa zvýši 244 -krát za sekundu a keď je vypnutá, zníži sa 244 -krát za sekundu. Nárast však prebieha v jednotlivých krokoch, kde pokles je v krokoch po 16, čo znamená, že keď svetlo prebúdzania snáď urobí svoju prácu, vypne sa 16 -krát rýchlejšie, ale stále hladko.

Hladkosť a MIMO PAMÄTI

Hladkosť pochádza z výpočtu krivky Sigmoid. Výpočet je pomerne jednoduchý, ale je ho potrebné vykonať v premenných s pohyblivou rádovou čiarkou (štvorhra) kvôli funkcii exp (), pozri súbor sigmoid.c.

V štandardnej situácii kozmický kompilátor / linker nemá podporu pre premenné s pohyblivou rádovou čiarkou. Zapnutie je jednoduché (keď ho nájdete), ale prichádza s nárastom veľkosti kódu. Tento nárast bol príliš veľký na to, aby sa kód v kombinácii s funkciou sprintf () zmestil do pamäte Flash. A táto funkcia je potrebná na prevádzanie čísel na text na displeji.

Itoa ()

Na vyriešenie tohto problému som vytvoril funkciu itoa (). Toto je funkcia Integer To Ascii, ktorá je pomerne bežná, ale nie je zahrnutá v štandardnej knižnici STMicroelectronics ani v kozmických knižniciach.

Krok 7: IKEA (čo by sme bez nich urobili)

IKEA (čo by sme bez nich urobili)
IKEA (čo by sme bez nich urobili)
IKEA (čo by sme bez nich urobili)
IKEA (čo by sme bez nich urobili)
IKEA (čo by sme bez nich urobili)
IKEA (čo by sme bez nich urobili)

Obraz z bol kúpený v IKEA. Jedná sa o rám Ribba s rozmermi 50 x 40 cm. Tento rám je dosť hrubý, a preto je ideálny na skrytie elektroniky za ním. Namiesto plagátu alebo obrázku som vložil kus perforovanej sololitovej dosky. Môžete si ho kúpiť v železiarstve, kde sa mu niekedy hovorí „posteľná doska“. Má v sebe malé otvory, vďaka ktorým je ideálny pre osadenie LED diód. Otvory v mojej doske boli bohužiaľ o niečo väčšie ako 5 mm, takže som na „namontovanie“LED diód musel použiť horúce lepidlo.

V strede tvrdej dosky som vytvoril obdĺžnikový otvor pre displej 16x2 a zatlačil ho dovnútra. Na tomto displeji visí doska plošných spojov so všetkou elektronikou a nie je namontovaná na nič iné.

Dierovaná tvrdá doska bola nastriekaná čiernou farbou, ale za rohožku. Do rámu som vyvŕtal dva otvory pre tlačidlá na nastavenie času a dátumu, pretože rám je dosť hrubý, musel som otvory na vnútornej strane rámu rozšíriť, aby gombíky dostatočne trčali.

Odporúča: