Turinys:

Žadinimo šviesa: 7 žingsniai (su nuotraukomis)
Žadinimo šviesa: 7 žingsniai (su nuotraukomis)

Video: Žadinimo šviesa: 7 žingsniai (su nuotraukomis)

Video: Žadinimo šviesa: 7 žingsniai (su nuotraukomis)
Video: Part 3 - The Last of the Plainsmen Audiobook by Zane Grey (Chs 12-17) 2024, Lapkritis
Anonim
Žadinimo šviesa
Žadinimo šviesa

Kai rašau šį pamokomą dalyką, Šiaurės pusrutulyje yra žiemos vidurys, o tai reiškia trumpas dienas ir ilgas naktis. Esu įpratusi keltis 06:00, o vasarą saulė jau tada švies. Tačiau žiemą šviesa būna 09:00, jei mums pasisekė, kad dieną nėra debesuota (o tai… ne dažnai).

Prieš kurį laiką skaičiau apie „pažadinimo lemputę“, kurią pagamino „Philips“ir kuri buvo naudojama Norvegijoje saulėtam rytui imituoti. Niekada nepirkau, bet vis galvojau apie jo gamybą, nes pasigaminti patiems yra smagiau nei tiesiog nusipirkti.

Priedai:

Paveikslų rėmas "Ribba" 50 x 40 cm nuo IKEA

perforuota medžio drožlių plokštė iš techninės įrangos parduotuvės

STM8S103 kūrimo lenta per „Ebay“ar kitas

DS1307 laikrodis realiuoju laiku („Mouser“, „Farnell“, „Conrad“ir kt.)

32768 Hz laikrodžio kristalas (Mouser, Farnell, Conrad ir kt.)

3V ličio sutampa + sutapimo laikiklis

BUZ11 arba IRLZ34N N kanalų MOSFET (3x)

BC549 (arba bet kuris kitas NPN tranzistorius)

tiek baltos, raudonos, mėlynos, žalios ir tt šviesos diodų, kiek norite

kai kurie rezistoriai ir kondensatoriai (žr. schemą)

„Powerbrick“, nuo 12V iki 20V, 3A ar daugiau (pvz., Seno nešiojamojo kompiuterio maitinimo šaltinis)

1 žingsnis: palengvinkite (šiek tiek) atsikėlimą

Kad būtų (šiek tiek) lengviau atsikelti
Kad būtų (šiek tiek) lengviau atsikelti

Idėja yra ta, kad ryte sunku išlipti iš lovos, kai dar tamsu. O jei gyvenate arti ar net virš poliarinio rato, tamsu bus labai ilgai. Tokiose vietose kaip Tromsė Norvegijoje visai netaps šviesa, nes ten saulė leidžiasi lapkričio viduryje, kad vėl pasirodytų pusiaukelėje.

Taigi „Philips“imitavo saulės kilimą.

„Philips“lėtai didina lempos, kuri tikriausiai pagaminta naudojant kelis šviesos diodus, bet yra paslėpta už vieno difuzoriaus, ryškumą. Jų laikas nuo išjungimo iki viso ryškumo trunka 30 minučių.

„Philips“žadinimo žibintai nėra tokie brangūs, tačiau jie turi tik vieną spalvą ir atrodo šiek tiek maži. Manau, kad galiu padaryti geriau.

2 žingsnis: daugiau spalvų

Daugiau Spalvų
Daugiau Spalvų

Mano žadinimo šviesoje naudojamos keturios spalvos: balta, raudona, mėlyna ir žalia. Pirmiausia atraskite baltus, tada raudonus ir paskutinius kelis mėlynus ir žalius. Mano idėja buvo ta, kad galėčiau imituoti ne tik ryškumo padidėjimą, bet ir ryto šviesos spalvos pasikeitimą, pradėdamas nuo baltos spalvos, šiek tiek vėliau pridėdamas raudoną spalvą ir galiausiai sumaišydamas mėlyną ir žalią spalvas. Nesu tikras, ar jis iš tikrųjų primena tikrąją ryto šviesą, bet man patinka spalvingas ekranas, koks yra dabar.

Manoji taip pat yra greitesnė už „Philips“žadinimo lemputę, o ne 30 minučių „Philips“lemputė, mano šviesumas nuo 0% iki 100% tampa mažiau nei per 5 minutes. Taigi mano saulė kyla daug greičiau.

PASTABA:

Labai sunku padaryti savo pažadinimo lemputės nuotraukas, bandžiau su keliais fotoaparatais ir išmaniaisiais telefonais, bet visos mano padarytos nuotraukos neatitinka tikro teisingumo.

3 žingsnis: Sigmoidinė kreivė, mirgėjimas ir „skiriamoji geba“

Sigmoidinė kreivė, mirgėjimas ir
Sigmoidinė kreivė, mirgėjimas ir

Žinoma, norėjau, kad šviesinimas būtų kuo sklandesnis. Žmogaus akys yra logaritminės, o tai reiškia, kad visiškoje tamsoje jos yra jautresnės nei dienos šviesoje. Labai mažas ryškumo padidėjimas esant žemam lygiui „jaučiasi“tas pats, kas daug didesnis žingsnis, kai šviesa yra, pavyzdžiui, 40% ryškumo. Norėdami tai pasiekti, aš panaudojau specialią kreivę, vadinamą Sigmoid (arba S kreivę), ši kreivė prasideda kaip eksponentinė kreivė, kuri vėl įpusėja. Radau, kad tai yra puikus būdas padidinti (ir sumažinti) intensyvumą.

Mikrovaldiklio (ir laikmačių) laikrodžio dažnis yra 16 MHz, o aš naudoju didžiausią TIMER2 skiriamąją gebą (65536), kad sukurtų tris impulsų pločio signalus (PWM). Todėl impulsai būna 16000000/65536 = 244 kartus per sekundę. Tai gerokai viršija akių ribą, kad pamatytumėte mirgėjimą.

Taigi šviesos diodai tiekiami su PWM signalu, kuris yra pagamintas naudojant šį 16 STB8S103 mikrovaldiklio bittimerį. Šis PWM signalas gali būti įjungtas bent 1 impulsų ilgio, o likę 65535 impulsų ilgiai išjungti.

Taigi prie to PM signalo prijungti šviesos diodai bus įjungti 1/65536-ą kartą: 0,0015%

Daugiausia jie įjungiami 65536/65536-ą kartą: 100%.

4 žingsnis: Elektronika

Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika

Mikrovaldiklis

Žadinimo šviesos smegenys yra STM8S103 mikrovaldiklis iš STMicroelectronics. Man patinka naudoti dalis, kurios turi pakankamai galimybių darbui. Norint atlikti tokią paprastą užduotį, nebūtina naudoti STM32 mikrovaldiklių (kiti mano mėgstamiausi), tačiau „Arduino UNO“nepakako, nes norėjau trijų PWM signalų su 16 bitų skiriamąja geba ir UNO nėra laikmačio su trimis išvesties kanalais..

Realaus laiko laikrodis

Laikas nuskaitomas iš DS1307 realaus laiko laikrodžio, kuris veikia su 32768 Hz kristalu ir turi 3 V atsarginę bateriją.

Dabartinis laikas, diena ir pabudimo laikas nustatomi dviem mygtukais ir rodomi 16 x 2 LCD simbolių ekrane. Kad naktį mano miegamasis būtų tikrai tamsus, LCD ekrano apšvietimas įjungiamas tik tada, kai šviesos diodai yra ryškesni nei foninis apšvietimas ir kai nustatote laiką, dieną ir pabudimo laiką.

Galia

Maitinimas gaunamas iš seno nešiojamojo kompiuterio maitinimo šaltinio, mano - 12V ir gali tiekti 3A. Kai turite kitą maitinimo šaltinį, gali prireikti nuosekliai reguliuoti rezistorius su LED eilutėmis. (Žiūrėkite žemiau)

LED

Šviesos diodai yra prijungti prie 12 V maitinimo šaltinio, o visa kita elektronika veikia 5 V įtampa, pagaminta naudojant 7805 linijinį reguliatorių. Schemoje rašoma, kad aš naudoju TO220 reguliatorių, kurio nereikia, nes mikrovaldiklis, ekranas ir realaus laiko laikrodis naudoja tik kelis miliamperus. Mano laikrodis naudoja mažesnę TO92 7805 versiją, galinčią tiekti 150 mA srovę.

LED eilutės perjungiamos naudojant N kanalų MOSFET. Vėlgi, schemoje rodomi kiti įrenginiai, nei aš naudoju. Aš turėjau lygiai tris labai senus BUZ11 MOSFET, o ne naujesnius IRLZ34N MOSFET. Jie dirba gerai

Žinoma, galite įdėti tiek šviesos diodų, kiek norite, jei tik MOSFET ir maitinimo šaltinis gali valdyti srovę. Schemoje aš nupiešiau tik vieną bet kokios spalvos eilutę, iš tikrųjų yra kelios kiekvienos spalvos, lygiagrečios kitoms tos spalvos eilutėms.

5 žingsnis: rezistoriai (LED)

Rezistoriai (LED)
Rezistoriai (LED)

Apie rezistorius LED eilutėse. Baltos ir mėlynos spalvos šviesos diodų įtampa paprastai yra 2,8 V.

