Taula de continguts:

Llum de despertador: 7 passos (amb imatges)
Llum de despertador: 7 passos (amb imatges)

Vídeo: Llum de despertador: 7 passos (amb imatges)

Vídeo: Llum de despertador: 7 passos (amb imatges)
Vídeo: Праздник. Новогодняя комедия 2024, De novembre
Anonim
Llum de despertador
Llum de despertador

Mentre escric aquest instructiu, és a mitjan hivern a l’hemisferi nord i això significa dies curts i llargues nits. Estic acostumat a llevar-me a les 06:00 i a l'estiu el sol brillarà per llavors. A l’hivern, però, fa llum a les 09:00 si tenim la sort de tenir un dia que no estigui ennuvolat (que és … no sovint).

Fa un temps vaig llegir sobre una "llum de despertador" fabricada per Philips que es va utilitzar a Noruega per simular un matí assolellat. Mai no en vaig comprar, però vaig seguir pensant en fer-ne un perquè fer-ne un mateix és més divertit que comprar-lo.

Subministraments:

Marc "Ribba" de 50 x 40 cm d'IKEA

tauler dur perforat de ferreteria

Taula de desenvolupament STM8S103 mitjançant Ebay o altres

DS1307 Rellotge en temps real (Mouser, Farnell, Conrad, etc.)

Vidre de rellotge de 32768 Hz (Mouser, Farnell, Conrad, etc.)

Coincell de liti 3V + portaconxells

MOSFET de canal N BUZ11 o IRLZ34N (3x)

BC549 (o qualsevol altre transistor NPN)

tants leds blancs, vermells, blaus, verds, etc. com vulgueu

algunes resistències i condensadors (veure esquema)

Powerbrick, de 12V a 20V, 3A o més (per exemple, alimentació antiga per a portàtils)

Pas 1: fer que sigui (una mica) més fàcil aixecar-se

Fer que sigui (una mica) més fàcil aixecar-se
Fer que sigui (una mica) més fàcil aixecar-se

La idea és que sigui difícil sortir del llit al matí quan encara és fosc. I si vius a prop o fins i tot per sobre del cercle polar àrtic, serà molt fosc. A llocs com Tromsö, a Noruega, no obtindrà llum, ja que allà el sol es pon a mitja novembre i només torna a aparèixer a meitat de Januari.

Per tant, el que va fer Philips va ser simular la sortida del sol.

Philips augmenta lentament la brillantor de la làmpada, que probablement es fa amb diversos leds però oculta darrere d’un únic difusor. El seu temps desactivat fins a la màxima brillantor triga 30 minuts.

Les llums de despertador de Philips no són tan cares, però tenen un sol color i sembla una mica petita. Crec que puc fer-ho millor.

Pas 2: més color

Més color
Més color

La meva llum de despertador utilitza quatre colors: blanc, vermell, blau i verd. Primer arribeu als leds blancs, després els vermells i, a continuació, uns leds blaus i verds. La meva idea era que pogués simular no només l’augment de la brillantor, sinó també el canvi de color clar del matí, començant per una mica de blanc, afegint vermell una mica més tard i barrejant blau i verd al final. No estic segur que en realitat s’assembli a la llum del matí real, però m’agrada la colorida pantalla tal com és ara.

La meva és també més ràpida que la llum de despertador de Philips, en lloc dels 30 minuts de la llum de Philips, la meva passa del 0% al 100% de brillantor en menys de 5 minuts. Així, el meu sol surt molt més ràpid.

NOTA:

És MOLT difícil fer fotografies de la meva llum de despertar, he provat amb diverses càmeres i telèfons intel·ligents, però totes les imatges que he fet no fan justícia real.

Pas 3: corba sigmoide, parpelleig i "resolució"

Corba sigmoide, parpelleig i
Corba sigmoide, parpelleig i

Per descomptat, volia que la il·luminació fos el més suau possible. Els ulls humans tenen una sensibilitat logarítmica, és a dir, en la foscor total són més sensibles que a plena llum del dia. Un augment molt petit de la brillantor quan els nivells són baixos "se sent" igual que un pas molt més gran quan la llum té una brillantor del 40%, per exemple. Per aconseguir-ho, he utilitzat una corba especial anomenada Sigmoid (o corba S), que comença com una corba exponencial que es torna a nivelar a mig camí. Vaig trobar que és una manera molt agradable d’augmentar (i disminuir) la intensitat.

La freqüència de rellotge del microcontrolador (i dels temporitzadors) és de 16 MHz i faig servir la resolució màxima de TIMER2 (65536) per crear tres senyals d'amplada de pols (PWM). Per tant, els polsos arriben a 16000000/65536 = 244 vegades per segon. Això està molt per sobre del límit dels ulls per veure qualsevol parpelleig.

Així doncs, els leds s’alimenten amb un senyal PWM que es fa amb aquest 16 bittimer del microcontrolador STM8S103. Com a mínim, aquest senyal PWM pot estar activat amb una longitud de pols de 1 i la resta de 65535 polsos apagats.

Per tant, els leds connectats a aquest senyal PM estaran ON ON / 65536-th del temps: 0,0015%

Com a màxim, estan activats 65536/65536-th del temps: 100%.

Pas 4: electrònica

Electrònica
Electrònica
Electrònica
Electrònica
Electrònica
Electrònica
Electrònica
Electrònica

Microcontrolador

El cervell de la llum de despertador és un microcontrolador STM8S103 de STMicroelectronics. M'agrada fer servir peces que tinguin prou capacitats per a una feina. Per a una tasca senzilla, no és necessari utilitzar microcontroladors STM32 (els meus altres preferits), però un Arduino UNO no era suficient ja que volia tres senyals PWM amb resolució de 16 bits i no hi ha temporitzador amb tres canals de sortida en un UNO.

Rellotge en temps real

L'hora es llegeix des d'un rellotge en temps real DS1307 que funciona amb un cristall de 32768 Hz i que té una bateria de reserva de 3V.

La configuració de l’hora actual, el dia i l’hora de despertar es fa amb dos botons i es mostra amb una pantalla de caràcters LCD de 16 x 2. Per mantenir el meu dormitori molt fosc a la nit, la llum de fons de la pantalla LCD només s’encén quan els leds són més brillants que la llum de fons i quan configureu l’hora, el dia i l’hora de despertar.

Potència

L’alimentació prové d’una antiga font d’alimentació per a portàtils, la meva produeix 12V i pot lliurar 3A. Quan tingueu una altra font d'alimentació, pot ser necessari ajustar les resistències en sèrie amb les cordes led. (Mirar abaix)

Leds

Els leds estan connectats a l'alimentació de 12V, la resta de l'electrònica funciona a 5V amb un regulador lineal 7805. A l’esquema es diu que faig servir un regulador TO220, que no és necessari, ja que el microcontrolador, la pantalla i el rellotge en temps real utilitzen només uns miliamperis. El meu rellotge utilitza una versió TO92 més petita del 7805 capaç de subministrar 150 mA.

El canvi de les cadenes led es realitza amb MOSFET de canal N. De nou, a l'esquema es mostren altres dispositius que no he utilitzat. Vaig tenir exactament tres MOSFET BUZ11 molt antics en lloc dels MOSFET IRLZ34N més recents. Funcionen bé

Per descomptat, podeu introduir tants leds com vulgueu, sempre que els MOSFET i el subministrament de potència puguin controlar el corrent. A l'esquema he dibuixat només una cadena de qualsevol color, en realitat hi ha diversos colors paral·lels a les altres cadenes d'aquest color.

Pas 5: resistències (per als leds)

Resistències (per als Leds)
Resistències (per als Leds)

Sobre les resistències de les cordes led. Els leds blancs i blaus solen tenir un voltatge de 2,8V sobre ells quan tenen la màxima brillantor.

Els leds vermells tenen només 1,8V, els meus leds verds tenen 2V sobre ells amb una brillantor total.

Una altra cosa és que la seva plena brillantor no és la mateixa. Per tant, va caldre fer algunes proves per fer-les igual de brillants (als meus ulls). En fer que els leds siguin igualment brillants a la màxima brillantor, també es veuran igual de brillants a nivells inferiors, el senyal d’amplada del pols sempre els encén a plena brillantor, però durant els temps més llargs i curts els vostres ulls s’encarreguen de la mitjana.

Comenceu amb un càlcul com aquest. La font d'alimentació proporciona (en el meu cas) 12V.

Quatre leds blancs en sèrie necessiten 4 x 2,8 V = 11,2 V, això deixa 0,8 V per a la resistència.

Havia descobert que eren prou brillants a 30 mA, de manera que la resistència ha de ser:

0,8 / 0,03 = 26,6 ohm. A l'esquema veieu que he posat una resistència de 22 ohms, fent que els leds siguin una mica més brillants.

Els leds blaus eren massa brillants a 30 mA, però en comparació amb els leds blancs de 15 mA, també tenien uns 2,8 V sobre ells a 15 mA, de manera que el càlcul era de 4 x 2,8 V = 11,2 V de nou deixant 0,8 V

0,8 / 0,015 = 53,3 ohm, així que vaig triar una resistència de 47 ohm.

Els meus leds vermells també necessiten uns 15 mA per ser igual de brillants que els altres, però només tenen 1,8V sobre ells en aquest moment. Per tant, podria posar-ne més en sèries i, tot i així, tenir “espai” per a la resistència.

Sis leds vermells em van donar 6 x 1,8 = 10,8V, de manera que la resistència era de 12-10,8 = 1,2V

1,2 / 0,015 = 80 ohm, el vaig convertir en 68 ohm. Igual que els altres, una mica més brillant.

Els leds verds que he utilitzat són tan brillants com els altres a uns 20 mA. Necessitava només uns quants (igual que els blaus) i vaig optar per posar-ne quatre de sèrie. A 20mA tenen 2, 1V sobre ells, donant 3 x 2,1 = 8,4V

12 - 8,4 = 3,6 V per a la resistència. I 3,6 / 0,02 = 180 ohm.

Si construïu aquesta llum de despertador, és poc probable que tingueu la mateixa font d'alimentació, haureu d'ajustar el nombre de leds de la sèrie i les resistències necessàries.

Un petit exemple. Suposem que teniu un subministrament energètic que dóna 20V. Voldria establir 6 leds blaus (i blancs) en sèrie, 6 x 3V = 18V, de manera que 2V per a la resistència. I diguem que us agrada la brillantor a 40 mA. La resistència ha de ser de 2V / 0,04 = 50 ohm, una resistència de 47 ohm estarà bé.

Us aconsello no superar els 50 mA amb leds normals (5 mm). Alguns poden suportar més, però a mi m’agrada estar segur.

Pas 6: programari

Es pot descarregar tot el codi des de:

gitlab.com/WilkoL/wakeup_light_stm8s103

mantingueu el codi font obert, al costat de la resta d'aquest document instructiu, si voleu seguir l'explicació.

Main.c

Main.c primer configura el rellotge, els temporitzadors i altres perifèrics. La majoria dels "controladors" els vaig escriure utilitzant la Biblioteca estàndard de STMicroelectronics i, si teniu cap pregunta, escriviu-la en un comentari a sota de la instrucció.

Eeprom

He deixat el codi "text per mostrar" que he utilitzat per posar textos a l'eeprom del STM8S103 com a comentaris. No estava segur que tingués prou memòria flash per a tot el meu codi, així que vaig intentar posar el màxim possible a eeprom per tenir tot el flash del programa. Al final, no va ser necessari i vaig moure el text a parpellejar. Però el vaig deixar com a text comentat al fitxer main.c. És bo tenir-lo, quan més endavant necessiti fer alguna cosa similar (en un altre projecte)

L'eprom encara s'utilitza, però només per emmagatzemar el temps de despertador.

Un cop per segon

Després de configurar els perifèrics, el codi comprova si ha passat un segon (fet amb un temporitzador).

Menú

Si és el cas, comprova si s'ha premut un botó, si és així, entra al menú on es pot establir l'hora actual, el dia de la setmana i l'hora de despertador. Recordeu que triga uns 5 minuts a passar de la brillantor completa, així que configureu l’hora de despert una mica abans.

El temps de despertat s’emmagatzema a eeprom, de manera que fins i tot després d’una interrupció elèctrica “sabrà” quan es despertarà. Per descomptat, l’hora actual s’emmagatzema al rellotge de temps real.

Comparació de l’hora actual i de despertar

Quan no es premia cap botó, comprova l'hora actual i el compara amb l'hora de despert i el dia de la setmana. No vull que em desperti el cap de setmana:-)

La majoria de les vegades no cal fer res, de manera que estableix la variable "leds" a OFF else a ON. Aquesta variable es comprova juntament amb el senyal "change_intensity", que també prové d'un temporitzador i està actiu 244 vegades per segon. Per tant, quan la variable "leds" està activada, la intensitat augmenta 244 vegades per segon i quan està apagada disminueix 244 vegades per segon. Però l’increment es fa en passos individuals, on la disminució es fa en passos de 16, cosa que significa que, quan la llum de despertador ha complert la seva feina, s’espera 16 vegades més ràpidament, però continua sense problemes.

Suavitat i SENSE MEMORYRIA

La suavitat prové del càlcul de la corba Sigmoid. El càlcul és bastant senzill, però s’ha de fer en variables de coma flotant (dobles) a causa de la funció exp (), vegeu el fitxer sigmoid.c.

En la situació estàndard, el compilador / enllaçador còsmic no té suport per a variables de coma flotant. Encendre'l és fàcil (un cop l'heu trobat), però inclou un augment de la mida del codi. Aquest augment va ser massa per fer que el codi encaixés a la memòria flash quan es combina amb la funció sprintf (). I aquesta funció és necessària per convertir els números en text per a la pantalla.

Itoa ()

Per solucionar aquest problema, he creat la funció itoa (). Aquesta és una funció Integer To Ascii que és força comuna, però no s'inclou amb la biblioteca estàndard STMicroelectronics, ni amb les biblioteques còsmiques.

Pas 7: IKEA (què faríem sense ells)

IKEA (què faríem sense ells)
IKEA (què faríem sense ells)
IKEA (què faríem sense ells)
IKEA (què faríem sense ells)
IKEA (què faríem sense ells)
IKEA (què faríem sense ells)

La imatge de va ser comprada a IKEA. És un marc Ribba de 50 x 40cm. Aquest marc és bastant gruixut i fa que sigui ideal per amagar electrònica al darrere. En lloc d’un pòster o imatge, he posat un tros de tauler dur perforat. Podeu comprar-lo a la ferreteria, on de vegades se l’anomena “llitera”. Té uns petits forats que el van fer ideal per posar leds. Malauradament, els forats del tauler eren una mica més grans de 5 mm, de manera que vaig haver d'utilitzar cola calenta per "muntar" els leds.

Vaig fer un forat rectangular al centre del tauler dur per a la pantalla de 16x2 i el vaig prémer. El PCB amb tota l'electrònica penja en aquesta pantalla, no està muntat a res més.

El tauler dur perforat estava pintat amb esprai de negre i darrere de l’estora. He foradat dos forats al marc perquè els botons fixessin la data i l’hora, ja que el marc és bastant gruixut, he hagut d’ampliar els forats de la part interior del marc perquè els botons quedin prou sobresortits.

Recomanat: