- Motor pas a pas
- Gir d'un motor pas a pas AMB ARM7-LPC2148
- Components necessaris
- Motor pas a pas (28BYJ-48)
- Controlador de motor pas a pas ULN2003
- Esquema de connexions
- Programació ARM7-LPC2148 per a motor pas a pas
Al món de l'automatització actual, el motor pas a pas i el servomotor són els motors més utilitzats en sistemes incrustats. Tots dos s'utilitzen en diverses màquines d'automatització com braços robòtics, màquina CNC, càmeres, etc. En aquest tutorial veurem com connectar el motor de passos amb ARM7-LPC2148 i la forma de controlar la velocitat de la mateixa. Si no sou nou a ARM7, comenceu per aprendre sobre ARM7-LPC2148 i les seves eines de programació.
Motor pas a pas
El motor pas a pas és un motor de corrent continu sense escombretes, que es pot girar en petits angles, aquests angles es diuen passos. Podem girar el motor pas a pas donant polsos digitals als seus pins. Els motors pas a pas són econòmics i tenen un disseny robust. La velocitat del motor es pot controlar canviant la freqüència dels polsos digitals.

Hi ha dos tipus de motors pas a pas disponibles segons el tipus de bobinatge de l’estator: UNIPOLAR i BIPOLAR. Aquí fem servir el motor pas a pas UNIPOLAR, que és el motor pas a pas més utilitzat . Per girar el motor pas a pas hem d’energitzar les bobines del motor pas a pas en una seqüència. Segons el funcionament de rotació, es classifiquen en dos modes:
- Mode de pas complet: (seqüència de 4 passos)
- Escalonament monofàsic (STEVE STEPPING)
- Escalonament bifàsic
- Mode de mig pas (seqüència de 8 passos)
Per obtenir més informació sobre el motor pas a pas i el seu funcionament, seguiu l'enllaç.
Gir d'un motor pas a pas AMB ARM7-LPC2148

Aquí utilitzarem el mode PAS COMPLET: UNA FASE O PAS EN ONDA per girar el motor pas a pas amb ARM7-LPC2148
En aquest mètode, energitzarem només una bobina (un pin de LPC2148) a la vegada. És a dir, si la primera bobina A s’energia durant un temps reduït, l’eix canviarà de posició i, a continuació, la bobina B s’energia durant el mateix temps i l’eix canviarà de nou de posició. Igual que això, la bobina C i la bobina D s’energitzen per moure l’eix més enllà. Això fa que l’eix del motor pas a pas giri de manera pas a pas mitjançant l’energia d’una bobina a la vegada.
Mitjançant aquest mètode girem l’eix pas a pas mitjançant l’energia de la bobina en una seqüència. Això s’anomena seqüències de quatre passos, ja que fa quatre passos.
Podeu girar el motor pas a pas mitjançant el mètode HALF STEP (mètode de 8 seqüències) segons els valors que es donen a continuació.
|
Pas |
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 |
Components necessaris
Maquinari:
- ARM7-LPC2148
- IC del controlador de motor ULN2003
- LED - 4
- MOTOR STEPPER (28BYJ-48)
- PANELL
- CONNEXIÓ DE CABLES
Programari:
- Keil uVision5
- Eina de màgia flàsica
Motor pas a pas (28BYJ-48)
El motor pas a pas 28BYJ-48 ja es mostra a la imatge superior. És un motor pas a pas unipolar que requereix subministrament de 5 V. El motor té una disposició unipolar de 4 bobines i cada bobina està classificada per a + 5V, de manera que és relativament fàcil de controlar amb qualsevol microcontrolador com Arduino, Raspberry Pi, STM32, ARM, etc.
Però necessitem un IC de transmissió com ULN2003 per accionar-lo, perquè els motors pas a pas consumeixen un alt corrent i poden danyar els microcontroladors.
Les especificacions de 28BYJ-48 es proporcionen a la fitxa tècnica següent:

Comproveu també la interfície amb el motor pas a pas amb altres microcontroladors:
- Interfície del motor pas a pas amb Arduino Uno
- Control del motor pas a pas amb Raspberry Pi
- Interfície del motor pas a pas amb el microcontrolador 8051
- Interfase de motor pas a pas amb microcontrolador PIC
- Interfície del motor pas a pas amb MSP430G2
El motor pas a pas també es pot controlar sense cap microcontrolador, consulteu aquest Circuit de control de motor pas a pas.
Controlador de motor pas a pas ULN2003
La majoria dels motors pas a pas només funcionaran amb l'ajut d'un mòdul de controlador. Això es deu al fet que el mòdul de controlador (en el nostre cas LPC2148) no podrà proporcionar prou intensitat dels seus pins d'E / S perquè el motor funcioni. Per tant, utilitzarem un mòdul extern com el mòdul ULN2003 com a controlador de motor pas a pas.
En aquest projecte, farem servir el controlador IC del motor ULN2003. A continuació es mostra el diagrama de pin de IC:

Els pins (IN1 a IN7) són pins d'entrada per connectar la sortida del microcontrolador i OUT1 a OUT7 són els pins de sortida corresponents per connectar l'entrada de motors pas a pas. COM es dóna Tensió de font positiva necessària per als dispositius de sortida i per a la font d’entrada d’alimentació externa.
Esquema de connexions
Diagrama de circuit per a la interconnexió de l'motor de passos amb ARM-7 LPC2148 es dóna a continuació


ARM7-LPC2148 amb CI de controlador de motor ULN2003
Els pins GPIO de LPC2148 (P0.7 a P0.10) es consideren pins de sortida connectats amb pins d’entrada (IN1-IN4) de l’IC ULN2003.
|
LPC2148 Pins |
PINS DE ULN2003 IC |
|
P0.7 |
IN1 |
|
P0.8 |
IN2 |
|
P0.9 |
IN3 |
|
P.10 |
IN4 |
|
5V |
COM |
|
GND |
GND |
Connexions de l'ULN2003 IC amb motor pas a pas (28BYJ-48)
Els pins de sortida (OUT1-OUT4) del ULN2003 IC estan connectats als pins dels motors pas a pas (blau, rosa, groc i taronja).
|
PINS IC ULN2003 |
PINXES DEL MOTOR PASSEIG |
|
OUT1 |
BLAU |
|
OUT2 |
ROSA |
|
OUT3 |
GROC |
|
OUT4 |
TARONJA |
|
COM |
VERMELL (+ 5 V) |
LEDs amb IN1 a IN4 de ULN2003
Quatre pins d'ànode (LED1, LED2, LED4, LED 4) estan connectats amb els pins IN1, IN2, IN3 i IN4 d'ULN2003 respectivament i el càtode dels LEDs està connectat a GND, que indica els impulsos del LPC2148. Podem observar el patró dels polsos proporcionats. El patró es mostra al vídeo de demostració adjunt al final.
Programació ARM7-LPC2148 per a motor pas a pas
Per programar ARM7-LPC2148 necessitem l'eina keil uVision i Flash Magic. Estem utilitzant un cable USB per programar ARM7 Stick mitjançant un port micro USB. Escrivim codi amb Keil i creem un fitxer hexadecimal i, a continuació, el fitxer HEX es converteix en un pal ARM7 mitjançant Flash Magic. Per obtenir més informació sobre com instal·lar keil uVision i Flash Magic i com utilitzar-los, seguiu l’enllaç Introducció al microcontrolador ARM7 LPC2148 i programeu-lo mitjançant Keil uVision.
El codi complet per controlar el motor pas a pas amb ARM 7 es dóna al final d’aquest tutorial, aquí en detallem algunes parts.
1. Per utilitzar el mètode FASE ON ONE STEP-ONE, hem d'incloure l'ordre següent. Per tant, fem servir la següent línia al programa
caràcter sense signe en sentit horari = {0x1,0x2,0x4,0x8}; // Ordres de rotació en sentit horari sense signe en sentit antihorari = {0x8,0x4,0x2,0x1}; // Ordres de rotació en sentit antihorari
2. Les línies següents s’utilitzen per inicialitzar els pins PORT0 com a sortida i establir-los a BAIX
PINSEL0 = 0x00000000; // Configuració de pins PORT0 IO0DIR - = 0x00000780; // Configuració dels pins P0.7, P0.8, P0.9, P0.10 com a OUTOUT IO0CLR = 0x00000780; // Configuració de P0.7, P0.8, P0.9, P0.10 pins OUTPUT com BAIX
3. setembre els pins del port (P0.7 a P0.10) d'altura d'acord sentit horari ordres A l'usar aquest per bucle amb retard
per a (int j = 0; j
El mateix per a Anti-clock Wise
per a (int z = 0; z
4. Canvieu el temps de retard per canviar la velocitat de rotació del motor pas a pas
retard (0x10000); // Canviar aquest valor per canviar la velocitat de rotació (0x10000) Velocitat-Full (0x50000) -Gets lenta (0x90000) -Gets lent que els anteriors. Així, augmentant el retard , reduïm la velocitat de rotació.
5. El nombre de passos per a una rotació completa es pot canviar amb el codi següent
int no_of_steps = 550; // Canvieu aquest valor pel nombre de passos necessari (550 dóna una rotació completa)
Per al meu motor pas a pas, he obtingut 550 esglaons per a una rotació completa i 225 per a una mitja rotació. Canvieu-lo segons els vostres requisits.
6. Aquesta funció s'utilitza per crear temps de retard.
void delay (valor int signat) // Funció per generar delay { unsigned int z; per a (z = 0; z
A continuació es mostra el codi complet amb el vídeo de demostració.
