Motore DC con encoder - Richiesta info

Buonasera a tutti,
apro questo thread perché nel precedente stavamo finendo in off-topic quindi meglio spostar l'argomento in una discussione apposita.

Dopo aver "giocato" con un servo motore da 5V ed aver constatato la sua bassa qualità (in velocità e precisione) sto decidendo di passare al livello successivo: un motore DC con encoder, così come mi è stato consigliato nella precedente discussione.

Prima però dell'acquisto ho qualche dubbio che vi espongo di seguito:
[Farò riferimento allo stesso prodotto che mi è stato consigliato così da non crear confusione, e cioè questo .]

  1. Qual è la velocità minima di un motore del genere? A me servirebbe una rotazione minima di circa 0,10 giri al secondo (36° al secondo).
  2. Mi è stato preannunciato che per comandarlo dovrò utilizzare anche un driver: questo driver lo trovo online già pronto oppure devo lavorare anche su di esso? Ovvero, seppur dovrò scaricare un driver (presumibilmente già fatto), il tutto si ridurrà comunque a lavorare sullo sketch di Arduino?

Grazie in anticipo a chiunque vorrà partecipare alla discussione :slight_smile:

Ok per l'idea di abbandonare il servo e passare ad un motore con encoder, però nella scelta del motore ci sono anche altri parametri da valutare ed io avevo messo un link ad un motore non perchè te lo consigliassi, ma perchè la tua richiesta era di una velocità di rotazione di 4-5 giri al secondo.
Quindi, come già detto nell'altro thread ne avevo preso uno a caso con quel numero di giri RPM
Questo per chiarire, perchè poi non vorrei che venisse detto di averti "consigliato" quel motore

  1. Velocità Max e Min
  2. Potenza ( cosa deve spostare )
    Insomma, a che uso è destinato ? Perchè potrebbe essere pure più adatto uno Stepper

Brunello:

  1. Velocità Max e Min
  2. Potenza ( cosa deve spostare )
    Insomma, a che uso è destinato ? Perchè potrebbe essere pure più adatto uno Stepper

Piccola premessa: sto modificando il progetto quindi le specifiche sono "leggermente" variate.
La velocità massima dovrà essere di circa 10 giri al secondo (meglio se arrivasse a 15 giri al secondo) dunque 600-900 rpm.
La velocità minima dovrà invece essere di circa 0.10 giri al secondo (6 rpm!).
La potenza è davvero trascurabile in quanto deve far ruotare un oggetto che pesa pochissimi grammi!
La cosa però importante è che anche la precisione sia ottimale (non come il mio servo insomma :smiley: ).

Deve far ruotare l'oggetto potendo fermarlo in punti precisi, oppure in modo continuo e lineare ? ... nel primo caso sarebbe meglio uno stepper con demoltiplica, cosi conti i passi, nel secondo penso basti un qualsiasi motore DC con riduttore adeguato alla velocita' massima (perche' la minima se non serve particolare sforzo la ottieni semplicemente riducendo la tensione) ...

Certo che una variazione fra massimo e minimo di 100 ad 1 e' un bel po ... in questi casi sarebbe meglio trovare dei gearbox con motori coreless tipo maxxon o escap ... una cosa tipo questo o altri simili, che pero' non sono proprio economici ...

Etemenanki:
Deve far ruotare l'oggetto potendo fermarlo in punti precisi, oppure in modo continuo e lineare ? ... nel primo caso sarebbe meglio uno stepper con demoltiplica, cosi conti i passi, nel secondo penso basti un qualsiasi motore DC con riduttore adeguato alla velocita' massima (perche' la minima se non serve particolare sforzo la ottieni semplicemente riducendo la tensione) ...

Certo che una variazione fra massimo e minimo di 100 ad 1 e' un bel po ... in questi casi sarebbe meglio trovare dei gearbox con motori coreless tipo maxxon o escap ... una cosa tipo questo o altri simili, che pero' non sono proprio economici ...

Il motore dovrà far ruotare l'oggetto in entrambe le direzioni e deve fermarsi in punti precisi. Però per precisione intendo che se gli dico di ruotare per 2 secondi compirà sempre la stessa identica rotazione (se ad esempio in 2 secondi compie una rotazione di 700° la volta successiva in cui ruoterà per 2 secondi non dovrà ruotare di 705° ma sempre di 700°!).
La posizione dei punti quindi la calcolerò io successivamente, la priorità resta la precisione e velocità :slight_smile:

arduinopro44:
Il motore dovrà far ruotare l'oggetto in entrambe le direzioni e deve fermarsi in punti precisi.

Le soluzioni possibili sono due, motoriduttore dotato di encoder ad alta risoluzione o motore stepper da almeno 200 step/giro.
La soluzione con il motoriduttore è decisamente più costosa, non meno di 50 Euro per il solo motore con encoder da almeno 100 cpr, molto più complessa dal punto di vista software visto che richiede un controllo pid fatto come si deve.
La soluzione con lo stepper è meno costosa, 30 E tra stepper, un nema 11 basta e avanza, e il relativo driver con possibilità di microstepping, semplicissima dal punto di vista software visto che basta usare la libreria accelstepper che consente di gestire velocità, accelerazione e passi da fare per singolo movimento.

Quoto quanto suggerito da @Astro , la soluzione stepper è la via meno complessa da gestire.
In pratica, se non conosci gli stepper, ogni inpluso di step che gli invii avanza di un passo. A quel modello, come quasi tutti gli stepper decenti, per fare un giro completo servono 200 passi.
Se vuoi andare alla velocità minima ( 0.1 giri/sec ) basta che gli invii uno step ogni 50ms , mentre per il massimo ( diciamo 10 giri/sec ) un impulso ogni 0.5ms.
La velocità max è anche legata alla qualità dello stepper, comunque senza un carico eccessivo dovresti poter andare anche più veloce.

Alla velocità minima potresti forse notare un andamento un pò a scatti ( un passo di 1.8° ogni 50ms ) , in questo caso potresti dire al driver ( DRV8825 ) di usare il Microstepping, ad esempio 1/16. Che ti permette di avere 200*16 passi per fare un giro completo.
Comunque in ogni caso le ripetizioni del comando sono precise, come vuoi tu. Ad esempio 700° ( che in configurazione 1:1 sono 389 passi, sono sempre gli stessi, sia in un verso che nell'altro.

Comunque, sia con lo stepper che con il motore DC ed Encoder, non puoi basarti sul tempo di accensione

Però per precisione intendo che se gli dico di ruotare per 2 secondi compirà sempre la stessa identica rotazione (se ad esempio in 2 secondi compie una rotazione di 700° la volta successiva in cui ruoterà per 2 secondi non dovrà ruotare di 705° ma sempre di 700°

Brunello:
Comunque, sia con lo stepper che con il motore DC ed Encoder, non puoi basarti sul tempo di accensione

Non ho capito quest'ultima parte: in che senso non posso basarmi sul tempo di accensione?

[Comunque scusatemi se rispondo solo adesso ma sono dovuto partire per lavoro.]

Nel senso che se ti serve la precisione, o conti gli impulsi dell'encoder (con il motore DC piu encoder), o conti gli step (con lo stepper) ... non li piloti con un tempo di accensione, ma con un controllo di retroazione o con un conteggio degli step inviati al motore ... altrimenti la precisione NON c'e' ... (o almeno, io di motori che possano garantire la precisione richiesta basandosi solo sul tempo di azionamento, non ne conosco proprio)