controllare giri albero motore con encoder rotativo

Buonasera a tutti , devo controllare i giri con un encoder rotativo , più precisamente questo , http://m.ebay.it/itm/181177866126?txnId=1185589601008 . L encoder emette 400 impulsi a giro , mi interesserebbe printare su schermo i giri del motore in tempo reale con una precisione di due zeri dopo la virgola , quindi dovrei misurare l'intervallo tra un passo e l'altro , ma nn riesco a tradurre questo in codice .... Grazie a tutti .

se ti serve per un motore a scoppio attento che quello arriva solo a 5000rpm comunque ti suggerisco di usare un'interrupt per leggere per esempio il cambio di stato o conti un certo numero di denti e misuri il tempo che ci mettono a passare e con qualche calcolo ottieni rpm oppure conti i denti che passano in un certo periodo di tempo e sempre con qualche calcoletto ottieni rpm

lucaleo: se ti serve per un motore a scoppio attento che quello arriva solo a 5000rpm comunque ti suggerisco di usare un'interrupt per leggere per esempio il cambio di stato o conti un certo numero di denti e misuri il tempo che ci mettono a passare e con qualche calcolo ottieni rpm oppure conti i denti che passano in un certo periodo di tempo e sempre con qualche calcoletto ottieni rpm

I 5000 rpm sono i giri al minuto massimi per la parte meccanica. Per la parte elettronica il limite sono 20kHz ovvero 3000rpm.

Se vuoi avere una precisione di 2 cifre dopo la virgola ovvero 3000 rpm +/- 0,01 rpm ( sono una precisione di ca 0,0003% ovvero 3ppm) non va bene Arduino. Ha un risuonatore che ha una precisione intorno al 0,1%. Anche un Arduino con uno quarzo é troppo poco preciso (ca 20ppm)

Ciao Uwe

PS spero di non aver sbagliato i conti.

Grazie delle risposte , il motore sul quale effettuerei la misurazione è un motore elettrico motoridutto che arriva al max a 40 rpm , come risoluzione andrebbe bene anche una cifra dopo la virgola , la cosa che non mi è chiara è come faccio a misurare l'intervallo di tempo tra un segnale e l'altro ??

Uppo un pelo !! :P :P

Ragazzi vi chiedo un piccolo aiuto se no non ci salto fuori ....... Grazie :) :)

usa la funzione millis()
studia l’esempio “blink without delay”, poi puoi gestire in diversi modi la lettura, potresti magari contare 100 impulsi, fare la differenza tra le due letture di tempo e poi calcolare la velocità.
se non sbaglio i conti, facendo 400impulsi/giro e girando a 40 giri al minuto, dovresti contare 16000 impulsi al minuto, quindi 267 impulsi al secondo.
Qundi studia gli interrupt ed il millis, vedrai che poi il passo è breve

Forse questo può essere utile: http://www.bristolwatch.com/arduino/arduino2.htm

--> http://playground.arduino.cc/Main/RotaryEncoders --> https://github.com/Poofjunior/ArduinoQuadratureRotaryEncoder

Grazie a tutti , proverò a dare un'occhiata se ci sono alti problemi inerenti al 3d , scrivero qua ... :relaxed: