Obsah:

Wakeup Light: 7 kroků (s obrázky)
Wakeup Light: 7 kroků (s obrázky)

Video: Wakeup Light: 7 kroků (s obrázky)

Video: Wakeup Light: 7 kroků (s obrázky)
Video: Mým úkolem je pozorovat les a tady se děje něco zvláštního. 2024, Listopad
Anonim
Wakeup Light
Wakeup Light

Když píšu tento návod, je polovina zimy na severní polokouli, což znamená krátké dny a dlouhé noci. Jsem zvyklý vstávat v 06:00 a v létě do té doby bude svítit slunce. V zimě však svítí v 09:00, pokud máme štěstí, že máme den, kdy není zataženo (což je … není často).

Před nějakou dobou jsem četl o „probuzení světla“od společnosti Philips, které bylo v Norsku použito k simulaci slunečného rána. Nikdy jsem si žádný nepořídil, ale stále jsem přemýšlel o jeho výrobě, protože vyrobit si ho sám je zábavnější než si ho jen koupit.

Zásoby:

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

perforovaný sololit z železářství

Vývojová deska STM8S103 přes Ebay nebo jiné

Hodiny reálného času DS1307 (Mouser, Farnell, Conrad atd.)

Krystal hodinek 32768 Hz (Mouser, Farnell, Conrad atd.)

3V lithiový coincell + držák coincell

BUZ11 nebo IRLZ34N N-kanálové MOSFETy (3x)

BC549 (nebo jakýkoli jiný NPN tranzistor)

tolik bílých, červených, modrých, zelených atd. LED diod, kolik chcete

některé odpory a kondenzátory (viz schéma)

Powerbrick, 12V až 20V, 3A nebo více (např. Napájení starého notebooku)

Krok 1: Usnadnění vstávání (trochu)

Usnadnění vstávání (trochu)
Usnadnění vstávání (trochu)

Myšlenka je, že je těžké vstát z postele ráno, když je ještě tma. A pokud žijete blízko nebo dokonce nad polárním kruhem, bude tma velmi dlouhá. V místech, jako je Tromsö v Norsku, nebude vůbec svítit, protože tam slunce zapadá v polovině listopadu, aby se znovu objevilo v polovině Januari.

Philips tedy simuloval východ slunce.

Společnost Philips pomalu zvyšuje jas lampy, která je pravděpodobně vyrobena z několika LED diod, ale je skryta za jediným difuzorem. Jejich doba od vypnutí do plného jasu trvá 30 minut.

Budící světla Philips nejsou tak drahá, ale mají pouze jednu barvu a vypadají trochu malá. Myslím, že to dokážu lépe.

Krok 2: Více barev

Více barev
Více barev

Moje budící světlo používá čtyři barvy, bílou, červenou, modrou a zelenou. Nejprve získejte bílé LED diody, pak přijďte červené a vydržte několik modrých a zelených LED diod. Moje představa byla, že bych mohl simulovat nejen zvýšení jasu, ale také posun barvy ranního světla, a to tak, že začnu trochou bílé, o něco později přidáme červenou a nakonec smícháme modrou a zelenou. Nejsem si jistý, že ve skutečnosti připomíná skutečné ranní světlo, ale líbí se mi barevný displej, jaký je teď.

Ten můj je také rychlejší než světlo probuzení Philips, místo 30 minut světla Philips jde moje z 0% na 100% jasu za méně než 5 minut. Moje slunce tedy vychází mnohem rychleji.

POZNÁMKA:

Je velmi obtížné vytvářet obrázky mého probouzejícího světla, zkoušel jsem to s několika fotoaparáty a smartphony, ale všechny obrázky, které jsem vytvořil, neodpovídají skutečné věci.

Krok 3: Sigmoidová křivka, blikání a „rozlišení“

Sigmoidová křivka, blikání a
Sigmoidová křivka, blikání a

Samozřejmě jsem chtěl, aby bylo rozjasnění co nejhladší. Lidské oči mají logaritmickou citlivost, což znamená, že v úplné tmě jsou citlivější než za plného denního světla. Velmi malý nárůst jasu při nízkých úrovních „cítí“totéž jako mnohem větší krok, když má světlo řekněme 40% jas. Abych toho dosáhl, použil jsem speciální křivku zvanou Sigmoid (neboli S-křivka), tato křivka začíná jako exponenciální křivka, která se v půli cesty opět vypíná. Zjistil jsem, že je to velmi pěkný způsob, jak zvýšit (a snížit) intenzitu.

Taktovací frekvence mikrokontroléru (a časovačů) je 16 MHz a pro vytvoření tří signálů šířky pulzu (PWM) používám maximální rozlišení TIMER2 (65536). Impulzy tedy přicházejí 16000000 /65536 = 244krát za sekundu. To je hodně nad hranicí očí, abychom viděli nějaké blikání.

LED diody jsou napájeny signálem PWM, který je vytvořen pomocí tohoto 16 bittimeru mikrokontroléru STM8S103. Minimálně může být tento signál PWM zapnutý o délce 1 pulsu a zbývajících 65535 pulsů je vypnut.

LED diody připojené k tomuto signálu PM pak budou ZAPNUTY 1/65536-té doby: 0,0015%

Maximálně jsou ZAPNUTY 65536/65536-té doby: 100%.

Krok 4: Elektronika

Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika

Mikrokontrolér

Mozkem budícího světla je mikrokontrolér STM8S103 od společnosti STMicroelectronics. Rád pro práci používám díly, které mají dostatek funkcí. Pro jednoduchý úkol, jako je tento, není nutné používat mikrokontroléry STM32 (moje další oblíbené), ale Arduino UNO nestačilo, protože jsem chtěl tři signály PWM se 16bitovým rozlišením a na UNO není časovač se třemi výstupními kanály.

Hodiny v reálném čase

Čas se odečítá z hodin reálného času DS1307, které pracují s krystalem 32768 Hz a mají záložní baterii 3V.

Nastavení aktuálního času, dne a času probuzení se provádí pomocí dvou tlačítek a je zobrazeno na displeji LCD 16 x 2 znaků. Aby byla moje ložnice v noci opravdu tmavá, podsvícení LCD displeje se zapne pouze tehdy, když jsou LED diody jasnější než podsvícení a když nastavujete čas, den a čas probuzení.

Napájení

Napájení pochází ze starého napájecího zdroje notebooku, můj produkuje 12V a může dodávat 3A. Když máte jiný napájecí zdroj, může být nutné upravit odpory v sérii s LED řetězci. (Viz. níže)

LEDky

LED diody jsou připojeny k napájení 12V, ostatní elektronika pracuje na 5V pomocí lineárního regulátoru 7805. Ve schématu to říká, že používám regulátor TO220, který není potřeba, protože mikrokontrolér, displej a hodiny reálného času používají jen několik miliampérů. Moje hodiny používají menší verzi 7805 TO92 schopnou dodávat 150mA.

Přepínání LED řetězců se provádí pomocí N-kanálových MOSFETů. Opět ve schématu ukazuje jiná zařízení, než jsem použil. Namísto novějších MOSFETů IRLZ34N jsem náhodou měl přesně tři velmi staré BUZ11 MOSFETy. Fungují dobře

Samozřejmě můžete vložit libovolný počet LED diod, pokud MOSFETy a napájecí zdroj zvládnou proud. Ve schématu jsem nakreslil pouze jeden řetězec jakékoli barvy, ve skutečnosti jich je několik paralelně k ostatním řetězcům této barvy.

Krok 5: Rezistory (pro LED)

Rezistory (pro LED diody)
Rezistory (pro LED diody)

O odporech v LED řetězcích. Bílé a modré LED diody mají obvykle při plném jasu napětí 2,8 V.

Červené diody mají jen 1,8 V, moje zelené LED mají nad sebou 2 V při plném jasu.

Další věcí je, že jejich plný jas není stejný. Trvalo tedy trochu experimentování, aby byly stejně jasné (pro mé oči). Tím, že budou LED diody stejně jasné při plném jasu, budou vypadat stejně jasně i při nižších úrovních, signál šířky pulsu je vždy zapne při plné jasu, ale během delších a kratších časů se vaše oči starají o průměrování.

Začněte s tímto výpočtem. Napájecí zdroj dodává (v mém případě) 12V.

Čtyři bílé LED diody v sérii potřebují 4 x 2,8 V = 11,2 V, toto ponechá 0,8 V pro odpor.

Zjistil jsem, že jsou dostatečně jasné při 30 mA, takže odpor musí být:

0,8 / 0,03 = 26,6 ohmů. Ve schématu vidíte, že jsem vložil odpor 22 ohmů, čímž se LED diody trochu více rozjasnily.

Modré LED diody byly při 30 mA příliš jasné, ale ve srovnání s bílými LED při 15 mA měly také asi 2,8 V nad nimi při 15 mA, takže výpočet byl 4 x 2,8 V = 11,2 V, což opět ponechalo 0,8 V

0,8 / 0,015 = 53,3 ohmů, takže jsem zvolil odpor 47 ohmů.

Moje červené diody také potřebují přibližně 15 mA, aby byly stejně jasné jako ostatní, ale v tomto proudu mají pouze 1,8 V. Takže jsem mohl dát více do série a stále mít nějaký „prostor“pro odpor.

Šest červených diod mi dalo 6 x 1,8 = 10,8 V, takže přes odpor bylo 12 - 10,8 = 1,2 V

1,2 / 0,015 = 80 ohmů, udělal jsem to na 68 ohmů. Stejně jako ostatní, trochu jasnější.

Zelené diody, které jsem použil, jsou stejně jasné jako ostatní při asi 20 mA. Potřeboval jsem jen pár (stejně jako ty modré) a rozhodl jsem se dát čtyři do série. Při 20mA mají nad sebou 2, 1V, což dává 3 x 2,1 = 8,4V

12 - 8,4 = 3,6 V pro odpor. A 3,6 / 0,02 = 180 ohmů.

Pokud postavíte toto budící světlo, je nepravděpodobné, že budete mít stejný napájecí zdroj, budete muset upravit počet LED diod v sérii a potřebné odpory.

Malý příklad. Řekněme, že máte napájení, které dává 20V. Rozhodl bych se nastavit 6 modrých (a bílých) LED v sérii, 6 x 3V = 18V, takže 2V pro odpor. Řekněme, že se vám líbí jas při 40mA. Rezistor pak musí být 2V / 0,04 = 50 ohmů, odpor 47 ohmů bude v pořádku.

Doporučuji, abyste s běžnými (5 mm) diodami nepřekročili hodnotu vyšší než 50 mA. Někteří toho zvládnou víc, ale já jsem rád na jistotě.

Krok 6: Software

Veškerý kód lze stáhnout z:

gitlab.com/WilkoL/wakeup_light_stm8s103

Pokud chcete postupovat podle vysvětlení, ponechte zdrojový kód otevřený vedle zbytku tohoto pokynu.

Main.c

Main.c nejprve nastaví hodiny, časovače a další periferie. Většinu „ovladačů“jsem napsal pomocí standardní knihovny od STMicroelectronics a pokud k nim máte nějaké dotazy, napište je do komentáře pod pokyny.

Eeprom

Kód „textu k zobrazení“, který jsem použil k vložení textů do eepromu STM8S103, jsem nechal jako komentáře. Nebyl jsem si jistý, že mám dostatek paměti flash pro celý svůj kód, a tak jsem se pokusil dát do eeprom co nejvíce, abych měl pro program veškerý flash. Nakonec se ukázalo, že to není nutné, a přesunul jsem text na blesk. Ale nechal jsem to jako komentovaný text v souboru main.c. Je hezké to mít, když potřebuji udělat něco podobného později (v jiném projektu)

Eeprom se stále používá, ale pouze pro uložení času probuzení.

Jednou za sekundu

Po nastavení periferií kód zkontroluje, zda uplynula jedna sekunda (provedeno pomocí časovače).

Jídelní lístek

V takovém případě zkontroluje, zda bylo stisknuto tlačítko, pokud ano, vstoupí do nabídky, kde můžete nastavit aktuální čas, den v týdnu a čas probuzení. Pamatujte, že přechod z vypnutého do plného jasu trvá asi 5 minut, takže nastavte čas probuzení o něco dříve.

Doba probuzení je uložena v eepromu, takže i po výpadku proudu „bude vědět“, kdy vás probudí. Aktuální čas je samozřejmě uložen v hodinách reálného času.

Porovnání proudu a doby probuzení

Když nebylo stisknuto žádné tlačítko, zkontroluje aktuální čas a porovná jej s časem probuzení a dnem v týdnu. Nechci, aby mě to vzbudilo o víkendu:-)

Většinu času není třeba nic dělat, takže nastaví proměnnou „LED“na OFF, jinak na ON. Tato proměnná je kontrolována společně se signálem „change_intensity“, který také pochází z časovače a je aktivní 244krát za sekundu. Když je tedy proměnná „LED“zapnutá, intenzita se zvýší 244krát za sekundu a když je vypnutá, sníží se 244krát za sekundu. Zvýšení však probíhá v jednotlivých krocích, kde pokles je v krocích po 16, což znamená, že když světlo probuzení snad vykonalo svou práci, vypne se 16krát rychleji, ale stále hladce.

Hladkost a MIMO PAMĚŤ

Hladkost pochází z výpočtu křivky Sigmoid. Výpočet je docela jednoduchý, ale je třeba ho provést v proměnných s plovoucí desetinnou čárkou (čtyřhra) kvůli funkci exp (), viz soubor sigmoid.c.

Ve standardní situaci kompilátor / linker Cosmic nemá podporu pro proměnné s pohyblivou řádovou čárkou. Zapnutí je snadné (jakmile ho najdete), ale přichází s nárůstem velikosti kódu. Toto zvýšení bylo příliš velké na to, aby se kód vešel do paměti flash v kombinaci s funkcí sprintf (). A tato funkce je potřebná pro převod čísel na text pro zobrazení.

Itoa ()

K vyřešení tohoto problému jsem vytvořil funkci itoa (). Toto je funkce Integer To Ascii, která je poměrně běžná, ale není součástí standardní knihovny STMicroelectronics ani kosmických knihoven.

Krok 7: IKEA (co bychom bez nich dělali)

IKEA (co bychom bez nich dělali)
IKEA (co bychom bez nich dělali)
IKEA (co bychom bez nich dělali)
IKEA (co bychom bez nich dělali)
IKEA (co bychom bez nich dělali)
IKEA (co bychom bez nich dělali)

Obraz z byl zakoupen v IKEA. Jedná se o rám Ribba o rozměrech 50 x 40 cm. Tento rám je poměrně silný, a proto je skvělý pro skrytí elektroniky za ním. Místo plakátu nebo obrázku jsem vložil kus děrovaného sololitu. Můžete si ho koupit v železářství, kde se mu někdy říká „postelní deska“. Má v sobě malé otvory, díky nimž je ideální pro vkládání LED diod. Bohužel otvory v mé desce byly o něco větší než 5 mm, takže jsem musel použít „horké lepidlo“k „montáži“LED diod.

Uprostřed tvrdé desky jsem pro displej 16x2 udělal obdélníkový otvor a přitlačil ho. Na tomto displeji visí deska plošných spojů se všemi elektronikami, není připevněna k ničemu jinému.

Děrovaná sololit byla nastříkána černou barvou, ale za rohožkou. Do rámečku jsem vyvrtal dva otvory pro tlačítka pro nastavení času a data, protože rámeček je poměrně silný, musel jsem otvory na vnitřní straně rámu rozšířit, aby knoflíky dostatečně vyčnívaly.

Doporučuje: