Saudações prezados.
Estou com um problema,que para a comunidade daqui deve ser ridícula.Mas como não consegui resolver sozinho...aqui vai:
Preciso captar um sinal de um transdutor de posição (sinal de referência de um encoder).Esse sinal é bem discreto, no sentido de acontecer quando por milissegundos durante a passagem do sensor num ponto do transdutor.
O que pretendo é evidenciar esse sinal, acionando a porta digital 13 do Arduíno, da seguinte forma:
Passa pelo ponto de referência, liga porta digital 13.
Passa novamente pelo mesmo ponto, desliga a porta digital 13 e assim sucessivamente...
Elaborei um código bem simples mas que funciona de forma inconsistente...tem hora que tem que passar duas vezes pelo mesmo ponto para ligar a porta 13...tem hora que tem que passar mais de uma vez no ponto de referência de desligar a porta 13...enfim, não está funcionando!!!
Alguém pode me ajudar?
Abaixo segue o código que estou usando.
Muito obrigado prezados!!!
Tags:
Código em anexo.
Boa noite RL,
como vc já anexo o código na forma de um arquivo, sugiro que remova o código
que colou na área de texto do seu tópico.
RV
Boa tarde.
Eu coloquei o código junto da minha mensagem para facilitar logo de início o meu pedido de ajuda.
Essa prática não é bem vinda?Atrapalha?
Olá.
Seu codigo está confuso, vc mistura conceitos de digital e de analógico...
Acho que se vc usar na linha:
var=analogRead(LeituradaPorta);
um
var=digitalRead(LeituradaPorta);
já vai mudar tudo.
O valor lido de forma analógica é qualquer coisa entre 0 e 1023.
Por ex para 0V ele pode ler de 0 a uns 8 tranquilo, não tem como comparar na base do "==".
Vc pode fazer tb janelas, por ex abaixo de 200 é 0 e acima de 600 é 1.
Mas o uso de if (..==..) para valores analógicos não funciona bem.
Outra dica que melhoraria bem seu codigo seria o uso de interrupções.
Elas leem o pino por hardware, quando acontece o pulso um flag é setado (bit) avisando que precisa ser atendida. responde a pulsos definitivamente muito estreitos.
Boa tarde Eduardo.
Eu estou usando a leitura da porta analógica em virtude do tipo de sinal de referência que vou receber do transdutor, é um sinal bem "estreito" como você de forma correta mencionou.Por isso não estou utilizando a leitura pela porta digital que como você sugeriu.
Em relação ao restante do seu comentário, parece ser uma solução sim!!!Mas não tenho a menor idéia de como fazer....
Você pode me ajudar alterando o meu código?
Mesmo que não der certo....qualquer ajuda é válida.
Muitíssimo obrigado pela atenção!!!!
Então, seu recicínio está invertido.
A leitura analógica é mais lenta que a digital.
Se seu pulso é digital e estreito precisa ser lido como digital.
Mude a linha que sugeri mudar:
var=analogRead(LeituradaPorta); para
var=digitalRead(LeituradaPorta);
Vide:
https://www.arduino.cc/reference/pt/language/functions/digital-io/d...
Para fazer por interrupção rode o exemplo:
https://www.arduino.cc/reference/tr/language/functions/external-int...
Recomendo ligar seu fio que gera interripção no pino D2, em vez de A0.
O Led está no mesmo pino que vc usa, nem precisa mudar.
Eduardo, então eu também devo mudar o endereço para leitura do sinal para uma porta digital?
Ou posso manter a manter porta A0 e alterar apenas a linha que você sugeriu?
Sim, pode pq as portas analógicas também podem ser lidas de forma digital.
Eduardo, alterei apenas a linha que você recomendou e o funcionamento foi perfeito.
Muito obrigado!!!!
Realizei alguns testes aqui e verifiquei que o nível de tensão necessário porta A0 para alteração da saída D13 é da ordem de 2,4V.
Essa é minha preocupação, a amplitude do sinal necessário.Não sei a amplitude que receberei do transdutor...
Talvez seja da ordem de milivolts..
Entendeu o porquê da minha escolha pela porta analógica?
De qualquer forma, muito obrigado Eduardo!!!!
Me ajudou bastante.
Rubens, se o seu Encoder for mesmo o Heidenhain-LS-703.
O padrão para o sinal analógico é de 1 Volt pico a pico.
Recomendo que meça esse sinal com um osciloscópio.
Esse manual tem informações sobre o sinal analógico - pagina 123
https://product.heidenhain.de/JPBC/image/FILEBASE_PUBLIC/517651_10_...
A Diadur não existe mais.
É a própria Heidenhain.
Bom dia,
Favor informar que transdutor é esse que esta usando.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por