Motor paso a paso interfaz con Arduino
Qué es un motor paso a paso
El motor paso a paso es un motor de corriente continua sin escobillas que divide el ángulo de rotación completo de 360° en un número de pasos iguales. Las señales de control se aplican al motor paso a paso para girarlo en pasos. Otro tipo de motores son los motor DC.
El motor gira aplicando una determinada secuencia de señales de control. La velocidad de rotación se puede cambiar cambiando la velocidad a la que se aplican las señales de control.
Su velocidad de rotación depende de la velocidad a la que se aplican las señales de control. Hay varios motores paso a paso disponibles con un ángulo de paso mínimo requerido.
El motor paso a paso se compone principalmente de dos partes, un estator y un rotor. El estator es de bobinado en bobina y el rotor es en su mayoría de imán permanente o material ferromagnético.
Principio de funcionamiento del motor paso a paso
La corriente que fluye a través del bobinado crea polos magnéticos Norte y Sur en la bobina. Si envolvemos nuestros dedos derechos alrededor de la bobina en la dirección de la corriente que fluye a través de la bobina, entonces la dirección del pulgar indica el Polo Norte magnético.
Este tipo de motor es tan útil que se pueden encontrar en muchas aplicaciones como robots o impresoras 3D. Esto es debido a su precisión, ya que puedes controlar el giro del eje del motor con bastante precisión. Su funcionamiento, de forma muy simplificada, es parecida a la de los servos, con la diferencia de que no existe la limitación de giro de 180 grados, sino que pueden dar vueltas completas como si un motor de corriente continua se tratase. Y es justo esta su ventaja frente a los motores de corriente continua, una mayor precisión en el movimiento de los mismos. Por contra, son más complejos de usar, lo cual no son recomendables en proyectos donde no se necesite la ya comentada alta precisión.
Diagrama de ejemplo
Ejemplo
El ejercicio consiste en hacer girar el motor paso a paso en el sentido de las agujas del reloj y en sentido contrario a las agujas del reloj alternativamente.
Aquí, estamos usando un motor paso a paso unipolar de seis alambres. Sólo se necesitan cuatro cables para controlar este motor paso a paso. Los dos cables de derivación centrales del motor paso a paso están conectados a la alimentación de 5V. Utilizamos un controlador ULN2003 para accionar el motor paso a paso. El proyecto lo realizamos con un Arduino Uno.
Para encontrar bobinas y sus derivaciones centrales, mide la resistencia entre las derivaciones. De los cables centrales obtendremos la mitad del valor de resistencia en comparación con la resistencia entre los extremos del devanado.
Código para motor paso a paso
void setup() {
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
}
void loop() {
/* Rotation in one direction */
for(int i = 0; i<12; i++)
{
digitalWrite(7, HIGH);
digitalWrite(6, LOW);
digitalWrite(5, LOW);
digitalWrite(4, LOW);
delay(100);
digitalWrite(7, HIGH);
digitalWrite(6, HIGH);
digitalWrite(5, LOW);
digitalWrite(4, LOW);
delay(100);
digitalWrite(7, LOW);
digitalWrite(6, HIGH);
digitalWrite(5, LOW);
digitalWrite(4, LOW);
delay(100);
digitalWrite(7, LOW);
digitalWrite(6, HIGH);
digitalWrite(5, HIGH);
digitalWrite(4, LOW);
delay(100);
digitalWrite(7, LOW);
digitalWrite(6, LOW);
digitalWrite(5, HIGH);
digitalWrite(4, LOW);
delay(100);
digitalWrite(7, LOW);
digitalWrite(6, LOW);
digitalWrite(5, HIGH);
digitalWrite(4, HIGH);
delay(100);
digitalWrite(7, LOW);
digitalWrite(6, LOW);
digitalWrite(5, LOW);
digitalWrite(4, HIGH);
delay(100);
digitalWrite(7, HIGH);
digitalWrite(6, LOW);
digitalWrite(5, LOW);
digitalWrite(4, HIGH);
delay(100);
}
digitalWrite(7, HIGH);
digitalWrite(6, LOW);
digitalWrite(5, LOW);
digitalWrite(4, LOW);
delay(100);
/* Rotation in opposite direction */
for(int j = 0; j<12; j++)
{
digitalWrite(7, LOW);
digitalWrite(6, LOW);
digitalWrite(5, LOW);
digitalWrite(4, HIGH);
delay(100);
digitalWrite(7, LOW);
digitalWrite(6, LOW);
digitalWrite(5, HIGH);
digitalWrite(4, HIGH);
delay(100);
digitalWrite(7, LOW);
digitalWrite(6, LOW);
digitalWrite(5, HIGH);
digitalWrite(4, LOW);
delay(100);
digitalWrite(7, LOW);
digitalWrite(6, HIGH);
digitalWrite(5, HIGH);
digitalWrite(4, LOW);
delay(100);
digitalWrite(7, LOW);
digitalWrite(6, HIGH);
digitalWrite(5, LOW);
digitalWrite(4, LOW);
delay(100);
digitalWrite(7, HIGH);
digitalWrite(6, HIGH);
digitalWrite(5, LOW);
digitalWrite(4, LOW);
delay(100);
digitalWrite(7, HIGH);
digitalWrite(6, LOW);
digitalWrite(5, LOW);
digitalWrite(4, LOW);
delay(100);
digitalWrite(7, HIGH);
digitalWrite(6, LOW);
digitalWrite(5, LOW);
digitalWrite(4, HIGH);
delay(100);
}
digitalWrite(7, LOW);
digitalWrite(6, LOW);
digitalWrite(5, LOW);
digitalWrite(4, HIGH);
delay(100);
}
Debe estar conectado para enviar un comentario.