Controllo di un motore passo passo con Arduino: principi, schemi e pratiche di implementazione
In queste settimane i miei studenti stanno svolgendo una serie di esercitazioni in cui è necessario controllare la rotazione di un motore passo passo (stepper). La differenza sostanziale da un motore brushed in corrente continua risiede nel fatto che un motore passo passo mantiene la velocità di rotazione costante anche con un carico applicato, ovvero se sottoposti a sforzo mantengono velocità costante.
I motori passo passo recuperati sono stati posti su supporti stampati in 3D e fissati su basette di compensato. Prima di collegare il motore alla scheda motori è necessario individuare i cavi A+, A-, B+ e B- sul motore. La maniera migliore è quella di consultare la scheda tecnica del motore in cui vi è una corrispondenza tra colore filo e cavo. Sempre per i passo passo dei CD-ROM i fili di collegamento sono saldati al motore ed il punto di saldatura è molto piccolo, inoltre i fili di collegamento sono sottili è molto alto il rischio di romperli.
Controllo rotazione stepper da Serial Monitor mediante tastiera. Per un giro completo 2048 step. Realizzare uno sketch che permetta di contare il numero di passi di rotazione fissato il numero di step per passo. Per un giro completo 2048 step. Per un giro completo 2048 step. Noterete che per il microstepper del CDROM il carrello giunto alla fine slitta, in quanto 200 step per rotazione sono troppi. Si colleghi il pulsante al pin 2 di Arduino, secondo quanto specificato nello schema di seguito.
I motori a Corrente Continua (in inglese DC Direct Current) hanno soltanto due fili (positivo e negativo). Per farli girare basta alimentarli. Al loro interno è presente un magnete permanente, situato sul corpo cilindrico, un’elettrocalamita situata sull’asse e dei contatti struscianti (spazzole) che alimentano l’elettrocalamita. Applicando una tensione l’elettrocalamita si polarizza in maniera opposta al magnete e tende a ruotare per allineare il suo Nord con il Sud del magnete e viceversa. I contatti struscianti sono disposti in modo tale da invertire la polarità dell’elettrocalamita ogni mezzo giro, quando essa si allinea col magnete. Con questo schema il transistor viene utilizzato come interruttore elettronico, viene infatti portata la base in saturazione. Se volessimo regolare la velocità basterà collegare il transistor ad un pin PWM dell’Arduino. In questo caso però si consiglia di avviare alla massima velocità il motore per un piccolissimo tempo (per vincere le inerzie meccaniche), per poi farlo girare alla velocità desiderata.
Nello schema è presente un diodo. Serve a proteggere il transistor dalla corrente prodotta dal motore quando ruoterà per inerzia nel momento in cui smetteremo di alimentarlo. Infatti il motore, se ruota senza essere alimentato, si comporta come un generatore di corrente che danneggerà il transistor (il principio è simile al recupero energetico che utilizzano le auto elettriche o ibride). valVelocita = map(analogRead(potenziometro), 0, 1023, 0, 255); // Legge il valore del potenz. Il pulsante funzionerà da on / off del motore e la velocità sarà costantemente regolata dal potenziometro. Se la velocità di rotazione sarà sotto una certa soglia la velocità del motore sarà impostata a zero. Questo serve ad impedire che il motore si fermi fisicamente, ma che resti comunque alimentato.
Il Ponte H è un particolare circuito composto da Transistor e diodi di protezione. Rispetto allo schema precedente per pilotare il motore occorreranno 4 pin di Arduino. Come già detto, se i motori girano al di sotto di una certa velocità si fermeranno fisicamente, rimanendo però alimentati, con il rischio di bruciarsi. NOTA: Come per l’esempio del Transistor, se si impostano velocità basse di rotazione e si deve avviare il motore da fermo, si rischia che questo non vinca le inerzie meccaniche e non si avvii, rischiando così di bruciarsi. Conviene gestire questo evento dando per un brevissimo tempo la velocità massima per poi andare alla velocità impostata.
Il L298N si trova già assemblato con tutta l’elettronica necessaria al suo funzionamento. Il JUMPER +5V permette di far circolare la tensione dei motori dentro uno stabilizzatore a +5V che alimenta la logica del L298N, se alimentiamo i motori con tensioni maggiori di +12V DEVE essere rimosso, altrimenti lo stabilizzatore si danneggia. Una volta rimosso tale JUMPER si dovrà provvedere a fornire i +5V esternamente. Come già detto, se i motori girano al di sotto di una certa velocità si fermeranno fisicamente, rimanendo però alimentati, con il rischio di bruciarsi.
I motori a corrente continua hanno tantissime applicazioni, dai semplici elettrodomestici passando per i giocattoli. In questo articolo presentiamo delle soluzioni per controllare un motore DC con la scheda di sviluppo Arduino UNO. Il motore DC a corrente continua ha due fili attraverso i quali è sufficiente alimentarlo per farlo muovere in una specifica direzione. L’interno è composto da un magnete permanente, un’elettrocalamita e dei contatti striscianti. L’obiettivo è regolare attraverso un potenziometro/trimmer la velocità del motore e nello stesso tempo fornire un sistema di feedback in relazione alla temperatura fornita dal sensore TMP36 presente nel kit. Nel progetto verrà implementato anche un buzzer per segnalare l’incremento della velocità del motore. Un motore a corrente continua appartiene ad una classe di macchine elettriche che converte l’energia elettrica a corrente continua in una meccanica. I tipi più comuni basano il proprio funzionamento sulle classiche leggi derivanti dai campi magnetici. La velocità del motore a corrente continua può essere controllata in un ampio intervallo, utilizzando una tensione di alimentazione variabile. I piccoli motori DC sono utilizzati in utensili, giocattoli ed elettrodomestici. I motori DC di grandi dimensioni, invece, sono utilizzati nella propulsione di veicoli elettrici, ascensori e montacarichi.
I dispositivi L293 e L293D sono IC driver quadrupole ad alta corrente half-H, progettati per fornire correnti di pilotaggio bidirezionali fino a 1 A. L293D, impiegato nel progetto per controllare il motore DC alimentato con una batteria da 9 V, è progettato per fornire correnti di pilotaggio bidirezionali fino a 600 mA con tensioni da 4,5 V a 36 V. Entrambi i dispositivi sono progettati per pilotare carichi induttivi come relè, solenoidi e motori DC, nonché altri carichi ad alta corrente / alta tensione in applicazioni di alimentazione controllata. L’obiettivo che ci prefiggiamo è quello di controllare la velocità del motore per mezzo di un potenziometro o trimmer, con l'ausilio di un buzzer per controllare la velocità attraverso l'emissione di suoni. Nel progetto abbiamo anche implementato il sensore di temperatura TMP36 per controllare, in un secondo approccio, la velocità del motore in relazione alla temperatura.
Il nucleo del sensore di temperatura (band gap core) comprende i transistori Q1 e Q2, polarizzato da Q3 a circa 8 μA. Il nucleo band gap opera sia su Q1 che su Q2 allo stesso livello di corrente del collettore. I resistori R1 e R2 vengono utilizzati per scalare questo valore al fine di produrre la caratteristica funzione di trasferimento della tensione di uscita di ciascun sensore di temperatura; contemporaneamente, R2 e R3 sono utilizzati per scalare VBE di Q1 come termine di offset in VOUT. La tensione di uscita del sensore di temperatura è disponibile sull'emettitore di Q4, il guadagno di corrente di quest’ultimo, invece, imposta il limite di corrente di corto circuito a 250 μA. 2166 parole ed è riservato agli ABBONATI.
Articoli Tecnici che potrai leggere in formato PDF per un anno. Maurizio Di Paolo Emilio, Dottore di ricerca in Fisica, Ingegnere delle telecomunicazioni e Giornalista pubblicista, ha lavorato in esperimenti per la rivelazione di onde gravitazionali (LIGO/VIRGO: Premio Nobel per la Fisica) come progettista software e hardware, e in altri esperimenti scientifici per lo sviluppo di sensoristica. Editor di Power Electronics News e EEWEB, e corrispondente europeo di EE Times. Questo sito web utilizza i cookie per migliorare la tua esperienza di navigazione. Utilizzando il nostro sito web acconsenti a tutti i cookie in conformità con la nostra policy per i cookie.
Panoramica di alcuni moduli e shield per il controllo di motori elettrici DC, questi possono controllare un motore singolo oppure due motori. Unendo le due sezioni possono anche azionare dei motori passo-passo. Il modulo è progettato per commutare carichi alimentati in corrente continua. Di piccole dimensioni, misurando solo 34×25 mm, permette di pilotare due motori a corrente continua, con controllo di rotazione continua bidirezionale. Questo modulo utilizza 2 chip H-bridge tipo L9110 (oppure tipo HG7881) indipendenti. Il modulo auto costruito basato sul driver ULN2003A in cui sono presenti 7 circuiti Darlington e permette di pilotare motori passo-passo del tipo unipolare a 5 fili o 6 fili unendo i due cavi d’alimentazione. Il modulo di controllo motore è basato sull’integrato TB6612FNG prodotto dalla Toshiba ed è in grado di pilotare due motori a corrente continua con una corrente costante di 1.2A (3.2A di picco) interfacciandosi con un microcontrollore, può anche essere utilizzato per controllare un singolo motore passo-passo bipolare. Lo shield per Arduino denominato CNC SHIELD, viene utilizzata di solito per realizzare piccole macchina CNC o 3D printer. Può sopportare tensioni comprese tra 3.6V a 36V motori (1A), venduto in kit, doveva essere assemblato saldando i vari componenti. Lo shield per Arduino contenente un L293D permette di pilotare due moto riduttori. Sulla scheda è anche presente un connettore per l’installazione di un modulo XBee montato a sua volta su una scheda XBee-Simple Board. Tempo di Arduino e motori passo passo. In questo post ti faccio vedere come è possibile realizzare un sistema di controllo di due motori passo passo con Arduino e un Joystick. A fine pagina trovi il video con la dimostrazione.
Come mostrato in un precedente articolo, una delle migliori soluzioni per pilotare un motore passo passo tramite Arduino è quella di utilizzare dei driver adatti. Ultimamente sto usando dei moduli Pololu A4988 semplici, completi ed affidabili. Sono progettati per poter comandare i motori in modalità full-, half-, quarter-, eighth-, e sixteenth-step. Ovvero è possibile far ruotare l’asse del motore di uno step completo oppure di 1/2, 1/4, 1/8 e 1/16. Come avrai notato, ho utilizzato un’altra libreria nel codice. Si chiama Bounce2 ed è utilissima nella gestione dei bottoni.

