Ciao, ho bisogno di un consiglio su come ottenere i giri di un motoriduttore 12Volt dotato di un encoder Hall a 64 CPR (Arduino Forum).
Il motore ha una velocitá massima di 80 giri minuto con un rapporto di riduzione di 131:1.
Ho cercato di visualizzare gli rpm con questo codice:
Non sono sicuro, peró, se il numero di giri ottenuti sono quelli giusti, anche perché se divido poi per 131 non ottengo nulla che si avvicini ad 80. Potreste dirmi se sbaglio qualcosa e consigliarmi una formula adatta allo scopo?
E' difficile aiutarti, io l'avrei fatto in tutt'altro modo... Provo a darti delle dritte, poi vedi te...
Partiamo per step: togli il delay nel loop (lo dovrebbero togliere dalle funzioni di Arduino) e sostituiscilo con millis(), altrimenti prova a usare leOS o looper:
Secondo: l'encoder non ti da un'informazione diretta sulla velocità ma sulla posizione, anzi, sugli spostamenti essendo un encoder incrementale. Intanto concentrati sul riuscire a leggere gli spostamenti dell'encoder, intesi come posizione, poi ogni tot tempo vai a vedere quandi impulsi sono passati e con una divisione trovi gli impulsi/sec.
La mia proposta l' hai Tu stesso linkata. Cosa vuoi ancora?
Poi non fare fretta. Pensi ce tutti noi non hanno nient'altro da fare che aspettare a risponderti? C'é gente che di notte dorme, poi va al lavoro e ritorna la sera a casa per forse avere il tempo di mettersi al PC.
Ora riesco a vedere i giri/min e dividendo per il rapporto di riduzione ottengo i giri esatti.
L'altra domanda cruciale che vorrei porvi é come calcolare la distanza percorsa ad ogni giro (o anche meno di un giro) del motore. Ho pensato di usare la velocitá tangenziale: V=W x r dove ottengo lo spostamento in metri al secondo (o mm al secondo) attraverso il prodotto della velocitá angolare e del raggio della ruota.
Secondo voi sarebbe una buona soluzione? Avete delle alternative?
Grazie