You are on page 1of 6

Saber Eletrônica Online

http://www.sabereletronica.com.br/secoes/leitura/839/imprimir:yes

Imprimir

PRODUTOS / Microcontroladores
14/07/2008 11:39:30

Monitoração de nível com PIC
O circuito sugerido permite controlar um relé de potência que irá acionar uma bomba quando os limites estabelecidos forem atingidos. O mesmo circuito poderá ser utilizado para medição de nível de outros líquidos, dependendo apenas da escolha do sensor apropriado.
Marcelo Gonçalves Damasceno

O propósito deste ar tigo é demonstrar de forma didática aos leitores uma forma universal de monitorar e/ou controlar níveis provindos de diversas naturezas. A forma utilizada nos equipamentos para se monitorar uma grandeza qualquer é a seguinte: usa-se um transdutor que converte esta grandeza (que pode ser, por exemplo, a quantidade de determinado líquido, peso, rotação, temperatura, etc.) em uma outra grandeza que pode ser interpretada por um circuito eletrônico. Essa 2ª grandeza é, na maioria das vezes, corrente ou tensão elétrica. Assim sendo, usando um conversor analógico digital (ADC) pode-se tratar esse sinal convertido e realizar alguns eventos que incluem: exibi-lo em um display ou numa barra de LEDs, enviá-lo a um pino de entrada/saída (I/O), que por sua vez irá controlar um relé ou um elemento de estado sólido de potência, etc. Como atualmente temos a facilidade de possuir o AD já embutido em um microcontrolador que também já tem os pinos de I/O, fica bem compacto criar um sistema de monitoramento. A idéia aqui é desenvolvermos uma simples sinalização de nível através do uso de três LEDs (verde, amarelo e vermelho). O Circuito Talvez o PIC 16F819 não seja familiar a todos os leitores, portanto faremos um resumo de suas principais características abaixo: • Arquitetura HARVARD (14 bits na memória de programa e 8 bits nas demais memórias); • Código de instruções reduzido (35 instruções); • Proteção contra cópia de código; • Memória FLASH de programa com 2 Kbytes; • 256 bytes de EEPROM; • 256 bytes de RAM; • Conversor A/D de 10 bits e 5 canais;

• 15 pinos de I/O; • 1 pino somente de entrada; • Alta corrente de dreno (até 20 mA) • Porta serial síncrona (SSP) pronta para protocolo SPI (mestre/ escravo) e I C (escravo); • 2 timers de 8 bits e um de 16 bits; • 1 canal CCP (Capture, Compare and PWM); • Clock externo; • Clock interno; • Watchdog Timer interno; • Alta freqüência de operação (até 20 MHz); • Permite gravação no circuito de forma serial (ICSP); • Permite depuração (debug) através de dois pinos; • Encapsulamento DIP com 18 pinos; • Entre outras. Para os leitores que desejarem se aprofundar nas características desse microcontrolador sugerimos o download gratuito de seu datasheet no endereço www.microchip.com. Neste projeto não foi usado o já conhecido dos leitores, PIC16F628A, pois o mesmo não possui o conversor A/D. A figura 1 ilustra um comparativo entre este PIC e o 16F819. Essa figura foi retirada dos datasheets de ambos os microcontroladores.
2

1 de 6

28/02/2013 00:15

Pinagem do PIC 16F819 O esquema elétrico do nosso projeto pode ser visto na figura 3. com o PIC16F628A. Ela é compatível. O resistor R .887m V aproximadamente teremos o valor 1 registrador do A/D. Iremos utilizar um potenciômetro 1 ligado a este conector para simularmos a variação de tensão na entrada. A entrada de nível de tensão monitorado será feita no conector CN . O capacitor C é responsável por filtrar os ruídos que 1 poderiam interferir no correto funcionamento do PIC. Isso será tratado adiante na seção “Teste e uso”. Figura 2 . para cada 4. limita a corrente do LED D .sabereletronica. Este LED é o 2 4 indicador de funcionamento do programa. A pinagem do PIC16F819 é exibida na figura 2.Saber Eletrônica Online http://www.com. Figura 3 . pino a pino.1 (fórmula 1) Como a tensão de referência do PIC (V(ref)) em nosso caso será configurada para 5 V e a resolução do PIC (n) é 10 bits.Comparativo entre o PIC 16F819 e o PIC 16F819 Notem que eles são bem parecidos. Como utilizar o conversor A/D do PIC? Iremos demonstrar ao leitor os cálculos relativos ao uso do conversor A/D. exceto por alguns detalhes. portanto não temos um cristal conectado.br/secoes/leitura/839/imprimir:yes Figura 1 .8876 mV n Quando quisermos saber o valor que vai ficar armazenado no registrador do conversor A/D. A fórmula para obtermos cada degrau de tensão é dada por: V(degrau) = V(ref) / 2 .Esquema elétrico do projeto O clock de 4 MHz para o funcionamento do microcontrolador é gerado internamente (RC). A visualização das faixas de controle é feita através de três LEDs. por sua vez. usamos a 2 de 6 28/02/2013 00:15 . Observe que só utilizaremos um resistor (R ) limitador de corrente para os LEDs porque eles 1 acenderão um de cada vez. Veja a demonstração de cálculo abaixo: V(degrau) = 5 /1024 – 1 V(degrau) = 4.

Ele foi montado dessa forma. iremos mostrar como manipular este registrador de forma conveniente. por exemplo. O circuito deve ser alimentado por uma fonte de 5 V.45 V. no caso deste circuito ser apresentado em uma feira de Ciências ou em uma aula de Eletrônica. Na figura 4 temos um exemplo de fonte que pode ser montada pelo leitor. Figura 5 .87 Este valor será então arredondado para 706 e armazenado no registrador do conversor A/D.Fonte de + 5V Desenvolvimento Continuando com nossa filosofia de simular um circuito antes de montá-lo efetivamente. Logo mais.labcenter.br/secoes/leitura/839/imprimir:yes seguinte fórmula: Valor(reg) = Vin / V(degrau) (fórmula 2) Um exemplo: Se o conversor A/D receber em seu pino de entrada o valor 3.com. periféricos internos (como o conversor A/D) e muito mais.co. sem citar que assim não corremos o risco de queimar os componentes em caso de cálculos errados. Montagem O leitor pode ver na figura 6 o circuito montado em uma matriz de contatos (protoboard). parte integrante do programa britânico Proteus 7 (versão demo) disponível para download em www. utilizamos um programa que possui a interessante função que nos permite simular microcontroladores em funcionamento.45 / 0. A figura 5 ilustra a tela do nosso circuito sendo simulado. 3 de 6 28/02/2013 00:15 .sabereletronica. Foi utilizado o módulo ISIS. Figura 4 . ele o transformará em: 3.Simulação do nosso circuito A vantagem da simulação neste software é a boa quantidade de componentes virtuais disponíveis. o CI 7805.0048876 = 705. Quem desejar poderá desenvolver uma placa de circuito impresso. com interrupções. No caso sugerimos o uso de um regulador já bastante difundido no mundo dos microcontroladores. pois possui caráter meramente didático.uk.Saber Eletrônica Online http://www. na seção “O programa”.

A versão demo tem algumas limitações. pois o circuito não funcionará corretamente. escrito pelo autor Márcio José Soares. A forma de gravação dos PICs foi largamente discutida nas edições anteriores da revista Eletrônica Total e temos um curso completo de PICs. este valor diz ao PIC que vamos utilizar o seu oscilador interno e ele deve gerar aproximadamente 4 MHz. a função main inicializa e configura o conversor A/D e os timers. Um programa em assembly. nas edições de número 6 a 13 da revista Mecatrônica Fácil. O compilador utilizado foi o CCS-C que pode inclusive ser baixado gratuitamente no site www. demanda um conhecimento mais profundo do microcontrolador. os LEDs e os integrados) tome o máximo cuidado para não invertê-los. que podem prejudicar bastante o funcionamento do circuito. pois ele trabalhará frio. Tais revistas podem ser adquiridas no site da Editora Saber.Circuito montado em matriz de contatos Alguns conselhos em relação à montagem: Ao inserir componentes polarizados (no nosso caso. A função main é responsável por gerenciar em loop contínuo o funcionamento do microcontrolador. evite ligações longas e também procure posicionar os componentes o mais próximo possível dos circuitos integrados. Costuma-se inserir primeiramente os circuitos integrados para que se aproveite melhor o espaço do protoboard. Este comando é responsável por gravar um valor no registrador de clock do PIC (registrador OSCCON). apesar de ser bem menor. Consideramos que o leitor que se propuser a montar um projeto com microcontroladores já tenha uma boa noção sobre a gravação/manipulação dos mesmos.ccsinfo. fazendo às vezes que o circuito não funcione. ela libera o funcionamento das interrupções dos timers (tmr0 e tmr1).br/secoes/leitura/839/imprimir:yes Figura 6 .Fluxograma do nosso programa 4 de 6 28/02/2013 00:15 . O código-fonte possui comentários que facilitam o acompanhamento por parte dos leitores interessados em entender cada detalhe do programa. Finalmente entra em um loop infinito que converte o valor recolhido do A/D e o transforma em uma saída visual em três níveis.c) do projeto no portal Saber Eletrônica no site da revista (seção “Downloads”). Figura 7 . note que não há necessidade de se usar um dissipador de calor para o regulador 7805. Ao fazer as ligações utilizando jumpers.com. para uma melhor compreensão dos próximos tópicos. isto é. Na figura 7 vemos o fluxograma de nosso programa. mas serve bem ao nosso propósito. podendo até ocorrer a queima destes componentes. Após isso. Com isso reduz-se drasticamente o aparecimento de capacitâncias parasitas. O autor aconselha ao leitor fazer o download do código-fonte (PD-PIC_256. Caso o leitor alimente o circuito utilizando a fonte de 5 V. tente usar o menor comprimento possível de fio. Depois.sabereletronica. esta é uma função que possui um único comando.Saber Eletrônica Online http://www. que foi sugerida na seção “O circuito”.com. Ela chama primeiramente uma função chamada “init_pic()”. O programa O programa foi desenvolvido em linguagem C para microcontroladores PIC devido a sua facilidade de assimilação por parte do leitor. Finalizadas as ligações deve-se realizar uma inspeção visual geral de forma a tentar localizar possíveis erros. O PIC só deve ser inserido na matriz de contatos após a gravação do mesmo.

2 ms.Saber Eletrônica Online http://www. Ela ocorre a cada 10.Valores de tensão monitorados pelo programa Só relembrando. que depois de executada. depois. ou seja. Tabela 1 . Figura 9 . Nesta figura também pode-se observar detalhes da rotina de conversão de níveis.br/secoes/leitura/839/imprimir:yes Na tabela 1 apresentamos uma tabela que correlaciona os valores que o nosso programa monitora. como 1 exibido na figura 9. O leitor poderá ver detalhes do tratamento das interrupções do timer0 e timer1 na figura 8. pulso) e chamar uma função. Interrupções As interrupções são essenciais em um programa. E se assim desejar poderá mudar. Teste e uso A forma mais simples de testarmos o circuito é inserindo um potenciômetro no conector CN .Potenciômetro ligado ao conector CN1 Ligue o circuito e gire o cursor do potenciômetro totalmente em um sentido e. o leitor mais curioso poderá entender todo o funcionamento do programa. visto que este é bem pequeno. Poderá também mudar a quantidade de níveis monitorados e ainda as quantidades de saídas de controle.Tratamento das interrupções o timer0 e timer1 Através da análise dos fluxogramas acima e de posse do código-fonte. libera o programa principal a voltar com seu processamento normal. toda a nossa faixa de leitura. as temporizações do mesmo. para que o leitor obtenha os valores de tensão da tabela basta usar as fórmulas 1 e 2 apresentadas na seção “Como utilizar o conversor A/D do PIC”. por exemplo. Note o leitor que com essa simples configuração conseguimos gerar valores que variam de 0 a 5 V.sabereletronica. Figura 8 . Int timer1 Interrupção responsável por gerar um clock de aproximadamente 1 Hz no pino 18 do PIC (RA1/AN1). As interrupções utilizadas no nosso projeto são explicadas. elas são responsáveis por interromper o processamento principal quando ocorrer algum evento (temporização. a seguir: Int timer0 Esta interrupção é responsável por recolher os dados do conversor A/D e armazená-los na variável “valor”.com. retorne-o girando totalmente no outro sentido e observe que os LEDs indicarão os níveis de tensão (faixas) que estão 5 de 6 28/02/2013 00:15 .

com.br/secoes/leitura/839/imprimir:yes sendo lidos pelo PIC.Ano 19 . A figura 10 ilustra esta modificação.Todos os direitos reservados .LED comum verde (qualquer tamanho e formato) 1 2 3 D .br 6 de 6 28/02/2013 00:15 .1 kΩ (marrom.polyester 1 Diversos CN . Assim o nível de tensão gerado irá ser monitorado.Saber Eletrônica Online http://www.Conexão de transistor driver na saída Conclusão Foram apresentados aqui um circuito e um programa de controle bastante básicos que podem ser estudados e cuja faixa de valores monitorados pode ser facilmente modificada conforme a curiosidade e necessidade do leitor. respectivamente terra e entrada do PIC.sabereletronica.conector parafusável de 3 pinos 1 Jumpers para ligações no protoboard.www. preto. o PIC possa ligar um relé e dessa forma acionar cargas de potência.com.Nº 131 Extraído do Portal Saber Eletrônica Online . R .100 nF . Pode-se ligar qualquer tipo de transdutor ou a saída de um operacional neste conector. vermelho) 1 2 Capacitores C .LED comum vermelho (qualquer tamanho e formato) Resistores (todos com dissipação de 1/8 W) R . boa sorte na montagem e até a próxima! Lista de Materiais Semicondutores IC . Grande abraço a todos. A fonte de sinal deve ser ligada aos pinos 1 e 2 do conector.sabereletronica. D4 . Fonte de 5 V para alimentação do circuito. Com uma modificação bem simples pode-se conectar um transistor de driver na saída. *Artigo publicado originalmente na revista Eletrônica Total . devidamente configurado para que além de acender o LED.PIC16F819 – Microcontrolador Microchip® 1 D .LED comum amarelo (qualquer tamanho e formato) D . Figura 10 .