Raudoni šviesos diodai turi tik 1,8 V įtampą, o mano žalieji - 2 V.

Kitas dalykas yra tai, kad jų visas ryškumas nėra tas pats. Taigi reikėjo šiek tiek eksperimentuoti, kad jie būtų vienodai ryškūs (mano akims). Padarę šviesos diodus vienodai ryškius esant visam ryškumui, jie atrodys vienodai ryškūs ir esant žemesniam lygiui, impulsų pločio signalas juos visuomet įjungia visu ryškumu, tačiau ilgesniu ir trumpesniu laikotarpiu jūsų akys pasirūpina vidurkio nustatymu.

Pradėkite nuo tokio skaičiavimo. Maitinimo šaltinis tiekia (mano atveju) 12V.

Keturiems baltiems šviesos diodams nuosekliai reikia 4 x 2.8V = 11.2V, tai rezistoriui palieka 0.8V.

Radau, kad jie yra pakankamai ryškūs esant 30 mA, todėl rezistorius turi būti:

0,8 / 0,03 = 26,6 omai. Schemoje matote, kad įdėjau 22 omų rezistorių, todėl šviesos diodai tapo šiek tiek šviesesni.

Mėlynos šviesos diodai buvo per ryškūs esant 30 mA, tačiau, palyginti su baltais, esant 15 mA, jie taip pat turėjo apie 2,8 V virš 15 mA, todėl skaičiavimas buvo 4 x 2,8 V = 11,2 V, paliekant 0,8 V

0,8 / 0,015 = 53,3 omai, todėl pasirinkau 47 omų rezistorių.

Mano raudoni šviesos diodai taip pat turi būti maždaug 15 mA, kad jie būtų tokie pat ryškūs kaip ir kiti, tačiau esant šiai srovei jie turi tik 1,8 V. Taigi galėčiau įdėti daugiau serijų ir vis tiek turėti rezistoriaus „kambarį“.

Šeši raudoni šviesos diodai man davė 6 x 1,8 = 10,8 V, taigi virš rezistoriaus buvo 12 - 10,8 = 1,2 V.

1,2 / 0,015 = 80 omų, aš padariau 68 omų. Kaip ir kiti, šiek tiek šviesesni.

Mano naudojami žali šviesos diodai yra tokie pat ryškūs kaip ir kiti, esant maždaug 20 mA. Man reikėjo vos kelių (kaip ir mėlynų) ir nusprendžiau keturis sudėti į seriją. Esant 20 mA, jie turi 2, 1 V, o tai suteikia 3 x 2,1 = 8,4 V.

12 - 8,4 = 3,6 V rezistoriui. Ir 3,6 / 0,02 = 180 omų.

Jei pastatysite šią žadinimo lemputę, mažai tikėtina, kad turite tą patį maitinimo šaltinį, turėsite koreguoti serijinių šviesos diodų skaičių ir reikalingus rezistorius.

Mažas pavyzdys. Tarkime, kad turite maitinimo šaltinį, kuris suteikia 20 V. Aš norėčiau nustatyti 6 mėlynus (ir baltus) šviesos diodus nuosekliai, 6 x 3 V = 18 V, taigi 2 V rezistoriui. Tarkime, jums patinka 40 mA ryškumas. Tada rezistorius turi būti 2V / 0,04 = 50 omų, 47 omų rezistorius bus gerai.

Patariu neviršyti aukštesnės nei 50 mA srovės su įprastais (5 mm) šviesos diodais. Kai kurie gali susitvarkyti daugiau, bet man patinka būti saugioje pusėje.

6 žingsnis: programinė įranga

Visą kodą galima atsisiųsti iš:

gitlab.com/WilkoL/wakeup_light_stm8s103

jei norite sekti paaiškinimą, laikykite atvirą šaltinio kodą šalia likusių nurodymų.

Pagrindinis.c

„Main.c“pirmiausia nustato laikrodį, laikmačius ir kitus išorinius įrenginius. Dauguma „tvarkyklių“, kurias parašiau naudodamas „STMicroelectronics“standartinę biblioteką, ir jei turite klausimų apie jas, parašykite jas komentaruose po instrukcijomis.

Eeprom

Palikau kodą „rodomas tekstas“, kurį naudoju įdėdamas tekstus į STM8S103 eeprom kaip komentarus. Aš nebuvau tikras, kad turiu pakankamai „flash“atminties visam mano kodui, todėl stengiausi į „eeprom“įdėti kiek įmanoma daugiau, kad programai būtų skirta visa blykstė. Galų gale tai pasirodė nereikalinga ir perkėliau tekstą į blykstę. Bet aš palikau jį kaip komentarų tekstą pagrindiniame faile. Smagu tai turėti, kai vėliau (kitame projekte) turiu padaryti kažką panašaus

