- Motore passo-passo
- Rotazione di un motore passo-passo CON ARM7-LPC2148
- Componenti richiesti
- Motore passo-passo (28BYJ-48)
- Driver del motore passo-passo ULN2003
- Schema elettrico
- Programmazione ARM7-LPC2148 per motore passo-passo
Nel mondo dell'automazione di oggi, il motore passo-passo e il servomotore sono i due motori più comunemente utilizzati nei sistemi embedded. Entrambi sono utilizzati in varie macchine di automazione come bracci robotici, macchine CNC, telecamere ecc. In questo tutorial vedremo come interfacciare il motore passo-passo con ARM7-LPC2148 e come controllarne la velocità. Se non conosci ARM7, inizia imparando a conoscere ARM7-LPC2148 e i suoi strumenti di programmazione.
Motore passo-passo
Il motore passo-passo è un motore CC senza spazzole, che può essere ruotato di piccoli angoli, questi angoli sono chiamati gradini. Possiamo ruotare il motore passo-passo passo dopo passo dando impulsi digitali ai suoi pin. I motori passo-passo sono economici e hanno un design robusto. La velocità del motore può essere controllata cambiando la frequenza degli impulsi digitali.
Sono disponibili due tipi di motori passo-passo in base al tipo di avvolgimento dello statore: UNIPOLARE e BIPOLARE. Qui stiamo usando il motore passo - passo UNIPOLAR che è il motore passo-passo più comunemente usato . Per ruotare il motore passo-passo dobbiamo eccitare le bobine del motore passo-passo in una sequenza. In base all'operazione di rotazione sono classificati in due modalità:
- Modalità passo completo: (sequenza in 4 fasi)
- Monofase On Stepping (WAVE STEPPING)
- A due fasi sul passo
- Modalità Half Step (sequenza a 8 fasi)
Per saperne di più sul motore passo-passo e sul suo funzionamento, segui il link.
Rotazione di un motore passo-passo CON ARM7-LPC2148
Qui useremo la modalità FULL STEP: ONE PHASE ON o WAVE STEPPING per ruotare il motore passo-passo con ARM7-LPC2148
In questo metodo ecciteremo solo una bobina (un pin di LPC2148) alla volta. Cioè, se la prima bobina A viene eccitata per un breve periodo, l'albero cambierà la sua posizione e quindi la bobina B verrà eccitata per lo stesso tempo e l'albero cambierà di nuovo la sua posizione. Allo stesso modo, la bobina C e quindi la bobina D vengono eccitate per spostare ulteriormente l'albero. Questo fa sì che l'albero del motore passo-passo ruoti in modo graduale eccitando una bobina alla volta.
Con questo metodo ruotiamo l'albero passo dopo passo eccitando la bobina in sequenza. Questa è chiamata sequenze di quattro passaggi poiché richiede quattro passaggi.
È possibile ruotare il motore passo-passo utilizzando il metodo HALF STEP (metodo a 8 sequenze) in base ai valori indicati di seguito.
Passo |
Bobina A |
Bobina B |
Bobina C |
Bobina D |
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 |
Componenti richiesti
Hardware:
- ARM7-LPC2148
- IC driver motore ULN2003
- LED - 4
- MOTORE PASSO-PASSO (28BYJ-48)
- PANE
- FILI DI COLLEGAMENTO
Software:
- Keil uVision5
- Strumento magico flasico
Motore passo-passo (28BYJ-48)
Il motore passo-passo 28BYJ-48 è già mostrato nella foto sopra. È un motore passo-passo unipolare che richiede un'alimentazione di 5V. Il motore ha una disposizione unipolare a 4 bobine e ogni bobina è classificata per + 5V, quindi è relativamente facile da controllare con qualsiasi microcontrollore come Arduino, Raspberry Pi, STM32, ARM ecc.
Ma abbiamo bisogno di un IC Motor Drive come ULN2003 per guidarlo, perché i motori passo-passo consumano corrente elevata e potrebbero danneggiare i microcontrollori.
Le specifiche del 28BYJ-48 sono fornite nella seguente scheda tecnica:
Verificare anche l'interfacciamento con il motore passo-passo con altri microcontrollori:
- Interfacciamento del motore passo-passo con Arduino Uno
- Controllo motore passo-passo con Raspberry Pi
- Interfacciamento motore passo-passo con microcontrollore 8051
- Interfacciamento del motore passo-passo con il microcontrollore PIC
- Interfacciamento del motore passo-passo con MSP430G2
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
La maggior parte dei motori passo-passo funzionerà solo con l'aiuto di un modulo driver. Questo perché il modulo controller (nel nostro caso LPC2148) non sarà in grado di fornire corrente sufficiente dai suoi pin I / O per il funzionamento del motore. Quindi useremo un modulo esterno come il modulo ULN2003 come driver del motore passo-passo.
In questo progetto, useremo l'IC del driver del motore ULN2003. Di seguito è riportato il diagramma dei pin dell'IC:
I pin (da IN1 a IN7) sono pin di ingresso per il collegamento dell'uscita del microcontrollore e da OUT1 a OUT7 sono i pin di uscita corrispondenti per il collegamento dell'ingresso dei motori passo-passo. COM viene fornita Tensione sorgente positiva richiesta per i dispositivi di uscita e per la sorgente di alimentazione esterna in ingresso.
Schema elettrico
Schema del circuito per l'interfacciamento motore passo a passo con ARM-7 LPC2148 seguito viene fornita
ARM7-LPC2148 con IC driver motore ULN2003
I pin GPIO di LPC2148 (da P0.7 a P0.10) sono considerati pin di uscita collegati ai pin di ingresso (IN1-IN4) dell'IC ULN2003.
Pin LPC2148 |
PERNI DI ULN2003 IC |
P0.7 |
IN 1 |
P0.8 |
IN 2 |
P0.9 |
IN3 |
P.10 |
IN4 |
5V |
COM |
GND |
GND |
Collegamenti dell'IC ULN2003 con motore passo-passo (28BYJ-48)
I pin di uscita (OUT1-OUT4) dell'IC ULN2003 sono collegati ai pin dei motori passo-passo (blu, rosa, giallo e arancione).
ULN2003 IC PINS |
PERNI DEL MOTORE PASSO-PASSO |
OUT1 |
BLU |
OUT2 |
ROSA |
OUT3 |
GIALLO |
OUT4 |
ARANCIA |
COM |
ROSSO (+ 5V) |
LED con IN1 a IN4 di ULN2003
Quattro pin dell'anodo LED (LED1, LED2, LED4, LED 4) sono collegati rispettivamente ai pin IN1, IN2, IN3 e IN4 di ULN2003 e il catodo dei LED è collegato a GND, che indica gli impulsi dall'LPC2148. Possiamo notare l'andamento degli impulsi forniti. Lo schema è mostrato nel video dimostrativo allegato alla fine.
Programmazione ARM7-LPC2148 per motore passo-passo
Per programmare ARM7-LPC2148 abbiamo bisogno dello strumento keil uVision e Flash Magic. Stiamo utilizzando il cavo USB per programmare ARM7 Stick tramite la porta micro USB. Scriviamo il codice usando Keil e creiamo un file esadecimale, quindi il file HEX viene aggiornato su ARM7 stick usando Flash Magic. Per saperne di più sull'installazione di keil uVision e Flash Magic e su come usarli, segui il link Primi passi con il microcontrollore ARM7 LPC2148 e programmalo usando Keil uVision.
Il codice completo per il controllo del motore passo-passo con ARM 7 è fornito alla fine di questo tutorial, qui ne spieghiamo alcune parti.
1. Per utilizzare il metodo FASE-ONE COMPLETO ON dobbiamo includere il comando seguente. Quindi usiamo la seguente riga nel programma
carattere senza segno in senso orario = {0x1,0x2,0x4,0x8}; // Comandi per la rotazione in senso orario unsigned char antiorario = {0x8,0x4,0x2,0x1}; // Comandi per la rotazione in senso antiorario
2. Le seguenti righe vengono utilizzate per inizializzare i pin PORT0 come output e impostarli su LOW
PINSEL0 = 0x00000000; // Impostazione dei pin PORT0 IO0DIR - = 0x00000780; // Impostazione dei pin P0.7, P0.8, P0.9, P0.10 come OUTPUT IO0CLR = 0x00000780; // Impostando P0.7, P0.8, P0.9, P0.10 pin OUTPUT su BASSO
3. Impostare i pin PORT (da P0.7 a P0.10) su ALTO in base ai comandi in senso orario utilizzando questo per loop con ritardo
for (int j = 0; j
Lo stesso per Anti-clock Wise
for (int z = 0; z
4. Modificare il tempo di ritardo per modificare la velocità di rotazione del motore passo-passo
ritardo (0x10000); // Cambia questo valore per cambiare la velocità di rotazione (0x10000) -Full speed (0x50000) -Gets slow (0x90000) -Gets slow rispetto al precedente. Quindi aumentando il ritardo si riduce la velocità di rotazione.
5. Il numero di passaggi per una rotazione completa può essere modificato con il codice seguente
int no_of_steps = 550; // Modifica questo valore per il numero richiesto di passaggi di rotazione (550 fornisce una rotazione completa)
Per il mio motore passo-passo, ho ottenuto 550 passi per la rotazione completa e 225 per la mezza rotazione. Quindi modificalo in base alle tue esigenze.
6. Questa funzione viene utilizzata per creare il tempo di ritardo.
void delay (unsigned int value) // Funzione per generare delay { unsigned int z; per (z = 0; z
Di seguito viene fornito il codice completo con il video dimostrativo.