- Motore passo-passo:
- Driver del motore passo-passo ULN2003:
- Componenti richiesti
- Schema del circuito e spiegazione
- Spiegazione del codice
Il motore passo-passo è un motore appositamente progettato che ruota a gradini. La velocità del motore passo-passo dipende dalla velocità del segnale elettrico applicato ad esso. Diversi modelli possono controllare la direzione e il tipo di rotazione del motore passo-passo. Sono disponibili principalmente due tipi di motori passo-passo, unipolare e bipolare. Unipolare è più facile da usare, controllare e anche più facile da ottenere. Qui in questo tutorial interfacciamo il motore passo-passo con il microcontrollore PIC PIC16F877A.
Stiamo utilizzando il motore passo - passo 28BYJ-48 per questo progetto che è economico e facilmente disponibile. È un motore passo-passo unipolare da 5 V CC. Stiamo anche utilizzando un modulo disponibile con questo motore che consiste nel driver del motore passo-passo ULN2003 IC. ULN2003 è un array di coppie Darlington, utile per pilotare questo motore, poiché il microcontrollore PIC non è in grado di fornire corrente sufficiente per guidare. ULN2003A è in grado di pilotare 500mA di carico con 600mA di corrente di picco.
Motore passo-passo:
Vediamo le specifiche del motore passo-passo 28BYJ-48 dalla scheda tecnica.
Come ruotare il motore passo-passo:
Se vediamo il datasheet vedremo il pin-out.
All'interno del motore sono disponibili due bobine filettate centrali. Il filo rosso è il comune per entrambi che saranno collegati a VCC o 5V.
Altri 4 fili rosa, rosso, giallo e blu controlleranno la rotazione a seconda del segnale elettrico. Inoltre, a seconda del movimento, questo motore può essere controllato utilizzando 3 fasi. Modalità Full unità, modalità e mezza di auto e modalità di guida onda.
Tre modalità di guida del motore passo-passo:
Azionamento completo: se due elettromagneti dello statore vengono eccitati contemporaneamente, il motore funzionerà alla massima coppia indicata come modalità di sequenza di azionamento completo.
Passo |
Blu |
Rosa |
Giallo |
arancia |
1 |
1 |
1 |
0 |
0 |
2 |
0 |
1 |
1 |
0 |
3 |
0 |
0 |
1 |
1 |
4 |
1 |
0 |
0 |
1 |
Half-Drive: quando alternativamente una e due fasi sono eccitate, il motore funzionerà in modalità Half-Drive. Viene utilizzato per aumentare la risoluzione angolare. Lo svantaggio è la minore coppia prodotta in questo movimento.
Passo |
Blu |
Rosa |
Giallo |
arancia |
1 |
1 |
0 |
0 |
0 |
2 |
1 |
1 |
0 |
0 |
3 |
0 |
1 |
0 |
0 |
4 |
0 |
1 |
1 |
0 |
5 |
0 |
0 |
1 |
1 |
6 |
0 |
0 |
0 |
1 |
7 |
1 |
0 |
0 |
1 |
8 |
1 |
0 |
0 |
0 |
Wave Drive: in questa modalità viene attivato un elettromagnete dello statore. Segue 4 passaggi come per la modalità Full-drive. Consuma bassa potenza con una coppia bassa.
Passo |
Blu |
Rosa |
Giallo |
arancia |
1 |
1 |
0 |
0 |
0 |
2 |
0 |
1 |
0 |
0 |
3 |
0 |
0 |
1 |
0 |
4 |
0 |
0 |
0 |
1 |
Abbiamo precedentemente interfacciato il motore passo-passo con altri microcontrollori:
Il motore passo-passo può anche essere controllato senza alcun microcontrollore, vedere questo circuito del driver del motore passo-passo.
Driver del motore passo-passo ULN2003:
Comprendiamo il break out board che consiste nel CI ULN2003. È importante capire il pin out.
La parte gialla viene utilizzata per collegare il motore, la parte rossa mostra un ponticello, è importante posizionare il ponticello in quanto abiliterà la protezione del diodo a ruota libera per il motore . L' ingresso rosa è per la connessione del microcontrollore.
Ruoteremo il motore in modalità di guida completa in senso orario e lo ruoteremo di nuovo con la modalità di guida a onde in senso antiorario. Guarda il video dimostrativo alla fine.
Componenti richiesti
- Pic16F877A
- Kit di programmazione
- Breadboard
- Cristallo da 20 Mhz
- Condensatore a disco 33pF - 2 pezzi
- Resistenza da 4.7k
- Fili e perni Berg
- Scheda breakout ULN2003A insieme al motore passo-passo 28BYJ-48.
- Cavi aggiuntivi da collegare
- Alimentatore 5V o adattatore da parete con portata 500mA
Schema del circuito e spiegazione
Nello schema elettrico, sul lato sinistro è mostrato il PIC16F877A e sul lato destro è mostrato il collegamento ULN2003A. L'ULN2003 e la parte del motore passo-passo si trovano all'interno della scheda di ripartizione.
Il collegamento dalla scheda di breakout all'unità microcontrollore sarà-
A. IN1 => Pin33
B. IN2 => Pin34
C. IN3 => Pin35
D. IN4 => Pin36
Ho collegato tutti i componenti e il tuo hardware per ruotare il motore passo-passo con microcontrollore PIC è pronto.
Se non hai familiarità con il microcontrollore PIC, segui i nostri tutorial sul microcontrollore PIC che indicano Iniziare con il microcontrollore PIC.
Spiegazione del codice
Il codice completo per questo driver per motore passo-passo basato su PIC è fornito alla fine di questo tutorial con un video dimostrativo. Come sempre prima, dobbiamo impostare i bit di configurazione nel microcontrollore pic e poi iniziare con la funzione void main .
Queste sono le macro per i bit di configurazione dell'unità microcontrollore e i file di intestazione della libreria.
#define _XTAL_FREQ 200000000 // Crystal Frequency, usata nel delay #define speed 1 // Speed Range da 10 a 1 10 = più basso, 1 = più alto #define steps 250 // quanto passo ci vorrà #define in senso orario 0 // in senso orario macro #define anti_clockwise 1 // macro in senso antiorario
Nella prima riga abbiamo definito la frequenza del cristallo necessaria per la routine di ritardo. Altre macro vengono utilizzate per definire le opzioni relative all'utente.
Se vedi il codice, ci sono tre funzioni definite per guidare il motore in tre modalità con senso orario e antiorario. Ecco le tre funzioni:
1. void full_drive (char direction)
2. void half_drive (char direction)
3. void wave_drive (char direction)
Controllare le definizioni di queste funzioni nel codice completo fornito di seguito:
Ora nella funzione principale vuota , stiamo guidando il motore in senso orario utilizzando la modalità di guida completa a seconda dei passaggi e dopo alcuni secondi di ritardo ruotiamo nuovamente il motore in senso antiorario utilizzando la modalità di guida a onde.
void main (void) { system_init (); while (1) { / * Aziona il motore in modalità di guida completa in senso orario * / for (int i = 0; i
È così che possiamo ruotare il motore passo-passo con il microcontrollore PIC. I motori passo-passo sono molto utili nelle macchine CNC, nella robotica e in altre applicazioni integrate.