Temporizador con Arduino

Contenido:

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.

temporizador con arduino
Figura 1: Circuito con la Placa Arduino Nano.

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í.

Deja un comentario