- Componenti richiesti
- Descrizione dei pin del motore passo-passo
- Schema del circuito per il controllo del motore passo-passo utilizzando il modulo ULN2003
- Schema del circuito per il controllo del motore passo-passo utilizzando il modulo L293D:
- Controllo del motore passo-passo con AVR ATmega16
I motori passo-passo sono motori brushless CC che possono ruotare da 0 0 a 360 0 in passi. Il motore passo-passo utilizza segnali elettronici per ruotare il motore in fasi e ogni segnale ruota l'albero in incrementi fissi (un passo). L'angelo di rotazione è controllato applicando una certa sequenza di segnali. A differenza del servomotore, i motori passo-passo possono essere azionati utilizzando i pin GPIO del microcontrollore anziché i pin PWM e possono ruotare in (+360 0) e (-360 0). L'ordine dei segnali decide la direzione in senso orario e antiorario del motore passo-passo. Per controllare la velocità del motore, dobbiamo solo modificare la velocità dei segnali di controllo applicati. I motori passo-passo ruotano gradualmente. Ci sono diverse modalità di passaggi per azionare il motore passo-passo come passo completo, mezzo passo e microstep. Per saperne di più sulle basi, teoria e principio di funzionamento del motore passo-passo, segui il link.
In precedenza abbiamo interfacciato il motore passo-passo con molti microcontrollori:
- Interfacciamento del motore passo-passo con ARM7-LPC2148
- Interfacciamento del motore passo-passo con Arduino Uno
- Interfacciamento del motore passo-passo con MSP430G2
- Interfacciamento del motore passo-passo con STM32F103C8
- Interfacciamento del motore passo-passo con il microcontrollore PIC
- Interfacciamento del motore passo-passo con il microcontrollore 8051
- Interfacciamento del motore passo-passo con Raspberry Pi
In questo tutorial interfacciamo il motore passo-passo 28BYJ-48 con il microcontrollore Atmega16 AVR utilizzando Atmel Studio 7.0. Il motore passo-passo è valutato per funzionare a 5V. Interfacceremo il motore passo-passo con entrambi i driver del motore, ovvero ULN2003 e L293. Entrambi saranno alimentati da 5V. Al fine di semplificare l'interfaccia, stiamo utilizzando il modulo precostruito di entrambi i driver del motore. È inoltre possibile utilizzare CI autonomi ULN2003 e L293D. Il numero di fili e ponticelli può essere maggiore, quindi fai attenzione durante il collegamento di tutte le connessioni.
Componenti richiesti
- Motore passo-passo (28BYJ-48)
- Modulo ULN2003 / Driver motore L293D
- Atmega16 Microcontroller IC
- Oscillatore in cristallo da 16 Mhz
- Due condensatori da 100 nF
- Due condensatori da 22pF
- Premi il bottone
- Cavi per ponticelli
- Breadboard
- USBASP v2.0
- Led (qualsiasi colore)
Descrizione dei pin del motore passo-passo
Schema del circuito per il controllo del motore passo-passo utilizzando il modulo ULN2003
Collegare tutti i componenti come mostrato nello schema seguente quando si utilizza ULN2003. Allo stesso modo lo interfacceremo utilizzando L293D nel passaggio successivo. Stiamo usando PORTA di Atmega16 per interfacciare il motore passo-passo per entrambi i driver del motore. Non è necessario collegare il pin 5V del motore passo-passo. Per muovere il motore passo-passo sono necessari solo i perni della bobina. L'ordine dei pin è molto importante per guidare il motore passo-passo poiché l'eccitazione delle bobine dovrebbe essere per raggiungere i passaggi. In questo progetto vengono utilizzati quattro ingressi di ULN2003 e quattro uscite di ULN2003. Gli ingressi saranno collegati ai pin PORTA e le uscite saranno collegate ai pin del segnale del motore passo-passo. Inoltre, collegare un pulsante nel pin di ripristino per ripristinare Atmega16 quando necessario. Collegare Atmega16 con il circuito dell'oscillatore a cristallo appropriato. Tutto il sistema sarà alimentato da 5V.
Di seguito è riportata l'immagine effettiva del modulo driver motore ULN2003:
Di seguito abbiamo fornito connessioni pin Atmega16 con ULN2003 e L293D per ruotare il motore passo-passo. L'interfacciamento del motore passo-passo con il modulo L293D è spiegato nella sezione successiva, ricordare che per il controllo del motore passo-passo è richiesto un solo modulo ULN2003 o L293D.
I collegamenti dei pin per INPUT sono i seguenti:
Atmega16 |
ULN2003 |
L293D |
A0 |
IN1 (PIN1) |
IN1 (PIN2) |
A1 |
IN2 (PIN2) |
IN2 (PIN7) |
A2 |
IN3 (PIN3) |
IN3 (PIN10) |
A3 |
IN4 (PIN4) |
IN4 (PIN15) |
I collegamenti dei pin per OUTPUT sono i seguenti:
Motore passo-passo |
ULN2003 |
L293D |
arancia |
OUT1 (PIN16) |
OUT1 (PIN3) |
Giallo |
OUT2 (PIN15) |
OUT2 (PIN6) |
Rosa |
OUT3 (PIN14) |
OUT3 (PIN11) |
Blu |
OUT4 (PIN13) |
OUT4 (PIN14) |
Schema del circuito per il controllo del motore passo-passo utilizzando il modulo L293D:
Controllo del motore passo-passo con AVR ATmega16
Come già detto a differenza del servomotore, i motori passo-passo necessitano di driver esterni, ad esempio driver del motore ULN2003 o L293D. Quindi basta collegare il Circuito come sopra e caricare il programma main.c fornito alla fine.
Lo schizzo mostra il motore passo-passo che ruota su entrambi i lati, cioè in senso orario e antiorario. Se vuoi ruotare lo stepper in una direzione, commenta semplicemente le linee di codice di un'altra direzione nello schizzo.
Di seguito è riportato il codice AVR completo per il controllo del motore passo-passo. Il codice è semplice e può essere compreso facilmente. Di seguito sono riportati due codici, uno per il motore passo-passo rotante con ULN2003 e il secondo con modulo L293D.
Collega il tuo USBASP v2.0 e segui le istruzioni in questo collegamento per programmare il microcontrollore Atmega16 AVR utilizzando USBASP e Atmel Studio 7.0. Basta creare lo schizzo e caricarlo utilizzando una toolchain esterna.
Di seguito viene fornito il codice completo con il video dimostrativo.