- Explicación de trabajo:
- Componentes:
- Programación:
- Diseño de circuitos y PCB con EasyEDA:
- Cálculo y pedido de muestras de PCB en línea:
En este proyecto, vamos a utilizar un microcontrolador PIC para controlar de forma remota algunas cargas de CA con solo usar un control remoto IR. Un proyecto similar de domótica con control remoto por infrarrojos ya se ha realizado con Arduino también, pero aquí lo diseñamos en PCB utilizando el diseñador y simulador de PCB en línea de EasyEDA, y usamos sus servicios de diseño de PCB para solicitar las placas de PCB como se muestra en la sección siguiente artículo.
Al final de este proyecto, podrá activar / desactivar (ON / OFF) cualquier carga de CA utilizando un control remoto ordinario desde la comodidad de su silla / cama. Para hacer este proyecto más interesante también hemos habilitado una función para controlar la velocidad del ventilador con la ayuda de Triac. Todo esto se puede hacer con simples clics en su control remoto IR. Puede usar cualquiera de sus controles remotos de TV / DVD / MP3 para este proyecto. Las diferentes señales IR del control remoto son recibidas por el microcontrolador que luego controla los respectivos relés a través de un circuito de controlador de relé. Estos relés se utilizan para conectar y desconectar las cargas de CA (luces / ventilador).
Explicación de trabajo:
El funcionamiento de este proyecto es bastante sencillo de entender. Cuando se presiona un botón en el control remoto IR, envía una secuencia de código en forma de pulsos codificados usando una frecuencia de modulación de 38Khz. Estos pulsos son recibidos por el sensor TSOP1738 y luego leídos por el controlador. El controlador luego decodifica el tren recibido de pulsos en un valor hexadecimal y lo compara con los valores hexadecimales predefinidos en nuestro programa.
Si ocurre alguna coincidencia, el controlador realiza una operación relativa activando el relé / Triac respectivo y el resultado correspondiente también se indica mediante LED integrados. En este proyecto, hemos utilizado 4 bombillas (bombillas pequeñas) de diferentes colores como cargas de iluminación y otra bombilla (bombilla más grande) se considera un ventilador para fines de demostración.
Hemos seleccionado la tecla 1 para alternar el relé1, 2 para alternar el relé2, 3 para alternar el relé3, 4 para alternar el relé4 y Vol + para aumentar la velocidad del ventilador y Vol- para disminuir la velocidad del ventilador.
Nota: Aquí hemos utilizado una bombilla de 100 vatios en lugar de un ventilador.
Hay muchos tipos de controles remotos IR disponibles para diferentes dispositivos, pero la mayoría de ellos funcionan con una frecuencia de 38 KHz. Aquí, en este proyecto, controlamos los electrodomésticos usando el control remoto de TV por infrarrojos y para detectar las señales de infrarrojos, usamos un receptor de infrarrojos TSOP1738. Este sensor TSOP1738 puede detectar una señal de frecuencia de 38 kHz. El funcionamiento del control remoto por infrarrojos y el TSOP1738 se cubre en detalle en este artículo: Transmisor y receptor de infrarrojos
Nuestro microcontrolador PIC opera a + 5V y los relés operan a + 12V, por lo tanto usamos un transformador para reducir los 220V AC y rectificarlo usando un puente rectificador completo. Este voltaje de CC rectificado se regula luego a + 12V y + 5V utilizando los circuitos integrados reguladores 7812 y 7805 respectivamente.
Para disparar el relé utilizamos transistores como el BC547 que pueden actuar como un interruptor electrónico para encender / apagar los relés en base a la señal del microcontrolador PIC, además para controlar la velocidad del ventilador estamos usando un TRIAC. TRIAC es un semiconductor de potencia capaz de controlar el voltaje de salida; esta capacidad se utiliza para controlar la velocidad del ventilador.
También hemos utilizado un Triac Driver para controlar el Triac usando nuestro microcontrolador PIC. Este controlador se utiliza para dar un pulso de ángulo de disparo al Triac, de modo que se pueda controlar la potencia de salida. Aquí hemos utilizado 6 niveles de control de velocidad. Cuando el nivel es 0, el ventilador se apagará. Cuando el nivel sea 1, la velocidad será 1/5 de la velocidad máxima. Cuando el nivel sea 2, la velocidad será 2/5 de la velocidad máxima y respectivamente para los demás. El nivel actual de la velocidad se puede controlar mediante la pantalla de 7 segmentos incorporada.
El diagrama de bloques del proyecto se muestra a continuación.
Componentes:
Los componentes necesarios para construir este proyecto se dan a continuación:
- PIC18f2520 Microcontrolador -1
- TSOP1738 -1
- IR TV / DVD Remote -1
- Transistor BC547 -4
- Relés 12 voltios -4
- Bombilla con soporte -5
- Conexión de cables -
- PCB EasyEda -1
- LCD de 16x2
- Fuente de alimentacion 12v
- Conector terminal 2 pin `-8
- Terminal Conector 3 pin -1
- Transformador 12-0-12 -1 -
- Regulador de voltaje 7805-1
- Regulador de voltaje 7812-1
- Condensador 1000uf -1
- Condensador 10uf -1
- Condensador 0.1uf -1
- Condensador 0.01uf 400V `-1
- 10k -5
- 1k -5
- 100 ohmios -7
- Segmento de cátodo común -1
- Diodo 1n4007 -10
- BT136 triac -1
- Cabecera hombre / mujer -
- LEDs -6
- Optoacoplador moc3021 -1
- Optoacoplador mtc2e o 4n35 -1
- 20Mhz cristal -1
- Condensador -2 de 33pf
- Diodo zener de 5.1v -1
- Resistencia de 47 ohmios 2 vatios -1
Todos estos componentes se utilizan comúnmente y se pueden comprar fácilmente. Sin embargo, si está buscando la mejor compra en línea, le recomendamos LCSC.
LCSC es una gran tienda online para comprar sus componentes electrónicos para todo tipo de proyectos. Cuentan con alrededor de 25,000 tipos de componentes y lo mejor es que venden incluso artículos de pequeñas cantidades para proyectos pequeños y también tienen envío global.
Decodificación del control remoto IR:
Como se dijo anteriormente, puede usar cualquier tipo de control remoto para su proyecto. Pero tenemos que saber qué tipo de señal se genera desde ese control remoto en particular. Para cada tecla individual del control remoto, habrá un valor HEX equivalente para esa tecla. Usando este valor HEX podemos distinguir entre cada tecla en nuestro lado del microcontrolador. Entonces, antes de que decidamos usar un control remoto, debemos conocer el valor HEX de las teclas preestablecidas en ese control remoto en particular. En este proyecto, hemos utilizado un control remoto NEC. Los valores HEX para las teclas de un control remoto NEC se indican a continuación.
Como puede observar, el valor HEX tiene 7 caracteres de los cuales solo difieren los dos últimos, por lo que podemos considerar solo los dos últimos dígitos para distinguir entre cada tecla.
Diagrama de circuito:
El esquema del proyecto se muestra a continuación.
El esquema anterior se facilitó mediante el uso del editor de esquemas esayEDA, ya que proporcionan los diseños de todos los componentes utilizados en este proyecto. Tampoco requiere una instalación y se puede usar en línea mientras viaja.
Los pines y los valores de los componentes se especifican claramente en el esquema anterior. También puede descargar el archivo esquemático desde aquí.
Programación:
El programa para este proyecto se realiza usando MPLABX, el código también es bastante simple y fácil de entender. El código completo se proporcionará al final de este tutorial, a continuación se explican algunos fragmentos importantes del programa.
Al comienzo del código, debemos incluir las bibliotecas requeridas, definir los pines y declarar las variables.
#incluir
Después de eso, hemos creado una función de retardo simple usando el ciclo "for".
demora de vacío (int time) {for (int i = 0; i
Después de eso, hemos inicializado el temporizador usando la siguiente función
temporizador anulado () // 10 -> 1us {T0PS0 = 0; T0PS1 = 0; T0PS2 = 0; PSA = 0; // La fuente del reloj del temporizador es de Prescaler T0CS = 0; // Prescaler obtiene el reloj de FCPU (5MHz) T08BIT = 0; // MODO DE 16 BITS TMR0IE = 1; // Habilita TIMER0 Interrupt PEIE = 1; // Habilitar interrupción periférica GIE = 1; // Habilitar INT globalmente TMR0ON = 1; // ¡Ahora inicia el cronómetro! }
Ahora, en la función principal, hemos dado direcciones a los pines seleccionados e inicializamos el temporizador y la interrupción externa int0 para detectar el cruce por cero.
ADCON1 = 0b00001111; TRISB1 = 0; TRISB2 = 1; TRISB3 = 0; TRISB4 = 0; TRISB5 = 0; TRISC = 0x00; TRISA = 0x00; PORTA = 0xc0; TRISB6 = 0; RB6 = 1; relé1 = 0; relé2 = 0; relé3 = 0; relé4 = 0; rly1LED = 0; rly3LED = 0; rly2LED = 0; rly4LED = 0; fanLED = 0; i = 0; ir = 0; tric = 0; Temporizador(); INTEDG0 = 0; // Interrupción en flanco descendente INT0IE = 1; // Habilita la interrupción externa INT0 (RB0) INT0IF = 0; // Borra el bit de bandera de interrupción externa INT0 PEIE = 1; // Habilitar interrupción periférica GIE = 1; // Habilitar INT globalmente
Ahora, aquí no estamos usando ningún modo de interrupción o captura y comparación para detectar la señal IR. Aquí acabamos de usar un pin digital para leer datos como leemos un botón. Siempre que la señal sea alta o baja, simplemente ponemos el método de eliminación de rebotes y ejecutamos el temporizador. Siempre que el pin cambie su estado a otro, los valores de tiempo se guardarán en una matriz.
IR remoto envía lógica 0 como 562.5us y lógica 1 como 2250us. Siempre que el temporizador lee alrededor de 562.5us, asumimos que es 0 y cuando el temporizador lee alrededor de 2250us, lo asumimos como 1. Luego lo convertimos en hexadecimal.
La señal entrante del remoto contiene 34 bits. Almacenamos todos los bytes en la matriz y luego decodificamos el último byte para usar.
while (ir == 1); INT0IE = 0; while (ir == 0); TMR0 = 0; while (ir == 1); i ++; dat = TMR0; if (dat> 5000 && dat <12000) {} else {i = 0; INT0IE = 1; } si (i> = 33) {GIE = 0; retraso (50); cmd = 0; para (j = 26; j <34; j ++) {if (dat> 1000 && dat <2000) cmd << = 1; de lo contrario, si (dat> 3500 && dat <4500) {cmd- = 0x01; cmd << = 1; }} cmd >> = 1;
El fragmento de código anterior recibe y decodifica la señal IR usando interrupciones del temporizador y almacena el valor HEX correspondiente en la variable cmd. Ahora podemos comparar este valor HEX (variable cmd) con nuestros valores HEX predefinidos y alternar el relé como se muestra a continuación
si (cmd == 0xAF) {relé1 = ~ relé1; rly1LED = ~ rly1LED; } más si (cmd == 0x27) {relé2 = ~ relé2; rly2LED = ~ rly2LED; } más si (cmd == 0x07) {relé3 = ~ relé3; rly3LED = ~ rly3LED; } más si (cmd == 0xCF) {relé4 = ~ relé4; rly4LED = ~ rly4LED; } más si (cmd == 0x5f) {velocidad ++; if (velocidad> 5) {velocidad = 5; }} más si (cmd == 0x9f) {velocidad--; if (velocidad <= 0) {velocidad = 0; }}
Ahora, para saber a qué ventilador está funcionando actualmente, deberíamos usar una pantalla de 7 segmentos. Las siguientes líneas se utilizan para dar instrucciones a los pines de la pantalla de 7 segmentos.
if (velocidad == 5) // desactivado 5x2 = 10ms triger // velocidad 0 {PORTA = 0xC0; // mostrar 0 RB6 = 1; fanLED = 0; } else if (velocidad == 4) // Disparador de 8 ms // velocidad 1 {PORTA = 0xfc; // mostrando 1 RB6 = 1; fanLED = 1; } else if (velocidad == 3) // Disparo de 6 ms // velocidad 2 {PORTA = 0xE4; // mostrando 2 RB6 = 0; fanLED = 1; } else if (velocidad == 2) // disparador de 4ms // velocidad 3 {PORTA = 0xF0; // mostrando 3 RB6 = 0; fanLED = 1; } else if (velocidad == 1) // disparador de 2ms // velocidad 4 {PORTA = 0xD9; // mostrando 4 RB6 = 0; fanLED = 1; } else if (velocidad == 0) // disparador 0ms // velocidad 5 máxima potencia {PORTA = 0xD2; // mostrando 5 RB6 = 0; fanLED = 1; }
La siguiente función es para interrupción externa y desbordamiento de tiempo. Esta función se encarga de detectar el paso por cero y conducir el Triac.
void interrupt isr () {if (INT0IF) {retraso (velocidad); tric = 1; para (int t = 0; t <100; t ++); tric = 0; INT0IF = 0; } if (TMR0IF) // Verifique si es TMR0 Overflow ISR {TMR0IF = 0; }}
La PCB final para esta domótica con control remoto por infrarrojos se ve como se muestra a continuación:
Diseño de circuitos y PCB con EasyEDA:
Para diseñar esta domótica con control remoto, hemos utilizado EasyEDA, que es una herramienta EDA en línea gratuita para crear circuitos y PCB de manera transparente. Anteriormente habíamos pedido algunas PCB a EasyEDA y seguimos utilizando sus servicios, ya que encontramos que todo el proceso, desde el dibujo de los circuitos hasta el pedido de las PCB, es más conveniente y eficiente en comparación con otros fabricantes de PCB. EasyEDA ofrece dibujo de circuitos, simulación, diseño de PCB de forma gratuita y también ofrece un servicio de PCB personalizado de alta calidad pero bajo precio. Consulte aquí el tutorial completo sobre cómo usar Easy EDA para hacer esquemas, diseños de PCB, simulación de circuitos, etc.
EasyEDA está mejorando día a día; han agregado muchas características nuevas y mejorado la experiencia general del usuario, lo que hace que EasyEDA sea más fácil y utilizable para diseñar circuitos. Pronto lanzarán su versión de escritorio, que se puede descargar e instalar en su computadora para uso sin conexión.
En EasyEDA, puede hacer públicos sus diseños de circuitos y PCB para que otros usuarios puedan copiarlos o editarlos y puedan beneficiarse de ellos, también hemos hecho públicos todos nuestros diseños de circuitos y PCB para este control remoto Domótica.
A continuación se muestra la instantánea de la capa superior del diseño de PCB de EasyEDA, puede ver cualquier capa (superior, inferior, seda superior, seda inferior, etc.) de la PCB seleccionando la capa de la ventana 'Capas'.
Cálculo y pedido de muestras de PCB en línea:
Después de completar el diseño de PCB, puede hacer clic en el icono de salida de fabricación , que lo llevará a la página de pedido de PCB. Aquí puede ver su PCB en Gerber Viewer o descargar archivos Gerber de su PCB y enviarlos a cualquier fabricante, también es mucho más fácil (y más económico) pedirlo directamente en EasyEDA. Aquí puede seleccionar la cantidad de PCB que desea pedir, cuántas capas de cobre necesita, el grosor de la PCB, el peso del cobre e incluso el color de la PCB. Una vez que haya seleccionado todas las opciones, haga clic en "Guardar en el carrito" y complete su pedido, luego recibirá sus PCB en unos días.
Puede solicitar este PCB directamente o descargar el archivo Gerber utilizando este enlace.
Después de unos días de pedir PCB, obtuvimos los PCB. Los tableros que recibimos se muestran a continuación.
Una vez que recibimos las placas de circuito impreso, monté todos los componentes necesarios sobre la placa de circuito impreso y, finalmente, tenemos lista nuestra automatización del hogar con control remoto por infrarrojos, verifique este circuito funcionando en el video de demostración al final del artículo.