Los temporizadores programables son elementos clave en numerosas aplicaciones de automatización, como el control automático de luces, control de riego y bombas, aire acondicionado, domótica, automatización de plantas de energía en industrias, etc. Este timer programable utiliza el microcontrolador pic16f1824 y le permite establecer tiempos de encendido y apagado. También presenta una opción cíclica, lo que significa que puede elegir ejecutarla en un ciclo continuo de tiempos de ENCENDIDO y APAGADO.

Esquemático, Layout

El circuito temporizador esta diseñado en Eagle y para su elaboración se divide en 3 etapas. Fuente alimentación, pic16f1824, display. Esto ayuda a poder optimizar el nuestro resultado final en la fabricación del pcb.
La primera etapa es de fuente de alimentación que utiliza el regulador de voltaje LM2576-ADJ, el fabricante nos ayuda con un esquema de 5v-3A

La segunda etapa es el núcleo de toda nuestra placa, el pic16f1824, este microcontrolador es de las versiones mas recientes de nuestros amigos de Microchip technology. Este pic controla el max7219, que es un controlador para el display 7 segmentos, rele 220vac, una entrada opto acoplado 12-24vdc, 3 pulsadores que nos ayudaran para un configurar el timer. Por ultimo, tiene 5 pines para conectar módulos externos.

La tercera etapa es del display 7 segmentos de 8 digitos. Para controlar estos display utilizamos el controlador de interfaz serial max7219, este controlador es compatible con el protocolo SPI que soportan muchos microcontroladores incluido nuestro pic16f1824.

Lista componentes importantes
- lm2576-adj
- pic16f1824
- max7219
- display 7 segmentos 4 digitos.
- pc817 opto acoplador
- bobina 100uh
- 1n5822 diodo schottky
- 2n3904 transistor
- rele 5v – 220vac
- leds 3mm
- capacitor 220uf/50v, 220uf/25v
- resistencias: 10k, 470R, 2k2, pot 50k.
Código de Programación
Para el desarrollo de la programación se utilizó el ide MPLABX que utiliza el compilador XC8 para generar el hexadecimal que se graba en el pic. La siguiente es programacion es una version de prueba para comprobar que todas las salidas y entradas funcionen bien.
void main(void) {
oscillator_config();
input_config();
output_config();
timer_0_config();
max7219_config();
max7219_brillo(8);
update_eeprom();
display_init();
while (1) {
proceso_subir_bajar_tiempo();
if (proceso == 1) {
proceso_run();
} else {
proceso_detenido();
}
}
}
Deja una respuesta
Lo siento, debes estar conectado para publicar un comentario.