„Eeprom“vis dar naudojamas, bet tik pabudimo laikui išsaugoti.

Kartą per sekundę

Įdiegus išorinius įrenginius, kodas patikrina, ar praėjo viena sekundė (padaryta naudojant laikmatį).

Meniu

Tokiu atveju ji patikrina, ar buvo paspaustas mygtukas, jei taip, jis patenka į meniu, kuriame galite nustatyti dabartinį laiką, savaitės dieną ir pažadinimo laiką. Atminkite, kad nuo išjungimo iki viso ryškumo užtrunka apie 5 minutes, todėl pažadinimo laiką nustatykite šiek tiek anksčiau.

Pažadinimo laikas saugomas „eeprom“, kad net ir nutrūkus elektros tiekimui jis „žinotų“, kada jus pažadinti. Žinoma, dabartinis laikas saugomas realiojo laiko laikrodyje.

Dabartinio ir pabudimo laiko palyginimas

Kai nepaspaudžiamas joks mygtukas, jis tikrina esamą laiką ir lygina jį su pabudimo laiku ir savaitės diena. Nenoriu, kad savaitgalį mane pažadintų:-)

Daugeliu atvejų nieko nereikia daryti, todėl kintamieji „šviesos diodai“nustatomi į IŠJUNGTI, o kita - į ĮJUNGTA. Šis kintamasis tikrinamas kartu su signalu „change_intensity“, kuris taip pat ateina iš laikmačio ir yra aktyvus 244 kartus per sekundę. Taigi, kai „LED“kintamasis yra įjungtas, intensyvumas padidėja 244 kartus per sekundę, o kai jis yra išjungtas, sumažėja 244 kartus per sekundę. Tačiau padidėjimas vyksta vienu žingsniu, kai sumažėjimas yra 16 žingsnių, o tai reiškia, kad, kai tikėtina, kad pažadinimo lemputė atliks savo darbą, ji išsijungia 16 kartų greičiau, bet vis tiek sklandžiai.

Sklandumas ir ATMINTIS

Sklandumas gaunamas apskaičiuojant Sigmoid kreivę. Skaičiavimas yra gana paprastas, tačiau jį reikia atlikti naudojant slankiojo kablelio kintamuosius (dvigubus) dėl funkcijos exp (), žr. Failą sigmoid.c.

Standartinėje situacijoje „Cosmic“kompiliatorius / susiejamasis kompiuteris nepalaiko slankiojo kablelio kintamųjų. Jį įjungti lengva (kai jį rasite), tačiau padidėja kodo dydis. Šis padidėjimas buvo per didelis, kad kodas tilptų į „flash“atmintį, kai jis derinamas su funkcija sprintf (). Ši funkcija reikalinga norint konvertuoti skaičius į ekrano tekstą.

Itoa ()

Norėdami išspręsti šią problemą, sukūriau funkciją itoa (). Tai yra „Integer To Ascii“funkcija, kuri yra gana įprasta, tačiau neįtraukta į standartinę „STMicroelectronics“biblioteką ir „Cosmic“bibliotekas.

7 žingsnis: IKEA (ką mes darytume be jų)

IKEA (ką mes darytume be jų)
IKEA (ką mes darytume be jų)
IKEA (ką mes darytume be jų)
IKEA (ką mes darytume be jų)
IKEA (ką mes darytume be jų)
IKEA (ką mes darytume be jų)

Paveikslėlis pirktas iš IKEA. Tai 50 x 40 cm dydžio „Ribba“rėmas. Šis rėmas yra gana storas, todėl puikiai tinka paslėpti elektroniką už jo. Vietoj plakato ar paveikslo įdėjau skylėtos medienos drožlių plokštės gabalą. Jį galite nusipirkti techninės įrangos parduotuvėje, kur jis kartais vadinamas „lovos lenta“. Jame yra mažų skylių, todėl jis idealiai tinka įdėti lemputes. Deja, mano plokštės skylės buvo šiek tiek didesnės nei 5 mm, todėl LED lempoms „pritvirtinti“turėjau naudoti karštuosius klijus.

Kietosios plokštės centre padariau 16x2 dydžio stačiakampę skylę ir ją įspaudžiau. PCB su visa elektronika kabo ant šio ekrano, jis nėra montuojamas prie nieko kito.

Perforuota medžio drožlių plokštė buvo nudažyta purškiama juoda spalva, bet už jos. Rėme išgręžiau dvi skyles, kad mygtukai nustatytų laiką ir datą, nes rėmas yra gana storas, todėl turėjau praplėsti skylutes rėmo vidinėje pusėje, kad mygtukai pakankamai išsikištų.

Rekomenduojamas: