Pilotare [Motori DC] tramie Arduino.

Salve a tutti, sono un novizio nell'ambito di Arduino e dell'elettronica.
Ho la necessita di pilotare dei 6 motori in DC recuperati da vari lettori cd/dvd, tramite un segnale mono audio proveniente da un pc.
Io ho a disposizione un Arduino duemilanove. Ho fatto ricerche sia su google sia sul forum ma ho trovato diversi esempi spesso contrastati fra loro in cui spesso vengono mischiati con servo motori confondendomi le idee.

Sapete indicarmi una guida attendibile?

Un'altra cosa per quanto riguarda l'analisi del segnale audio tramite FFT. Per camminare il segnale posso collegare il comune del jack audio al gnd dell'Arduino e per esempio il canale left del jack audio direttamente al pin A0 o inserire una resistenza/potenziometro fra il canale Left e il pin A0 ?

Spero di essere stato chiaro, ringrazio anticipatamente per la pazienza che mi vorrete accodare.
Ciao Giuseppe.

l'ADC arduino ha solo 1024 step di precisione, il grosso del segnale lo perdi. Senza contare tutta la parte NEGATIVA dell'onda, visto che l'ADC funziona solo conla parte positiva (e non ho nemmeno idea se lo spacchi a usarlo in altromodo). Non è meglio usare direttamente la seriale?

Sul forum di motori da cd se ne è parlato spesso, la cosa più facile da fare è recuperare la loro stessa logica, cercando il modello del chippino su internet. Altrimenti devi capire se i motori sono brushed (transistor/mosfet/ponte h) o brushless (esc)

6 motori sono tanti, ti servirà una buona fonte di alimentazione esterna.

Grazie per la risposta,

per quanto riguarda l'adc non mi serve la precisione, non posso sfruttare la seriale perché il mio scopo è sincronizzare il movimento dei motori con un video. Per fare questo vorrei modificare il video e sfruttare uno dei due canali audio del video per mandare all'Arduino un segnale che decodificato tramite FFT mi faccia muovere i motori.

Mi consigli di mettere una resistenza o un potenziometro per limitare la corrente in entrato all'Arduino?

Per quanto riguarda i motori dc provo a vedere se riesco a recuperare la logica ma credo che sia difficile, in alternativa cosa mi consigli di fare, comprare L293D . Quanti L293D posso collegare all'Arduino? Ogni L293D posso collegare 2 motori dc?

Grazie ancora per la risposta.

L293D funziona per i motori brushed (2 fili), di solito quelli del CD sono a 3 fili (brushless) per cui ti serve un esc

Mi consigli di mettere una resistenza o un potenziometro per limitare la corrente in entrato all'Arduino?

non sono un elettronico, ma per quel che so arduino assorbe la corrente che gli serve. e il voltaggio del jack dovrebbe andare da -4V a 4V.

Il problema (che hai bellamente ignorato) è propio quel -4V che l'iingresso dell'ADC non può gestire. o le tagli, o le elimini in qualche modo, o usi un circuito più complesso per leggere anche i voltaggi negativi.

per la FFT magari ti è utile questo: http://www.arduinoos.com/2010/10/fast-fourier-transform-fft/

Arduino lo vedo un po' male a gestire trasformate di fourier. Potresti gestire tutto tramite PC, intercettando l'audio, elaborandolo e inviando all'Arduino solo i comandi dei motori tramite USB/Seriale.

Forse la FFT è inutile.
Forse. Se vuoi realizzare un video con audio stereo di cui uno dei due canali conterrà l'audio e l'altro conterrà i dati necessari per i movimenti dei motori.
Magari specificando meglio COSA si vuole fare con i motori, verrebbe più semplice fornire indicazioni.
Il canale audio usato come canale dati potrebbe semplicemente contenere una sinusoide ad alta frequenza a frequenza fissa ed ampiezza variabile. In questo caso sarebbe abbastanza semplice andare a tirare fuori qualcosa, si potrebbe anche usare una specie di "codice morse" sfruttando la presenza/assenza della sinusoide.
SE INVECE vuoi usare l'audio già presente, allora tutto quello che ho scritto è inutile!

@paulus1969 il fine ultimo e quello di muover un "robot" in sincrono al video (farli aprire la bocca,muovere un braccio ecc..)
e come avevi detto tu avevo pensato di utilizzare uno dei canali del video per pilotare i motori del robot. Avevo pensato di utilizzare fft perché potevo codificatore quale motore attivare; ogni canale dello spettro identificava il motore e l'intensità identificava il tempo di attivazione. L'idea di utilizzare una space di linguaggio non è male come idea solo che la vedo complicata sincronizzarlo con il video perché dovrei iniziare n. secondi prima di quando voglio che l'azioni si compi(dipende dalla lunghezza del messaggio) .

Per risolvere il problema dei -4 secondo voi è sufficiente inserire un zener fra il comune e il canale interessato, se si di che valore visto le tensioni in gioco?

Grazie ancora.

Quanti motori sono?
Magari con una specie di filtro a più vie te la cavi...

6 motori

spaccaduiono:
Per risolvere il problema dei -4 secondo voi è sufficiente inserire un zener fra il comune e il canale interessato, se si di che valore visto le tensioni in gioco?

ti "rompe" la FFT, ma non un "linguaggio" pensato ad-hoc.

considera anche il tempo di lettura ADC: una lettura dura 200microSec (ma la puoi abbassare, perdendo precisione)

ho intenzione di comprare questo http://www.arduiner.com/it/moduli-arduino-compatibili/299-Arduino-motor-driven-expansion-board-motor-control.html da montare su arduino 2009;Monta?. Una volta montato rimangono pin disponibili per pilotare altri dispositivi?

usa il chip L293D, che come detto prima non va bene per molti dei motori che si trovano di recupero dai CD.. va bene solo per i motori brushed DC.

Di pin disponibili te ne rimangono, ma con 6 motori forse no, guarda bene quanti tene usa.