En este video tutorial veremos como crear un timer o temporizador, para control del tiempo de funcionamiento de luces mores, bombas de agua y mucho más. Analizaremos el código fuente, te explicaré el armado del circuito, el cual incluye el pcb.
¿Que es un timer o temporizador?
Un temporizador es un dispositivo que se utiliza para controlar la conexión o desconexión de un circuito.
En cuanto a su funcionamiento es muy similar al de un relay, ya que los reles al recibir un pulso inmediatamente cambian la posición de sus contactos, y en cuanto a los temporizadores necesita agotarse el tiempo programado para intercambiar sus contactos.
Tal vez pueda interesarte proyectos en arduino, pic, robótica, telecomunicaciones, suscribete en http://www.youtube.com/user/carlosvolt?sub_confirmation=1 mucho videos con código fuentes completos y diagramas
Materiales
Un resistor de 1 Kohm
Arduino nano
El Arduino Nano es una placa pequeña, completa y compatible con la placa de pruebas basada en el ATmega328 (Arduino Nano 3.x). Tiene más o menos la misma funcionalidad del Arduino Duemilanove, pero en un paquete diferente. Solo carece de un conector de alimentación de CC y funciona con un cable USB Mini-B en lugar de uno estándar.
Microcontrolador | ATmega328 |
Arquitectura | AVR |
Tensión de funcionamiento | 5 V |
Memoria flash | 32 KB de los cuales 2 KB utiliza el gestor de arranque |
SRAM | 2 KB |
Velocidad de reloj | 16 MHz |
Pines analógicos IN | 8 |
EEPROM | 1 KB |
Corriente CC por pines de E / S | 40 mA (pines de E / S) |
Voltaje de entrada | 7-12 V |
Pines de E / S digitales | 22 (6 de los cuales son PWM) |
Salida PWM | 6 |
El consumo de energía | 19 mA |
Tamaño de PCB | 18 x 45 mm |
Peso | 7 g |
Diagrama de pines
Un buzzer
Display oled sh1106
Se trata de un módulo de pantalla OLED monocromática DE 128×64 puntos con interface I2C .Que presenta varias ventajas en comparación con pantallas LCD, y podemos destacar su alto brillo, un muy buen contraste, un ángulo de visión más amplio, y bajo consumo de energía. ES compatible con Arduino Rasberry Pi y microcontroladores PIC entre otros. Trabaja con niveles lógicos de 3.3V a 5V tiene un angulo de visión mayor a los 160 grados. el Tamaño de la pantalla es de 1,3 pulgadas. Se alimenta con un voltaje de 3.3V a 5V Se lo puede usar en aplicaciones como relojes inteligentes, MP3, termómetros, instrumentos, y proyectos varios, etc.
Librería
Características
- Interface: I2C(3.3V / 5V logic level)
- Resolution: 128 x 64
- Angle of view: >160 degree
- Display color: Blue
- Display size: 1.3 inch
- Driver IC: SH1106
- Power supply: DC 3.3V~5V
- Operating temperature: -20~70’C
- Application: smart watch, MP3, thermometer, instruments, DIY projects, etc.
Un diodo led
Un pcb
Descargar archivo gerber en –> timer
Pines hembra
Pines macho
Tres pulsadores
Un zócalo de 30 pines
Código Fuente
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
#include "U8glib.h"//Librería para el control del display oled U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE);// I2C / TWI // Se habilita esta linea según el display a usar en este caso el driver SH1106 int periodo = 1000; unsigned long Tiempo = 0; // estas constantes no cambiarán: const int set = 2; // Pulsador para setear el tiempo const int start = 3; // Pulsador para inicializar el timer const int buzzer = 4; // Salida donde está el buzzer const int salida = 12; // Salida del relay // Variables que cambian int botonContador = 0; // contador para el número de pulsaciones de botones int estadoSet = 0; // estado actual del botón "set" int estadoStart = 0; // estado actual del botón "start" int ultimoEstadoBoton = 0; // estado anterior del botón "set" void setup() { // inicializar el pin del botón como entrada: pinMode(set, INPUT_PULLUP); //Resistencia de pullup interna pinMode(start, INPUT_PULLUP); //Resistencia de pullup interna // inicializa pin como una salida: pinMode(buzzer, OUTPUT); pinMode(salida, OUTPUT); // inicializar la comunicación serial: Serial.begin(9600); } void loop() { // Leemos si se ha precionado alfuno de los botones estadoSet = digitalRead(set); estadoStart = digitalRead(start); ////////Botón "set"//////////////////// // Si las variables son distintas se cumple esta condición if (estadoSet != ultimoEstadoBoton) { // si estadoSet es igual un valor HIGH if (estadoSet == HIGH) { Serial.println(botonContador); //Mostramos el valor de tiempo, cuando apretamos el botón "set" u8g.firstPage(); do { draw();//Llama a la función draw } while( u8g.nextPage() ); botonContador++; } } // guarda el estado actual como último estado, // para la próxima vez ultimoEstadoBoton = estadoSet; //Botón "start" //Si se precionó el botón start if(estadoStart==LOW){ digitalWrite(salida, HIGH);//Pone en estado alto la salida del relay //Se cumple mientras sea distinto de 0 while(botonContador!=0){ //Se cumple cada un segundo if(millis() > Tiempo + periodo){ Tiempo = millis(); botonContador--; //Decremente en 1 el valor ingresado con el botón set //Llamamos a la función draw() para mostrar datos en el display u8g.firstPage(); do { draw();//Llama a la función draw } while( u8g.nextPage() ); Serial.println(botonContador);//Imprimimos en el terminal serial el decremento del conteo //Si el valor es igual a 0 se cumple la condición if(botonContador==0){ //Seteamos todas las variables con el valor 0 botonContador = 0; estadoSet = 0; estadoStart = 0; ultimoEstadoBoton = 0; digitalWrite(salida, LOW);//Desactivamos la salida del relay digitalWrite(buzzer, HIGH); //Activamos el buzzer delay(3000);//durante 3 segundos digitalWrite(buzzer, LOW);//Desactivamso el buzzer } } } } } //Mostramos datos en el display void draw(void) { //Imprimimos en pantalla el valor de la frecuencia obtenida u8g.setFont(u8g_font_unifont); u8g.setPrintPos(0, 20); u8g.print(botonContador); u8g.print(" Segundo(s)"); } |
SUSCRIBETE A NUESTROS BOLETINES, RECIBE EN TU CORREO LAS NOTICIAS MÁS DESTACADAS, SÓLO INGRESANDO TU CORREO ELECTRÓNICO
[wysija_form id=”1″]
PROYECTO RECOMENDADO