Controllo di più motori

Ciao a tutti,
sono nuovo qui sul forum e ancora più novizio in tema arduino ed elettronica in generale. Sto cercando di farmi un'idea per compilare la mia "lista della spesa"; ho scelto la board per il mio progetto (un robottino lego wifi) e ora vorrei capire come controllare i 4-6 motori del robot: ci sono shield ufficiali e adafruit tra gli altri ma il mio primo dubbio è come gestire più dei due motori normalmente pilotabili con uno shield.

Grazie!
mt

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento: Regolamento

saranno un po' troppi 4-6 motori.
Non e' che qualcuno e' un servo ?

Transistor e PWM is the way :wink: Cosa sai sui BJT o sui mosfet?

nid69ita:
Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione)

Fatto :)!

Brunello:
Non e' che qualcuno e' un servo ?

Uno è chiamato servo da Lego, ma per quel che posso capire non funziona come un servo in senso stretto ma varia la posizione angolare in base a quanto volt gli arrivano (qui la scheda http://goo.gl/i5JXw8).

Subsea:
Cosa sai sui BJT o sui mosfet?

Meno di niente :stuck_out_tongue:

Per Arduino che controlla i motori Power Function della Lego ho visto questo:

Qui uno per il Servo Motor Power Function ma purtroppo lo fa con IR:

Qui alcune info sul Servo Motor (il PWM è diverso):

mbagattini:
Uno è chiamato servo da Lego, ma per quel che posso capire non funziona come un servo in senso stretto ma varia la posizione angolare in base a quanto volt gli arrivano (qui la scheda http://goo.gl/i5JXw8).

Non cambia la posizione angolare in funzione della tensione, quella è fissa, la cambia in base ad un segnale di controllo, probabilmente qualcosa di molto simile al PPM usato con i servo RC.

nid69ita:
Per Arduino che controlla i motori Power Function della Lego ho visto questo:
Arduino Controlling LEGO Power Functions Motor Part 1: Wired Control - YouTube

Infatti scrive chiaramente che la posizione del servo cambia in base al duty cycle del PWM a 980 Hz (pin 5 di Arduino).

nid69ita:
Per Arduino che controlla i motori Power Function della Lego ho visto questo:
Arduino Controlling LEGO Power Functions Motor Part 1: Wired Control - YouTube

Lì usa un "L298 module", però non trovo in vendita on line l'intero modulo, solo il L298. Date le mie capacità nulle non saprei che farci, per questo pensavo ad un motors shield.

Per il motore servo, pensavo variasse posizione in base alla tensione perché lo stesso cablaggio e controllo su un motore normale cambia la velocità (l'ho detto che sono a zero); mi accontenterei in ogni caso di far funzionare anche solo i motori normali in un primo momento!

ma su ebay ci hai guardato ?

mbagattini:
Lì usa un "L298 module", però non trovo in vendita on line l'intero modulo, solo il L298. Date le mie capacità nulle non saprei che farci, per questo pensavo ad un motors shield.

Il 298 ti serve solo per far girare il motore a rotazione continua, quello di tipo servo va alimentato su i due fili abbinati ai denti del mattoncino e a uno dei due fili abbinati al piccolo connettore ci va il segnale PWM/PPM, sarebbe da verificare i livelli di tensione sia di alimentazione che del segnale.
Su i siti specializzati in Legologia si dovrebbe trovare facilmente come funziona esattamente quel servo, la prima cosa che fanno è smontare e hackerare tutto.

Non so come non abbia pensato di cercarlo su eBay... con due di quelli dovrei poter controllare i miei 3 motori dc e il servo, stando al video segnalato da @nid69ita; oddio, lì ne controlla 1 dc e 1 servo, ma ipotizzo che i collegamenti in arrivo da arduino si possano mettere su altri pin, o sbaglio?

Intanto ecco come è fatto dentro il servo della Lego, per la posizione al posto del potenziometro usa dei contatti.

http://www.technicbricks.com/2012/08/tbs-technuggets-13-inside-pf-l-motor.html

Ed ecco la risposta (scorrere fino ai PF motor) definitiva, i servo della Lego sono alimentati a 9V, la posizione è determinata dal duty cycle di un segnale PWM applicato a C1 o C2, come era chiaramente scritto nel video.
Per me il PWM può essere quello a 5V di Arduino, però è possibile che vada portato a 9V tramite un piccolo transistor/mos, questa cosa è da verificare.
Nel video il servo Lego sembra essere connesso direttamente al pin 5 di Arduino, non è possibile avere la certezza perché i fili sono parzialmente nascosti, dato che viene utilizzato il pin 5, che ha il PWM a 980 Hz, è presumibile che la frequenza standard di 490 Hz non va bene.