Sisukord:

Äratustuli: 7 sammu (piltidega)
Äratustuli: 7 sammu (piltidega)

Video: Äratustuli: 7 sammu (piltidega)

Video: Äratustuli: 7 sammu (piltidega)
Video: 5 Daily Must-Have Habits for Immune System Health Webinar 2024, November
Anonim
Äratusvalgus
Äratusvalgus

Seda õpetlikku kirjutades on põhjapoolkeral talve keskel ja see tähendab lühikesi päevi ja pikki öid. Olen harjunud tõusma kell 06:00 ja suvel hakkab päike selleks ajaks paistma. Talvel hakkab aga kell 09:00 valgust tulema, kui meil veab, et meil on päev, mil pole pilves (mis on… mitte sageli).

Mõni aeg tagasi lugesin Philipsi valmistatud “äratustulest”, mida kasutati Norras päikeselise hommiku simuleerimiseks. Ma ei ostnud seda kunagi, kuid mõtlesin selle tegemisele pidevalt, sest ise valmistamine on lõbusam kui lihtsalt ostmine.

Tarvikud:

Pildiraam "Ribba" 50 x 40 cm IKEAst

perforeeritud puitkiudplaat ehituspoest

STM8S103 arendusplaat Ebay või teiste kaudu

DS1307 reaalajas kell (Mouser, Farnell, Conrad jne)

32768 Hz kellakristall (Mouser, Farnell, Conrad jne)

3V liitium -samaaegne + samaaegne hoidik

BUZ11 või IRLZ34N N-kanaliga MOSFET-id (3x)

BC549 (või mõni muu NPN -transistor)

nii palju valgeid, punaseid, siniseid, rohelisi jne LED -e kui soovite

mõned takistid ja kondensaatorid (vt skeemi)

Powerbrick, 12V kuni 20V, 3A või rohkem (nt vana sülearvuti toiteallikas)

Samm: muutke (veidi) üles tõusmine lihtsamaks

(Tõusmine) (natuke) lihtsamaks
(Tõusmine) (natuke) lihtsamaks

Mõte on selles, et hommikul, kui on veel pime, on raske voodist tõusta. Ja kui elate polaarjoone lähedal või isegi sellest kõrgemal, on pime väga kaua. Sellistes kohtades nagu Tromsö Norras ei saa üldse valgust, sest seal loojub päike pool novembrit ja ilmub alles poolel teel Januari.

Niisiis, mida Philips tegi, oli päikese tõusu simuleerimine.

Philips suurendab aeglaselt lambi heledust, mis on tõenäoliselt valmistatud mitme valgusdioodiga, kuid on peidetud ühe hajuti taha. Nende aeg täieliku heleduseni võtab 30 minutit.

Philipsi äratustuli ei ole nii kallis, kuid sellel on ainult üks värv ja see tundub natuke väike. Arvan, et saan paremini hakkama.

Samm: rohkem värvi

Rohkem värvi
Rohkem värvi

Minu äratustuli kasutab nelja värvi, valget, punast, sinist ja rohelist. Esmalt leidke valged LED -id, seejärel punased ja viimased paar sinist ja rohelist LED -i. Minu idee oli, et ma saan simuleerida mitte ainult heleduse suurenemist, vaid ka hommikuse valgusvärvi nihkumist, alustades natuke valgest, lisades veidi hiljem punase ja lõpuks segades sinise ja rohelise. Ma pole kindel, kas see tegelikult meenutab tegelikku hommikuvalgust, kuid mulle meeldib värvikas ekraan sellisena, nagu see praegu on.

Minu oma on ka kiirem kui Philipsi äratustuli, 30 -minutilise Philipsi valguse asemel läheb minu valgustugevus 0% -lt 100% -ni vähem kui 5 minutiga. Nii et mu päike tõuseb palju kiiremini.

MÄRGE:

Äratusvalgusest on VÄGA raske pilte teha, proovisin mitme kaamera ja nutitelefoniga, kuid kõik tehtud pildid ei tee tõelist õiglust.

Samm: Sigmoidkõver, vilkumine ja eraldusvõime

Sigmoidkõver, vilkumine ja
Sigmoidkõver, vilkumine ja

Loomulikult tahtsin heleduse muuta võimalikult sujuvaks. Inimese silmad on logaritmilise tundlikkusega, mis tähendab, et täielikus pimeduses on nad tundlikumad kui päevavalguses. Väga väike heleduse tõus madala taseme korral tundub sama, mis palju suurem samm, kui valguse heledus on 40%. Selle saavutamiseks kasutasin spetsiaalset kõverat nimega Sigmoid (või S-kõver), see kõver algab eksponentsiaalse kõverana, mis taas pooleldi tasandub. Leidsin, et see on väga tore viis intensiivsuse suurendamiseks (ja vähendamiseks).

Mikrokontrolleri (ja taimerite) taktsagedus on 16 MHz ja kolme impulsi laiuse signaali (PWM) loomiseks kasutan maksimaalset eraldusvõimet TIMER2 (65536). Seetõttu tulevad impulsid 16000000/65536 = 244 korda sekundis. See on kaugelt üle silmade piiri, et näha vilksatust.

Seega toidetakse LED -e PWM -signaaliga, mis on valmistatud selle 16 -bitise STM8S103 mikrokontrolleri abil. See PWM -signaal võib olla sisse lülitatud vähemalt 1 impulsi pikkune ja ülejäänud 65535 impulssipikkus välja lülitatud.

Nii et selle PM-signaaliga ühendatud LED-id lülituvad sisse 1/65536-ndast ajast: 0,0015%

Maksimaalselt on need sisse lülitatud 65536/65536-ndal ajast: 100%.

4. samm: elektroonika

Elektroonika
Elektroonika
Elektroonika
Elektroonika
Elektroonika
Elektroonika
Elektroonika
Elektroonika

Mikrokontroller

Äratuslambi aju on STM8S103 mikrokontroller ettevõttelt STMicroelectronics. Mulle meeldib kasutada osi, millel on tööks piisavalt võimalusi. Sellise lihtsa ülesande jaoks ei ole vaja kasutada STM32 mikrokontrollereid (minu teised lemmikud), kuid Arduino UNO -st ei piisanud, kuna soovisin kolme 16 -bitise eraldusvõimega PWM -signaali ja UNO -l pole kolme väljundkanaliga taimerit.

Reaalajas kell

Aega loetakse reaalajas kellast DS1307, mis töötab 32768 Hz kristalliga ja millel on 3V varupatarei.

Praeguse kellaaja, päeva ja äratusaja seadistamine toimub kahe nupuga ja kuvatakse 16 x 2 LCD -ekraaniga. Et mu magamistuba oleks öösel tõeliselt pime, lülitatakse LCD -ekraani taustavalgustus sisse ainult siis, kui LED -id on heledamad kui taustvalgus ning kui seadistate kellaaega, päeva ja ärkamisaega.

Võimsus

Toide pärineb vanast sülearvuti toiteallikast, minu toodab 12 V ja suudab toita 3A. Kui teil on mõni muu toiteallikas, võib osutuda vajalikuks takistite järjestikune reguleerimine LED-nööridega. (Vaata allpool)

Led

LEDid on ühendatud 12 V toiteallikaga, ülejäänud elektroonika töötab 5 V toitel, mis on valmistatud lineaarse regulaatoriga 7805. Skeemil on öeldud, et kasutan TO220 regulaatorit, mida pole vaja, kuna mikrokontroller, ekraan ja reaalajas kell kasutavad vaid mõnda milliampi. Minu kell kasutab 7805 väiksemat TO92 versiooni, mis suudab toita 150 mA.

Led-stringide vahetamine toimub N-kanaliga MOSFET-ide abil. Jällegi näitab see skeemil muid seadmeid kui mina. Mul juhtus olema uuemate IRLZ34N MOSFETide asemel täpselt kolm väga vana BUZ11 MOSFET -i. Nad töötavad hästi

Muidugi saate sisestada nii palju LED -e kui soovite, kui MOSFET -id ja toiteplokk suudavad voolu taluda. Skeemil olen joonistanud ainult ühe mis tahes värvi stringi, tegelikkuses on mitu värvi paralleelselt selle värvi teiste stringidega.

Samm: takistid (LED -ide jaoks)

Takistid (LED -ide jaoks)
Takistid (LED -ide jaoks)

LED -stringide takistite kohta. Valgete ja siniste LED -ide pinge on tavaliselt täisheleduse korral üle 2,8 V.

Punastel LED -idel on vaid 1,8 V, minu rohelistel LEDidel on täisvärv üle 2 V.

Teine asi on see, et nende täielik heledus pole sama. Seega kulus natuke katsetamist, et need (minu silmis) võrdselt heledad oleksid. Kui muudate LED -id täisheleduse korral võrdselt heledateks, näevad need ka madalamal tasemel võrdselt heledad välja, impulsi laiuse signaal lülitab need alati täie heledusega sisse, kuid pikema ja lühema aja jooksul hoolitsevad teie silmad keskmistamise eest.

Alustage sellise arvutusega. Toiteallikas annab (minu puhul) 12V.

Neli valget LED -i järjestikku vajavad 4 x 2,8V = 11,2V, see jätab takistile 0,8V.

Olin avastanud, et need olid 30mA juures piisavalt heledad, nii et takisti peab olema:

0,8 / 0,03 = 26,6 oomi. Skeemil näete, et panin sisse 22 oomi takisti, muutes LED -id veidi heledamaks.

Sinised valgusdioodid olid 30 mA juures liiga heledad, kuid võrreldes valgete LED -idega 15 mA juures olid neil ka umbes 2,8 V 15 mA juures, nii et arvutus oli 4 x 2,8 V = 11,2 V, jättes uuesti 0,8 V

0,8 / 0,015 = 53,3 oomi, nii et valisin 47 oomi takisti.

Minu punased LED -id peavad samuti olema umbes 15 mA, et need oleksid sama heledad kui teised, kuid neil on sellel voolul ainult 1,8 V. Nii et ma võiksin rohkem seeriaid panna ja takisti jaoks oleks veel ruumi.

Kuus punast LED -i andsid mulle 6 x 1,8 = 10,8 V, seega oli takisti kohal 12 - 10,8 = 1,2 V.

1,2 / 0,015 = 80 oomi, tegin sellest 68 oomi. Nii nagu teisedki, natuke heledamad.

Rohelised LED -id, mida ma kasutasin, on sama eredad kui teised umbes 20 mA juures. Mul oli vaja vaid mõnda (täpselt nagu siniseid) ja valisin neli järjestikku. 20 mA juures on neil 2, 1 V üle, andes 3 x 2,1 = 8,4 V.

12 - 8,4 = 3,6 V takisti jaoks. Ja 3,6 / 0,02 = 180 oomi.

Kui ehitate selle äratustuli, on ebatõenäoline, et teil on sama toiteallikas, peate reguleerima jadade arvu ja vajalikke takistusi.

Väike näide. Oletame, et teil on 20 V toiteallikas. Ma valiksin seadistada 6 sinist (ja valget) LED -i järjestikku, 6 x 3 V = 18 V, seega 2 V takisti jaoks. Ja ütleme, et teile meeldib heledus 40 mA juures. Takisti peab siis olema 2V / 0,04 = 50 oomi, 47 oomi takisti sobib.

Soovitan tavaliste (5 mm) LED -idega mitte minna kõrgemale kui 50 mA. Mõni saab rohkem hakkama, aga mulle meeldib olla ohutu.

6. samm: tarkvara

Kogu koodi saab alla laadida siit:

gitlab.com/WilkoL/wakeup_light_stm8s103

kui soovite selgitust järgida, hoidke lähtekood ülejäänud juhendatava kõrval.

Main.c

Main.c seadistab kõigepealt kella, taimerid ja muud välisseadmed. Enamik “draivereid” kirjutasin STMicroelectronics'i standardraamatukogu abil ja kui teil on nende kohta küsimusi, kirjutage see juhendi all olevasse kommentaari.

Eeprom

Jätsin koodi „tekst kuvamiseks”, mida kasutasin tekstide lisamiseks STM8S103 eepromi kommentaaridena. Ma ei olnud kindel, kas mul on kogu koodi jaoks piisavalt välkmälu, nii et proovisin eepromi panna nii palju kui võimalik, et programmi jaoks kõik välk oleks. Lõpuks ei osutunud see vajalikuks ja kolisin teksti vilkuma. Aga ma jätsin selle main.c -faili kommenteeritud tekstina. See on tore, kui mul on vaja midagi sarnast hiljem teha (teises projektis)

Eepromi kasutatakse endiselt, kuid ainult ärkamisaja salvestamiseks.

Kord sekundis

Pärast välisseadmete seadistamist kontrollib kood, kas üks sekund on möödas (taimeriga).

Menüü

Kui see nii on, kontrollib see, kas nuppu on vajutatud, kui see nii on, siseneb see menüüsse, kus saate määrata praeguse kellaaja, nädalapäeva ja äratusaja. Pidage meeles, et täieliku heleduse saavutamiseks kulub umbes 5 minutit, seega seadistage äratusaeg veidi varem.

Äratusaeg salvestatakse eepromi, nii et isegi pärast voolukatkestust ta teaks, millal teid äratada. Praegune aeg salvestatakse loomulikult reaalajas kellale.

Praeguse ja ärkamisaja võrdlus

Kui ühtegi nuppu ei vajutatud, kontrollib see praegust aega ning võrdleb seda ärkamisaja ja nädalapäevaga. Ma ei taha, et see mind nädalavahetusel ärataks:-)

Enamasti ei ole vaja midagi teha, nii et see määrab muutuja "LED -id" olekuks OFF, muidu ON. Seda muutujat kontrollitakse koos signaaliga „change_intensity”, mis tuleb samuti taimerilt ja on aktiivne 244 korda sekundis. Seega, kui muutuja „ledid” on sees, suureneb intensiivsus 244 korda sekundis ja kui see on välja lülitatud, väheneb see 244 korda sekundis. Kuid suurenemine toimub üksikute sammudena, kus vähenemine toimub 16 sammu võrra, mis tähendab, et kui äratustuli on loodetavasti oma töö teinud, lülitub see välja 16 korda kiiremini, kuid siiski sujuvalt.

Siledus ja MÄLU VÄLJAS

Siledus tuleneb Sigmoidi kõvera arvutamisest. Arvutamine on üsna lihtne, kuid funktsiooni exp () tõttu tuleb seda teha ujukoma muutujate (kahekordistustega), vt faili sigmoid.c.

Standardolukorras ei toeta kosmilist kompilaatorit / linkerit ujukoma muutujate jaoks. Selle sisselülitamine on lihtne (kui olete selle leidnud), kuid see suurendab koodi suurust. See suurenemine oli liiga suur, et muuta kood välkmällu sobivaks, kui seda kombineerida funktsiooniga sprintf (). Ja seda funktsiooni on vaja numbrite teisendamiseks ekraani tekstiks.

Itoa ()

Selle probleemi lahendamiseks lõin funktsiooni itoa (). See on Integer To Ascii funktsioon, mis on üsna tavaline, kuid ei sisaldu STMicroelectronics standardraamatukogus ega kosmilistes raamatukogudes.

Samm: IKEA (mida me teeksime ilma nendeta)

IKEA (mida me teeksime ilma nendeta)
IKEA (mida me teeksime ilma nendeta)
IKEA (mida me teeksime ilma nendeta)
IKEA (mida me teeksime ilma nendeta)
IKEA (mida me teeksime ilma nendeta)
IKEA (mida me teeksime ilma nendeta)

Pilt on ostetud IKEAst. See on Ribba raam 50 x 40 cm. See raam on üsna paks ja teeb selle suurepäraseks elektroonika taga peitmiseks. Plakatite või piltide asemel panin sisse perforeeritud puitkiudplaadi. Saate seda osta ehituspoest, kus seda mõnikord nimetatakse voodiplaadiks. Sellel on väikesed augud, mis muutis selle ideaalseks LED -ide paigaldamiseks. Kahjuks olid minu plaadi augud veidi suuremad kui 5 mm, nii et pidin ledide paigaldamiseks kasutama kuuma liimi.

Tegin 16x2 ekraani jaoks tahke plaadi keskele ristkülikukujulise augu ja vajutasin selle sisse. Trükkplaat koos kogu elektroonikaga ripub sellel ekraanil, seda ei kinnitata millelegi muule.

Perforeeritud puitkiudplaat värviti pihustiga mustaks, kuid mati taga. Puurisin raami sisse kaks auku nuppude jaoks kellaaja ja kuupäeva seadmiseks, kuna raam on üsna paks, pidin raami sisemuses olevaid auke laiendama, et nööbid piisavalt välja paistaksid.

Soovitan: