Shield per Arduino motori stepper – in kit da saldare

53,00 IVA inclusa

Disponibilitร  immediata.

Shield per Arduino UNO o Mega, che permette di comandare tre motori passo-passo bipolari da 2A

oppure
Puoi anche pagare in 3 rate senza interessi da 17,67 scegliendo come pagamento. Scopri di piรน

Shield per Arduino UNO o Mega, che permette di comandare tre motori passo-passo bipolari da 2A. Il controllo dei motori รจ gestito da un driver (MD09B oppure 3DDRIVERย – uno per motore) prodotto dalla Pololu. Ogni driver contiene un doppio ponte ad H a MOSFET e puรฒ essere impostato per gestire sia la direzione, sia il numero di gradi che il rotore del motore deve compiere alla ricezione di ogni comando; in altre parole, possiamo decidere se quando lo comandiamo, il modulo deve far ruotare lโ€™albero di uno step alla volta, oppure di 1/2, 1/4, 1/8 o 1/16, in base allโ€™accuratezza che si desidera ottenere. Sulla shield sono presenti anche 4 ingressi analogici. Alimentazione: 12 Vdc, dimensioni: 86×56 mm. N.B. la confezione comprende la scheda da saldare e i 3 driver (giร  montati).
MONTATA SU ARDUINO…
COLLEGAMENTI DEI MOTORI
IL DRIVER PER I MOTORI MD09B
Il controllo dei motori passo-passo รจ operato da moduli Pololu (www. pololu.com) basati sullโ€™integrato A4983 della Allegro e dotati ciascuno di un doppio driver a ponte ad H governato da una logica che controlla lโ€™accensione e permette di far compiere al motore passi ridotti rispetto a quelli previsti dalla sua parte elettromeccanica; ad esempio, per ogni impulso di comando inviato a STEP (il contatto che riceve gli impulsi di azionamento del motore) lo stepper-motor puรฒ compiere un passo intero oppure frazioni da 1/2 a 1/6, a seconda della combinazione logica presentata ai piedini MS1, MS2, MS3, secondo la tabella riportata in questo riquadro.
La direzione del movimento conseguente ad ogni impulso ricevuto sul contatto STEP dipende dal livello logico applicato allโ€™ingresso DIR (1logico forza il verso antiorario e 0 quello orario). Ogni ponte puรฒ erogare una corrente di 2 A, mentre il modulo si alimenta in continua con tensioni fino a 35 V; un piccolo trimmer posto sulla basetta e connesso al pin REF (17) dellโ€™A4983, permette di regolare la corrente erogabile dai ponti.
FUNZIONAMENTO
Il comando del movimento puรฒ essere ottenuto in due modi: nel primo, Arduino fornisce direttamente gli impulsi per impostare il verso di rotazione dellโ€™albero dello stepper-motor e per far ruotare di uno step ad impulso; nel secondo, ossia quello da noi impiegato e previsto nel firmware, Arduino imposta il verso di rotazione e invia impulsi che determinano rotazioni di uno step o frazione di esso, a seconda dellโ€™impostazione fatta allโ€™inizializzazione e conservata da opportuni shift-register. La differenza tra le due modalitร  รจ che la prima รจ piรน impegnativa della seconda e costringe Arduino a lavorare piรน velocemente perchรฉ deve aggiornare piรน in fretta lo stato dei motori passo passo. Infatti nel primo modo di comando, che si ottiene spostando i jumper DIR ed STP (quindi DIR1/STP1, DIR2/STP2, DIR3/ STP3) verso le linee di Arduino, รจ proprio Arduino che imposta la posizione dellโ€™albero del motore passo per passo; ipotizzando che il motore sia collegato allโ€™uscita MOT1, ciรฒ significa che se il motore รจ un 360 passi ed il suo albero deve ruotare di 180ยฐ in due secondi, occorre inviare 90 impulsi al secondo al piedino D7 (se la velocitร  angolare deve aumentare, ad esempio per far rispondere il labirinto piรน velocemente, la frequenza degli impulsi di step deve crescere di conseguenza). Prima, perรฒ, Arduino deve impostare la direzione con lโ€™opportuno livello logico sul piedino D10, che decide la direzione mediante il jumper DIR.
Nella seconda modalitร , ci avvaliamo delle prerogative del controller Pololu per impostare preventivamente il numero di step o frazioni da compiere ogni volta che Arduino invia un impulso di rotazione e imposta il verso; questa modalitร  si ottiene spostando i jumper DIR e STP verso i pin Q5 e Q6 dei rispettivi shift register. In questo caso, ci basta definire il fattore di divisione una sola volta e poi per variare la velocitร  di risposta si gioca sulla frequenza degli impulsi giunti da Arduino. Analizziamo dunque questa modalitร , per comprendere la quale dobbiamo spendere qualche altra parola sul modulo controller per stepper-motor prodotto dalla Pololu, ovvero sulla sua interfaccia di comando. Il modulo, siglato MD09B, consta di un doppio ponte ad H governato da unโ€™elettronica che permette di impostare il verso di rotazione del campo elettromagnetico e quindi dellโ€™albero dello stepper motor, oltre a frazionare gli step.
Ogni volta che sul piedino STEP giunge un impulso (la durata minima ammissibile รจ 1 ฮผs) a livello alto, a meno di diversa impostazione le uscite 1A, 1B, 2A e 2B forniscono gli impulsi per comandare lo spostamento del rotore del motore di uno step. Ciรฒ vale se gli ingressi MS1, MS2, MS3 sono tutti a livello basso; in caso contrario, si ottiene la rotazione di 1/2, 1/4 ecc. Sempre, perchรฉ il controller funzioni bisogna che il contatto EN sia a livello basso; ponendolo a 1 il modulo va in standby e i motori non ricevono corrente. Il contatto DIR decide il verso di rotazione: posto a livello logico basso impone il verso orario, mentre nello stato alto imposta lโ€™antiorario. SLEEP attiva la modalitร  di riposo (logica attiva e driver spenti) mentre RESET azzera il controllore che governa i driver e pone le uscite di comando dei motori (1A, 1B, 2A, 2B) a zero logico anche se STEP continua a ricevere impulsi. La logica รจ TTL-compatibile, ma comunque il modulo accetta agli ingressi di controllo tensioni fino a 0,7 volte quella applicata tra il contatto 2 (Vcc) e massa (GND); il livello basso equivale a non piรน di 0,3xVcc.
Detto ciรฒ, vediamo che per impostare il fattore di divisione degli step, Arduino deve definire la combinazione delle linee MS1, MS2, MS3 di ogni modulo; per farlo distintamente e liberarsi del problema, nello shield sono previsti tre shift-register che caricano lโ€™impostazione di ciascun controller individualmente e sequenzialmente. Una volta configurati i controller, le impostazioni possono rimanere quelle fin quando non serve modificarle e comunque non bisogna aggiornarle ad ogni impulso di comando di STEP; รจ questo che sgrava Arduino da parte del lavoro. Lโ€™aggiornamento delle impostazioni dei controller si effettua caricando sequenzialmente i dati tramite la linea D13 di Arduino, che finisce in parallelo sui pin 2 (DATA) dei registri a scorrimento; ogni volta che รจ stata inviata la configurazione di tutti e tre i controller, Arduino attiva la linea di STROBE (piedini 1 di U1, U2, U3, ovvero I/O D2 della Arduino) e trasferisce sugli MD09B i rispettivi stati, quindi riporta D2 a zero logico.
Insieme alla configurazione degli MS1, MS2, MS3 (che puรฒ essere diversa da U1 a U3) i dati inviati da Arduino riguardano lo stato di SLEEP e RESET, che sono impostati uguali per tutti i moduli e valgono 1 logico fisso. Ogni controller alimenta direttamente il motore e viene a sua volta alimentato da una linea comune che, tramite il jumper siglato Vmot, puรฒ prendere tensione da Arduino o da un alimentatore esterno mediante lโ€™apposita morsettiera PWR.
Documentazione e link utili

 

Documentazione Tecnica
PDF italiano

Menu