collapse

* Links de Robótica

* Posts Recentes

Palavras Cruzadas por Hugu
[Hoje às 02:48]


Editor online de imagens p/ distorcer imagens trapezoidais p/ rectangulo? por Hugu
[Hoje às 01:26]


[Projecto] Bomba Airsoft por SrMorte
[Ontem às 23:51]


Apresentação por SrMorte
[Ontem às 22:32]


Medir Agua que está no Poço por filjoa
[21 de Setembro de 2017, 20:58]


URGENTE - display de 7 segmentos com backpack por helderjsd
[20 de Setembro de 2017, 12:30]


Preços e fabricantes de pcb por Sérgio_Sena
[19 de Setembro de 2017, 10:20]


Isaac Asimov - I, Robot por senso
[18 de Setembro de 2017, 03:41]


ic SL440 da Plessey? por senso
[16 de Setembro de 2017, 13:11]


Compra Colectiva RS-Amidata por brunus
[15 de Setembro de 2017, 22:31]

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

0 Membros e 2 Visitantes 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.726
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.641
    • 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.726
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.390
  • 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.483
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