- Materiales necesarios
- Motor paso a paso (28BYJ-48)
- IC del controlador de motor ULN2003
- Diagrama de circuito y conexiones
- Motor paso a paso giratorio con STM32F103C8
- PROGRAMACIÓN STM32 para motor paso a paso
El motor paso a paso es un motor de CC sin escobillas, que se puede girar en ángulos pequeños, estos ángulos se denominan pasos. En general, el motor paso a paso usa 200 pasos para completar la rotación de 360 grados, lo que significa que gira 1.8 grados por paso. El motor paso a paso se utiliza en muchos dispositivos que necesitan un movimiento de rotación preciso como robots, antenas, discos duros, etc. Podemos rotar el motor paso a paso en cualquier ángulo en particular dándole las instrucciones adecuadas. Están disponibles principalmente dos tipos de motores paso a paso, unipolar y bipolar. Unipolar es más fácil de operar, controlar y también más fácil de conseguir. Aquí, en este tutorial, estamos interconectando el motor paso a paso con la placa STM32F103C8 (píldora azul).
Materiales necesarios
- STM32F103C8 (pastilla azul)
- Motor paso a paso (28BYJ-48)
- ULN2003 IC
- Potenciómetro 10k
- Tablero de circuitos
- Cables de puente
Motor paso a paso (28BYJ-48)
28BYJ-48 es un motor paso a paso unipolar que requiere un suministro de 5V. El motor tiene una disposición unipolar de 4 bobinas y cada bobina está clasificada para + 5V, por lo que es relativamente fácil de controlar con cualquier microcontrolador como Arduino, Raspberry Pi y STM32. Pero necesitamos un Motor Drive IC como ULN2003 para conducirlo, porque los motores paso a paso consume mucha corriente y puede dañar los microcontroladores.
Otro dato importante a tener en cuenta es el ángulo de zancada: 5.625 ° / 64. Esto significa que el motor, cuando funciona en una secuencia de 8 pasos, se moverá 5.625 grados por cada paso y tomará 64 pasos (5.625 * 64 = 360) para completar una rotación completa. Otras especificaciones se proporcionan en la hoja de datos a continuación:
También verifique la interfaz con el motor paso a paso con otros microcontroladores:
- Interfaz del motor paso a paso con Arduino Uno
- Control de motor paso a paso con Raspberry Pi
- Interfaz de motor paso a paso con microcontrolador 8051
- Interfaz del motor paso a paso con el microcontrolador PIC
El motor paso a paso también se puede controlar sin ningún microcontrolador, consulte este Circuito controlador de motor paso a paso.
IC del controlador de motor ULN2003
Se utiliza para impulsar el motor de acuerdo con los pulsos recibidos del microcontrolador. A continuación se muestra el diagrama de imagen de ULN2003:
Los pines (IN1 a IN7) son pines de entrada y (OUT 1 a OUT 7) son pines de salida correspondientes. COM recibe voltaje de fuente positivo requerido para dispositivos de salida. Más conexiones para el motor paso a paso se dan a continuación en la sección del diagrama de circuito.
Diagrama de circuito y conexiones
A continuación se muestra la explicación de las conexiones para el diagrama de circuito anterior.
STM32F103C8 (píldora azul)
Como podemos ver en el diagrama a continuación, los pines PWM se indican en formato de onda (~), hay 15 pines de este tipo que se pueden usar para la salida de pulsos al motor paso a paso. Solo necesitamos cuatro pines, usamos (PA0 toPA3).
STM32F103C8 con controlador de motor ULN2003 IC
Los pines (PA0 a PA3) se consideran pines de salida que están conectados con los pines de entrada (IN1-IN4) del ULN2003 IC.
PINES DE STM32F103C8 |
PINES DE ULN2003 IC |
PA0 |
EN 1 |
PA1 |
EN 2 |
PA2 |
EN 3 |
PA3 |
IN4 |
5V |
COM |
GND |
GND |
ULN2003 IC con motor paso a paso (28BYJ-48)
Los pines de salida (OUT1-OUT4) de ULN2003 IC están conectados a los pines de los motores paso a paso (naranja, amarillo, rosa y azul).
PINES DE ULN2003 IC |
PASADORES DE MOTOR PASO A PASO |
OUT1 |
NARANJA |
OUT2 |
AMARILLO |
OUT3 |
ROSADO |
OUT4 |
AZUL |
COM |
ROJO |
STM32F103C8 con potenciómetro
Se utiliza un potenciómetro para ajustar la velocidad del motor paso a paso.
POTENCIÓMETRO |
STM32F103C8 |
IZQUIERDA (ENTRADA) |
3.3 |
CENTRO (SALIDA) |
PA4 |
DERECHA (GND) |
GND |
Motor paso a paso giratorio con STM32F103C8
A continuación se muestran algunos pasos para operar el motor paso a paso:
- Ajuste la velocidad del motor paso a paso variando el potenciómetro.
- Luego ingrese manualmente los pasos para la rotación, ya sea en el sentido de las agujas del reloj (+ valores) o en el sentido contrario a las agujas del reloj (-valores) a través del MONITOR DE SERIE presente en ARDUINO IDE (Herramientas-> Monitor de serie) o CTRL + SHIFT + M.
- Según el valor de entrada dado en el monitor en serie, ciertos pasos de rotación tienen lugar en el motor paso a paso.
Por ejemplo
VALOR DADO EN SERIE MONITER |
ROTACIÓN |
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ÓN STM32 para motor paso a paso
Como en el tutorial anterior, programamos el STM32F103C8 con Arduino IDE a través del puerto USB sin usar el programador FTDI. Para aprender a programar STM32 con Arduino IDE, siga el enlace. Podemos proceder a programarlo como un Arduino. El código completo se proporciona al final del proyecto.
Primero tenemos que incluir los archivos de la biblioteca paso a paso #include
#incluir
Entonces definimos no. de pasos para completar en rotación, aquí usamos 32 porque estamos usando Paso completo (secuencia de 4 pasos), entonces (360/32 = 11,25 grados). Entonces, para un paso, el eje se mueve 11.25 grados que es el ángulo de zancada. En la secuencia de 4 pasos, se requieren 4 pasos para una rotación completa.
#define PASOS 32
También podemos usar el modo de medio paso donde hay una secuencia de 8 pasos (360/64 = 5.625) de ángulo de zancada.
Pasos por revolución = 360 / ÁNGULO DE PASO
Como estamos configurando la velocidad debemos tomar el valor analógico de PA4 que está conectado al potenciómetro. Entonces debemos declarar pin para eso
const int speedm = PA4
Luego, hemos convertido el valor analógico en digital almacenando esos valores en una variable de tipo entero, después de eso tenemos que mapear los valores de ADC para configurar la velocidad, por lo que usamos la siguiente declaración. Obtenga más información sobre el uso de ADC con STM32 aquí.
int adc = analogRead (speedm); int resultado = mapa (adc , 0, 4096, 1, 1023);
Para establecer la velocidad, usamos stepper.setSpeed (result); Tenemos un rango de velocidad de (1-1023).
Debemos crear una instancia como la siguiente para configurar los pines que están conectados al motor. Tenga cuidado con estos pasos ya que la mayoría de ellos cometen un error aquí en este patrón. Dan un patrón incorrecto y debido a eso las bobinas no se pueden energizar.
Paso a paso (STEPS, PA0, PA2, PA1, PA3);
La siguiente declaración se utiliza para obtener el valor de los pasos del monitor en serie. Por ejemplo, necesitamos 2048 valores para una rotación completa (32 * 64 = 2048) que es 64 será la relación de transmisión y 32 será la secuencia de medio paso para una rotación.
rotar = Serial.parseInt ();
El siguiente código se usa para llamar a la instancia y hacer funcionar el motor. Si el valor de rotación es 1, llama a la función paso a paso una vez y se realiza un movimiento.
stepper.step (rotar);
A continuación se proporciona el código completo con el video de demostración. También verifique todos los proyectos relacionados con motores paso a paso aquí, con interfaz con varios otros microcontroladores