Controlador de iluminação automatizado com PIC16F877A
Por: Glauber Abreu • 8/6/2015 • Resenha • 1.317 Palavras (6 Páginas) • 582 Visualizações
PROJETOS
/ Projetos
09/11/2009 06:34:45
Controlador de iluminação automatizado com PIC16F877A
Em tempos de economia de energia elétrica, ter uma iluminação eficiente com o consumo necessário é um desafio que muitos engenheiros estão encontrando no seu dia-a-dia. Neste projeto apresentamos um controlador de iluminação usando um microcontrolador da série PIC16 da Microchip o PIC16F877A
Matheus Ryndack
No comércio, existem muitos relés fotoelétricos para variadas tensões e correntes. Mas não são facilmente programáveis, sendo que a maioria tem apenas um trimpot de ajuste ou simplesmente nenhum ajuste. Propomos, neste artigo, algo diferente, um controlador de iluminação que é totalmente programável, para acender ou apagar com determinada taxa de luminosidade, e que também tem a função “manual” que acende a lâmpada mesmo sem estar dentro da escala de iluminação para a qual ele foi programado. O circuito possui um par de displays de 7 segmentos que exibe o grau de luminosidade que está sendo empregado.
Características
• O sensor de luminosidade é um LDR comum facilmente encontrado no comércio especializado;
• Luminosidade exibida em dois displays de sete segmentos, com escala de 0 a 99, 0 para o mais escuro e 99 para o sol intenso, atualizado a cada segundo;
• Programação do nível em que a lâmpada irá acender. Dado gravado na EEPROM do PIC;
• Função de acender a lâmpada manualmente, mesmo quando o valor programado ainda não foi atingido;
• Delay de aproximadamente 20 segundos. Ou seja, somente após 20 segundos de atingida a luminosidade de apagamento é que a lâmpada vai realmente apagar;
• LED indicador de luz acesa, útil quando controlamos lâmpadas remotamente;
• Cérebro PIC16F877A;
• Lâmpada carga controlada por relê.
O Circuito
Como cérebro utilizamos o PIC 16F877A, que tem as seguintes características que nos interessam:
• Memória de Programa de 8 KB;
• Memória RAM de 368 bytes;
• EEPROM de 256 bytes;
• 8 Canais analógicos de 10 bits cada.
Na figura 1 temos o esquema elétrico da montagem. Para “sentir” a luminosidade do ambiente usamos um LDR comum, que tem a característica de ficar com uma resistência alta no escuro, e baixa no claro.
[pic 1]
Como o sinal do LDR é analógico, temos que usar o canal analógico do PIC. O PIC16F877A tem 8 canais analógicos de 10 bits, ou seja, o conversor vai retornar de 0 a 1023, indicando a luminosidade.
Para mostrar os números, utilizamos dois displays LED de sete segmentos catodo comum. Para limitar a corrente usamos um resistor de 220 ohms para cada segmento do display. Eles estão conectados diretamente aos ports do PIC, o PORTB para a dezena e PORTD para a unidade. PORTC ficou com o LED, a lâmpada, e os botões. PORTA, com o LDR e finalmente o PORTE não foi empregado.
Para regular a tensão de 5 V do microcontrolador, usamos o velho e bom 7805, que apresenta ótima estabilidade. Na entrada e saída utilizamos capacitores de 100 µF ou 10 µF para filtrar os transientes da rede, e ainda os produzidos pelos relês. Na entrada da placa principal há um diodo retificador, que protege contra possíveis inversões na alimentação.
Para a alimentação geral do circuito usamos 12 V por no mínimo 200 mA de corrente. Na figura 2temos uma fonte que pode ser utilizada.
[pic 2]
Montagem
O circuito foi dividido em duas placas. A Principal e a Fonte, isso para facilitar a instalação do aparelho. Temos a placa principal na figura 3 e da fonte na figura 4.
[pic 3]
[pic 4]
É importante ter um certo cuidado com os componentes polarizados da placa inclusive com os capacitores eletrolíticos, diodos, LEDs e, principalmente, o PIC, uma inversão neste e ele poderá queimar!!
É importante utilizar um soquete para o PIC, pois se ocorrer algum erro de programação poderemos reprogramá-lo e recolocá-lo na placa. Use um pequeno dissipador no 7805, pois este componente tende a aquecer. O relé pode ser de qualquer tipo desde que seja de 12 V e suporte a corrente da carga.
Na montagem do nosso protótipo foram usados bornes (conectores parafusáveis) para o LDR, 12 V, e contatos do relé. Isso garante uma melhor estética, além a instalação e desinstalação do aparelho ser bem mais fácil. Mas se o leitor preferir, poderá soldar os fios diretamente na placa. Os displays são do tipo comum de sete segmentos da cor que o leitor preferir. Entretanto, precisamos prestar atenção a uma coisa. Devem, obrigatoriamente, ser de catodo comum, ou seja, o catodo dos LEDs é comum a todos e deve ser ligado ao GND.
Instalação
O aparelho pode ser instalado de diversas formas. Uma sugestão é fazer ou comprar uma caixa plástica, instalar a placa principal nela, e fixá-la na parede. A fonte fica no sotão, ligada diretamente a rede local. O LDR pode ser colado em uma telha de vidro e colado com silicone (desses de vedar boxes e pias). Veja na figura 5 um exemplo. Assim não há chances de molhar o LDR e tornar o circuito instável. No meu protótipo,havia colocado o LDR dentro de um plástico, e mesmo assim ele molhou. A solução que encontrei foi mesmo a telha de vidro. O leitor poderá fazer de outro modo, desde que não molhe o LDR.
[pic 5]
O programa
O Programa foi desenvolvido na linguagem Basic (MikroElektronika) e foi baseado na versão 7.2 do compilador MikroBasic. A versão demo pode ser obtida em www.mikroe.com. Esta versão limita o tamanho do código a 2 KB, mas para este projeto serve, pois compilado deu aproximadamente 1,2 KB.
O código- fonte foi ricamente comentado, assim qualquer um pode compreender seu funcionamento. Além disso, a linguagem Basic é simples, bastando dominar o básico de inglês, que já se entende tudo. Na figura 6 está o fluxograma do programa. Como podemos ver, o programa inicia, configura o ambiente, e imediatamente checa se tem dado na EEPROM. Esta, é uma memória do microcontrolador que não é volát i l, ou seja, mesmo desligando o circuito permanecem os dados lá. Não havendo dado na memória, o programa salta para o ajuste. Lá, o usuário deve esperar até que o nível de luminosidade chegue ao que ele quer, isto é que acendam as lâmpadas. Então, o programa passa a verificar se o botão ajuste está apertado. Se sim, ele programa a EEPROM, e então parte para o início.
[pic 6]
Tendo os dados gravados na EEPROM, o microcontrolador entra em loop e nesse loop ele realiza as seguintes operações:
• Ler o AD: simplesmente lê o conversor analógico: digital, retornando um valor de 0 a 1023 (210);
• Converter da escala 210 para a escala 10², já que não temos 4 displays mas 2.
• Verificar se já ficou escuro quanto programado, se sim, acende, caso contrário apaga. Mostrar os dados no display
• Verificar os botões de ajuste e manual.
Temos outras sub-rotinas no programa, como a de acender manualmente a luz funciona da seguinte forma:
• Acende a lâmpada e o LED.
• Lê a luminosidade, e envia para os displays;
• Verifica se o botão de manual está apertado, se estiver pressionado sai da rotina, se não, volta para o começo.
• Botão de apagar EEPROM onde apenas coloca $FF na memória.
Teste e uso
Ao ligar o aparelho à rede de energia, imediatamente ele indicará o nível de luminosidade presente de LDR, e acenderá o LED ajuste (LED1), indicando que ele deve ser programado.
Espere atingir o grau necessário de escuridão em que a lâmpada deverá acender, e aperte o botão ajuste até que o LED comece a piscar. Neste ponto, o sistema já estará funcionando. Caso seja necessário fazer um novo ajuste, aperte o botão de ajuste e espere o LED começar a piscar; depois é só programar normalmente. Para ativar o acendimento manual, aperte o botão “manual” até que o LED comece a piscar, e para desativar use o mesmo processo.
Conclusão
Tivemos a oportunidade de montar um aparelho útil usando um microcontrolador, que serve como referência para projetos maiores, ou simplesmente em nossas casas ou oficinas. Esse foi programado em Basic, ideal para iniciantes.
[pic 7]
*Originalmente publicado na revista Saber Eletrônica Nº441
...