OHMETER VIA SERIAL DO PC – COM PIC12F675 (DIDÁTICO)

0

Gostaria de testar valores de resistor diretamente em seu PC, sem necessitar de multitester?
Então, você desejará testar esta idéia! Veja mais…

Quando dispomos de um PC na bancada, pode-se fazer muitas coisas com ele. Neste projeto, estamos usando a porta serial do PC (DB9 , protocolo RS232) para receber via um programa terminal (HyperTerminal, ou outros), as leituras feitas por um PIC 12F675, de um resistor, cujo valor nos é desconhecido ou que queiramos confirmar quanto a sua tolerância.

Veja o esquema abaixo:

A comunicação se realiza a 38400 Bauds, 8 bits, sem paridade, 1 bit de parada e nenhum controle de fluxo (pois somente envia).
O PIC foi configurado para que o pino 7 seje uma entrada analógica que medirá a tensão no divisor resistivo formado pela resistor a medir e um outro resistor padrão selecionado pelo PIC. Na realidade, temos 3 resistores padrões : 1M, 10K e 100 ohms. Para cobrir uma longa gama de medições, indo do ‘0’ ohms a 10 Mega ohms , foi necessário usar 3 escalas. A mais baixa faz uso de um transistor PNP (BC558) para chavear, ligando um resistor de 100 ohms no divisor. Esta escala permite ler valores baixos como 0,5 ohms ou menos, com 3 casa após a virgula. A segunda escala usa um resistor de 10k no divisor com uma casa após a virgula, estendendo a medição a algumas centenas de kilo ohms. A última escala usa um resistor de 1 Mega ohms, abrangendo de centenas de kilo ohms até uns 10 Mega ohms. Infelizmente, esta escala é a mais complicada, pela alta impedância de entrada e muito sensível a ruídos, sendo a menos confiável. Seu tempo de medição é mais longo, tendo-se que esperar que a leitura se estabilize. O capacitor de 100 nF ajuda um pouco a estabilidade desta escala. Para a mudança de escala, foi usado recursos simples, pois ‘esgotou-se’ todo o espaço de memória (1024 bits apenas). Quando um erro ‘matemático’ é identificado, é incrementado a escala. Também se a leitura for ‘0’ ohms, força a escala para medir resistências baixas. O ideal seria prover patamares pré-estabelecidos de mudanças para cima e para baixo. Quando as pontas de prova estão abertas ou sem nenhum resistor a medir, irá aparecer: ‘ R = ???? ” , indicando que não tem nada medindo. Poderá ocasionalmente ocorrer, além desta indicação, uma medida estranha, como 500,0 , 5000 ou 5,000, sendo o efeito colateral da simplicidade do comutador de escalas. Mas… para fins didáticos, podemos dizer que seja suportável esta deficiência. Ao darmos um ‘reset’, obrigamos a escala a ir na escala de medida de menor resistência.
A confiabilidade da escala é muito dependente dos valores dos resistores usados como padrão de escala, que deverão ser de 1% de precisão ou menos.
A tensão de alimentação de 5 volts deve ser bem filtrada e estável, visto que a tensão de referência usada para conversão analógica para digital provém dela.

Abaixo, vemos a configuração correta para o HyperTerminal se comunicar corretamente com esta aplicação:

Abaixo vemos como aparenta a tela, rodando o HyperTerminal, e testando um resistor de 68 ohms:

FUNCIONAMENTO DO OHMETER POR DIVISOR DE TENSÃO

Antes de mais nada, ao converter a tensão medida com o vcc servindo de referência, o resultado deverá ser trabalhado para representar a realidade da medição. Assim, usa-se a expressão matemática para este ajuste como segue:

Valor Real = Valor lido na conversão x (5/1023)

Ex. Supondo que, após uma conversão, os registradores de saída tenham os seguintes valores:
AdresH = 0h e AdresL 0xDF (223 em decimal)
Usando a fórmula acima teremos o seguinte resultado:

Valor Real = 223 X (5/1023) -> 1,0899 volts

Em seguida, aplica a fórmula para se obter o valor do resistor desconhecido:

Rx = (vcc – v lido Real) / ( ( vcc – v lido Real) / resistor padrão ))

Ex. Usando a leitura acima e resistor padrão de 10 kohms:

Rx = (5 – 1,0899) / ( 1,0899 / 10000) -> 35875,78 ohms

A titulo de confirmação lógica, supondo que a leitura fosse exatamente a metade da tensão vcc, conclui-se que o resistor padrão e o que está sendo testado sejam de mesmo valor. Confirmando:

Rx= (5 – 2,5) / (2,5/10000) -> 10000 ohms ( ou seja, a fórmula funciona!!!)

Para lidar com tantos números fracionais, a solução é usar a biblioteca de ponto flutuante. Ela toma muito espaço de memória, sendo um problema nos pequenos microcontroladores de 1Kbyte de flash. Em princípio, todo número a ser trabalhado tem que ser convertido primeiro em ponto flutuante (usando a rotina FLO2424) e depois poderá ser feito somas, subtrações, divisões e multiplicações. No final, deverá ser convertido novamente em ‘inteiros’ (usando a rotina INT2424).
Para usar corretamente, devemos colocar no banco ‘A’ composto dos registradores AARGB0,AARGB1,AARGB2, (AEXP) o valor a converter para ponto flutuante, sendo AARGB2 o byte menos significativo e AARGB0, o mais significativo. Se seu número tem apenas 2 bytes, zere o AARGB0. Chame a rotina FLO2424, que converterá em ponto flutuante. O resultado ficará em AEXP,AARGB0,AARGB1,AARGB2 e poderá ser salvo em outro banco (‘B’ ou ‘C’) para uso futuro. As operações sempre se realizam entre o banco ‘A’ e o banco ‘B’, com resultado sempre no banco ‘A’. Foi previsto rotinas para copiar de um banco para outro ou mesmo trocar seus conteúdos.

Foi usado o pino 5 do PIC para o envio pela DB9 em 38400 bauds, de tempos em tempos, aquilo que está sendo medido nas pontas de prova. Com a calibração original do PIC (oscall), não teremos problema com tempos corretos para o sincronismo da transmissão. Se estiver usando um PIC usado, certifique que esta calibração não foi perdida, sob o risco de transmitir ‘caracteres estranhos’ na tela do PC. Existem algumas idéias na internet, de como recuperar este valor de calibração, mas geralmente usa-se frequencimetro para medir uma frequência gerada em determinado pino, após carregar um arquivo hex especifico para isto.
Obs. Esta montagem é apenas didática, sendo que foi montada apenas em protoboard, sujeita a bugs não identificados ainda. Ela tem suas limitações conforme texto acima. Foi fornecido o arquivo ASM, o qual poderá ser modificado para obter outros resultados desejados por cada hobista.

Segue o arquivo ASM:

Ohmeter_rs232_asm

Segue o arquivo HEX:

Ohmeter_rs232_hex

Datasheet Pic 12F675

Curiosidades:
Histórias de sobreviventes do tsunami do Japão
O rei dos relógios
O desafio da longitude para os navegadores do passado
Praga e seu notável relógio
Praga e sua história
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

Até o próximo artigo!!!

0

7 comments

    1. 0

      Olá João_João! Basicamente, é possível ser feito, mas não disponho deste ci no momento para realizar testes. Este ci envia 20 bits de endereço + 4 bits de dados + 1 pulso de sincronismo. Talvez futuramente possa conseguir um exemplar.
      Claudio

  1. 0

    :mrgreen: Olá Claudio, mais um execelente exemplo, teria como bolar um leitor de serial para mostrar o que esta recebendo pela serial em um display, valeu ai e ok.

      1. 0

        💡 :mrgreen: Olá Claudio, seria para a leitura dos dados enviados pela rs232, ou seja como neste ultimo exemplo seu, o que o pic transmitir pela serial mostra no lcd, tem como ficar o Bauds rate automatico, ou tb selecionavel por jamper. Tenho alguns equipamentos que faço manutenção aqui que tenho que usar o not para testar a comunicação da rs232, com isto eu não necessito leval o not no local fica mais pratico, valeu ai pela atenção.

        1. 0

          Olá Agnaldo! Que baud rates são os mais usados? Você pode configurar no aparelho a testar? Por curiosidade, e responda se quiser: que tipo de aparelho você faz manutenção?
          Claudio

          1. 0

            :mrgreen: Ok Claudio, sem problemas, eu faço manutenção e instalaçao em equipamentos de automação predial e automação para balanças rodoviarias, carretas etc. agora quanto a velocidade varia muito, o normal e 9600baud. mais tem caso que os equipamentos so funciona em baixa velocidade 4200 ou menos, depende muito do local que e sujeito a ruidos eletricos, se for por jamper a seleção ficaria otimo.Valeu e obrigado pela a sua atenção

Comments are closed.