Interfaz del motor paso a paso con el STM32F103C8T6

En este tutorial, te presentaré el proceso de interconexión del motor paso a paso con la MCU STM32F103C8T6 basado principalmente en la placa STM32 Blue Capsule. En primer lugar, daré una breve descripción de los motores paso a paso, sus tipos, sus estrategias de conducción y, por último, la forma correcta de interconectar un motor paso a paso con STM32.

[adsense1]

Introducción

Los motores paso a paso son uno de los muchos tipos vitales de motores utilizados en la industria, además de los fines industriales. Son sencillos motores sin escobillas que convierten los impulsos digitales en rotación angular.

La característica distintiva de un motor paso a paso es que cada revolución se divide en una variedad definida de pasos iguales, normalmente 200. Como hay 200 pasos para 360 de rotación, cada paso conducirá a una rotación de 1,8. Para pasar de un escalón a otro, hay que enviar un impulso distinto y la velocidad de rotación es directamente proporcional a la frecuencia de los impulsos.

[adsense2]

Otro factor vital para descubrir los motores paso a paso es que hay dos tipos de motores paso a paso. Son los motores paso a paso unipolares y los motores paso a paso bipolares. La principal distinción entre ambos es que en el motor paso a paso unipolar, cada pieza tiene un devanado con una toma central, mientras que en el motor paso a paso bipolar sólo puede haber un único devanado por pieza.

Otra distinción es la forma de empujar estos motores. Por la razón de que la polaridad del imán dentro de la bobina se invertirá en el tipo Unipolar, sin cambiar el recorrido real, conducirlos puede ser muy sencillo. Sólo quieres un controlador de motor fácil basado en transistores, como el CI ULN2003, por ejemplo.

Sin embargo, en el caso de los motores paso a paso bipolares, es difícil invertir la polaridad magnética en línea recta, ya que puede haber un solo bobinado por pieza. Normalmente, queremos un motor paso a paso bipolar de tipo puente H, como el CI L293D o el CI L298N, para accionar un motor paso a paso bipolar.

Interfaz del motor paso a paso con el STM32F103C8T6

En este reto, probablemente utilizaré un motor paso a paso unipolar fácil de 5V, en el que las derivaciones centrales de cada uno de los devanados están generalizadas. Por ello, el motor puede tener sólo 5 cables en lugar de seis.

Un tipo típico de motor paso a paso unipolar para aficionados que puede ser muy apreciado y de bajo coste es el 28BYJ-48. Si discutes con la hoja informativa de este motor, habla de que tiene una relación de transmisión de 64 y el ángulo de paso es de 5,625. Lo que esto implica es que el número deseado de pasos para una rotación es 360 / 5,625, que es lo mismo que 64.

Además, como la relación de transmisión es de 64, la variedad eficiente de pasos para el eje de salida es la de pasos por revolución multiplicada por la relación de transmisión, es decir, 64 * 64 = 4096.

En este reto, probablemente utilizaré este motor paso a paso junto con el CI controlador ULN2003 y lo ejecutaré con la MCU STM32. El reto consistirá probablemente en un barrido de rotación en el sentido de las agujas del reloj y en sentido contrario en un bucle.

Elementos necesarios

  • MCU STM32F103C8T6 basada principalmente en la placa STM32 Blue Capsule
  • motor paso a paso unipolar de 5V (5 hilos)
  • ULN2003 Driver IC
  • Cableado
  • Convertidor USB a UART (si se programa a través de UART)

Diagrama del circuito

La siguiente imagen muestra el diagrama del circuito de Interfaz del motor paso a paso con la MCU STM32F103C8T6.

Interfaz del motor paso a paso con el diagrama del circuito del STM32F103C8T6

Conexiones definidas

Primero, el cable rosa del motor paso a paso se conecta a 5V. A continuación, las 4 entradas primarias IN1 a IN4 del CI ULN2003 se conectan a PA0 a través de PA3. Las 4 salidas primarias del ULN2003, es decir, de OUT1 a OUT4, se conectan a los cables del motor paso a paso en el siguiente orden:

  • OUT1 -> Azul
  • OUT2 -> Rosa
  • OUT3 -> Amarillo
  • OUT4 -> Naranja

Además, une los terminales GND del ULN2003, el STM32 y la fuente de alimentación de 5V.

Programación de STM32 para la gestión de motores paso a paso

En primer lugar, elige los pines PA0 a PA3 como entradas del ULN2003 e inícialos como salidas del STM32.

Ahora utiliza una variable para indicar el rango más amplio de pasos como 4095. Lo que esto representa es la confianza para una rotación completa. Ahora asume la trayectoria preliminar en el sentido de las agujas del reloj y arranca el motor paso a paso utilizando el enfoque de medio paso.

En cuanto la dependencia de los pasos llega a 0, esto implica que el motor ha realizado una rotación. Ahora, da un pequeño retraso de uno o dos segundos y cambia la trayectoria en sentido contrario a las agujas del reloj. Restablece la dependencia de los pasos a la mayoría, es decir, 4095 e inicia la secuencia en orden inverso. El motor paso a paso empezará a girar de forma diferente. Repite este recorrido en bucle.

No hace falta una biblioteca en este código e incluso puedes modificar el código para que sólo acepte las entradas de las personas para elegir la variedad de caminos y pasos.

Si tienes un motor paso a paso especial, consulta su hoja de conocimientos y calcula el ángulo de paso, la relación de transmisión y toda la variedad de pasos necesarios para una rotación.

Código

#línea IN1 PA0
#línea IN2 PA1
#línea IN3 PA2
#línea IN4 PA3
int Pasos = 0;
camino booleano = verdadero;
tiempo de prevención unsigned long;
unsigned long chainMillis ;
int pasosIzquierda=4095;
mucho tiempo;
configuración inválida()
{
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
}
bucle vacío()
{
while(pasosIzquierda > 0)
{
currentMillis = micros();
if(currentMillis-prevTime >= 1000)
{
stepper(1);
tiempo = tiempo + micros() – prevTime;
prevTime = micros();
pasosIzquierda..;
}
}
retraso(2000);
Ruta=!Ruta;
stepsLeft=4095;
}

paso vacío(int x)
{
for (int i=0; i < x; i++)
{
intercambio(Passos)
{
caso 0:
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
pausa;
caso 1:
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, HIGH);
pausa;
cASO 2:
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
pausa;
cASO 3:
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
pausa;
caso 4:
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
pausa;
cASO 5:
digitalWrite(IN1, HIGH);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
pausa;
caso 6:
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
pausa;
caso 7:
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
pausa;
estándar:
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
pausa;
}
EstablecerDirección();
}
}
void EstablecerDirección()
{
if(Ruta===1)
{
Pasos +++;
}
if(Ruta==0)
{
Pasos..;
}
si(Pasos>7)
{
Pasos=0;
}
si(Pasos<0)
{
Pasos=7;
}
}

Conclusión

Aquí se realiza un sencillo reto para mostrar la interfaz del motor paso a paso con la MCU STM32F103C8T6 basada principalmente en la placa STM32 Blue Capsule.

Lee:  Uso y funciones de los diodos
Javired
Javired

Deja una respuesta

Tu dirección de correo electrónico no será publicada.