Na edição no 18 (*) publicamos o artigo "Medidas analógicos". Nesse artigo demonstramos o uso do canal analógico do microcontrolado "embedded" Basic Step 1. Qual não foi nossa surpresa, tamanha a repercussão desse artigo junto aos nossos leitores. Pensando nisso, decidimos montar o artigo que agora o leitor tem em mãos. O voltímetro PIC além de demonstrar como utilizar o canal analógico do microcontrolador PIC16F876, também se presta como circuito definitivo para uso em fontes e outros equipamentos. 

 

(*) O artigo saiu numa Mecatrônica Fácil de 2005 fazendo referência a outros artigos que foram recuperados e estão neste site. Alguns links são da época não estando disponíveis no momento em que fazemos a recuperação do artigo.  Acesse - http://www.arnerobotics.com.br/eletronica/voltimetro_pic.htm para baixar todo o material utilizado neste projeto

 


 

 

 

Nossa proposta é bem simples. Através de um microcontrolador facilmente encontrado no mercado (PIC16F876), construir um voltímetro DC. As características do voltímetro PIC são:

- Capacidade de medir tensões DC entre O e 25 V máximos:

- Tensão de alimentação de 35 VDC;

- Leitura em um LCD 16x2 (display de cristal líquido);

- Boa precisão;

- Fácil montagem (poucos componentes).

O leitor com experiência em microcontroladores poderá modificar as características deste equipamento para atender as suas necessidades. Enfim, um circuito simples, mas com excelentes características.

 

O MICROCONTROLADOR PIC16F876

O microcontrolador PIC16F876 é um componente bastante utilizado e muito difundido entre os usuários dos microcontroladores Microchip®. Suas características principais são:

- 8 kbytes de memória FLASH para programa;

- 368 bytes de memória RAM (registradores de uso geral);

- 256 bytes de EEPROM para dados;

- 13 interrupções possíveis:

- 22 pinos de I/O com capacidade de fornecer 20 mA por pino;

- Power-on Reset;

- Power-up Timer;

- Watch Dog Timer;

- Frequência de operação de até 20 MHz (5 MIPS

- Milhões de instruções por segundo):

- Programação ICSP (In Circuit Serial Programming);

- Tensão de operação de 2,0 a 5,0V;

- 2 timers de 8 bits com pré-esca-lares;

- 1 timer de 16 bits com pré-escalar;

- 2 módulos CCP (Capture/ Compare/PWM);

- 5 canais conversores AD de 10 bits;

- 1 canal para comunicação que pode ser "setada" em modo síncrono como SPI (modo mestre apenas), 120 (modo mestre ou escavo) ou modo assíncrono (RS-232);

- Entre outros recursos.

 

Importante Aconselhamos ao leitor que deseja mais informações sobre este microcontrolador o download do databook no site do fabricante: www.microchip.com. (Nota: veja nota no início do artigo)

 

O CIRCUITO

Na figura 1 o leitor tem o circuito elétrico adotado para o Voltímetro PIC. Note que utilizamos um display de cristal líquido do tipo paralelo (os do tipo serial não servem neste projeto).

 


| Clique na imagem para ampliar |

 

É através de Cl1 que são realizadas as medidas pelo canal analógico e também o controle do display Cl2. Este display tem "2" linhas por "16" colunas. Para usar qualquer outro tipo será necessário realizar alterações no programa (aconselhável apenas para os leitores com experiência na programação assembler do PIC).

Os resistores R1 e R2 formam um divisor resistivo para a entrada de tensão máxima do canal AD do PIC. Esta tensão é de 5 VDC e sendo assim a presença do divisor de tensão é indispensável. O mesmo foi calculado para promover uma queda de tensão de 25 VDC máximos na sua entrada para 5 VDC na entrada do canal analógico do microcontrolador (divisão por 5). Veja a fórmula:

V2 = [ R2 / (R1 + R2) ] / V

Através desta fórmula, o leitor poderá calcular para qualquer valor de entrada (diferente do proposto em nosso projeto) o valor do resistor R1. O valor do resistor R2 é sempre fixo em 10 kohms. Isso é feito para cumprir uma determinação do fabricante do microcontrolador, pois o mesmo alerta-nos que a impedância da carga na entrada dos canais ADs não deve ser menor que 10 kohms. O valor de V2 também é sempre fixo em 5 VDC (tensão máxima no canal AD com a referência interna em VCC).

Dessa forma, se o leitor usar a fórmula como mostraremos a seguir, considerando uma entrada máxima no divisor igual a 25 V, obterá o valor de R1 igual a:

5 V = [ 10 kohms / (R1 + 10kohms) ] / 25 V

5R1 = 50 kohms = 250 kohms

 

Os resistores de 40 kohms não são comuns no mercado, a não ser os de precisão. Sendo assim, o leitor poderá usar associações dos mesmos como quatro resistores de 10 kohms em série ou ainda dois de 20 kohms em série como fizemos em nosso protótipo.

O circuito prevê ainda uma fonte com dois reguladores. Um para 15 VDC (Cl3) e outro para 5 VDC (Cl4). Isso foi feito, pois assim é possível retirar a alimentação do circuito de uma fonte (após a retificação, antes da regulagem) ou de outro circuito qualquer com tensões de até 35 VDC.

Os capacitores C4, C5, C6 e C7 formam os filtros recomendados no manual do fabricante dos reguladores.

O diodo D1 serve de proteção contra uma possível inversão de polaridade na alimentação do circuito. D2 tem também o mesmo objetivo. Apesar de parecer sem sentido, o leitor poderá, por exemplo, usar apenas o segundo regulador. Nesse caso, uma fonte independente de até 12 V seria utilizada na entrada. Caso o leitor opte por esta configuração deve lembrar-se de proceder a ligação do catodo de D1 até o anodo de D2. Isso pode ser feito através de um jumper na placa.

O trimpot P1 ligado ao display serve para ajustar o contraste do mesmo. O cristal X1 e os capacitores C1 e C2 formam o bloco de oscilação necessário ao microcontrolador. C3 é um capacitor de desacoplamento (filtro) para Cl1.

 

Importante: Apenas alertamos ao nosso leitor que os resistores de precisão são os mais indicados para este circuito, tanto para o uso em R1 quanto em R2. Essa precisão se refletirá no resultado final. Caso o leitor use resistores comuns, com precisão de +/- 5% terá de considerar esta precisão no resultada final. E claro que dependendo da aplicação, como o uso em fontes, por exemplo, esta margem percentual não influenciará negativamente no circuito.

 

A MONTAGEM

A partir do layout fornecido na figura 2, o leitor tem a nossa sugestão para a confecção de uma placa de circuito impresso para o seu protótipo.

 

 

 


| Clique na imagem para ampliar |

 

Aconselhamos o uso de um soquete de 28 pinos DIP do tipo "Slim" para Cl1. Caso não encontre este tipo de soquete nas lojas de sua cidade (ou região), você poderá usar um soquete para 28 pinos comum devidamente cortado para que fique no tamanho correto (de acordo com o layout da figura 2).

O uso de um soquete para o display também é recomendável. Porém, o leitor poderá soldar um cabo flat de 14 vias entre a placa e o display, melhorando a instalação do mesmo em um gabinete. Apenas recomendamos que este cabo não seja superior a 20 cm para evitar interferências irradiadas pelo cabo (tanto do microcontrolador para outros circuitos externos, como também dos circuitos externos para o microcontrolador).

Tenha cuidado ao soldar os componentes polarizados tais como: diodos e reguladores de tensão. O uso de radiadores de calor para os circuitos reguladores é altamente recomendável devido ao seu aquecimento. O conector J1 poderá ser ignorado na montagem caso o leitor vá utilizar o circuito em uma fonte, por exemplo. Na foto de abertura do artigo, o leitor pode apreciar o nosso protótipo montado.

 

Importante: Nesta mesma edição o leitor encontra a montagem de uma fonte para bancada muito interessante, e que oferece excelentes resultados. A associação do Voltímetro PIC a esta fonte proporcionará um acabamento ainda melhor à mesma, deixando-a muito próxima das caras fontes comerciais. Veja as fotos do nosso protótipo no referido artigo e capa desta edição.

 

O PROGRAMA

O programa- VOLTIMETRO_ PIC.ASM poderá ser obtido gratuitamente em nosso site (vide box no final do artigo). Na figura 3 o leitor tem o fluxograma montado para interpretação do programa interno ao microcontrolador. Recomendamos que se faça o "download" do programa para auxiliar na compreensão do que será dito a seguir sobre o mesmo. O programa foi ricamente comentado, facilitando ainda mais a sua compreensão. Em nosso site, além do código-fonte, também é possível encontrar o código HEX (arquivo para gravação no microcontrolador) VOLTIMETRO_PIC.HEX.

O programa inicia o ambiente configurando os periféricos do PIC. Apenas um único canal analógico é implementado por ele. Os outros pinos com entrada para os outros ADs serão utilizados como I/Os digitais.

 


| Clique na imagem para ampliar |

 

 

Importante: Será necessário um gravador para a linha de microcontroladores PIC da Microchip). Na edição n°13 publicamos um gravador que poderá ser utilizado para esta tarefa. Seu uso também foi descrito na referida edição e não trataremos disso aqui. Consideraremos que o leitor quer se propôs a montar o Voltímetro PIC já tem a experiência necessária coma compilação e gravação, de programas, nos microcontroladores

 

Após a inicialização, o programa configura o display LCD. Feito o "startup" do display, uma mensagem é enviada para o mesmo. Note, no programa, que isso é feito enviando caractere por caractere, inclusive o caractere de comando para mudar de linha (veja a sub-rotina DISPLAY_MSG). A partir desse momento o programa entra em "um laço infinito" analisando constantemente o canal analógico 1 (ANO).

Após a análise, a conversão é feita para que o valor seja demonstrado em decimal, no display (lembre-se que um microcontrolador trabalha sempre em binário!).

O leitor deve estar se perguntando:

"Como foi feita a conversão?"

Para entender como isso foi feito será necessário compreender alguns conceitos sobre conversores analógicos. O primeiro deles diz respeito ao número de bits utilizados na conversão. O PIC16F876 possui cinco canais AD de 10 bits cada, porém devido à simplicidade de nosso circuito, utilizamos apenas oito bits em nossa conversão (interna ao programa). Assim, sempre que nosso conversor mostrar o valor 255 (ou FFH) teremos em nossa entrada 5 volts e ao mostrar 00 (OOH) teremos 0 volts. Desta forma, podemos calcular que a resolução em nossa entrada é:

 

resolução = Vref / 2n-1

 

onde Vref é nossa tensão de referência. No nosso caso, apesar de poderemos inserir até 25 VDC máximos, na saída do divisor resistivo a tensão máxima será de apenas 5 VDC. Na fórmula, n é o número de bits utilizados na conversão (8).

De acordo com a equação, nossa resolução é de 0,0196 V ou 19,6 mV. Estes são os "degraus" em nossa conversão. Se fosse utilizada uma resolução de 10 bits na conversão, teríamos uma resolução de 0,00488 V ou 4,88 mV (4 vezes maior). Mas para isso, trabalharíamos com 2 bytes (16 bits) ao invés de um, e os cálculos finais teriam como resultado 32 bits e 64 bits!

Trabalhar isso em assembler não é tarefa das mais simples e como estamos iniciando o assunto para nossos leitores, preferimos fazê-lo de forma mais fácil. Em breve publicaremos um outro artigo, demonstrando como trabalhar com todos os bits do conversor AD do PIC!

Após a conversão um valor de 8 bits (entre 00H e FFH) é inserido na variável ADRESH (estamos usando o valor convertido justificado a esquerda, isolando os dois bits menos 'significativos de nossa leitura). Esse valor é multiplicado por 250 para ajustar a leitura a 25 VDC. O valor retornado tem agora 16 bits. Este valor é dividido por 255. Após estes cálculos, o programa promove o ajuste decimal, ajustando a parte inteira e a parte decimal. Isto é feito através de uma conversão BCD.

Apesar de parecer complexa, a lógica utilizada é bem simples. Acreditamos que o leitor com menos experiência com a linguagem assembler do microcontrolador terá alguma dificuldade na compreensão do programa. Aconselhamos nesse caso, que não se atenham às instruções utilizadas, mas sim na lógica detalhada nos comentários do programa. De qualquer maneira, iremos detalhar os cálculos que o programa realiza a seguir, usando como exemplo uma entrada igual a 15 VDC:

Ao inserir 15 VDC na entrada do divisor de tensão, teremos na entrada do AD do microcontrolador 3 VDC (divisão por 5). Assim, nosso AD irá indicar a leitura: 153 decimal (99H). Para obter este valor, basta dividir o valor da tensão na entrada do AD pelo valor da resolução que estamos trabalhando. O valor informado pelo AD é então multiplicado por 250. Para nosso exemplo teremos 38250 (note que estamos usando uma biblioteca que trabalha com 16 bits). Isso é feito para compatibilizar a leitura com a escala máxima de 25VDC.

Agora o novo resultado é dividido por 255. Para nosso exemplo o valor após esta divisão é 150. O leitor deve ter percebido que precisamos apenas separar a dezena da sua casa decimal para obter 15,0. Isso será feito pela sub-rotina AJUSTE_DECIMAL. O resultado obtido é decrementado e as variáveis UNIDADE, DEZENA1 e DEZENA2 incrementadas de acordo com este decremento.

UNIDADE é incrementada (a cada decremento do valor total) até que seja igual a dez. Neste momento a mesma é zerada e a variável DEZENA1 é incrementada uma VEZ. Um novo ciclo é realizado. Quando DEZENA1 for igual a nove ela é zerada e DEZENA2 incrementada. Um novo ciclo inicia-se até que o valor passado seja igual zero.

Assim, para nosso exemplo, temos no final do processo dentro das variáveis os seguintes valores:

DEZENA2 = 1

DEZENA1 = 5

UNIDADE = 0

O leitor deve notar que serão estes os valores passados ao display, porém, é necessário convertê-los antes para o padrão ASCII. Isso é feito somando 30H a cada valor (DEZENA2, DEZENA1 e UNIDADE). Uma vírgula é enviada ao display, antes da variável UNIDADE para informar a casa decimal

 

TESTE E USO

Após finalizar a montagem, é sempre recomendável uma revisão de todas as etapas. Lembre-se que apesar do circuito ser relativamente simples, devido à presença de um microcontrolador, existem algumas etapas a serem aqui respeitadas:

- Confecção da placa de circuito impresso;

- Soldagem dos componentes;

- Compilação e gravação do programa no microcontrolador;

- Inserção do mesmo à placa.

Cada etapa deve ser considerada. Ela estará sempre presente no mundo dos microcontroladores e se ocorrer qualquer falha em uma delas, o maravilhoso circuito microcontrolado não passará de um amontoado de componentes inúteis! Verifique sempre cada etapa com bastante cuidado!

Feitas todas as verificações, o leitor terá apenas de alimentar o circuito com uma tensão de entrada entre 18 VDC e 35 VDC, caso tenha mantido o CI3 no circuito e de 9 VDC a 12 VDC se o tiver retirado (veja as recomendações dadas mais atrás neste artigo).

Com o circuito devidamente alimentado, o display deverá mostrar a seguinte mensagem:

Voltímetro PIC

Tensão=0,0 V

Ligue na entrada do voltímetro PIC uma tensão variável de O a 25 VDC. Lembre-se apenas de prestar bastante atenção à polaridade! Qualquer inversão poderá ser fatal para o microcontrolador!

Se quiser, ligue um multímetro na escala Volts DC junto para verificar a precisão do mesmo. Em nosso site o leitor poderá assistir a um vídeo feito exatamente nestas condições (nosso voltímetro PIC foi instalado na fonte FMF-2). Testado o circuito, o leitor já poderá usá-lo em sua bancada, fonte ou onde quer que tenha planejado seu uso.

Observação: Não confunda a entrada de tensão a ser analisada com a entrada de alimentação do circuito! A entrada de alimentação não pode ser variável! Esta deve ser fixa dentro dos valores já expostos!

 

AJUDA COM PROBLEMAS

A seguir, listamos algumas dicas que poderão ajudar nosso leitor na busca de possíveis problemas:

 

Meu voltímetro não funciona! Nada é mostrado no display!

Possíveis soluções:

- Verifique se o nível da alimentação está adequado;

- Cheque se a polaridade da mesma está correta;

- Veja se o microcontrolador está instalado corretamente;

- Observe se a posição do display não foi invertida;

- Verifique o contraste em P1.

Gire-o em um sentido e noutro;

- Confirme se o display utilizado é compatível com o recomendado;

- Cheque a gravação do microcontrolador;

- Certifique-se de que o microcontrolador utilizado é o recomendado na lista de material. Toda atenção deve ser dada ao código, levando em consideração também os sufixos após o mesmo!

 

Meu voltímetro liga e mostra a mensagem inicial, mas não mostra qualquer variação de tensão em sua entrada!

Possíveis soluções:

- Verifique se o nível da alimentação na entrada é adequado ao colocado no texto;

- Cheque se a polaridade da mesma está correta (se invertida, talvez o microcontrolador tenha de ser trocado);

- Confirme as ligações na entrada do voltímetro.

 

CONCLUSÃO

Neste artigo o leitor aprendeu como é simples utilizar um microcontrolador para a leitura de dados analógicos. Muitos dispositivos podem ser criados com um microcontrolador. Tudo é uma questão de criatividade. Esperamos ter contribuído com informações para a "biblioteca" do nosso leitor interessado em microcontroladores. Boa montagem e até a próxima!

 Acesse - http://www.arnerobotics.com.br/eletronica/voltimetro_pic.htm para baixar todo o material utilizado neste projeto