- Explicação de trabalho:
- Componentes:
- Programação:
- Projeto de circuito e PCB usando EasyEDA:
- Calculando e solicitando amostras de PCB online:
Neste projeto, vamos usar um microcontrolador PIC para controlar remotamente algumas cargas AC usando apenas um remoto IR. Um projeto semelhante de automação residencial com controle remoto IR já foi feito com o Arduino também, mas aqui nós o projetamos em PCB usando o designer e simulador de PCB online da EasyEDA e usamos seus serviços de design de PCB para solicitar as placas de PCB conforme mostrado na seção subsequente do artigo.
No final deste projeto, você será capaz de alternar (ON / OFF) qualquer carga CA usando um controle remoto comum no conforto de sua cadeira / cama. Para tornar este projeto mais interessante, também habilitamos um recurso para controlar a velocidade do ventilador com a ajuda do Triac. Tudo isso pode ser feito com simples cliques em seu controle remoto infravermelho. Você pode usar qualquer controle remoto de TV / DVD / MP3 para este projeto. Os diferentes sinais IR do controle remoto são recebidos pelo microcontrolador, que então controla os respectivos relés por meio de um circuito acionador de relé. Esses relés são usados para conectar e desconectar as cargas CA (Luzes / Ventilador).
Explicação de trabalho:
O funcionamento deste projeto é bastante simples de entender. Quando um botão é pressionado no Remoto IR, ele envia uma sequência de código na forma de pulsos codificados usando a frequência de modulação de 38Khz. Esses pulsos são recebidos pelo sensor TSOP1738 e depois lidos pelo Controlador. O controlador então decodifica o trem de pulsos recebido em um valor hexadecimal e o compara com os valores hexadecimais predefinidos em nosso programa.
Se ocorrer alguma correspondência, o controlador executa uma operação relativa acionando o respectivo Relé / Triac e o resultado correspondente também é indicado pelos LEDs integrados. Neste projeto, utilizamos 4 lâmpadas (lâmpadas pequenas) de cores diferentes como cargas de iluminação e outra lâmpada (lâmpada maior) é considerada um ventilador para fins de demonstração.
Selecionamos a tecla 1 para alternar o relé1, 2 para alternar o relé2, 3 para alternar o relé3, 4 para alternar o relé4 e Vol + para aumentar a velocidade do ventilador e Vol- para diminuir a velocidade do ventilador.
Nota: aqui usamos uma lâmpada de 100 watts em vez de um ventilador.
Existem muitos tipos de controles remotos IR disponíveis para diferentes dispositivos, mas a maioria deles funciona em torno da frequência de 38KHz. Aqui neste projeto, controlamos eletrodomésticos usando o controle remoto IR TV e para a detecção dos sinais IR, usamos um receptor IR TSOP1738. Este sensor TSOP1738 pode detectar um sinal de frequência de 38Khz. O funcionamento do controle remoto IR e do TSOP1738 é abordado em detalhes neste artigo: Transmissor e receptor IR
Nosso microcontrolador PIC opera a + 5V e os relés operam a + 12V, portanto, usamos um transformador para reduzir a tensão de 220 Vca e retificá-la usando um retificador de ponte completa. Essa tensão CC retificada é então regulada para + 12 V e + 5 V usando os ICs reguladores 7812 e 7805, respectivamente.
Para acionar o relé, usamos transistores como o BC547, que pode atuar como uma chave eletrônica para ligar / desligar os relés com base no sinal do microcontrolador PIC. Além disso, para controlar a velocidade do ventilador, estamos usando um TRIAC. TRIAC é um semicondutor de potência capaz de controlar a tensão de saída; esse recurso é usado para controlar a velocidade do ventilador.
Também usamos um driver Triac para controlar o Triac usando nosso microcontrolador PIC. Este driver é usado para dar um pulso de ângulo de disparo ao Triac, para que a potência de saída possa ser controlada. Aqui, usamos 6 níveis de controle de velocidade. Quando o nível for 0, o ventilador será desligado. Quando o nível for 1, a velocidade será 1/5 da velocidade total. Quando o nível for 2, a velocidade será 2/5 da velocidade total e, respectivamente, para os outros. O nível atual da velocidade pode ser monitorado usando o display de 7 segmentos integrado.
O diagrama de blocos do projeto é mostrado abaixo.
Componentes:
Os componentes necessários para construir este projeto são fornecidos abaixo:
- Microcontrolador PIC18f2520 -1
- TSOP1738 -1
- IR TV / DVD remoto -1
- Transistor BC547 -4
- Relés 12 volts -4
- Bulbo com suporte -5
- Fios de conexão -
- EasyEda PCB -1
- LCD 16x2
- Fonte de alimentação 12v
- Conector de terminal de 2 pinos `-8
- Conector Terminal 3 pino -1
- Transformer 12-0-12 -1 -
- Regulador de tensão 7805 -1
- Regulador de tensão 7812 -1
- Capacitor 1000uf -1
- Capacitor 10uf -1
- Capacitor 0.1uf -1
- Capacitor 0,01uf 400V `-1
- 10k -5
- 1k -5
- 100 ohm -7
- Segmento catodo comum -1
- Diodo 1n4007 -10
- BT136 triac -1
- Cabeçalho masculino / feminino -
- LEDs -6
- Opto-acoplador moc3021 -1
- Optoacoplador mtc2e ou 4n35 -1
- 20Mhz cristal -1
- 33pf capacitor -2
- Diodo zener 5.1v -1
- 47 ohm 2 watt resistor -1
Todos esses componentes são comumente usados e podem ser facilmente adquiridos. No entanto, se você está procurando a melhor compra online, recomendamos a LCSC.
LCSC é uma ótima loja online para comprar seus componentes eletrônicos para todos os tipos de projetos. Eles apresentam cerca de 25.000 tipos de componentes e o melhor é que eles vendem até mesmo itens de pequena quantidade para pequenos projetos e também têm Global Shipping.
Decodificando o IR remoto:
Como disse anteriormente, você pode usar qualquer tipo de controle remoto para o seu projeto. Mas temos que saber para que tipo de sinal é gerado daquele controle remoto em particular. Para cada chave individual no controle remoto, haverá um valor HEX equivalente para essa chave. Usando este valor HEX, podemos distinguir entre cada chave em nosso lado do microcontrolador. Portanto, antes de decidirmos usar um controle remoto, devemos saber o valor HEX para as teclas predefinidas naquele controle remoto em particular. Neste projeto, usamos um controle remoto NEC. Os valores HEX para as chaves em um controle remoto NEC são fornecidos abaixo.
Como você pode notar, o valor HEX tem 7 caracteres, dos quais apenas os dois últimos diferem, portanto, podemos considerar apenas os dois últimos dígitos para distinguir entre cada chave.
Diagrama de circuito:
O esquema do projeto é mostrado abaixo.
O esquema acima foi facilitado usando o editor de esquemas esayEDA, uma vez que eles fornecem os layouts de todos os componentes usados neste projeto. Ele também não requer instalação e pode ser usado on-line em qualquer lugar.
A pinagem e os valores dos componentes são claramente especificados no esquema acima. Você também pode baixar o arquivo esquemático aqui.
Programação:
O programa para este projeto é feito usando MPLABX, o código também é bastante simples e fácil de entender. O código completo será fornecido no final deste tutorial, alguns trechos importantes do programa são explicados abaixo.
No início do código, devemos incluir as bibliotecas necessárias, definir os pinos e declarar as variáveis.
#incluir
Depois disso, criamos uma função de atraso simples usando o loop “for”.
void delay (int time) {for (int i = 0; i
Depois disso, inicializamos o cronômetro usando a seguinte função
void timer () // 10 -> 1us {T0PS0 = 0; T0PS1 = 0; T0PS2 = 0; PSA = 0; // Timer Clock Source é do Prescaler T0CS = 0; // Prescaler obtém clock do FCPU (5 MHz) T08BIT = 0; // 16 BIT MODE TMR0IE = 1; // Habilita a interrupção do TIMER0 PEIE = 1; // Habilita a interrupção periférica GIE = 1; // Habilita INTs globalmente TMR0ON = 1; // Agora inicie o cronômetro! }
Agora, na função principal, fornecemos instruções aos pinos selecionados e inicializamos o temporizador e a interrupção externa int0 para detectar o cruzamento zero.
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; cronômetro(); INTEDG0 = 0; // Interrupção na borda descendente INT0IE = 1; // Habilita a interrupção externa INT0 (RB0) INT0IF = 0; // Limpa o bit de flag de interrupção externa INT0 PEIE = 1; // Habilita a interrupção periférica GIE = 1; // Habilitar INTs globalmente
Agora, aqui não estamos usando nenhum modo de interrupção ou captura e comparação para detectar o sinal IR. Aqui, acabamos de usar um pino digital para ler os dados da mesma forma que lemos um botão. Sempre que o sinal fica alto ou baixo, apenas colocamos o método de debouncing e rodamos o cronômetro. Sempre que o pino muda seu estado para outro, os valores de tempo serão salvos em uma matriz.
Lógica de envio remoto IR 0 como 562,5us e lógica 1 como 2250us. Sempre que o cronômetro estiver em torno de 562,5us, assumimos que é 0 e quando o cronômetro estiver em torno de 2250us, então o assumimos como 1. Em seguida, convertemos em hexadecimal.
O sinal de entrada do remoto contém 34 bits. Armazenamos todos os bytes no array e então decodificamos o último byte a ser usado.
enquanto (ir == 1); INT0IE = 0; enquanto (ir == 0); TMR0 = 0; enquanto (ir == 1); i ++; dat = TMR0; if (dat> 5000 && dat <12000) {} else {i = 0; INT0IE = 1; } se (i> = 33) {GIE = 0; atraso (50); cmd = 0; para (j = 26; j <34; j ++) {if (dat> 1000 && dat <2000) cmd << = 1; senão se (dat> 3500 && dat <4500) {cmd- = 0x01; cmd << = 1; }} cmd >> = 1;
O trecho de código acima recebe e decodifica o sinal IR usando interrupções do temporizador e armazena o valor HEX correspondente na variável cmd. Agora podemos comparar este valor HEX (variável cmd) com nossos valores HEX predefinidos e alternar o relé conforme mostrado abaixo
if (cmd == 0xAF) {relé1 = ~ relé1; rly1LED = ~ rly1LED; } else if (cmd == 0x27) {relay2 = ~ relay2; rly2LED = ~ rly2LED; } else if (cmd == 0x07) {relé3 = ~ relé3; rly3LED = ~ rly3LED; } else if (cmd == 0xCF) {relay4 = ~ relay4; rly4LED = ~ rly4LED; } else if (cmd == 0x5f) {speed ++; se (velocidade> 5) {velocidade = 5; }} else if (cmd == 0x9f) {speed--; if (velocidade <= 0) {velocidade = 0; }}
Agora, para saber em qual ventoinha está operando, devemos usar um display de 7 segmentos. As linhas a seguir são usadas para instruir os pinos do display de 7 segmentos.
if (speed == 5) // desligado 5x2 = 10ms triger // speed 0 {PORTA = 0xC0; // exibe 0 RB6 = 1; fanLED = 0; } else if (speed == 4) // disparador de 8 ms // velocidade 1 {PORTA = 0xfc; // exibindo 1 RB6 = 1; fanLED = 1; } else if (speed == 3) // gatilho de 6 ms // velocidade 2 {PORTA = 0xE4; // exibindo 2 RB6 = 0; fanLED = 1; } else if (speed == 2) // gatilho de 4ms // velocidade 3 {PORTA = 0xF0; // exibindo 3 RB6 = 0; fanLED = 1; } else if (speed == 1) // gatilho de 2ms // velocidade 4 {PORTA = 0xD9; // exibindo 4 RB6 = 0; fanLED = 1; } else if (speed == 0) // acionador de 0ms // velocidade 5 full power {PORTA = 0xD2; // exibindo 5 RB6 = 0; fanLED = 1; }
A função abaixo é para interrupção externa e estouro de tempo. Esta função é responsável por detectar o cruzamento zero e conduzir o Triac.
nula interrupção isr () {if (INT0IF) {delay (speed); tric = 1; para (int t = 0; t <100; t ++); tric = 0; INT0IF = 0; } if (TMR0IF) // Verifique se é TMR0 Overflow ISR {TMR0IF = 0; }}
O PCB final para esta automação residencial com controle remoto IR tem a seguinte aparência:
Projeto de circuito e PCB usando EasyEDA:
Para projetar este controle remoto de automação residencial, usamos o EasyEDA, uma ferramenta EDA online gratuita para a criação de circuitos e PCBs de maneira contínua. Anteriormente, encomendamos poucos PCBs da EasyEDA e ainda usando seus serviços, pois encontramos todo o processo, desde o desenho dos circuitos até o pedido dos PCBs, mais conveniente e eficiente em comparação com outros fabricantes de PCBs. EasyEDA oferece desenho de circuito, simulação, design de PCB gratuitamente e também oferece serviço de PCB personalizado de alta qualidade mas baixo preço. Verifique aqui o tutorial completo sobre como usar o Easy EDA para fazer esquemas, layouts de PCB, simulação de circuitos etc.
EasyEDA está melhorando dia a dia; eles adicionaram muitos recursos novos e melhoraram a experiência geral do usuário, o que torna o EasyEDA mais fácil e utilizável para projetar circuitos. Em breve, eles vão lançar sua versão Desktop, que pode ser baixada e instalada em seu computador para uso offline.
Em EasyEDA, você pode tornar seus circuitos e projetos de PCB públicos para que outros usuários possam copiá-los ou editá-los e possam tirar proveito disso. Também tornamos públicos todos os nossos layouts de circuito e PCB para este controle remoto Domótica.
Abaixo está o instantâneo da camada superior do layout do PCB do EasyEDA, você pode visualizar qualquer camada (superior, inferior, superior, inferior, etc.) do PCB selecionando a camada da janela 'Camadas'.
Calculando e solicitando amostras de PCB online:
Depois de concluir o design do PCB, você pode clicar no ícone de saída de fabricação , que o levará para a página de pedido do PCB. Aqui você pode visualizar seu PCB no Gerber Viewer ou baixar arquivos Gerber do seu PCB e enviá-los a qualquer fabricante, também é muito mais fácil (e barato) encomendá-lo diretamente no EasyEDA. Aqui você pode selecionar o número de PCBs que deseja solicitar, quantas camadas de cobre você precisa, a espessura do PCB, o peso do cobre e até mesmo a cor do PCB. Depois de selecionar todas as opções, clique em “Salvar no carrinho” e conclua seu pedido, então você receberá seus PCBs dentro de alguns dias.
Você pode solicitar diretamente este PCB ou baixar o arquivo Gerber usando este link.
Após alguns dias encomendando PCBs, nós os recebemos. As placas que recebemos são mostradas abaixo.
Assim que recebemos as placas de circuito impresso, montei todos os componentes necessários sobre a placa de circuito impresso e, finalmente, temos a nossa Automação Doméstica Controlada Remota IR pronta, verifique este circuito funcionando no vídeo de demonstração no final do artigo.