PROVADOR LÓGICO TTL/CMOS – COM PIC 12F675 (REF169)

1

Uma ponta de prova de níveis TTL/CMOS pode ser um equipamento interessante para testes digitais…

Se realizarmos uma busca rápida pela internet, com certeza encontraremos muitos modelos de ponta de prova para níveis TTL/CMOS. A maioria utiliza portas lógicas, outras usam transistores e as mais sofisticadas usam um par de amplificadores operacionais. A proposta deste protótipo é usar um PIC12f675 para realizar a tarefa pesada. Apesar de ter apenas 8 pinos, dispõem internamente de 4 canais no seu conversor analógico/digital. Isto realmente facilita a leitura das tensões necessárias para este circuito.
Antes de passar ao projeto, devemos lembrar um pouco sobre ‘níveis lógicos’ de portas. No caso das portas da família TTL, é convencionado que níveis abaixo de 0,8 volts é considerado com sendo nível lógico ‘0’. Já o nível ‘1’ será uma tensão acima de 2 volts até 5 volts. Como esta família trabalha somente com 5 volts, isto já limita muito os problemas.
Mas que dizer da família CMOS?
Esta família pode ser alimentada com tensões entre 3 volts ( ou menos) a 18 volts. Então não podemos falar de valores fixos de tensão para ‘1’ ou ‘0’, mas usamos um percentual da tensão de alimentação para fixar estes níveis. Para esta família ficou convencionado que níveis abaixo de 30 % da alimentação será nível ‘0’ e acima de 70% até o Vcc, teremos o nível ‘1’.
Para exemplificar, suponhamos que tenhamos uma tensão de 15 volts alimentando um ci da família CMOS:

Para nível ‘1’ = 70 x 15 / 100 = acima de 10,5 volts
Para nível ‘0’ = 30 x 15 / 100 = abaixo de 4,5 volts

Passemos agora para o esquema proposto com o PIC. Veja abaixo:

Por meio de 2 fios com garras jacarés nas pontas, retiramos a alimentação do próprio equipamento sob teste. Para obtermos os patamares de comparação será necessário medir esta tensão de alimentação e calcular estes valores tanto para TTL como para CMOS. Através do pino 3 , reduzindo a tensão por meio de uma rede divisora de tensão, medimos a tensão usando o canal 3 do conversor A/D. Com este valor obtemos os outros valores de comparação, como pode ser observado na sub-rotina ‘le_vcc()’.
Depois, dependendo da posição da chave TTL/CMOS será comparado os valores apropriados com a leitura que será feita pelo canal 1 do A/D, pelo pino 6. Este lerá a tensão da ponta de prova (probe) comparando com os valores calculados para níveis ‘1’ , ‘0’ ou alta impedância. Foi acrescentado um som diferente para cada nível, o que ajuda determinar o nível também pelo som. Uma pequena capsula piezoelétrica foi usada para obter estes sons.
E como testamos se há pulsos no circuito sob teste? Usamos o timer 0 programado para contar pulsos externos (pino 5). Quando temos sinal variando na entrada de prova, o flag do timer 0 constantemente será setado. Quando isto acontece, a rotina faz acender o led ‘pulso’ e acionar o som apropriado para este nível. Um transistor NPN serve para adaptar os níveis corretos de entrada para a o PIC.
No inicio dos testes, usei um resistor limitador junto com zener de 5 volts para alimentar o PIC. Mas isto gerou muita instabilidade, especialmente quando se acendia os leds, derrubando o valor do vcc. Pensei em um regulador 7805, mas este impunha muita queda de tensão entre o pino de entrada e saída, dificultando usar uma fonte de 5 volts ou menos. Necessitava de uma fonte que permitisse passar tensões abaixo de 5 volts sem queda de tensão e que também limitasse tensão maiores. A solução foi usar uma
alimentação regulada com uso de 3 transistores. Com este arranjo, uma tensão de entrada tão pequena como 3 volts sairá integralmente na saída. Tensões maiores serão reguladas e mantidas a 5 volts na saída. Como o consumo é pequeno não foi necessário uso de dissipador no transistor BC558. Mas um cuidado especial deve ser tomado para não se inverter as garras na hora de ligar ao circuito sob teste, sob risco de danificar o circuito incluindo o PIC. No circuito, temos um resistor de 33k, cujo valor determina o estado de alta impedância, quando a ponta de prova se encontra desligada ou o circuito sob teste esta em alta impedância. Ele produz uma tensão intermediária entre os níveis alto e baixo. Reduzindo o valor tenderá a acender o led ‘1’ e aumentando o valor tenderá a acender o led ‘0’.
Adicionalmente, caso a chave modo TTL/CMOS esteja na posição TTL e a alimentação for maior que 5,5 volts, ocorrerá um aviso, piscando o led ‘1’ e apitando com som mais agudo. Este alerta parará somente com a mudança da chave para posição ‘CMOS’.
Obs. Esta montagem foi realizada apenas em placa de protoboard, sujeita a bug’s ainda não detectados. Estão sendo fornecidos os arquivos que poderão ser alterados pelos hobistas, conforme a necessidade.

Segue pasta com arquivos zipados para esta montagem:

files_PROVADOR_LOGICO__V2

Manuais:

PIC12f675

Curiosidades:
Em foco: saúde
A impressionante audição da traça-da-cera
A ponta da asa das aves planadoras
Sol e ar fresco — são “antibióticos” naturais?
Decretos que dividiram continentes
Será que Deus existe? Que diferença isso faz?
Em foco: África
Quando seu filho faz perguntas sobre a morte

Outros assuntos:
Como chegar a um acordo
Os desastres naturais são castigo de Deus?
Por que rejeitar a pornografia?
Como ser feliz no casamento?
Quando seu casamento não é o que você esperava
Como resolver diferenças no casamento
Como recuperar a confiança no casamento
Quando um dos cônjuges tem necessidades especiais
Aprenda a perdoar
Como acabar com a tática do silêncio
Como criar filhos responsáveis
Como administrar o seu dinheiro
Como posso controlar meu peso?
Como evitar ferir com palavras?
Como tratar seu cônjuge com respeito?

Até o próximo artigo!!!

1

29 comments

  1. 0

    Bom dia nobre Claudio…Parabéns pelo site!!!
    Enviei dois e-mais para você, recentemente. Poeria lê-los e me responder??? Antecipadamente agradeço.

    1. 0

      Olá Batmonstro!
      Não consegui achar nada na caixa de entrada. Pode ser que eu o tenha confundido com algum span e tenha deletado. Poderia reeviar por favor?
      Cláudio

  2. 0

    Ola´Claudio, boa noite, eu estava vendo seu comentário sobre COMO COMPILAR ARQUIVO .ASM, com MPLAB ID e eu tentei compilar para arquivo .HEX para PIC 16F57 mas sem sucesso, eu não consegui, eu entendo de eletrônica, mas não de programação, E já que que você é muito bom em programação, será que é pedir muito pra você, se da para compilar esse arquivo pra mim, (são 2, um pra encoder e outro pra decoder) para o pic 16f57, e se der, não abusando de sua vontade, compile TB para pic 16C57, pra ficar fixo, e SE não for possível, eu agradeço da mesma forma, Grato por sua atenção. Bagini

    1. 0

      Olá Bagini! Para compilar um arquivo para .hex, terá que ter o arquivo asm do programa. Se ele for de um tipo de pic e desejar migrar para outro modelo, terá que ver a compatibilidade entre eles. Em alguns casos, será necessários alterar muito código. Em outros, não será possível e em raros casos, se forem compatíveis funcionará de primeira. A família ‘F’ é de memória Flash, sendo regravável, mas a família ‘C’ é de única gravação (OTP – One Time Programmable) e uma vez gravado não pode ser desgravado (exceto os com janelas e apagamento com ultravioleta). O pic 16f57/16c57 não tem eeprom interna e caso se necessite salvar valores, terá que usar uma eeprom serial externa, aumentando o custo. O hex citado é algum do site que você queria alterar?
      Cláudio

      1. 0

        Olá Claudio Boa Noite, Primeiro Peço Desculpas Por Demorar Em Responder Pois Fiquei Sem internet Por Um Tempo, E Perdi Tb Onde Tinha Feito A Pergunta(RS RS)
        Bom, Eu Sou Hobbysta VC Sabe, Peguei Esse Projeto Aqui ( jap.hu/electronic/codec-p.html ) E Achei Interessante e Queria Monta-lo, Até Comprei Os PIC 16F57, Mas Não Consegui Compilar, Por Isso Pedi Se Era Possível Você Compilar Para Mim, Pode Ser Somente Para O PIC 16F57, Se Possível Mande Um E-MAIL Para Mim Que Te Retorno Enviando O Arquivo .asm ( encoder e decoder )Desde Já Muito Agradecido Por Sua Atenção. Att

        1. 0

          Olá Bagini! Verifique junto ao autor se ele não pode fornecer o arquivo .hex pronto para você. Para compilar os asm em questão teria que saber para qual compilador ele foi feito. Tentei compilar no Mplab e notei que realmente dá muitos erros . Talvez algum colega do blog tenha já compilado com sucesso e possa fornecer o modelo do compilador e os procedimentos necessários…
          Cláudio

          1. 0

            Boa Noite Claudio Larios, Realmente Deve Ter Sido Compilado Com Outro Tipo de Compilador Diferente do Seu, Mas Valeu A Intenção e a Atenção Dispensada, Muito Obrigado e Pode Ter Certeza, Vou Continuar Sempre Visitando Sua Página, Att.

  3. 0

    Caro Larios, bom dia!!!

    Não sei onde tô errando mas já montei três vezes este circuito e não funciona totalmente (funciona parcialmente, acende o led vermelho e toca os sons do níveis lógicos).Gostaria de saber se vocês chegaram a montar em protoboard como eu fiz agora mesmo!!! Muito obrigado…

      1. 0

        Caro Claudio, bom dia!!!
        Montei três vezes, no Protoboard,não funcionou. Não sei onde tô errando mas tenho experiência em eletrônica e em montagens.Gostaria de saber se você montou. Os sons dos níveis lógicos funcionam bem mas os leds ficam acesos!!! Ajude-me, por favor.

        1. 0

          Olá Batmonstro!
          Todos os leds ficam acesos? Não sei se é exagero, mas verifique se o led amarelo está sendo alimentado por 5 volts. Se for ligado na tensão de entrada poderá dar este problema. O não acendimento dos leds em série se deve a sua queda de tensão entre 1,6 a 2,2 volts. Alguns leds tem queda de tensão menor e poderão ficar acesos. Use diodo de alto brilho que tem esta queda de tensão maior. Outra opção é colocar um diodo 1n4148 em série com o led amarelo para reduzir um pouco a tensão (0,7v por diodo) e outro em série com o led vermelho.
          Cláudio

          1. 0

            Caro Claudio Larios…
            Montei novamente no protoboard e fica muito instável!!! Tem como fazer só para nível lógico 1 ou 0??? (sem alta impedância).

          2. 0

            Olá Batmonstro ! A ponta é muito sensível a sinais de rf, e se for tocada, indicará ‘pulsos’ devido aos sinais de 60 herts da rede. O assunto dos leds ficarem acesos foi resolvido?
            Cláudio

          3. 0

            Olá Batmonstro! Muito extranho! Assim que tiver um tempinho, vou montar de novo no protoboard para ver se tem alguma coisa errada.
            Cláudio

          4. 0

            Olá Batmonstro!
            Montei o circuito na placa e confirmei a falha no acendimento do led verde. Postei os arquivos com a correção.
            Cláudio

          5. 0

            Caro Cláudio Lários, no esquema (diagrama), o segundo LED é VERDE (nível lógico “1”). Nas pontas de prova o nível “1” é representado,geralmente, pelo LED VERMELHO, como se fosse padronizado pelos técnicos de automóveis, certo??? Aí fica a critério de cada um que for fazer a montagem né isso??? Depois da correção, o circuito ficou funcionando perfeitamente bem. PARABÉNS !!!
            MUITO OBRIGADO…

          6. 0

            Olá Batmonstro!
            Obrigado pelo retorno e a informação dos leds ‘invertidos’. Também já corrigi no post e na pasta com os arquivos.
            Cláudio

  4. 0

    Olá Lários.
    Como sempre você contribui com ótimos projetos. obrigado!
    Gostaria de dar uma sugestão: Construir um módulo DSP com pic, aqueles circuitos para conseguir retardos em audio, tais como ECO, REVERBERAÇÃO, CHORUS, seria muito legal um circuito assim pra testar, mesmo que não fosse com memoria SERIAL, podia ser com uma RAM stática tipo 62256 ou mesmo uma antiga dinâmica 41256, ainda fáceis de encontrar. vi um modulo todo feito com um ATtiny26, nem memoria foi usada, incrível, mas gostaria de um com PIC mesmo, nesse site aqui: http://elm-chan.org/works/vp/report.html

  5. 0

    …Desculpe-me caro Larios, esqueci de dizer que tenho interesse também no led indicador de pulsos. Então seria medir níveis lógicos “0” e “1” e também um sinal pulsante ok??? O estado de alta impedância pode ser dispensado. Mais uma vez, muito obrigado.

  6. 0

    Caro Larios, bom dia!!!
    simulei o Provador Lógico no Proteus.Não funcionou estavelmente e não consegui apagar os três leds. Para o resistor de 33K usei um potenciômetro de 50K e mesmo assim não estabilizou. Um detalhe muito importante: Na ponta de prova sempre vai ficar uma tensão residual “perigosa” devido ao resistor de 33K está ligado diretamente à entrada da bateria do carro, por exemplo.O ideal é que a ponta de prova tivesse uma alta impedância e uma tensão de zero volts, pois os módulos de carros e motos são muito sensíveis e ao testarmos um determinado ponto nos mesmos, poderemos danificá-los para sempre!!!
    Muito obrigado.

    1. 0

      Olá Batmonstro! Quanto a simular no Proteus, não é meu forte! Quanto a tensão residual, ela é necessária para determinar a existência de alta impedância. Removendo este resistor de 33k deixa de haver tensão residual, mas será detectado somente ‘1’ para nível alto e ‘0’ para nível baixo e também alta impedância.
      Claudio

      1. 0

        Caro Larios, muito obrigado por ter respondido. Minha intenção é a de colocar um voltímetro na ponta de prova, para além de medir o nível lógico, medir a tensão do ponto, como por exemplo a Sonda Lâmbda de um carro ou de uma moto.Por esta razão é que preciso de zero volts na sua ponta de prova.Nos veículos, temos tensões que variam de zero volts a até 5 ok??? se puder dar uma ajudinha neste sentido de zerar a ponta de prova, ficarei mais grato ainda. Parabéns pelo talento e muito obrigado!!!

        1. 0

          Olá Batmonstro!
          O nível de alta impedância é importante na sua medição? Ou interessa somente ‘0’ ou 1′?
          Cláudio

          1. 0

            Bom dia Larios!!!
            Meu interesse é somente medir níveis “0” e “1” desde que a ponta de prova (agulha) fique em zero volts para que eu possa instalar um voltímetro ok??? Muito obrigado.

  7. 0

    Parabéns caro Larios!!! Vou testar mas já sei que ficou muito boa esta ponta de prova…Muitíssimo obrigado!!!

Comments are closed.