Tabla de contenido:

Reloj de horario de verano sencillo: 7 pasos
Reloj de horario de verano sencillo: 7 pasos

Video: Reloj de horario de verano sencillo: 7 pasos

Video: Reloj de horario de verano sencillo: 7 pasos
Video: HORARIO UNIVERSAL: Hora UTC o GMT: Como CALCULAR DIFERENCIA HORARIA (Que son los HUSOS HORARIOS) 2024, Noviembre
Anonim
Reloj de ahorro de luz diurna fácil
Reloj de ahorro de luz diurna fácil
Reloj de ahorro de luz diurna fácil
Reloj de ahorro de luz diurna fácil

Historia

Este proyecto comenzó como un desafío para mí aprender a programar (codificación) con el Arduino Uno y una sola pantalla LCD 1602A, primero quería llevar el Arduino a sus límites de precisión. Este es un proyecto para construir un reloj sin el uso de un módulo RTC (módulo de reloj en tiempo real) y además no usar ningún retardo (); comandos porque el delay (); comando detiene el código durante un período de tiempo determinado. Mientras trabajaba en el código básico de mantenimiento del tiempo, pensé que esto podría ser un poco mundano, así que decidí agregar una función de horario de verano como una adición novedosa para condimentar las cosas y posiblemente crear un poco más de interés en este proyecto. Al principio, la idea era puramente novedosa, pero cuanto más trabajo con ella y miro el reloj físico que tengo en mi escritorio, más práctica se vuelve la idea. Al agregar un módulo RTC y ajustar el código, este reloj sería preciso durante los próximos años y a un costo muy bajo para los fabricantes y el público que compra un reloj de este tipo.

El horario de verano o (DST) ha existido durante más de 100 años (Google, tiene una historia bastante colorida). No quiero meterme en la política, pero es un ejercicio crudo y doloroso que no facilita la vida a la gente común (tú y yo). En su mayor parte disfrutamos de la hora extra de luz del día, pero la forma en que se aplica es brutal. Es hora de una actualización importante a una idea muy antigua.

Este ejemplo es fácil de vivir con y con la era digital y los avances en la tecnología se aplican fácilmente a todas las formas de relojes digitales, pero podrían ayudar a la desaparición del reloj analógico. En lugar de un salto de 1 hora desde la hora estándar a la hora DST y luego la hora DST a la hora estándar, este reloj se basa en la progresión gradual del tiempo desde el solsticio de invierno hasta el solsticio de verano y luego vuelve a la hora estándar en el próximo solsticio de invierno año tras año. Esta transición tiene lugar durante 180 días de cada período de 6 meses, el ajuste es de 20 segundos por día durante 360 días y los 5 o 6 días restantes se suman a la duración de los solsticios. Mi ejemplo aquí aumenta 1 minuto una vez cada tres días dentro del ciclo de 180 días. El 21 de junio de cada año o alrededor de esa fecha, el reloj se adelanta 1 hora completa y el 21 de diciembre de cada año o alrededor de esa fecha, el reloj ha retrocedido a la hora estándar. El año bisiesto se contabiliza fácilmente, especialmente si se utiliza un RTC. El hemisferio sur también se adapta fácilmente a este reloj, la escala de diapositivas está simplemente desfasada 6 meses con respecto al hemisferio norte.

Hay tres lugares en el mundo donde el horario de verano sería más o menos, la región ecuatorial y los polos. No creo que la luz del día cambie mucho en el ecuador, no sé si alguna de las áreas tropicales incluso usa DST y los polos son una historia diferente nuevamente, solo '¿QUÉ' hora es en los polos de todos modos?

Paso 1: Acerca del reloj

Sobre el reloj
Sobre el reloj
Sobre el reloj
Sobre el reloj

El reloj que he creado se basa en la hora estándar que nunca varía del reloj mundial aceptado internacionalmente, esto se muestra en la primera línea de la pantalla LCD 1602. La segunda línea es la misma escala de tiempo pero muestra el desfase de minutos de un solsticio al siguiente. Desde el solsticio de invierno hasta el solsticio de verano, la compensación aumenta un minuto cada tres días hasta un máximo de sesenta minutos. Desde el solsticio de verano hasta el solsticio de invierno, la compensación disminuye un minuto cada tres días hasta que el horario estándar y el horario de verano son los mismos.

Para este ejemplo, he usado la hora militar (reloj de 24 horas) y la hora estándar (reloj de 12 horas) a.m. y p.m. para ayudar a las personas que no están familiarizadas con la escala de tiempo de 24 horas, también me dio espacio para mostrar el número de día en el que se encuentra el horario de verano. establecer desde. El código se puede cambiar para mostrar el reloj de 12 horas. He agregado tres pulsadores conectados a los pines digitales 2, 3 y 4 para ajustar el tiempo. Estos botones solo aumentarán los segundos, minutos u horas. Los botones son opcionales, el reloj seguirá funcionando bien si no conecta los botones y no es necesario modificar el código. Recomendaría al menos usar un botón para ajustar los segundos y si no se puede lograr una precisión completa, mantenga el reloj en el lado lento, el botón avanza el tiempo 1 segundo por segundo.

Si inicia el reloj desde el IDE de Arduino, el boceto tardará entre 5,5 y 6 segundos en cargarse y arrancar, si tiene el boceto cargado en el Arduino, conéctelo a una verruga de pared o fuente de alimentación, tardará aproximadamente 2,5 en 3 segundos para arrancar y ejecutar.

Se necesita una configuración manual cuando finalmente tiene el reloj listo para funcionar.

Este reloj no usa un módulo RTC ni dosifica usa "delay ();" comandos.

Si le gusta usar el RTC con Arduino, este concepto aún se puede usar. El RTC le dará toda la información que necesita para agregar la hora EDSC. El código puede ser bastante diferente con un módulo RTC, no lo he investigado. Si lo hace, está prácticamente solo, pero es una excelente manera de ejercitar su cerebro.

Paso 2: lo que necesitará

Que necesitarás
Que necesitarás
Que necesitarás
Que necesitarás
Que necesitarás
Que necesitarás

LISTA DE LA COMPRA

1 Arduino Uno o Mega2569 (los pines I2C son A4 y A5 en UNO y 20 y 21 en el 2560 Mega)

Casi cualquier otro Arduino debería funcionar, los pines utilizados pueden ser diferentes. De hecho, cualquier placa controladora funcionará. Tendrá que volver a escribir el código para esa placa o fabricante.

1 pantalla LCD 1602 (color de su elección)

Utilizo una mochila I2C con la pantalla LCD, me resulta más fácil y rápido de configurar.

Cables de puente

SUMINISTROS OPCIONALES

1 tabla de pan de tamaño mediano

1-3 pulsadores de contacto momentáneo

1-3 resistencias de 10 K ohmios

Este instructivo es largo, por lo que no voy a entrar en el montaje o el gabinete que usé para mostrar el reloj. Si te gusta este proyecto y quieres hacer una versión permanente diséñala a tu gusto. Este diseño es perfecto para mí porque tenía todo lo que necesitaba en mi caja de basura y me gusta su apariencia.

NOTAS:

Para evitar las caídas de los cortes de energía, mi reloj final funciona con un panel solar que tengo afuera. El panel solar mantiene una batería de 12 voltios cargada con un regulador para evitar la sobrecarga. Esta batería está conectada al Arduino a través del conector de alimentación al lado del puerto USB. Mantengo el puerto USB conectado a la red para reducir el consumo de la batería. Ambas fuentes de energía se pueden usar al mismo tiempo sin dañar el Arduino. Una batería de 12 voltios se puede cargar a 14,5 voltios como máximo, lo cual es demasiado alto para el Arduino, por lo que uso un convertidor reductor para reducir el voltaje de suministro de la batería a un rango de 9 a 12 voltios. La batería de 12 voltios que mantengo cargada durará 3 o 4 días si los días están nublados. El regulador que uso cortará la energía del Arduino si el voltaje de la batería cae a 11 voltios. La batería que tengo proviene de un sistema de iluminación de emergencia para edificios comerciales, es aproximadamente un cuarto del tamaño de una batería de automóvil pequeña. Si tiene la intención de usar una batería de automóvil, asegúrese de mantenerla en un área bien ventilada (al aire libre), las baterías de automóvil emiten hidrógeno y oxígeno a medida que se cargan y descargan, esta es una combinación explosiva.

ADVERTENCIA

MANTENGA LA BATERÍA EN UN POZO

ZONA VENTILADA, FUERA DE

Paso 3: cableado

Alambrado
Alambrado

He proporcionado un esquema para todas las conexiones en este proyecto, si usa una placa de prueba, necesitará una placa de tamaño mediano, los interruptores necesitarán espacio para extenderse para que el circuito no sea confuso.

La pantalla LCD 1602 tiene una mochila I2C para simplificar, si usa conexiones SPI, deberá buscar cómo usarla y modificar el código cerca del comienzo del boceto. Nunca he usado las conexiones SPI, por lo que los pines 2, 3 y 4 pueden no estar disponibles para los tres botones.

Los tres pulsadores se utilizan para ajustar la hora en el reloj. Solo avanzan el tiempo (ADELANTE). En los ajustes finales, mantenga el reloj en el código en el lado lento (alrededor de 1 a 2 segundos por día o varios días) de esta manera puede avanzar la hora si es necesario. Cada botón avanza el tiempo un incremento por segundo, el botón inferior 2 segundos por segundo, el botón central 1 minuto por segundo y el botón superior 1 hora por segundo. Debería ser factible un grado bastante alto de precisión, por lo que no tendrá que ajustarlo con mucha frecuencia.

Si está ajustando segundos, minutos u horas (por ejemplo, si los minutos avanzan 58, 59, 00), la hora avanzará a la siguiente.

Estos tres botones son una adición de último minuto al reloj, funcionan bien pero puede haber una mejor manera. Solo recuerde que si se mete con esta parte del código, el "delay ();" no se puede utilizar el comando. Utilicé este método porque no necesito preocuparme por el rebote del interruptor y los saltos extraños en los avances del tiempo.

Paso 4: Qué muestra la pantalla

Qué muestra la pantalla
Qué muestra la pantalla

He puesto mucha información en la pantalla LCD 1602 que necesita alguna explicación:

Línea 1 O línea cero '0' cuando se habla en código, muestra la hora estándar. A la izquierda está 'STD', esto significa tiempo 'ESTÁNDAR'.

Lo siguiente en la primera línea del medio es la hora estándar local. No comience con el horario de verano, el reloj lo mostrará en la segunda línea.

Esta escala de tiempo es un reloj de 12 horas, por lo que en el lado derecho está "AM o PM" para indicar la mañana o después del mediodía.

Línea 2 O la línea uno '1' cuando se habla en código, muestra el horario de verano que varía según el día del año. El 'DST' a la izquierda significa 'Horario de verano'

En el medio de la segunda línea está la hora militar local, que es un reloj de 24 horas. Lo oirá referirse como 'oh seiscientas horas', por ejemplo.

En el lado derecho está el día del año como se hace referencia al solsticio de invierno, en el hemisferio norte el 21 de diciembre (aproximadamente) es el día cero '0' y en el hemisferio sur el 21 de junio (aproximadamente) es el día cero '0'.

He proporcionado dos archivos.pdf como referencia al configurar el reloj por primera vez. Elija el archivo que se refiere al hemisferio en el que vive.

Los tres botones de la derecha aumentan los segundos, minutos y horas de abajo hacia arriba.

Paso 5: Configuración del boceto

Configuración de croquis
Configuración de croquis

Hay varias líneas de código que deben configurarse para la puesta en marcha inicial. Algunas de estas líneas deben cambiarse cada vez que desconecta el reloj y cambia los valores de las variables en el croquis. Si pone en marcha el reloj del IDE, tardará unos 6 segundos en cargarse y empezar. Si carga el boceto desde el IDE, luego desconecte el reloj y reinícielo desde una verruga de pared o una fuente de alimentación, el boceto se iniciará en aproximadamente 2.5 segundos.

Línea 11 LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7);

Esta línea se dirige a la pantalla LCD y establece la dirección correcta de la mochila I2C. 0x27 es la dirección de cualquiera de las mochilas que compré. Si enciende el reloj pero no se muestran datos pero se enciende, la dirección probablemente sea diferente en su pantalla LCD. Pondré un enlace a continuación para obtener una descripción de cómo cambiar la dirección de su mochila LCD o encontrar la dirección.

Líneas 24 int minuteSt = 35;

Configure el minuto de inicio para el reloj estándar, generalmente configúrelo 5 minutos antes de iniciar el reloj para permitir el tiempo de configuración.

Líneas 25 int hourSt = 18;

Establezca la hora en STD (reloj de 24 horas) a partir de las 6 PM sería la hora 18.

Línea 26 int DSTdays = 339;

Descargue y consulte el archivo pdf "Easy DST Clock Time Scale" (hemisferio norte o sur) en el que vive, busque la fecha e inserte el número de día en esta línea. (Columna izquierda). Ejemplo (el 24 de noviembre es el día 339 en el hemisferio norte y el día 156 en el hemisferio sur)

Línea 27 int DSTyear = 2019;

Ingrese el año actual.

Línea 92 if ((masterTime - previousMasterTimeSt> = 1000) && (microTime - previousMicroTimeSt> = 500)) {

El "previousMasterTimeSt" debe compararse con el número de milisegundos, por lo que este '1000' puede necesitar cambiar a 999 dependiendo del reloj interno de la placa Arduino y luego ajustar el anteriorMicroTime para ajustar el reloj. El reloj interno aunque 16MH tiene variaciones de una placa a la siguiente.

El "previousMicroTimeSt" ajusta con precisión el reloj interno para ayudar a contar un segundo con precisión. Si el reloj es demasiado rápido, aumente los microsegundos y si el reloj es demasiado lento, disminuya los microsegundos y, si es necesario, baje los milisegundos a 999 y luego inicie los microsegundos aproximadamente a 999, 990 o aumente la velocidad del reloj.

Cada placa Arduino tiene una velocidad ligeramente diferente, por lo que estos números cambiarán con cada placa que utilice. Parte del código aún no se ha probado, esta es la línea 248 para dar cuenta de cada año bisiesto. En las próximas semanas lo probaré y publicaré cualquier cambio si es necesario.

Paso 6: Notas finales

Notas finales
Notas finales

Este proyecto es fácil de construir, pero el concepto y los ajustes necesarios en el código pueden ser una tarea, tómese su tiempo y piénselo bien, el reloj no expira hasta finales de 2037. Voy a vigilar de cerca mi correo electrónico para preguntas, ya que estoy seguro de que habrá algunas, no soy un genio literario, por lo que algunas de mis descripciones pueden ser un poco confusas.

Hay dos archivos.pdf incluidos, descargue el archivo para el hemisferio en el que vive, este archivo le dará la información necesaria para iniciar el reloj con precisión.

Con la información manipulada en el boceto, sería fácil mostrar no solo la hora estándar y la hora DST, sino también el día y la fecha en una pantalla LCD 2004A. Si le gustan los desafíos que ofrece este proyecto, intente conectar una pantalla LCD 2004A y luego agregue un código para mostrar la información adicional o, si se muestra suficiente interés, haré otra variación de este proyecto, incluida esta información adicional.

Intenté ser todo incluido en este proyecto, pero encontré tres áreas en el mundo en cuestión. El Polo Norte, el Polo Sur y el Ecuador.

¿Es necesario o incluso posible el horario de verano en los polos norte o sur?

¿Qué hora es en el polo norte o sur?

¿En qué dirección viajarías para salir del Polo Norte o del Polo Sur?

Desde el Polo Sur, ¿en qué dirección viajarías para llegar a Austrailia, Norteamérica, Europa o Asia?

¿En qué zona horaria vive Santa?

¿Necesita horario de verano?

¿Qué hora es de todos modos en el Polo Norte?

¿En qué dirección viaja Santa para entregar todos sus regalos?

¿En qué latitud es efectivo el DST?

Ahora para el Ecuador;

¿Es este reloj utilizable en el Ecuador?

¿Usarían la escala del hemisferio norte o sur?

¿Cuáles son las fechas del solsticio de invierno y el solsticio de verano?

¿En qué latitud es efectivo el DST?

¿Los pingüinos necesitan horario de verano?

¿Crees que soy raro por pensar en estas preguntas?

¡Feliz construcción a todos!

philmnut

Paso 7: otros enlaces

Este es un enlace para determinar o cambiar la dirección en la mochila I2C:

www.instructables.com/id/1602-2004-LCD-Adapter-Addressing/

PiotrS ha escrito un excelente instructable para direcciones de hardware I2C

playground.arduino.cc/Main/I2cScanner

Este enlace escaneará su dispositivo I2C y devolverá la dirección

Recomendado: