Temporizador con Arduino
Construir un temporizador con arduino es de gran utilidad para controlar el tiempo de encendido de diversos aparatos. En ésta ocasión te voy a mostrar cómo puedes lograr esto, para que así puedas realizar una cuenta regresiva, ya sea en horas, minutos o segundos. El proceso se podra visualizar mediante una pantalla LCD 16×2 con I2C y con un módulo relé controlar una carga o cualquier otro dispositivo.
Materiales
- 1x Placa Arduino Nano o Uno.
- 1x Pantalla LCD 16×2 con I2C
- 2x Módulo Step Down LM2596.
- 1x Fuente de alimentacion 12-24 VDC.
- 1x Módulo Relé 1 Canal 5VDC.
- 1x Pulsador normalmente abierto
- 1x Protoboard.
- Cables de conexión.
Circuito
Para el montaje de este circuito se utilizó una placa arduino nano, aunque el diseño también es compatible con la placa arduino uno, si utilizas otra placa debes verificar la disponibilidad o modificar los pines utilizados en este diseño.
El módulo step down que alimenta la placa arduino debe ser ajustada a 8v antes de conectarse. Lo mismo para el módulo que alimenta al módulo relé, debe ajustarse a 5v.
Los componentes se deben conectar de la siguiente manera:
- Modulo Step Down 1: Antes de realizar la conexión ajuste la salida a 8v. El Pin VOUT+ va conectado al Pin VIN de la Placa Arduino. El Pin VOUT- va conectado al Pin GND de la Placa Arduino.
- Modulo Step Down 2: Antes de realizar la conexión ajuste la salida a 5v. El Pin VOUT+ va conectado al Pin V+ del módulo relé. El Pin VOUT- va conectado al Pin GND del módulo relé.
- Módulo Relé: El Pin S o de señal de activación se debe conectar al Pin D9 de la Placa Arduino
- Pantalla LCD I2C: El Pin SCL va conectado al Pin A5 de la Placa Arduino. El Pin SDA va conectado al Pin A4 de la Placa Arduino. El Pin VCC va conectado al Pin 5v de la Placa Arduino. El Pin GND va conectado a GND.
- Pulsador: El Pin de salida va conectado al Pin D3 de la Placa Arduino. El Pin de ingreso va conectado a GND.
Sketch IDE Arduino
Recuerda que para utilizar la Pantalla LCD I2C debes instalar la librería, la cual puedes descargarla dando clic aquí, o en los enlaces de descarga que se encuentran al final de este post.
//Libreria LCD I2C #include <LiquidCrystal_I2C.h> //lcd(protocolo de comunicacion:0x3F-Ox20-Ox27,columnas lcd,filas lcd) LiquidCrystal_I2C lcd(0x27, 16, 2); //Pines de entrada y salida #define entrada 3 #define salida 9 void setup() { //Configuracion de pines pinMode(entrada, INPUT_PULLUP); pinMode(salida, OUTPUT); //Salida en "LOW" digitalWrite(salida, LOW); //Inicializa la lcd lcd.init(); //Activa Retroiluminacion lcd.backlight(); //Limpia la LCD lcd.clear(); //Mensaje de Inicio lcd.setCursor(0, 0); lcd.print("TEMPORIZADOR"); lcd.setCursor(0, 1); lcd.print("Cargando"); delay(500); for(int i = 0; i < 4; i++) { lcd.print("."); delay(500); } lcd.clear(); } void loop() { //Si el estado del pin de entrada es "LOW" if (digitalRead(entrada) == LOW) { //Variables de configuracion del tiempo //Modifique estas variables segun el tiempo que requiera uint8_t horas = 0; uint8_t minutos = 0; uint8_t segundos = 15; //Calculo del tiempo total int tiempo_total = segundos + (minutos * 60) + (horas * 3600); //Salida en "HIGH" digitalWrite(salida, HIGH); //Mostramos mensaje de tiempo restante lcd.setCursor(0, 0); lcd.print("TIEMPO RESTANTE:"); //Bucle que se ejecutara hasta que el tiempos llegue a "0" while (tiempo_total > 0) { //Disminuyo el tiempo en una unidad tiempo_total--; //Convertimos el tiempo total en horas horas = ((tiempo_total / 60) / 60); //Convertimos el tiempo total en minutos minutos = (tiempo_total / 60) % 60; //Convertimos el tiempo total en segundos segundos = tiempo_total % 60; //Mostramos el tiempo restante lcd.setCursor(0, 1); // Si las horas son menor que 10, pone un "0" delante. if (horas < 10) lcd.print("0"); lcd.print(horas); lcd.print(":"); // Si los minutos son menor que 10, pone un "0" delante. if (minutos < 10) lcd.print("0"); lcd.print(minutos); lcd.print(":"); //Si los segundos son menor que 10, pone un "0" delante. if (segundos < 10) lcd.print("0"); lcd.print(segundos); //Descontamos en periodos de 1 segundo delay(1000); } //Al finalizar el tiempo coloca la salida en "LOW" digitalWrite(salida, LOW); //Mostramos mensaje de FINALIZADO lcd.setCursor(0, 1); lcd.print("FINALIZADO"); delay(500); lcd.setCursor(0, 1); lcd.print(" "); } //Si el estado del pin de entrada es HIGH else { //Mostramos mensaje de ESPERANDO INICIO lcd.setCursor(0, 0); lcd.print("ESPERANDO INICIO"); } //Tiempo de espera 100ms delay(100); }
¿Cómo funciona el Sketch?
El Sketch funciona de la siguiente manera:
- Al energizar el sistema, la pantalla mostrará un mensaje de inicio, el cual puedes personalizar a tu gusto en el void setup.
- El Sketch esta configurado con un tiempo de 15 segundos, este tiempo lo puedes modificar a tu gusto mediante las variables: horas, minutos y segundos que se encuentran en el void loop.
- Para que comience la cuenta regresiva debes presionar el pulsador. Una vez qué lo hagas el Pin 9, el cual está conectado al módulo relé se pondrá en estado HIGH, activando así el contacto de dicho modulo. Si utilizas un módulo relé que se activa con un estado LOW debes modificar este parámetro.
Enlaces de Descarga
Descarga la Librería LiquidCrystal_I2C dando clic aquí.