Ajuda em conectar e programar sensor de velocidade com encode

Boa tarde a todos !!

Estou construindo um carrinho para ser utilizado no apoio a explicação do 
conteúdo de Física, pois sou professor de Física de ensino médio. Na minha
montagem estou utilizando um Arduíno uno, dois motores e dois sensores
de velocidade com disco Enconder para tentar manter o carrinho andando
reto e um shild ponte H L293D. conectei tudo e os sensores estão conectados
nas portas A0 e A1, pois são os únicos lugares que estão disponíveis na
ponte H. tenho algumas perguntas pois sou iniciante e inexperiente com Arduíno:

1) Conectei os sensores nas portas corretas?
2) Na programação, qual a porta que coloco esses sensores? 0 e 1?
3) Estou tentando construir um programa onde tenha um contador de 
cada sensor para poder compara-los e assim regular as velocidades dos
motores, como faço isso? Já tentei de tudo e nada funciona.

Muito obrigado pela atenção e torcendo para alguém ter superado essa
dificuldade e compartilhar esse feito kkkk


                

Exibições: 422

Responder esta

Respostas a este tópico

Boa tarde EBJ, 

faça o seguinte:

    1. Comente as linhas do seu sketch. Fica mais fácil entender o que vc quer fazer com cada linha.
    2. Clique em : " Deseja carregar arquivos? " e depois em " Escolher arquivo" e anexe o arquivo
        com o seu sketch.

Daí com base no seus parâmetros, podemos tentar ajuda-lo.

RV

Boa tarde EBJ,

Recomendações:
    1. Leia http://labdegaragem.com/forum/topics/sugest-o-de-como-postar
    2. Remova seu sketch da área de texto do seu tópico;
    3. Comente as linhas do seu sketch. Fica mais fácil entender o que vc quer fazer com cada linha.
    4. Clique em : " Deseja carregar arquivos? " e depois em " Escolher arquivo" e anexe o arquivo
        com o seu sketch.

RV

Boa tarde !!

Acertei ai. Desculpe o transtorno.

Anexos

Boa tarde EBJ,

testa este sketch, e depois diga o que ocorre com ele.

RV

Anexos

Boa Tarde Mineirim,

Testei aqui, o motor um não gira, ele fica parado todo momento, só o motor 2 que ta girando.

to lendo o que pode ta dando de errado aqui também. Mas desde de já agradeço muito sua ajuda.

EBJ,

faça uma troca.

teste este aqui e diga o que ocorre:

RV

Anexos

Mineirin,

agora so o motor 1 gira e o 2 fica parado, depois de muito tempo o motor 2 girou um pouco,mas so o motor 1 mesmo gira.

Oi EBJ, qdo estiver logado me chama no chat.

Que entender algumas coisas do seu projeto.

RV

Ei Minerim, bom dia !!

Chegou minha ponte H e estou tentando programar aqui a partir daquela programação. Quando estiver on me chama no chat

Olá.

  Parabéns pela iniciativa !

  A programação é flexível dentro dos limites. Vc pode usar qualquer pino/port para qualquer coisa conforme a disponibilidade de recursos. Digo: Se quer liga na A0 ok, poderia ser D0 tb. Só mudar no código. Se colocou na A0 vc precisa colocar A0 na programação. Tem um #define já dentro das bibliotecas que faz o apontamento correto pro pino (salvo o seu ser um arduino muito especial (como os esp32..))

  Claro, se precisa de um port analógico escolha um que tenha essa opção (os As) se quer digital pode ser A ou D, se quer PWM precisa que tenha o ~ e assim vai.

   Achei estranho vc falar que conector os sensores no A0 e A1 da ponte H. Mas acho que foi o texto que ficou confuso. Vc deve ligar eles em qualquer pino digital que vc já pode ler os pulsos.

  Existem inumeras formas de ler os pulsos. Por ter uma vez sucesso de forma simples interrupções, sugeriria ligar em pinos que permitam interrupções. São eles:

https://www.arduino.cc/reference/en/language/functions/external-int...

  Então vc teria que manobrar suas ligações para usar a interrupção diretamente.

  ou usar uma interrupção de mudança em pinos, mais complicada:

   https://playground.arduino.cc/Main/PinChangeInterrupt

   Enfim, na minha sugestão vc teria uma interrupção a cada pulso do encoder em cada roda.

   Assim vc incrementaria um contador para saber onde está.

   Com um segundo contador que memoriza o estado de mills(), que é um contador de milisegundos, vc sabe quantos milisegundos levou de um pulso a outro. Assim vc consegue saber o periodo  e velocidade.

   Outra forma de saber a velocidade seria:

   https://www.arduino.cc/en/Reference.PulseIn

   Mas não gosto dessa solução. Sinto que o processamento trava durante a medição, pode gerar lentidão, sei lá, pode ser preconceito, nunca usei. Sempre uso interrupções.

  

   

Boa tarde Eduardo,

Obrigado pela ajuda. Vou lhe enviar minha programação e fotos de como está meu robô.

Anexos

Bom dia Professor Ewerton,

Gosto muito de física e já ajudei alguns colegas do Lab, com outros projetos de física. Pode contar com a minha ajuda.

Se você é iniciante, sugiro que monte o seu projeto em partes:

1) Já consegue fazer os dois motores girarem ? Envie os diagramas da montagem, programa e fotos. 

    Qual bateria esta usando ? 

2) Depois que conseguir controlar os dois motores, faça a leitura dos dois sensores. Qual sensor esta usando?

  _ informe link dos sensores ( fotos, especificações) .

3) Acho que vai precisar aplicar PID 

https://playground.arduino.cc/Code/PIDLibrary

Controlador proporcional integral derivativo (PID)

https://pt.wikipedia.org/wiki/Controlador_proporcional_integral_der...

 

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço