- Motor paso a paso
- Rotación de un motor paso a paso CON ARM7-LPC2148
- Componentes requeridos
- Motor paso a paso (28BYJ-48)
- Controlador de motor paso a paso ULN2003
- Diagrama de circuito
- Programación de ARM7-LPC2148 para motor paso a paso
En el mundo de la automatización actual, el motor paso a paso y el servomotor son los dos motores más utilizados en sistemas integrados. Ambos se utilizan en varias máquinas de automatización como brazos robóticos, máquinas CNC, cámaras, etc. En este tutorial veremos cómo conectar el motor paso a paso con ARM7-LPC2148 y cómo controlar la velocidad del mismo. Si es nuevo en ARM7, comience por aprender sobre ARM7-LPC2148 y sus herramientas de programación.
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. Podemos rotar el motor paso a paso paso a paso dando pulsos digitales a sus pines. Los motores paso a paso son económicos y tienen un diseño resistente. La velocidad del motor se puede controlar cambiando la frecuencia de los pulsos digitales.
Hay dos tipos de motores paso a paso disponibles según el tipo de devanado del estator: UNIPOLAR y BIPOLAR. Aquí estamos usando un motor paso a paso UNIPOLAR, que es el motor paso a paso más utilizado . Para rotar el motor paso a paso, necesitamos energizar las bobinas del motor paso a paso en una secuencia. Según la operación de rotación, se clasifican en dos modos:
- Modo de paso completo: (secuencia de 4 pasos)
- Monofásico en pasos (PASO DE ONDA)
- Dos fases en el paso
- Modo de medio paso (secuencia de 8 pasos)
Para saber más sobre el motor paso a paso y su funcionamiento, siga el enlace.
Rotación de un motor paso a paso CON ARM7-LPC2148
Aquí usaremos FULL STEP: ONE PHASE ON o WAVE STEPPING para rotar el motor paso a paso con ARM7-LPC2148
En este método, energizaremos solo una bobina (un pin de LPC2148) a la vez. Es decir, si la primera bobina A se activa durante un tiempo breve, el eje cambiará de posición y luego la bobina B se activará durante el mismo tiempo y el eje volverá a cambiar de posición. Igual que esto, la bobina C y luego la bobina D se energizan para mover el eje más. Esto hace que el eje del motor paso a paso gire paso a paso energizando una bobina a la vez.
Con este método, giramos el eje paso a paso energizando la bobina en una secuencia. Esto se llama secuencias de cuatro pasos, ya que requiere cuatro pasos.
Puede girar el motor paso a paso utilizando el método HALF STEP (método de 8 secuencias) de acuerdo con los valores que se indican a continuación.
Paso |
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 |
Componentes requeridos
Hardware:
- ARM7-LPC2148
- IC del controlador de motor ULN2003
- LED - 4
- MOTOR PASO A PASO (28BYJ-48)
- TABLERO DE CIRCUITOS
- CONECTANDO CABLES
Software:
- Keil uVision5
- Herramienta mágica Flasic
Motor paso a paso (28BYJ-48)
El motor paso a paso 28BYJ-48 ya se muestra en la imagen de arriba. Es un motor paso a paso unipolar que requiere suministro de 5V. El motor tiene una disposición unipolar de 4 bobinas y cada bobina tiene una capacidad nominal de + 5 V, por lo que es relativamente fácil de controlar con cualquier microcontrolador como Arduino, Raspberry Pi, STM32, ARM, etc.
Pero necesitamos un IC de accionamiento de motor como el ULN2003 para impulsarlo, porque los motores paso a paso consumen mucha corriente y pueden dañar los microcontroladores.
Las especificaciones de 28BYJ-48 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
- Interfaz del motor paso a paso con MSP430G2
El motor paso a paso también se puede controlar sin ningún microcontrolador, consulte este Circuito controlador de motor paso a paso.
Controlador de motor paso a paso ULN2003
La mayoría de los motores paso a paso funcionarán solo con la ayuda de un módulo de controlador. Esto se debe a que el módulo controlador (en nuestro caso LPC2148) no podrá proporcionar suficiente corriente desde sus pines de E / S para que funcione el motor. Así que usaremos un módulo externo como el módulo ULN2003 como controlador de motor paso a paso.
En este proyecto, utilizaremos el controlador de motor ULN2003 IC. El diagrama de pines del IC se muestra a continuación:
Los pines (IN1 a IN7) son pines de entrada para conectar la salida del microcontrolador y OUT1 a OUT7 son los pines de salida correspondientes para conectar la entrada de motores paso a paso. COM recibe voltaje de fuente positivo requerido para dispositivos de salida y para fuente de entrada de energía externa.
Diagrama de circuito
El diagrama de circuito para interconectar el motor paso a paso con ARM-7 LPC2148 se muestra a continuación
ARM7-LPC2148 con IC de controlador de motor ULN2003
Los pines GPIO de LPC2148 (P0.7 a P0.10) se consideran pines de salida que están conectados con pines de entrada (IN1-IN4) del IC ULN2003.
Pines LPC2148 |
PINES DE ULN2003 IC |
P0.7 |
EN 1 |
P0.8 |
EN 2 |
P0.9 |
EN 3 |
P.10 |
IN4 |
5V |
COM |
GND |
GND |
Conexiones de 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 (azul, rosa, amarillo y naranja).
PINES IC ULN2003 |
PASADORES DE MOTOR PASO A PASO |
OUT1 |
AZUL |
OUT2 |
ROSADO |
OUT3 |
AMARILLO |
OUT4 |
NARANJA |
COM |
ROJO (+ 5V) |
LEDs con IN1 a IN4 de ULN2003
Cuatro pines de ánodo de LED (LED1, LED2, LED4, LED 4) están conectados con los pines IN1, IN2, IN3 e IN4 de ULN2003 respectivamente y el cátodo de los LED está conectado a GND, que indica los pulsos del LPC2148. Podemos notar el patrón de los pulsos proporcionados. El patrón se muestra en el video de demostración adjunto al final.
Programación de ARM7-LPC2148 para motor paso a paso
Para programar ARM7-LPC2148 necesitamos la herramienta keil uVision y Flash Magic. Estamos usando un cable USB para programar ARM7 Stick a través del puerto micro USB. Escribimos código usando Keil y creamos un archivo hexadecimal y luego el archivo HEX se actualiza a la barra ARM7 usando Flash Magic. Para saber más sobre la instalación de keil uVision y Flash Magic y cómo usarlos, siga el enlace Comenzando con el microcontrolador ARM7 LPC2148 y prográmelo usando Keil uVision.
El código completo para controlar el motor paso a paso con ARM 7 se proporciona al final de este tutorial, aquí explicamos algunas partes.
1. Para usar el método FULL STEP-ONE PHASE ON necesitamos incluir el siguiente comando. Entonces usamos la siguiente línea en el programa
carácter sin firmar en el sentido de las agujas del reloj = {0x1,0x2,0x4,0x8}; // Comandos para la rotación en sentido horario unsigned char antihorario = {0x8,0x4,0x2,0x1}; // Comandos para rotación en sentido antihorario
2. Las siguientes líneas se utilizan para inicializar los pines PORT0 como salida y configurarlos en LOW
PINSEL0 = 0x00000000; // Configuración de pines PORT0 IO0DIR - = 0x00000780; // Configuración de los pines P0.7, P0.8, P0.9, P0.10 como SALIDA IO0CLR = 0x00000780; // Configurando P0.7, P0.8, P0.9, P0.10 pines SALIDA como BAJA
3. Configure los pines PORT (P0.7 a P0.10) HIGH de acuerdo con los comandos en sentido horario usando esto para bucle con retardo
para (int j = 0; j
Lo mismo para Anti-clock Wise
para (int z = 0; z
4. Cambie el tiempo de retardo para cambiar la velocidad de rotación del motor paso a paso.
retraso (0x10000); // Cambie este valor para cambiar la velocidad de rotación (0x10000) -Velocidad total (0x50000) -Se vuelve lento (0x90000) -Se vuelve más lento que el anterior. Entonces, al aumentar el retraso , disminuimos la velocidad de rotación.
5. El número de pasos para una rotación completa se puede cambiar con el siguiente código
int no_of_steps = 550; // Cambie este valor para el número requerido de pasos de rotación (550 da una rotación completa)
Para mi motor paso a paso, obtuve 550 pasos para una rotación completa y 225 para media rotación. Así que cámbielo según sus requisitos.
6. Esta función se utiliza para crear un tiempo de retraso.
void delay (unsigned int value) // Función para generar delay { unsigned int z; para (z = 0; z
A continuación se proporciona el código completo con el video de demostración.