2 motori + lcd + pulsanti posizione

Il titolo e' sintetico ma almeno raggruppo cio' che vorrei fare: - 2 motori (mi direte voi quali prendere) - LCD , ne ho gia' uno 16x2 che faccio gia funzionare con Arduino -2 pulsanti , uno seleziona la posizione da raggiugere e uno lo start.

Hardware disponibile : Arduino 2009 , Motor shield rev3 originale , Lcd

In pratica devo comandare 2 motori che dovranno fare x giri e fermarsi in una posizione stabilita , dovrei poter salvare 6-7 posizioni , una volta salvate con i pulsanti dovrei con uno selezionare una delle posizioni in memoria e con l'altro dare lo start ai motori. Un altra cosa importante e' che una volta raggiunta la posizione desiderata tenga in memoria anche la posizione corrente , in modo che in caso di mancata alimentazione non mi prenda la posizione corrente come fosse la posizione "zero".

MOTORI ..... qui non so quale sia piu' semplice , dei motori stepper piccoli di qualche stampante o i servo che si trovano online modificabili per fare piu' giri (ma poi gestiscono i giri e la posizione ?) .... qui ho bisogno di un vostro consiglio.

Ovviamente non vi chiedo la pappa pronta , ma se ricordate qualche realizzazione simile , con la possibilita' di salvare e richiamare delle posizioni dei motori mi farebbe comodo vedere il programma e le librerie per prendere spunto.

Dimenticavo la cosa che mi preoccupa di piu' ..... sulla 2009 montando la motor shield R3 avanzano le uscite per pilotare l'LCD o sono tutte occupate ?

Per i pin occupati dalla motor shield guarda lo schema: http://arduino.cc/en/Main/ArduinoMotorShieldR3. Per i motori: mancano informazioni: Spiegati meglio come intendi le posizioni prestabilite. Intendi che il aggegio deve fare qualche metro o qualche cm; le posizioni sono su un giro del motore o il motore deve fare parecchi giri fra una posizione a l'altra. Quanto precisi devono essere il posizionamento? Ciao Uwe

Grazie per la risposta .... allora i motori avranno un escorsione da 0 a 40 giri e la precisione deve stare sui 5°.... anche 10° potrebbero andare . quindi se la posizione iniziale e' 0 il sistema dovrebbe avere una decina di posizioni richiamabili ... posizione 1 = 35,5 giri ....posizione 2 ..3456 e via

ti serve un encoder

Forse fraintendo , premetto che ne capisco poco , ma l’encoder che intendi servirebbe per pilotare il motore ?
Tipo questo ?

In questo caso non mi servirebbe perche’ se devo essere io a girare l’encoder per pilotare il motore la cosa diventa lunga … se devo fare 38 giri e a meta’ mi perdo ]:smiley:

A me serve un sistema che se i motori nella posizione “zero” sono a mezzogiorno e voglio che vadano alla posizione 1 che e’ a 40,5 giri tramite un pulsiante venga dato il comando per tot impulsi per arrivare a 40 giri + 180° … quindi dovrei ritrovarlo a ore 6
… e questo dovrebbe ripetersi per una decina di posizioni , comandate da 10 tasti o da un tasto che sceglie la posizione e un altro che da lo start al motore.

Non saprei come realizzarlo in modo semplice.

Se vuoi fare 40 giri con 10 gradi di precisione serve una risoluzione di 1440. Se vuoi una precisione di 5 gradi allora il doppio. La cosa piú semplice é un potenziometro a 20 giri che con un filo o un ingranaggio (2 ruote dentate con rapporto 2 a 1) viene accopiato con il motore. Poi basta un convertitore AD con una risoluzione di 12 -14 Bit.

Un encoder non Ti aiuta perché serve uno assoluto con detta risoluzione insieme ad un ingranaggio (senza gioco!!) per ridurre i 40 giri del motore ad 1 Giro del Encoder. Se ne trovi uno costerá tanto!!

Un alternativa é che quando accendi il dispositivo quello si porta a fine corsa per rilevare con un sensore ottico o un interuttore tale posizione e poi ritorna nella posizione memorizzata prima dello spegnimento. In questo caso puoi usare un motore passo passo oppure un motore DC con un encoder incrementivo con una bassa risoluzione (36 o rispettivamente 72 posizioni per giro).

Ciao Uwe

ipotesi 1 usi uno stepper (200 passi per giro mediamente) e gli dici tù la posizione. ipotesi 2 usi un motore comune dc ma poi devi dire ad ardunino la posizione corrente del motore e qui ti serve un encoder che và collegato al motore e che dà proprio il feedback necessario al controllo.

Sicuramente la prima ipotesi e' quella che preferisco ..... se poi ogni tanto si perde qualche step per la strada gli si da una ritoccatina ai parametri , ma in questa maniera con la motor shield rev.3 dovrei essere a cavallo ...... bene direi che il discorso motori lo porto avanti in questa direzione. Comincio a vedere qualche esempio di codice nei tutorials per i motori stepper , poi dovro' risolvere la questione pulsanti per selezionare le posizioni e la visualizzazione della posizione corente su lcd 16x2 che ho gia'. Per adesso grazie delle dritte , se avete altri consigli su questi ultimi due punti o esempi di progetti simili sono in cerca di input!!

La soluzione motore passo passo comporta un problema: all'accensione non sai in che posizione si trova il motore. Non puoi pensare che si trova nella stessa posizione di quando hai spento Arduino. Ciao Uwe

:~ …mhm … ma non c’e’ la possibilita’ di salvare l’ultima posizione e far si che al riavvio parta da quella ?
Se non e’ così diventa un po’ piu’ complicato perche’ dovrei tutte le volte , prima di uscire portare nella posizione zero i motori , ma anche la soluzione 2 con gli encoder covrebbe avere lo stesso problema .

La butto lì … poi mi dite se sogno … mi pare ci sia la possibilita’ con la motor shield di poter misurare la tensione e l’assorbimento dei motori durante l’utilizzo , visto che non c’e’ la possibilita’ di mettere dei finecorsa elettrici nel sistema potrei mettere degli impedimenti meccanici nei punti di start che fermerebbero la rotazione dei motori , in questo caso si avrebbe un calo della tensione ed un picco di assorbimento.
Basterebbe all’accensione far girare i motori in senso antiorario fino al fondo e dare un istruzione “if tensione<10” o " if corrente>10" per stabilire il punto di partenza.

smiley-confuse ...mhm ..... ma non c'e' la possibilita' di salvare l'ultima posizione e far si che al riavvio parta da quella ? Se non e' così diventa un po' piu' complicato perche' dovrei tutte le volte , prima di uscire portare nella posizione zero i motori , ma anche la soluzione 2 con gli encoder covrebbe avere lo stesso problema .

Chi Ti garantisce che durante il spegnimento il motore non venga mosso?

La butto lì ... poi mi dite se sogno ..... mi pare ci sia la possibilita' con la motor shield di poter misurare la tensione e l'assorbimento dei motori durante l'utilizzo , visto che non c'e' la possibilita' di mettere dei finecorsa elettrici nel sistema potrei mettere degli impedimenti meccanici nei punti di start che fermerebbero la rotazione dei motori , in questo caso si avrebbe un calo della tensione ed un picco di assorbimento.

Non é possibile coi motori passo passo. quelli consumano sempre uguale indipendentemente se girano o sono bloccati a causa sovvracarico.

Ciao Uwe

uwefed: Chi Ti garantisce che durante il spegnimento il motore non venga mosso?

Io io , garantisco io !! :D Una volta spento il motore non puo' muoversi o non puo' essere mosso da fattori esterni. Se hai la stringa da aggiungere al codice per far si che salvi l'ultima posizione sono a meta' dell'opera !!

Sta sera ho fatto qualche prova e il sistema del servo comandato dal potenziometro puo' servire per movimentare un albero che tanto lavora solo su 360° , rimane il problema del secondo albero che deve lavorare su almeno 30 giri ed avrei la necessita' di avere almeno 10 posizioni fisse comandate ad esempio da 10 pulsanti con ognuno delle resistenze diverse ..... tipo : pulsante1 > 30ohm > istruzione per il motore per fare 8giri e fermarsi nello step impostato ....... continuo a cercare qualche progetto simile per vedere lo sketch ma non trovo nulla , avete qualche link dove prendere spunto ?