https://github.com/jchristensen/poweroutagemonitor_sw
Archivo readme
Jack Christensen
2012
Arduino Power Outage Logger Copyright (c) 2012-2019 por Jack Christensen Gnu GPL V3.0
Este programa es un software gratuito: puede redistribuirlo y/o modificarlo bajo los términos de la Licencia Pública General de GNU V3.0 publicada por Free Software Foundation.
Este programa se distribuye con la esperanza de que sea útil, pero sin ninguna garantía; Sin siquiera la garantía implícita de comerciabilidad o estado físico para un propósito particular. Vea la Licencia Pública General de GNU para más detalles.
Debería haber recibido una copia de la Licencia Pública General de GNU junto con este programa. Si no, consulte https://www.gnu.org/licenses/gpl.html
Un bosquejo de Arduino para implementar un registrador de apagones de energía utilizando el Microchip MCP79411 o MCP79412 RTC. Se pueden registrar hasta siete interrupciones (tiempos de potencia hacia abajo/arriba) en el SRAM del RTC.
La pantalla normal es un reloj que muestra la hora, la fecha y el número de interrupciones de energía registradas en los soportes de ángulo, por ejemplo, <4>. Después de un nuevo corte de energía, el nuevo LED de alerta de interrupción se ilumina. Ver el registro de interrupción apaga el LED. El reloj se ajusta automáticamente para el horario de verano.
Cuatro botones controlan el registrador y están etiquetados:
SET / CLEAR / CANCEL(+) / FIRST / NEXT(-) / LAST / PREVRESET Desde la pantalla del reloj:
Presione (+) o (-) para ver el registro de interrupción. Pressing (+) mostrará la primera interrupción (más temprana), presionando (+) nuevamente mostrará la próxima interrupción. Pressing (-) mostrará la última interrupción (más reciente), presionando (-) nuevamente mostrará la interrupción anterior. Presione SET para volver al modo Reloj, o volverá automáticamente después de 30 segundos.
Presione el conjunto para comenzar la secuencia de establecimiento. Presione (+) y (-) Para ajustar cada parámetro, mantenga presionado para ajustar rápidamente. Presione SET para avanzar al siguiente parámetro. Mantenga el conjunto para cancelar la secuencia de establecimiento. Presionando (+) y (-) simultáneamente mientras establece los segundos o la calibración RTC cero el valor.
Desde el modo del reloj o al ver el registro de interrupción, mantenga presionado el conjunto para borrar el registro de interrupción.
Mientras esté en el modo normal de visualización del reloj, presionar y mantener el botón (-) alternará el modo Sunrise/Sunset, donde los horarios y los tiempos de atardecer se alternan con la fecha.
Después de presionar y liberar el reinicio, el mensaje de sincronización RTC (con el ID RTC) y el mensaje de calibración que se muestra durante el inicio se puede mantener presionando y manteniendo presionado el botón Establecer.
El modo de prueba de fotocélula muestra la lectura de fotocell en lugar de la zona horaria. Esto puede ser útil para ayudar a calibrar el brillo de la pantalla. Para invocar:
La configuración del fusible es la misma que Arduino Uno, excepto 4.3V BOD, por ejemplo:
avrdude -p m328p -U lfuse:w:0xff:m -U hfuse:w:0xde:m -U efuse:w:0x04:m -v
Se puede incluir un sensor de temperatura MCP9800/2/3 opcional en el bus I2C. Si está presente, se detectará automáticamente y la temperatura se mostrará en la pantalla LCD con la hora.
Un esquema de circuito y una placa de PC para este proyecto están disponibles en https://github.com/jchristensen/poweroutagemonitor_hw
En lugar de usar la función setSyncProvider() (quizás más común) en la biblioteca de tiempo, el código actual utiliza una interrupción de 1Hz del RTC para mantener el tiempo. Este se ha convertido en mi método preferido, pero ese no fue el caso cuando diseñé el tablero de registrador de apagón de energía.
Por lo tanto, se necesita un cable en la parte posterior del tablero para proporcionar la señal de interrupción al MCU. Conecte un cable del pin "MFP" RTC al pin 6 Atmega328p (también conocido como PD4 o el pin Arduino D4) como se muestra en la foto a continuación. (La versión de la placa 1.2 incluye esta conexión; por lo tanto, no es necesario un cable).