VOLTÍMETRO PIC


Através de um microcontrolador facilmente encontrado no mercado (PIC16F876) é possível construir um voltímetro DC para uso em fontes de bancada ou outros instrumentos. As características do Voltímetro PIC são:

- capacidade de medir tensões DC entre 0 e 25V;
- tensão de alimentação de até 35VDC;
- leitura em um LCD 16x2 (display de cristal liquido);
- boa precisão;
- fácil montagem (poucos componentes);

Se você tiver alguma experiência com microcontroladores PIC poderá ainda modificar as características deste equipamento para atender as suas necessidades. 




O MICROCONTROLADOR PIC16F876

O microcontrolador PIC16F876 é 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 20mA por pino;
- Power-on Reset;
- Power-up Timer;
- Watch Dog Timer;
- Freqüência de operação de até 20MHz (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 prescaler;
- 1 timer de 16 bits com prescaler;
- 2 módulos CCP (Capture/Compare/PWM);
- 5 canais conversores AD de 10 bits;
- 1 canal para comunicação que pode ser setado em modo Sincrono como SPI (modo mestre apenas), I2C (modo mestre ou escavo) ou modo Assíncrono (RS-232);
- entre outros recursos.

Obs.: Se você deseja mais informações sobre este microcontrolador faça o download do datasheet do mesmo no site do fabricante Microchip.



O CIRCUITO

Na figura abaixo temos o circuito elétrico do Voltímetro PIC. Note que utilizei um display de cristal liquido (LCD) do tipo paralelo (os "seriais" não servem neste projeto).

Através de CI1 (PIC16F876) são realizadas as medidas do canal analógico e também o controle do LCD. Este tem “2” linhas por “16” colunas. Para usar qualquer outro tipo será necessário realizar alterações no programa (aconselhável apenas para quem tem experiência na linguagem de programação assembly do PIC).

Os resistores R1 e R2 formam um divisor resistivo que permitirá que a tensão inserida neste resulte na tesão máxima permitida no canal AD do PIC. Esta tensão é de 5VDC e sendo assim a presença do divisor de tensão é indispensável. O divisor resistivo foi calculado para realizar uma queda de tensão de 25VDC para 5VDC (divisão por 5). Veja a fórmula abaixo:

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

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

Sendo assim, se você usar a fórmula, considerando uma entrada máxima no divisor igual a 25V, obterá o valor de R1 igual a:

 5V=[10k/(R1+10k)]=> 5R1 + 50k = 250k => R1=(250k - 50k)/5 => 40 kOhm

Resistores de 40 KOhm não são comuns no mercado, a não ser de precisão (1%). Sendo assim você poderá usar associações dos mesmos como quatro resistores de 10 kOhm em série ou ainda dois de 20 kOhm em série como fiz em meu protótipo.

Obs.: Resistores de precisão são os mais indicados para R1 e R2. Essa precisão se refletirá no resultado final. Caso você use resistores comuns, com precisão de +/- 5% terá de considerar esta precisão no resultado final. É claro que dependendo da aplicação esta margem percentual poderá não influir negativamente no circuito.

O circuito prevê ainda uma fonte com dois reguladores. Um para 15VDC (CI3) e outro para 5VDC (CI4). Isso foi feito, pois assim seria possível retirar a alimentação do circuito da pŕopria fonte onde o Voltímetro PIC seria ligado (após a retificação, antes da regulagem). Isso também viabilizou que o Voltímetro PIC possa ser alimentado por qualquer circuito, com tensões de até 35VDC.

Os capacitores C4, C5, C6 e C7 atuam como filtros e o diodo D1 serve de proteção contra uma possível inversão de polaridade na alimentação do voltímetro. D2 tem também o mesmo objetivo. Apesar de parecer sem sentido, você poderá, por exemplo, usar apenas o segundo regulador. Neste caso uma fonte independente de até 12V seria utilizada na entrada. Caso você opte por esta configuração deve lembrar de fazer 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 LCD 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 para CI1.



A MONTAGEM

Na figura abaixo você pode ver o lay-out da placa de circuito impresso que usei para fazer o meu protótipo.

Aconselho o uso de um soquete de 28 pinos DIP do tipo Slim para CI1. 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 adaptado (corte) para que fique no tamanho correto.

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

Tenha cuidado ao soldar os componentes polarizados como diodos e os 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 você vá utilizar o circuito em uma fonte, por exemplo. Na figura abaixo você pode ver como ficou meu protótipo montado.


Atenção: Para concluir está montagem será necessário utilizar um gravador para a linha de microcontroladores PIC da Microchip®. Neste site há um projeto de um gravador que poderá ser utilizado para esta tarefa, o PROGPIC II. Não tratarei de como utilizar um gravador aqui. Considero que quem se propõe a montar um circuito com microcontroladores PIC, tem a experiência necessária com a compilação e gravação de um programa qualquer nos mesmos.


- Clique aqui para conhecer o gravador PROGPIC II



O PROGRAMA

O programa VOLTIMETRO_PIC.ASM poderá ser obtido logo abaixo, em Downloads. Na figura abaixo você tem o fluxograma que poderá ajudar na interpretação do programa. Recomendo que você faça o download do programa para auxiliá-lo na compreensão do que será dito a seguir sobre o mesmo. O programa foi ricamente comentado, facilitando ainda mais a sua compreensão.


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

Após a inicialização, o programa configura o LCD. Feito o start-up do LCD uma mensagem será enviada ao display. Note no programa que isso é feito enviando caracter por caracter, inclusive o caracter de comando para mudar de linha (veja a subrotina DISPLAY_MSG).

A partir desse momento o programa entra em “um laço infinito” analisando constantemente o canal analógico AN0. Após uma captura, uma série de conversões são feitas para que o valor seja demonstrado em decimal no display (lembre-se que um microcontrolador trabalha sempre em binário!)

Você 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 do circuito, utilizei apenas 8 bits na conversão. Assim, sempre que o conversor mostrar o valor 255 (ou FFH) teremos na entrada 5 Volts e ao mostrar 00 (00H) 0 Volts.

Desta forma é possível calcular a resolução na entrada, usando para isso a fórmula abaixo:

resolução = Vref / 2n-1

- Vref = tensão de referencia 
n = número de bits utilizados na conversão

De acordo com a equação a resolução obtida pelo Voltímetro PIC será de 0,0196V ou 19,6 mV. Estes são os “degraus” na conversão. Se fosse utilizada uma resolução de 10 bits na conversão teríamos, neste caso, uma resolução de 0,00488V ou 4,88 mV (quase 5 vezes maior). Porém para isso trabalharíamos com 2 bytes (16 bits) ao invés de um e os cálculos finais teriam como resultado 32 e 64 bits! E trabalhar isto em assembly não é tarefa das mais simples!

Após a conversão, um valor de 8 bits (entre 00H e FFH) será inserido na variável ADRESH (estou usando o valor convertido justificado a esquerda, isolando os dois bits menos significativo da leitura). Esse valor será multiplicado por 250 para ajustar a leitura à 25VDC. O valor retornado tem agora 16 bits. Este valor será então dividido por 255.

Após estes cálculos, o programa promove o ajuste da parte inteira e da parte decimal. Isto é feito através de uma conversão BCD. Apesar de parecer complexo, a lógica utilizada é bem simples.

Irei agora detalhar os cálculos que o programa realiza, usando como exemplo uma entrada igual a 15VDC.

Ao inserir 15VDC na entrada do divisor de tensão, teremos na entrada do AD do microcontrolador 3VDC (divisão por 5). Assim, o 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 se está trabalhando. O valor informado pelo AD é então multiplicado por 250. Para o exemplo adotado teremos 38250 (note que estou utilizando uma biblioteca que permite trabalhar com cálculos de 16 bits). Isso é feito para compatibilizar a leitura com a escala máxima de 25VDC. Agora o novo resultado é dividido por 255. No exemplo o valor após esta divisão será de 150. Você deve ter percebido, que é preciso agora apenas separar a dezena da sua casa decimal para obter 15,0. Isso será feito pela subrotina 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 o exemplo, temos no final do processo dentro das variáveis os seguintes valores:

DEZENA2 = 1
DEZENA1 = 5
UNIDADE = 0

Perceba que serão estes os valores colocados no LCD, porém é necessário convertê-los antes para o padrão ASCII. Isso é feito somando 30H a cada valor (DEZENA2, DEZENA1 e UNIDADE). Uma virgula é enviada ao LCD antes da variável UNIDADE para informar a posição da 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 bem 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 na placa.

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


Feito todo as verificações, você terá apenas que alimentar o circuito com uma tensão de entrada entre 18VDC e 35VDC, caso tenha mantido o CI3 no circuito e de 9VDC a 12VDC caso o tenha retirado (veja as recomendações dadas mais atrás neste artigo). Com o circuito devidamente alimentado, o LCD deverá mostrar a seguinte mensagem:


Voltímetro PIC

Tensão=0,0V


Ligue na entrada do Voltímetro PIC uma tensão entre 0 a 25VDC. Preste 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 circuito. No link "Fonte variável para bancada" você poderá assistir a um vídeo feito exatamente nestas condições (meu Voltímetro PIC instalado na fonte de bancada, sendo testado ao lado de um multímetro).

Testado o circuito, você já pode usá-lo em sua fonte ou onde quer que tenha planejado seu uso.

Obs.: 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á comentados!



CONCLUSÃO

Neste artigo você viu 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. Espero ter contribuído com informações para a sua “biblioteca” pessoal. Boa montagem e até a próxima!



DOWNLOADS:

- Circuito do Voltímetro PIC
- Desenho do lay-out para confecção do circuito impresso (lado inferior invertido)
- Programa para microcontrolador (pacote com ASM e HEX)
- Lista de materiais


Este projeto foi publicado, com minha autorização, na Revista Mecatrônica Fácil nº 20 de Janeiro/Fevereiro de 2005.







Copyright deste conteúdo reservado para Márcio José Soares e protegido pela Lei de Direitos Autorais LEI N° 9.610, de 19 de Fevereiro de 1998. É estritamente proibida a reprodução total ou parcial do conteúdo desta página em outros pontos da internet, livros ou outros tipos de publicações comerciais ou não, sem a prévia autorização por escrito do autor.