Tabla de contenido:

Luz de despertador: 7 pasos (con imágenes)
Luz de despertador: 7 pasos (con imágenes)

Video: Luz de despertador: 7 pasos (con imágenes)

Video: Luz de despertador: 7 pasos (con imágenes)
Video: 😱¿Cómo funciona el LUZ DESPERTADOR COLORS de Betterware? | Tutorial Completo 2024, Noviembre
Anonim
Luz de despertador
Luz de despertador

Mientras escribo este instructivo, estamos en pleno invierno en el hemisferio norte y eso significa días cortos y noches largas. Estoy acostumbrado a levantarme a las 06:00 y en verano el sol estará brillando para entonces. Sin embargo, en invierno, amanece a las 09:00 si tenemos la suerte de tener un día que no esté nublado (que es … no muy a menudo).

Hace algún tiempo leí acerca de una "luz de despertador" fabricada por Philips que se usaba en Noruega para simular una mañana soleada. Nunca compré uno, pero seguí pensando en hacer uno porque hacer uno tú mismo es más divertido que simplemente comprarlo.

Suministros:

Marco de imagen "Ribba" 50 x 40 cm de IKEA

tableros duros perforados de ferretería

Placa de desarrollo STM8S103 a través de Ebay u otros

Reloj en tiempo real DS1307 (Mouser, Farnell, Conrad, etc.)

Cristal de reloj de 32768 Hz (Mouser, Farnell, Conrad, etc.)

Monedero de litio de 3V + soporte para monedas

MOSFET de canal N BUZ11 o IRLZ34N (3x)

BC549 (o cualquier otro transistor NPN)

tantos leds blancos, rojos, azules, verdes, etc. como desee

algunas resistencias y condensadores (ver esquema)

Powerbrick, 12V a 20V, 3A o más (por ejemplo, fuente de alimentación de una computadora portátil vieja)

Paso 1: Hacer (un poco) más fácil levantarse

Haciendo (un poco) más fácil levantarse
Haciendo (un poco) más fácil levantarse

La idea es que es difícil levantarse de la cama por la mañana cuando todavía está oscuro. Y si vives cerca o incluso por encima del círculo polar ártico, estará oscuro por mucho tiempo. En lugares como Tromsö en Noruega no habrá luz en absoluto, ya que allí el sol se pone a mediados de noviembre solo para reaparecer a mitad de enero.

Entonces, lo que hizo Philips fue simular la salida del sol.

Philips aumenta poco a poco la luminosidad de la lámpara, que probablemente esté fabricada con varios leds pero escondida detrás de un solo difusor. Su tiempo desde apagado hasta el brillo total toma 30 minutos.

Las luces de activación de Philips no son tan caras, pero tienen un solo color y parecen un poco pequeñas. Creo que puedo hacerlo mejor.

Paso 2: más color

Más color
Más color

Mi luz de despertador usa cuatro colores, blanco, rojo, azul y verde. Primero vienen los leds blancos, luego vienen los rojos, y por último unos leds azules y verdes. Mi idea era que podía simular no solo el aumento de brillo sino también el cambio de color de la luz de la mañana, comenzando con un poco de blanco, agregando rojo un poco más tarde y mezclando azul y verde al final. No estoy seguro de que realmente se parezca a la luz real de la mañana, pero me gusta la colorida pantalla como es ahora.

La mía también es más rápida que la luz de activación de Philips, en lugar de los 30 minutos de la luz de Philips, la mía pasa del 0% al 100% de brillo en menos de 5 minutos. Entonces mi sol sale mucho más rápido.

NOTA:

Es MUY difícil hacer fotos de mi luz de despertador, lo intenté con varias cámaras y teléfonos inteligentes, pero todas las fotos que hice no le hacen justicia a la realidad.

Paso 3: Curva sigmoidea, parpadeo y "resolución"

Curva sigmoidea, parpadeo y
Curva sigmoidea, parpadeo y

Por supuesto que quería que el brillo fuera lo más suave posible. Los ojos humanos tienen una sensibilidad logarítmica, lo que significa que en la oscuridad total son más sensibles que a plena luz del día. Un aumento muy pequeño en el brillo cuando los niveles son bajos "se siente" igual que un paso mucho mayor cuando la luz tiene, por ejemplo, un 40% de brillo. Para lograr esto, utilicé una curva especial llamada Sigmoide (o curva S), esta curva comienza como una curva exponencial que se nivela a la mitad nuevamente. Descubrí que es una forma muy agradable de aumentar (y disminuir) la intensidad.

La frecuencia de reloj del microcontrolador (y los temporizadores) es de 16 MHz y utilizo la resolución máxima de TIMER2 (65536) para crear tres señales de ancho de pulso (PWM). Por lo tanto, los pulsos llegan 16000000/65536 = 244 veces por segundo. Eso está muy por encima del límite de los ojos para ver cualquier parpadeo.

Entonces los leds se alimentan con una señal PWM que se realiza con este temporizador de 16 bits del microcontrolador STM8S103. Como mínimo, esta señal PWM puede estar ENCENDIDA con una longitud de pulso de 1 pulso y las longitudes de pulso 65535 restantes apagadas.

Entonces, los leds conectados a esa señal PM estarán ENCENDIDOS 1/65536 -ésimo del tiempo: 0.0015%

Como máximo, están ENCENDIDOS 65536/65536 -ésimo del tiempo: 100%.

Paso 4: Electrónica

Electrónica
Electrónica
Electrónica
Electrónica
Electrónica
Electrónica
Electrónica
Electrónica

Microcontrolador

El cerebro de la luz de activación es un microcontrolador STM8S103 de STMicroelectronics. Me gusta usar piezas que tengan las capacidades suficientes para un trabajo. Para una tarea simple como esta, no es necesario usar microcontroladores STM32 (mis otros favoritos) pero un Arduino UNO no fue suficiente ya que quería tres señales PWM con resolución de 16 bits y no hay temporizador con tres canales de salida en un UNO.

Reloj en tiempo real

La hora se lee en un reloj de tiempo real DS1307 que funciona con un cristal de 32768 Hz y tiene una batería de respaldo de 3V.

La configuración de la hora actual, el día y la hora del despertador se realiza con dos botones y se muestra en una pantalla de caracteres LCD de 16 x 2. Para mantener mi dormitorio realmente oscuro por la noche, la luz de fondo de la pantalla LCD se enciende solo cuando los leds son más brillantes que la luz de fondo y cuando está configurando la hora, el día y la hora de despertarse.

Poder

La energía proviene de una vieja fuente de alimentación para computadora portátil, la mía produce 12 V y puede entregar 3 A. Cuando tenga otra fuente de alimentación, puede ser necesario ajustar las resistencias en serie con las cadenas de led. (Vea abajo)

Leds

Los leds se conectan a la alimentación de 12V, el resto de la electrónica funciona a 5V realizada con un regulador lineal 7805. En el esquema dice que utilizo un regulador TO220, que no es necesario ya que el microcontrolador, la pantalla y el reloj en tiempo real usan solo unos pocos miliamperios. Mi reloj usa una versión TO92 más pequeña del 7805 capaz de suministrar 150 mA.

La conmutación de las cadenas de led se realiza con MOSFET de canal N. Nuevamente, en el esquema muestra otros dispositivos de los que usé. Sucedió que tenía exactamente tres MOSFET BUZ11 muy antiguos en lugar de los MOSFET IRLZ34N más nuevos. Ellos funcionan bien

Por supuesto, puede colocar tantos leds como desee, siempre que los MOSFET y la fuente de alimentación puedan manejar la corriente. En el esquema he dibujado solo una cadena de cualquier color, en realidad hay varias de cada color paralelas a las otras cadenas de ese color.

Paso 5: Resistencias (para los Leds)

Resistencias (para los Leds)
Resistencias (para los Leds)

Sobre las resistencias en las cadenas de led. Los leds blancos y azules suelen tener un voltaje de 2.8V sobre ellos cuando están a pleno brillo.

Los leds rojos tienen solo 1.8V, mis leds verdes tienen 2V sobre ellos a pleno brillo.

Otra cosa es que su brillo total no es el mismo. Así que me costó un poco de experimentación hacerlos igualmente brillantes (para mis ojos). Al hacer que los leds sean igualmente brillantes a pleno brillo, también se verán igualmente brillantes en niveles más bajos, la señal de ancho de pulso siempre los enciende a pleno brillo, pero durante tiempos más largos y cortos, sus ojos se encargan del promedio.

Comience con un cálculo como este. La fuente de alimentación entrega (en mi caso) 12V.

Cuatro leds blancos en serie necesitan 4 x 2.8V = 11.2V, esto deja 0.8V para la resistencia.

Descubrí que eran lo suficientemente brillantes a 30 mA, por lo que la resistencia debe ser:

0,8 / 0,03 = 26,6 ohmios. En el esquema, ves que puse una resistencia de 22 ohmios, lo que hace que los leds sean un poco más brillantes.

Los leds azules eran demasiado brillantes a 30 mA, pero en comparación con los leds blancos a 15 mA, también tenían alrededor de 2,8 V sobre ellos a 15 mA, por lo que el cálculo fue 4 x 2,8 V = 11,2 V, dejando de nuevo 0,8 V

0.8 / 0.015 = 53.3 ohmios, así que elegí una resistencia de 47 ohmios.

Mis leds rojos también necesitan unos 15 mA para ser igual de brillantes que los demás, pero solo tienen 1.8V sobre ellos a esa corriente. Entonces podría poner más en serie y aún tener algo de "espacio" para la resistencia.

Seis leds rojos me dieron 6 x 1.8 = 10.8V, por lo que la resistencia fue de 12 - 10.8 = 1.2V

1.2 / 0.015 = 80 ohmios, lo convertí en 68 ohmios. Al igual que los demás, un poquito más brillante.

Los leds verdes que utilicé son tan brillantes como los demás a unos 20 mA. Necesitaba solo unos pocos (como los azules) y elegí poner cuatro en serie. A 20 mA tienen 2, 1 V sobre ellos, lo que da 3 x 2,1 = 8,4 V

12 - 8.4 = 3.6V para la resistencia. Y 3,6 / 0,02 = 180 ohmios.

Si construyes esta luz de despertador es poco probable que tengas la misma fuente de alimentación, tendrás que ajustar la cantidad de leds en serie y las resistencias necesarias.

Un pequeño ejemplo. Digamos que tiene una fuente de alimentación que da 20V. Yo elegiría configurar 6 leds azules (y blancos) en serie, 6 x 3V = 18V entonces 2V para la resistencia. Y digamos que te gusta el brillo a 40 mA. Entonces, la resistencia debe ser 2V / 0.04 = 50 ohmios, una resistencia de 47 ohmios estará bien.

Aconsejo no superar los 50 mA con leds normales (5 mm). Algunos pueden manejar más, pero me gusta estar en el lado seguro.

Paso 6: software

Todo el código se puede descargar desde:

gitlab.com/WilkoL/wakeup_light_stm8s103

mantenga abierto el código fuente, junto al resto de este instructivo si desea seguir la explicación.

C Principal

Main.c configura primero el reloj, los temporizadores y otros periféricos. La mayoría de los "controladores" los escribí usando la Biblioteca estándar de STMicroelectronics y si tiene alguna pregunta sobre ellos, escríbala en un comentario debajo del instructivo.

Eeprom

Dejé el código "texto para mostrar" que usé para poner textos en la eeprom del STM8S103 como comentarios. No estaba seguro de tener suficiente memoria flash para todo mi código, así que traté de poner todo lo posible en eeprom para tener todo el flash del programa. Al final, eso no fue necesario y moví el texto a flash. Pero lo dejé como texto comentado en el archivo main.c. Es bueno tenerlo, cuando necesito hacer algo similar más adelante (en otro proyecto)

La eeprom todavía se usa, pero solo para almacenar la hora de activación.

Una vez por segundo

Después de configurar los periféricos, el código verifica si ha pasado un segundo (hecho con un temporizador).

Menú

Si ese es el caso, comprueba si se presionó un botón, si es así ingresa al menú donde se puede configurar la hora actual, el día de la semana y la hora del despertador. Recuerde que se tarda unos 5 minutos en pasar de apagado a brillo total, así que configure la hora de activación un poco antes.

La hora de activación se almacena en eeprom para que, incluso después de un corte de energía, "sepa" cuándo despertarlo. Por supuesto, la hora actual se almacena en el reloj de tiempo real.

Comparación de tiempo actual y despertador

Cuando no se presionó ningún botón, verifica la hora actual y la compara con la hora del despertador y el día de la semana. No quiero que me despierte el fin de semana:-)

La mayoría de las veces no es necesario hacer nada, por lo que establece los “leds” variables en OFF o en ON. Esta variable se comprueba junto con la señal “change_intensity”, que también proviene de un temporizador y está activa 244 veces por segundo. Entonces, cuando la variable “leds” está encendida, la intensidad aumenta 244 veces por segundo y cuando está apagada disminuye 244 veces por segundo. Pero el aumento se produce en pasos individuales donde la disminución es en pasos de 16, lo que significa que cuando la luz de activación haya hecho su trabajo, se apagará 16 veces más rápido pero aún sin problemas.

Suavidad y SIN MEMORIA

La suavidad proviene del cálculo de la curva sigmoidea. El cálculo es bastante simple pero debe hacerse en variables de punto flotante (dobles) debido a la función exp (), vea el archivo sigmoid.c.

En la situación estándar, el compilador / enlazador Cosmic no tiene soporte para variables de punto flotante. Encenderlo es fácil (una vez que lo haya encontrado) pero viene con un aumento en el tamaño del código. Este aumento fue demasiado para que el código quepa en la memoria flash cuando se combina con la función sprintf (). Y esa función es necesaria para convertir números en texto para la pantalla.

Itoa ()

Para solucionar este problema, creé la función itoa (). Esta es una función Integer To Ascii que es bastante común, pero no se incluye con la biblioteca estándar STMicroelectronics, ni con las bibliotecas Cosmic.

Paso 7: IKEA (qué haríamos sin ellos)

IKEA (qué haríamos sin ellos)
IKEA (qué haríamos sin ellos)
IKEA (qué haríamos sin ellos)
IKEA (qué haríamos sin ellos)
IKEA (qué haríamos sin ellos)
IKEA (qué haríamos sin ellos)

La imagen de fue comprada en IKEA. Es un marco Ribba de 50 x 40cm. Este marco es bastante grueso y eso lo hace ideal para esconder la electrónica detrás de él. En lugar de un póster o una imagen, coloco un trozo de madera prensada perforada. Puedes comprarlo en la ferretería donde a veces se le llama “tablero de cama”. Tiene pequeños agujeros que lo hacen ideal para colocar leds. Desafortunadamente, los agujeros en mi tablero eran un poco más grandes de 5 mm por lo que tuve que usar pegamento caliente para "montar" los leds.

Hice un agujero rectangular en el centro de la placa dura para la pantalla de 16x2 y lo presioné. La PCB con todos los componentes electrónicos cuelga de esta pantalla, no está montada en ninguna otra cosa.

El tablero perforado fue pintado con spray de negro y detrás de la alfombra. Taladré dos agujeros en el marco para que los botones establezcan la hora y la fecha, ya que el marco es bastante grueso, tuve que ensanchar los agujeros en el interior del marco para que los botones sobresalieran lo suficiente.

Recomendado: