- Materials necessaris
- Motor pas a pas (28BYJ-48)
- IC del controlador de motor ULN2003
- Diagrama de circuits i connexions
- Motor pas a pas giratori amb STM32F103C8
- PROGRAMACIÓ STM32 per a 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. En general, el motor pas a pas utilitza 200 passos per completar la rotació de 360 graus, cosa que significa que gira 1,8 graus per pas. El motor pas a pas s’utilitza en molts dispositius que necessiten un moviment de rotació precís, com ara robots, antenes, discs durs, etc. Podem girar el motor pas a pas a qualsevol angle particular donant-li les instruccions adequades. Principalment hi ha disponibles dos tipus de motors pas a pas, unipolars i bipolars. Unipolar és més fàcil d’operar, controlar i també d’obtenir. Aquí, en aquest tutorial, estem relacionant el motor pas a pas amb la placa STM32F103C8 (píndola blava).
Materials necessaris
- STM32F103C8 (pastilla blava)
- Motor pas a pas (28BYJ-48)
- ULN2003 IC
- Potenciòmetre 10k
- Taula de pa
- Filferros de pont
Motor pas a pas (28BYJ-48)
28BYJ-48 é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, per la qual cosa és relativament fàcil de controlar amb qualsevol microcontrolador com Arduino, Raspberry Pi i STM32. consumeix un alt corrent i pot danyar els microcontroladors.

Una altra dada important que cal notar és l’ angle de pas: 5,625 ° / 64. Això vol dir que el motor, quan funciona en seqüència de 8 passos, es mourà 5,625 graus per a cada pas i prendrà 64 passos (5,625 * 64 = 360) per completar una rotació completa. Altres especificacions 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
El motor pas a pas també es pot controlar sense cap microcontrolador, consulteu aquest Circuit de control de motor pas a pas.
IC del controlador de motor ULN2003
S'utilitza per accionar el motor segons els impulsos rebuts del microcontrolador. A continuació es mostra el diagrama d’imatges de l’ULN2003:

Els pins (IN1 a IN7) són pins d'entrada i (OUT 1 a OUT 7) són pins de sortida corresponents. COM es dóna Voltatge de font positiu necessari per als dispositius de sortida. A la secció del diagrama de circuits es donen més connexions per al motor pas a pas.
Diagrama de circuits i connexions

A continuació es mostra l'explicació de les connexions del diagrama de circuits anterior.
STM32F103C8 (pastilla blava)
Com podem veure al diagrama següent, els pins PWM estan indicats en format d'ona (~), hi ha 15 pins que es poden utilitzar per a la sortida d'impulsos al motor pas a pas. Només necessitem quatre passadors, els fem servir (PA0 a PA3).

STM32F103C8 amb CI de controlador de motor ULN2003
Els pins (PA0 a PA3) es consideren pins de sortida connectats amb pins d'entrada (IN1-IN4) de l'IC ULN2003.
|
PINS DE STM32F103C8 |
PINS DE ULN2003 IC |
|
PA0 |
IN1 |
|
PA1 |
IN2 |
|
PA2 |
IN3 |
|
PA3 |
IN4 |
|
5V |
COM |
|
GND |
GND |
IC ULN2003 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 (taronja, groc, rosa i blau).
|
PINS DE ULN2003 IC |
PINXES DEL MOTOR PASSEIG |
|
OUT1 |
TARONJA |
|
OUT2 |
GROC |
|
OUT3 |
ROSA |
|
OUT4 |
BLAU |
|
COM |
VERMELL |
STM32F103C8 amb potenciòmetre
S’utilitza un potenciòmetre per configurar la velocitat del motor pas a pas.
|
POTENCIOMMETRE |
STM32F103C8 |
|
ESQUERRA (ENTRADA) |
3.3 |
|
CENTRE (SORTIDA) |
PA4 |
|
DRETA (GND) |
GND |
Motor pas a pas giratori amb STM32F103C8
A continuació es mostren alguns passos per fer funcionar el motor pas a pas:
- Estableix la velocitat del motor pas a pas variant el potenciòmetre.
- A continuació, introduïu manualment els passos de rotació en sentit horari (+ valors) o en sentit antihorari (-valors) mitjançant MONITRE SERIAL present a IDE ARDUINO (Eines-> Monitor sèrie) o CTRL + MAJÚS + M.
- Segons el valor d'entrada donat al monitor sèrie, certs passos de rotació tenen lloc al motor pas a pas.
Per exemple
|
VALOR DONAT EN MONITRE EN SERIE |
ROTACIÓ |
|
2048 |
(360) CLK WISE |
|
1024 |
(180) CLK WISE |
|
512 |
(90) CLK WISE |
|
-2048 |
(-360) ANTI CLK WISE |
|
-1024 |
(-180) ANTI CLK WISE |
|
-512 |
(-90) ANTI CLK WISE |

PROGRAMACIÓ STM32 per a motor pas a pas
Igual que el tutorial anterior, vam programar el STM32F103C8 amb Arduino IDE a través del port USB sense utilitzar el programador FTDI. Per obtenir informació sobre la programació de STM32 amb Arduino IDE, seguiu l'enllaç. Podem continuar programant-lo com un Arduino. Es dóna un codi complet al final del projecte.
Primer hem d’incloure els fitxers de la biblioteca pas a pas #include
#incloure
Després definim que no. de passos a completar a la rotació, aquí fem servir 32 perquè estem fent servir un pas complet (seqüència de 4 passos) (360/32 = 11,25 graus) Per tant, per un pas, l’eix es mou a 11,25 graus que és l’angle de pas. En la seqüència de 4 passos, es necessiten 4 passos per a una rotació completa.
#define PASS 32
També podem utilitzar el mode de mig pas on hi ha un angle de pas de seqüència de 8 passos (360/64 = 5.625).
Passos per revolució = 360 / ANGLE DE PAS
A mesura que estem configurant la velocitat, hem de prendre un valor analògic de PA4 que està connectat al potenciòmetre. Per tant, hem de declarar el PIN per a això
const int speedm = PA4
A continuació, hem convertit el valor analògic en digital emmagatzemant aquests valors en una variable de tipus enter, després hem de mapar els valors ADC per establir la velocitat de manera que fem servir la sentència següent. Obteniu més informació sobre l’ús d’ADC amb STM32 aquí.
int adc = analogRead (speedm); int result = mapa (adc , 0, 4096, 1, 1023);
Per configurar la velocitat, fem servir stepper.setSpeed (result); Tenim un rang de velocitat de (1-1023).
Hem de crear una instància com la següent per configurar els pins connectats al motor. Aneu amb compte en aquests passos, ja que la majoria d'ells cometen un error en aquest patró. Donen un patró equivocat i, per això, les bobines no es poden energitzar.
Stepper stepper (STEPS, PA0, PA2, PA1, PA3);
La sentència següent s'utilitza per obtenir el valor dels passos des del monitor sèrie. Per exemple, necessitem 2048 valors per a una rotació completa (32 * 64 = 2048), és a dir, 64 serà la relació d'engranatges i 32 serà una seqüència de mig pas per a una rotació.
rotate = Serial.parseInt ();
Sota el codi s'utilitza per trucar a la instància i fer funcionar el motor. Si el valor de rotació és 1, es crida a la funció pas a pas una vegada i es fa un moviment.
stepper.step (girar);
A continuació es mostra el codi complet amb el vídeo de demostració. Consulteu també tots els projectes relacionats amb el motor pas a pas aquí, amb la interfície amb altres microcontroladors
