Estou montando um projeto para controle de um motor, para medir a velocidade dele estou usando um sensor heds 5540 a11, que envia um série de pulsos atravez de duas fazes de acordo com a velocidade do motor, gostaria de saber como posso medir a velocidade (se possível em tempo real), enquanto faço o controle da mesma, tambem preciso saber em qual ordem os pulsos chegam as estradas do arduino. Ja tentei usar a função pulseIn para medir a duração do pulso e assim determinar a velocidade, mas tem algum meio mais efetivo?

Exibições: 1530

Responder esta

Respostas a este tópico

MA. boa noite

Coloque mais detalhes aqui do seu projeto.

Voce pode usar os pinos de interrupt do arduino pra realizar a contagem.

Rui

Boa noite,

Estou usando uma motor de 24V acoplado ao encoder que eu falei, estou usando o arduino uno (mas tenho outras placas). 

O objetivo é monitorar a velocidade do motor com o encoder enquanto manipulo ela com o arduino (variando de 0 a 100%).

O controle do motor esta tranquilo, mas como sou iniciante nisso de programar arduino estou tendo dificuldade em contar os pulsos, estava tentando adaptar um comando de interrupções para fazer a contagem dos pinos usando as funções attachinterrupt e detachinterrupt (ate onde eu testei dá um resultado bom, mas caso alguem tenha alguma dica). Eu estou usando a porta 2 e 3 do arduino para isso.

Tambem preciso saber qual das duas portas recebeu o sinal primeiro (os sinais de cada fase são iguais, com a diferença que são levemente defasados) para que eu posso verificar o sentido de rotação do motor.

O pulso tem relação direta com a rotação do motor. Assim, a frequência é relação direta da RPM --> velocidade sendo a medida digital menso sujeita a erros. Um sensor ótico, magnético ou capacitivo/indutivo deverá dar conta do controle e medição. No caso de ignições eletrônicas, usam sensor Hall.

Oi MA, bom dia.
Realmente acho que a melhor opção é usar o interrupt pra saber que teve um pulso na entrada do arduino,
e assim incrementar a contagem.
Para a contagem basta usar um das saídas qualquer do seu encoder (A, B ou I), e apenas um dos interrupts,
(0 pino2 ou 1 pino3).
Agora pra determinar a direção, precisa usar as saídas A e B.
Vou postar aqui uma solução de hardware que determina a direção de um movimento com 2 sinais.
Usei um FlipFlop DC para este fim.
Funciona assim:
No instante que o pulso em Clock vai para 1, a saída Q será igual ao valor em Data.
Então no primeiro caso deste exemplo, a saída Q fica em zero e no segundo caso fica em 1.

Esta solução pode ser feita em código no arduino.
Rui

Bom dia, Rui.

Deu tudo certo aqui, obrigado pela ajuda

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço