FAÇA UM VOLTÍMETRO DE 3 DÍGITOS COM PIC16F628A

Gostaria de montar um voltímetro digital para a sua fonte de alimentação? Ou controlar a tensão de algum processo, de uma forma barata? Então, você desejará saber mais…

Veja o esquema abaixo:

O circuito proposto trata-se de um voltímetro digital de 3 digitos, construido com a técnica de conversão Delta_Sigma, própria para microcontroladores que não dispõem de conversor analógico/digital internos. Os displays são multiplexados, usando a rotina do timer 0 para orquestrar esta multiplexação.

A TÉCNICA DELTA-SIGMA

Para iniciar, note nos pinos 17 e 18, a presença de uma malha resistiva/capacitiva (RC). Ela visa atuar como um integrador da tensão a ser medida. Veja que no terminal do capacitor de 0,22 microfarads , recebe a soma da tensão de entrada com a tensão fornecida pelo modulador de 1 bit (fornece somente ‘0’ ou ‘5’ volts), através do resistor de 47k ligado ao pino 17 (porta,0).
Pelo pino 18 (porta,1) é comparado a tensão presente nele com a tensão de refêrencia (2,5 volts). Se a tensão de referência for maior, aciona o pino 17 para nivel ‘1’, decrementa contador de resolução (CICLO1/CICLO) e começa a carregar o capacitor até que a tensão seja maior que a de referência. Nesta ocasião, após a comparação, se a tensão de entrada do integrador for maior que a de referência, a saída do pino 17 se torna ‘0’, descarregando o capacitor e incrementando nesta ocasião, o resultado em C1/C0 e decrementando o contador de resolução. Isto continua até terminar o número de conversões determinado pelo contador de resolução. Mais detalhes desta técnica poderá ser visto na Note Application AN700 da Microchip.

O CÓDIGO ASM

O programa começa realizando a configuração de portas e registradores. O comparador é ligado para funcionar apenas um dos dois comparadores no chip. A voltagem de referência interna também é ligada e ajustada para 2,5 volts, ligando sua saída para o pino 1 (porta,2). Depois, o programa entra no loop principal, fazendo a leitura da entrada e dando um atraso entre a próxima leitura, em um ciclo infinito. O timer 0 é ligado com prescaller e interrupção, que é usada na rotina de multiplexação dos display de 7 seguimentos de ânodo comum. O ponto é fixo, sendo ligado junto a saída ‘k1’.

UTILIDADES

A idéia veio da necessidade de construir um voltímetro para uma fonte de bancada, mas que fosse com o PIC 16F628a. Mas, nada impede de outros usos para este voltímetro. Vai da sua necessidade e criatividade!
Pode ser usado para medir de 0 a 25 volts , com segurança. Para outras tensões, deverá mudar os resistores de entrada.

CALIBRAÇÃO

Para calibrar de forma simples, apenas ligue o ponto de teste ‘PT1’ Ao Vcc (+5 volts). Ajuste o trimpot para ler exatos ‘5.0 volts’. Pronto! Caso queira mais facilidade no ajuste, coloque um trimpot ‘multivoltas’, pois o ajuste é um pouco sensivel.
Obs. Este material foi montado e testado apenas em placa de protoboard, podendo ter bugs ainda não identificados. Esta sendo fornecido o arquivo ASM, que poderá ser alterado segundo as necessidades dos hobistas.

Segue o arquivo ASM:

PIC_VOLT_628_ASM

Segue o arquivo HEX:

PIC_VOLT_628_HEX

Adicionalmente, em 31/12/2014, acrescentei esta versão em código “C”:

PIC_VOLT_C

Ainda em 16/03/2024 foi acrescentado esta pasta zipada com uma versão de voltímetro  com 3 displays de cátodo comum, com escala máxima ajustada no programa para 99.9 Volts. Note que o  esquema da ligação dos pinos é  um pouco diferente das versões anteriores.

PIC_VOLT_628_100V_ZIP

E abaixo a versão para display de 7 seguimentos do tipo ânodo comum:

PIC_VOLT_628_100V_ANODO_ZIP

Manuais:
AN700 – Conversor Delta-sigma
Pic 16F628A

Curiosidades:
Conceito equilibrado sobre o trabalho
Histórias de sobreviventes do tsunami do Japão
O rei dos relógios
O desafio da longitude para os navegadores do passado
Os melhores brinquedos
O mistério de Cahokia
Quais são alguns dos avanços no campo da energia
Por que tantos crimes violentos?
Como vai a sua Tireóide?
Matemática para todos
Beneficios da amamentação na Inteligência das criança
A glória das estrelas
Al_Jazari – ‘pai da robótica’?
O ‘pim’ – confirma relato biblico

Outros assuntos:
Como sobreviver ao primeiro ano de casamento
Quando um dos conjuges tem necessidades especiais
Como lidar com dívidas
Como resolver diferenças no casamento
Como tratar o conjuge com respeito
Como evitar ferir com palavras
Ensine seus filhos bons principios com atividades de colorir
Como posso ter ânimo para exercitar
Como posso controlar meu peso?
Entrevista com um bioquímico
Como você encontra tempo para deveres escolares?

Até o próximo artigo!!!

32 comments on “FAÇA UM VOLTÍMETRO DE 3 DÍGITOS COM PIC16F628A

  1. Caro Claudio, boa tarde.
    Tudo muito bem entendido.
    Grato por sua gentileza; valeu de verdade.
    Um abração e bom fim de semana.
    Att,
    João.

  2. Caro Claudio, bom dia.
    Ok, entendi. Mantenho os 3 transistores NPN com os catodos dos displays ligados aos coletores e os emissores aterrados. As bases permanecem conforme o circuito.
    Uma Dúvida: Os pontos será que vão acender? Se os catodos vão estar aterrados quando a base dos NPN for alimentada, de onde virá alimentação para os pontos? Não será preciso modificar, também, o transistor NPN dos pontos? Pensei o seguinte: alimentar o coletor com 5 volts e o emissor via resistor de 270R ligar ao ponto. Solicito por gentileza analisar este detalhe.
    Att,
    João.

    1. Olá João! Isto mesmo. Desculpe-me, pois esqueci deste detalhe. Poderá fazer desta forma que você mencionou ou simplesmente ligar um resistor de 270 ohms do pino 12 ao ‘ponto’.
      Cláudio

  3. Caro Claudio, boa noite.
    O resistor de 47K ligado ao pino 17 do PIC está recebendo tensão do zener 5 volts ou passa direto?
    Caso use display catodo comun que mudanças preciso fazer?
    Os resistores de 47K 1% (um por cento) é facilmente encontrado no comércio?
    Att,
    João.

    1. Olá João! Por favor, coloque um ‘ponto’ no capacitor de 220 nf (no extremo oposto ao gnd). Os resistores de 47k se tocam neste ponto com o capacitor de 220nf. Já para usar display de catodo comum você terá que inverter a polaridade dos seguimentos. Para isto apenas comente a instrução ‘COMF DIGX ‘ onde x será 2,1 ou 0.
      veja abaixo:
      ;===============================================================================================
      ;CONVERTE PARA 7 SEGUIMENTOS E COLOCA NOS BUFFERS (DIG2 A 0) DO MULTIPLEX PARA APRESENTAÇÃO
      CD7S
      SWAPF BR1,W ;CONVERTE TERCEIRO DIGITO PARA 7 SEGUIMENTOS
      ANDLW 0X0F
      ADDLW .0
      BTFSS STATUS,Z
      GOTO PR1
      CLRF DIG2
      ; COMF DIG2,F ;comente aqui
      GOTO V_DIG1
      PR1
      CALL SEG7
      MOVWF DIG2
      COMF DIG2,F
      V_DIG1
      MOVFW BR1 ;CONVERTE SEGUNDO DIGITO PARA 7 SEGMENTOS
      ANDLW 0X0F
      CALL SEG7
      MOVWF DIG1
      ; COMF DIG1,F ;comente aqui
      V_DIG0
      SWAPF BR0,W ;CONVERTE PRIMEIRO DIGITO PARA 7 SEGMENTOS
      ANDLW 0X0F
      CALL SEG7
      MOVWF DIG0
      ; COMF DIG0,F ;comente aqui
      RETURN

      Quanto aos catodos dos displays, ligue cada catodo ao coletor de um transistor (npn) e seus emissores ao gnd., mantendo a base como está.
      Cláudio

  4. Boa tarde claudio gostaria de testar esse circuito no Proteus mais o arq. hex tah em bloco de notas como posso usa-lo no pic compiler?

    1. Olá Darllan! Tente salvar o bloco de notas com terminação ‘.hex’. Se não funcionar, abra o arquivo ( bloco de notas) com o WinPIc, lembrando de colocar o filtro do ‘tipo’ em modo ‘.’. Depois salve como arquivo ‘.hex’ em uma pasta que desejar. Quanto a programas em ‘c’, não é minha praia, pois sou apenas hobista, e não programador. Mas se algum colega do blog puder ajudar…
      Cláudio

      1. obrigado Claudio…vo tentar aki …mais uma otra duvida …qdo eu for fazer a gravaçao no pic eu utilizo a .hex ou a .asm?

        1. Olá Darllan! Você deverá usar o arquivo Hex para gravar no Pic. Este é o resultado da compilação do arquivo ASM no Mplab_ide. Veja na Internet, que tem varios tutoriais que ensinam a programar um pic com bastante facilidade. Você necessitará de um gravador de Pic (hardware), que pode ser um comercial, ou um caseiro, como o ‘simples programador de pic‘ deste blog. Também necessitará de um programador rodando no PC (software), que poderá ser o WinPic800 . E por ultimo, precisará de um arquivo Hex a ser transferido para o Pic. Alguns PC, usando o Widowns, não permite o acesso direto da porta serial. Se tiver problemas com isto, use o programa USERPORT , e para instalação dele veja o video. Para programar Atmel Avr, você deverá usar outro Hardware, como o sugerido neste blog como ‘simples programador avr’, e outro programa no PC, o PonyProg.
          Cláudio

      2. Claudio to meio com duvidas em usar o winPic…sera q vc poderia me mandar ele no winPic fazendo um grande favor no meu email?

    1. Olá Saulo! Esta rotina já é conhecida e foi adaptada para as necessidades do circuito. Consiste em deslocar para a esquerda os registradores com o valor hexa a converter para dentro dos registradores de resultados decimais . Após cada deslocamento , soma-se 3 a cada nibble (conjunto de 4 bits do byte) dos registradores de resultado. Porque 3? Por que será feito o deslocamento para a esquerda, que equivale a multiplicar por 2 , então 3×2=6 , que é diferença entre o hexa e o decimal). Continuando, após somar 3 ao nibble, testamos se o bit MSB foi para 1. Se foi, mantemos a soma, senão, desfazemos a soma (não é repassada ao registrador). Fazemos isto para cada nibble e repetimos o loop pelo número de bits de resultado desejado.
      O resultado seria equivalente a decrementar o número a converter e a cada vez que fizesse isto, incrementar um registrador que poderíamos chamar de ‘unidade’ do registrador de resultado. Quando a unidade chegasse a 10, seria zerada e incrementaria o registrador de ‘centena’, e assim sucessivamente, pelo numero de bits de conversão desejado.
      Claudio

Comments are closed.

Back To Top