collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[27 de Março de 2024, 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: medir velocidade com o arduino  (Lida 13703 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline michael

  • Mini Robot
  • *
  • Mensagens: 2
medir velocidade com o arduino
« em: 17 de Março de 2011, 13:40 »
Olá, estou desenvolvendo um projeto onde tenho a necessidade em calcular a velocidade em metros por segundo usando um encoder e o arduino, será que alguem pode me ajudar.
objetivo e través dos pulsos do encoder saber qual a velocidade em metros por segundo.

ou qualque coisa q eu possa medir a velocidade, não sei como proceder com o arduino, como conseguir medir o tempo.

antecipadamente agradeço.

Michael

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Re: medir velocidade com o arduino
« Responder #1 em: 17 de Março de 2011, 13:57 »
Olá, estou desenvolvendo um projeto onde tenho a necessidade em calcular a velocidade em metros por segundo usando um encoder e o arduino, será que alguem pode me ajudar.
objetivo e través dos pulsos do encoder saber qual a velocidade em metros por segundo.
ou qualque coisa q eu possa medir a velocidade, não sei como proceder com o arduino, como conseguir medir o tempo.
antecipadamente agradeço.
Michael

O procedimento que deves fazer é o seguinte:
1-Saber quantos pulsos por volta tem o encoder. Sabendo o diâmetro da roda, consegues saber qual a distancia percorrida em cada pulso.
2-Para ler os impulsos o ideal é utilizar interrupções externas, isto é, tens o sinal do encoder ligado ao arduino, sempre que este sinal passa de 0 para 1 quer dizer que passou um pulso. ver http://www.arduino.cc/en/Reference/AttachInterrupt
3-Cada vez que der um pulso incrementar uma variável, assim sabes que se deu 10 pulsos andou x metros.
4-Gerar uma interrupção temporal, isto é, se gerares por exemplo um interrupção a cada 1 segundo podes calcular a velocidade pois tens o tempo que é 1segundo e tens os pulsos que te dizem a distancia. ver http://www.arduino.cc/playground/Main/MsTimer2

ver também: http://pt.wikibooks.org/wiki/Introdu%C3%A7%C3%A3o_%C3%A0_F%C3%ADsica/Movimento

Offline Sérgio_Sena

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 1.649
    • Electronic Gear for Musicians
Re: medir velocidade com o arduino
« Responder #2 em: 17 de Março de 2011, 14:24 »
O ATMEGA do Arduino não tem uma entrada externa de pulsos?

Então basta ter uma interrupção temporizada. Ex.: a cada 100ms (interrupção), vai ler qts pulsos estão no contador de entrada externa.

De certeza q da´para fazer isso! afinal, o Arduino é um IDE, o hardware é um ATMEGA :)

Offline michael

  • Mini Robot
  • *
  • Mensagens: 2
Re: medir velocidade com o arduino
« Responder #3 em: 17 de Março de 2011, 14:35 »
Fico muito agradecido com a resposta, vou continuar pesquisando.
Eu sei como funciona o encoder e sei também como gerar o algoritimo para converter nas medidas que necessito, o maior problema é relaciona ao próprio arduino, sou iniciante com microcontroladores.
Exemplo, no pino 7 do arduino eu recebo os pulsos do  encoder, meu encoder tem uma resolução de 300, 300 pulsos por rotação.
Qual seria o código para eu calcular o tempo que levou para passar todos os pulsos?
Em outras linguagens que  eu conheço  faria um start em um timer q ficaria contando até que uma variável seja igual a 300, aí eu paro o contador e vejo quantos segundos, ou milésimos de segundos foi esse intervalo e é exatamente isso que quero fazer, mas não sei como fazer isso com o arduino, não conheço todos os comando e funções.
Será que poderia fazer um exemplo simples para eu entender melhor.

Obrigado Novamente.

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Re: medir velocidade com o arduino
« Responder #4 em: 17 de Março de 2011, 14:44 »
Tens aqui um exemplo: http://www.arduino.cc/playground/Main/MsTimer2
Simplesmente em vez de ver quanto tempo mudou quando contou 300pulsos, vais ver quantos pulsos contou(bem mais facil) quando atingiu um determinado tempo.

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: medir velocidade com o arduino
« Responder #5 em: 17 de Março de 2011, 17:38 »
Este exemplo com interrupções externas é bem mais simples, dá rotação por minuto, depois é só multiplicar pelo tamanho da roda.
Avr fanboy

Offline beirao

  • Mini Robot
  • *
  • Mensagens: 1.531
Re: medir velocidade com o arduino
« Responder #6 em: 17 de Março de 2011, 20:34 »
Se queres um cálculo de velocidade preciso e exacto, deves calcular o tempo que passa entre cada pulso (ou entre cada x pulsos). Digo isto porque no caso de teres poucos pulsos por rotação, pode acontecer teres "2,5" pulsos por rotação.. Se activares um timer num pulso e lendo esse timer no pulso seguinte é muito mais preciso

No teu caso, com 300 pulsos por rotação, o erro de contares os pulsos num determinado tempo em vez de contares o tempo entre pulsos deve ser desprezavel (depende da gama de velocidade)
« Última modificação: 17 de Março de 2011, 20:36 por beirao »
"O único lugar onde o sucesso vem antes do trabalho, é no dicionário" - Albert Einstein