Sadržaj:

Svjetlo za buđenje: 7 koraka (sa slikama)
Svjetlo za buđenje: 7 koraka (sa slikama)

Video: Svjetlo za buđenje: 7 koraka (sa slikama)

Video: Svjetlo za buđenje: 7 koraka (sa slikama)
Video: Ako imate iPhone, OVO MORATE ISPROBATI! 2024, Studeni
Anonim
Svjetlo za buđenje
Svjetlo za buđenje

Dok pišem ovo uputstvo, sredina je zime na sjevernoj hemisferi, a to znači kratke dane i duge noći. Navikao sam ustajati u 06:00, a ljeti će do tada sunce već zasjati. Zimi, međutim, svijetli u 09:00 ako imamo sreće da imamo dan koji nije oblačan (što … nije često).

Prije nekog vremena čitao sam o "svjetlu za buđenje" koje je napravio Philips i koje se u Norveškoj koristilo za simuliranje sunčanog jutra. Nikada ga nisam kupio, ali sam stalno razmišljao o tome da ga napravim jer je izrada samog sebe zabavnija nego samo kupnja.

Pribor:

Okvir za slike "Ribba" 50 x 40 cm od IKEA -e

perforirana lesonit ploča iz trgovine željezom

Razvojna ploča STM8S103 putem Ebaya ili drugih

DS1307 Sat u stvarnom vremenu (Mouser, Farnell, Conrad itd.)

32768 Hz kristalni sat (Mouser, Farnell, Conrad itd.)

3V litij coincell + držač coincell

BUZ11 ili IRLZ34N N-kanalni MOSFET-ovi (3x)

BC549 (ili bilo koji drugi NPN tranzistor)

koliko god želite bijelih, crvenih, plavih, zelenih itd. LED dioda

neki otpornici i kondenzatori (vidi shemu)

Powerbrick, 12V do 20V, 3A ili više (npr. Napajanje starog prijenosnog računala)

Korak 1: Olakšajte (malo) lakše ustajanje

Olakšavanje ustajanja (malo)
Olakšavanje ustajanja (malo)

Ideja je da je teško ustati iz kreveta ujutro dok je još mrak. A ako živite blizu ili čak iznad arktičkog kruga, bit će mračno jako dugo. U mjestima kao što je Tromsö u Norveškoj uopće neće svjetlo jer tamo sunce zalazi pola studenog da bi se ponovno pojavilo na pola puta u januaru.

Philips je simulirao izlazak sunca.

Philips polako povećava svjetlinu svjetiljke, koja je vjerojatno napravljena s nekoliko LED dioda, ali skrivena iza jednog difuzora. Njihovo vrijeme od isključenja do pune svjetline traje 30 minuta.

Philips svjetla za buđenje nisu toliko skupa, ali imaju samo jednu boju i izgledaju pomalo mala. Mislim da mogu bolje.

Korak 2: Više boja

Više boja
Više boja

Moje svjetlo za buđenje koristi četiri boje, bijelu, crvenu, plavu i zelenu. Najprije bijele LED diode, zatim dolaze crvene, a zatim nekoliko plavih i zelenih LED dioda. Moja je ideja bila da mogu simulirati ne samo povećanje svjetline, već i promjenu boje jutarnjeg svjetla, počevši od malo bijele boje, dodajući crvenu boju malo kasnije i miješajući plavu i zelenu boju na kraju. Nisam siguran da li zapravo liči na stvarno jutarnje svjetlo, ali sviđa mi se šareni zaslon kakav je sada.

Moj je također brži od Philipsovog svjetla za buđenje, umjesto 30 minuta svjetla Philips, moje svjetlo se mijenja od 0% do 100% u manje od 5 minuta. Tako mi sunce izlazi puno brže.

BILJEŠKA:

JAKO je teško snimiti moje svjetlo za buđenje, pokušao sam s nekoliko kamera i pametnih telefona, ali sve slike koje sam napravio ne čine pravu stvar.

Korak 3: Sigmoidna krivulja, treperenje i "razlučivost"

Sigmoidna krivulja, treperenje i
Sigmoidna krivulja, treperenje i

Naravno da sam htio učiniti posvjetljivanje što je moguće glatkijim. Ljudske su oči logaritamske osjetljivosti, što znači da su u potpunom mraku osjetljivije nego na dnevnom svjetlu. Vrlo mali porast svjetline pri niskim razinama "osjeća se" isto kao i mnogo veći korak kada je svjetlost na primjer 40% svjetline. Da bih to postigao, upotrijebio sam posebnu krivulju koja se zove Sigmoid (ili S-krivulja). Ova krivulja počinje kao eksponencijalna krivulja koja se na pola puta ponovno izravnava. Otkrio sam da je to vrlo lijep način povećanja (i smanjenja) intenziteta.

Taktna frekvencija mikrokontrolera (i mjerača vremena) je 16 MH i koristim maksimalnu rezoluciju TIMER2 (65536) za stvaranje tri signala širine impulsa (PWM). Stoga impulsi dolaze 16000000 /65536 = 244 puta u sekundi. To je daleko iznad granice očiju da vidite bilo kakvo treperenje.

Dakle, LED diode se napajaju s PWM signalom koji je napravljen ovim 16 -bitnim timerom mikrokontrolera STM8S103. Ovaj PWM signal može biti uključen najmanje 1 duljinu impulsa, a preostalih 65535 duljina impulsa isključeno.

Dakle, LED diode povezane s tim PM signalom tada će biti UKLJUČENE 1/65536-to vrijeme: 0,0015%

Maksimalno su ON 65536/65536-to vrijeme: 100%.

Korak 4: Elektronika

Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika

Mikrokontroler

Mozak svjetla za buđenje je mikrokontroler STM8S103 tvrtke STMicroelectronics. Volim koristiti dijelove koji imaju dovoljno mogućnosti za posao. Za jednostavan zadatak kao što je ovaj nije potrebno koristiti STM32 mikrokontrolere (moji drugi favoriti), ali Arduino UNO nije bio dovoljan jer sam htio tri PWM signala sa 16 -bitnom razlučivošću i nema mjerača vremena s tri izlazna kanala na UNO -u.

Sat u stvarnom vremenu

Vrijeme se čita s sata DS1307 u stvarnom vremenu koji radi s kristalom od 32768 Hz i ima pomoćnu bateriju od 3V.

Postavljanje trenutnog vremena, dana i vremena buđenja vrši se s dvije tipke i prikazuje se na 16 x 2 LCD zaslonu. Kako bi moja spavaća soba bila mračna noću, pozadinsko osvjetljenje LCD zaslona uključuje se samo kada su LED diode jače od pozadinskog osvjetljenja i kada postavljate vrijeme, dan i vrijeme buđenja.

Vlast

Napajanje dolazi iz starog napajanja za prijenosno računalo, moje proizvodi 12V i može isporučiti 3A. Kad imate drugo napajanje, možda će biti potrebno namjestiti otpornike u nizu s LED žicama. (Pogledaj ispod)

Led

LED diode su spojene na 12V napajanje, ostatak elektronike na 5V izrađen je s linearnim regulatorom 7805. Na shemi piše da koristim regulator TO220, koji nije potreban jer mikrokontroler, zaslon i sat u stvarnom vremenu koriste samo nekoliko miliampera. Moj sat koristi manju TO92 verziju 7805 koja može opskrbiti 150mA.

Prebacivanje LED-nizova vrši se s N-kanalnim MOSFET-ovima. Opet, na shemi prikazuje druge uređaje koje nisam koristio. Slučajno sam imao točno tri vrlo stara BUZ11 MOSFET -a umjesto novijih IRLZ34N MOSFET -ova. Rade dobro

Naravno, možete staviti koliko god želite LED dioda, sve dok MOSFET -i i napajanje mogu podnijeti struju. U shemi sam nacrtao samo jedan niz bilo koje boje, u stvarnosti ih ima nekoliko u svakoj boji paralelno s ostalim nizovima te boje.

Korak 5: Otpornici (za LED)

Otpornici (za LED)
Otpornici (za LED)

O otpornicima u LED žicama. Bijele i plave LED diode obično imaju napon od 2,8 V kad su pri punoj svjetlini.

Crvene LED diode imaju samo 1,8 V, moje zelene LED diode imaju 2 V pri punoj svjetlini.

Druga je stvar što njihova puna svjetlina nije ista. Stoga je bilo potrebno malo eksperimentiranja kako bi bili jednako svijetli (za moje oči). Učinivši LED diode jednako svijetlima pri punoj svjetlini, oni će također izgledati jednako svijetli na nižim razinama, signal širine impulsa uvijek ih uključuje pri punoj svjetlini, ali tijekom duljih i kraćih vremena, vaše oči brinu se o prosjeku.

Počnite s ovakvim izračunom. Napajanje daje (u mom slučaju) 12V.

Četiri bijele LED diode u seriji trebaju 4 x 2,8 V = 11,2 V, što ostavlja 0,8 V za otpornik.

Otkrio sam da su dovoljno svijetli na 30 mA pa otpornik mora biti:

0,8 / 0,03 = 26,6 ohma. Na shemi vidite da sam stavio otpornik od 22 ohma, pa su LED diode samo malo svjetlije.

Plave LED diode bile su presvijetle na 30 mA, ali u usporedbi s bijelim LED diodama na 15 mA, imale su i oko 2,8 V preko njih na 15 mA pa je izračun bio 4 x 2,8 V = 11,2 V, a opet je ostalo 0,8 V

0,8 / 0,015 = 53,3 ohma pa sam odabrao otpornik od 47 ohma.

Mojim crvenim LED diodama također treba nekih 15 mA da budu jednako svijetle kao i ostale, ali pri toj struji imaju samo 1,8 V. Tako bih mogao staviti više u seriju i još uvijek imati malo "mjesta" za otpornik.

Šest crvenih LED dioda dalo mi je 6 x 1,8 = 10,8 V, pa je preko otpornika bilo 12 - 10,8 = 1,2 V.

1,2 / 0,015 = 80 ohma, uspio sam u 68 ohma. Baš kao i ostali, malo svjetliji.

Zelene LED diode koje sam koristio svijetle su kao i ostale na oko 20mA. Trebalo mi je samo nekoliko (baš kao i plavih) i odlučio sam staviti četiri u seriju. Na 20mA imaju 2, 1V iznad sebe, dajući 3 x 2,1 = 8,4V

12 - 8,4 = 3,6 V za otpornik. I 3,6 / 0,02 = 180 ohma.

Ako napravite ovo svjetlo za buđenje, malo je vjerojatno da imate isto napajanje, morat ćete prilagoditi broj LED dioda u seriji i potrebne otpornike.

Mali primjer. Recimo da imate napajanje koje daje 20V. Odlučio bih postaviti 6 plavih (i bijelih) LED dioda u seriji, 6 x 3V = 18V, dakle 2V za otpornik. Recimo da vam se sviđa svjetlina na 40mA. Otpornik tada mora biti 2V / 0,04 = 50 ohma, otpornik od 47 ohma će biti u redu.

Savjetujem da ne idete više od 50 mA s običnim (5 mm) LED diodama. Neki mogu podnijeti više, ali ja volim biti na sigurnoj strani.

Korak 6: Softver

Sav kod možete preuzeti sa:

gitlab.com/WilkoL/wakeup_light_stm8s103

neka izvorni kod ostane otvoren, pored ostatka ovog uputstva ako želite slijediti objašnjenje.

Glavni.c

Main.c prvo postavlja sat, odbrojavanje vremena i ostale periferne uređaje. Većina "upravljačkih programa" koje sam napisao koristeći standardnu biblioteku tvrtke STMicroelectronics, a ako imate pitanja o njima, napišite ih u komentaru ispod uputstava.

Eeprom

Ostavio sam kôd "tekst za prikaz" koji sam koristio za stavljanje tekstova u eeprom STM8S103 kao komentare. Nisam bio siguran da li imam dovoljno flash memorije za sav svoj kôd pa sam pokušao staviti što je više moguće u eeprom kako bih imao sav flash za program. Na kraju se to pokazalo nepotrebnim i tekst sam premjestio u flash. No, ostavio sam ga kao komentirani tekst u datoteci main.c. Lijepo je to imati, kad kasnije moram učiniti nešto slično (u drugom projektu)

Eeprom se i dalje koristi, ali samo za spremanje vremena buđenja.

Jednom u sekundi

Nakon postavljanja perifernih uređaja, kôd provjerava je li prošla jedna sekunda (s timerom).

Jelovnik

U tom slučaju provjerava je li pritisnuta tipka, ako je tako, ulazi u izbornik gdje možete postaviti trenutno vrijeme, dan u tjednu i vrijeme buđenja. Imajte na umu da je potrebno oko 5 minuta za isključivanje do pune svjetline, pa postavite vrijeme buđenja malo ranije.

Vrijeme buđenja pohranjeno je u eepromu tako da će i nakon nestanka struje "znati" kada vas treba probuditi. Naravno, trenutno vrijeme je pohranjeno u satu stvarnog vremena.

Usporedba trenutnog vremena i vremena buđenja

Kad nijedan gumb nije pritisnut, provjerava trenutno vrijeme i uspoređuje ga s vremenom buđenja i radnim danom. Ne želim da me probudi za vikend:-)

Većinu vremena ne morate ništa učiniti pa varijablu "leds" postavlja na OFF, a na ON. Ova se varijabla provjerava zajedno sa signalom “change_intensity”, koji također dolazi iz mjerača vremena i aktivan je 244 puta u sekundi. Dakle, kada je varijabla "LED diode" UKLJUČENA, intenzitet se povećava 244 puta u sekundi, a kada je isključena, smanjuje se 244 puta u sekundi. No povećanje ide u pojedinačnim koracima gdje je smanjenje u koracima od 16, što znači da se svjetlo za buđenje, nadamo se, obavilo svoj posao, isključuje 16 puta brže, ali i dalje glatko.

Glatkoća i PAMĆENJE

Glatkoća dolazi iz proračuna Sigmoid krivulje. Izračun je vrlo jednostavan, no potrebno ga je izvesti u varijablama s pomičnim zarezom (udvostručuje) zbog funkcije exp (), pogledajte datoteku sigmoid.c.

U standardnoj situaciji Cosmic prevoditelj / povezivač nema podršku za varijable s pomičnim zarezom. Uključivanje je jednostavno (nakon što ga pronađete), ali dolazi s povećanjem veličine koda. Ovo povećanje bilo je previše da bi se kôd uklopio u flash memoriju u kombinaciji s funkcijom sprintf (). A ta je funkcija potrebna za pretvaranje brojeva u tekst za prikaz.

Itoa ()

Da bih riješio ovaj problem, stvorio sam funkciju itoa (). Ovo je funkcija Integer To Ascii koja je prilično uobičajena, ali nije uključena u standardnu biblioteku STMicroelectronics, niti u kozmičke knjižnice.

Korak 7: IKEA (što bismo bez njih)

IKEA (što bismo bez njih)
IKEA (što bismo bez njih)
IKEA (što bismo bez njih)
IKEA (što bismo bez njih)
IKEA (što bismo bez njih)
IKEA (što bismo bez njih)

Slika je kupljena od IKEA -e. To je okvir Ribba dimenzija 50 x 40 cm. Ovaj je okvir prilično debeo i čini ga izvrsnim za skrivanje elektronike iza njega. Umjesto plakata ili slike stavio sam komad perforirane lesonita. Možete ga kupiti u željezariji gdje se ponekad naziva i "krevetna daska". Ima male rupe u sebi što ga čini idealnim za postavljanje LED dioda. Nažalost, rupe na mojoj ploči bile su nešto veće od 5 mm pa sam morao koristiti vruće ljepilo za "montiranje" LED dioda.

Napravio sam pravokutnu rupu u sredini tvrde ploče za zaslon veličine 16x2 i pritisnuo je. PCB sa svom elektronikom visi na ovom zaslonu, nije montiran ni na što drugo.

Perforirana lesonit ploča obojana je sprejom u crnoj boji, ali sa unutrašnje strane prostirke. Izbušio sam dvije rupe u okviru za gumbe za postavljanje vremena i datuma, budući da je okvir prilično debeo, morao sam proširiti rupe na unutarnjoj strani okvira kako bi gumbi dovoljno stršili.

Preporučeni: