Stepper motor arduino

De Casiopea
(difs.) ← Revisión anterior | Revisión actual (difs.) | Revisión siguiente → (difs.)


TítuloGuía uso stepper motor Arduino
Tipo de ProyectoProyecto de Curso
Período2019-2019
AsignaturaInteracción y Performatividad
Del CursoInteracción y Performatividad 2019
CarrerasDiseño
Alumno(s)Gabriel Olivares Torrijo, Rodrigo Toro, Marcelo Mondaca, Omar Nuñez, Christian Gazmuri
ProfesorRenzo Varela

Ilustración y modo de conectar los motores

En esta guía explicaremos como hacer funcionar un motor stepper a través de Arduino, la forma de conexión y entregaremos un código (a modo de ejemplo) para este.

En el taller contamos con 2 tipos de motores, estos se diferencian según el color del cableado que poseen:

Motor 1: cuenta con los colores rojo, verde, amarillo y azul.

Motor 2: cuenta con los colores rojo, azul, verde y negro.

Estos colores corresponden a A+, A-, B+ y B- respectivamente en ambos casos.

Los motores fueron marcados de esta manera.
IP Colores motor cables 2019-2.jpg

Para hacer funcionar el Motor stepper, ademas de contar con el Arduino se necesita de un Transformador y un Driver. La función del transformador consiste en modificar la corriente alterna(220V) a corriente continua (12V) y así suplir con la energía necesaria al motor. Este transformador necesita de un enchufe, el cual se conecta en L (linea) y N (neutro). El driver BL-TB6560-V2.0 es la unión entre el arduino y el motor. El Arduino no puede sustentar al motor con la energía suficiente, es por esto que el Driver obtiene la energía necesaria del Transformador y además la señal de control del arduino para enviársela al motor. La conexión del sistema se muestra en la siguiente imagen.

IP Motor arduino 2019.jpg


CÁLCULOS Y VARIABLES

Se piensa en realizar con el motor stepper un recorrido que sea de ida y vuelta,controlando en éste el tiempo de enrollar y desenrollar la cuerda, y controlando la distancia a la cual se quiere trabajar.

Por lo que se toman las siguientes consideraciones de cálculos, y otras las dejamos de lado, aún sabiendo que en un recorrido más extenso esa medida que no es tomada en este proyecto si afectará en si a todo el proyecto.

  1. .- Lo primero a tomar en cuenta es la distancia de recorrido, extensión de un hilo o cuerda el cual se enrollará o desenrollará (para nuestro caso 10 cm).
  2. .- Por consiguiente, es importante tener claridad del radio que tiene el eje del motor, o la pieza que irá en el eje del motor (en nuestro caso radios de 2.5 mm y 3.5 mm).
  3. .- Saber que en el programa arduino el motor gira una vuelta completa en 1600 pasos, por lo que esta cifra se debe multiplicar por la variable o cálculo distancia/perímetro.

(en nuestro caso de radio 3.5 mm, sería 1600 step x (10 cm/3.5 mm) = 4571 step o pasos). Esto quiere decir que para completar los 10 cm. es necesario que el motor de alrededor de 28 a 29 vueltas, y considerando que una vuelta son 1600 step, entonces 1600 x 28 o 29 = [4480 a 4640]. Para radio 2.5 mm es, 1600 x (10 cm/ 2.5mm) = 6400 steps. (40 vueltas)

  1. .- Para calcular el tiempo existe la siguiente constante 0.0455 que corresponde a 1 mm. de radio, y esta constante sirve para encontrar la unidad de tiempo en arduino.


Explicación segundos / (constante / radio) = unidad de tiempo

  • 10 seg. / (0.0455c/3.5mm,) = 10 / 0.013 c/mm = ~769 unidad de tiempo
  • 10 seg./ (0.0455c/2.5 mm.)= 10 / 0.0182 c/mm=~549 unidad de tiempo

Conclusión, mientras mayor sea el radio del eje del motor, la variable c/mm será menor, siendo la variable de 1 mm = 0.0455, y de <1 = variable mayor que 0.0455. Por otra parte, mientras mayor sea el radio del eje la unidad de tiempo también será mayor.

no tomamos en cuenta que al enrollarse el hilo o cuerda el espesor del eje aumentará porque el mismo hilo o cuerda le darán mas espesor al eje, pero no lo calculamos pensando en que como la distancia que estábamos calculando era tan pequeña que nos pareció innecesario.

//Valores editables
int radio=3.5; // medida del radio del eje del motor en milimetros
int distancia=100; // distancia de recorrido de la cuerda en milimetros
int duracion=10; // tiempo del recorrido en segundos, 10 para enrollar y 10 para desenrollar


const int stepPin = 5; // pin de conexión al arduino
const int dirPin = 11; // pin de conexión al arduino
const int enPin = 12; // pin de conexión al arduino

int unidadtiempo=(0.0455/radio); // constante dividida por el radio del eje del motor
int total=(duracion/(0.0455/radio)); // tiempo dividido por unidadtiempo
int perimetro=(2*PI*radio); // perímetro del espesor del eje del motor
int calculo1=(distancia/perimetro); // cálculo para saber cuantas vueltas debe dar el motor en una distancia determinada
int calculo2=(calculo1*1600); // cálculo 1 por 1600 (correspondiente a una vuelta del motor)

void setup() {
 pinMode(stepPin,OUTPUT);
 pinMode(dirPin,OUTPUT);
 pinMode(enPin,OUTPUT);
 digitalWrite(enPin,LOW);

}
void loop() {
 digitalWrite(dirPin,HIGH); // sentido de giro del motor a la derecha
 for(int x = 0; x < calculo2; x++) { // ciclo for para mantener la duración del ciclo
 digitalWrite(stepPin,HIGH);
 delayMicroseconds(total);
 digitalWrite(stepPin,LOW);
 delayMicroseconds(total);
 }
 delay(10); // un segundo de retraso
 digitalWrite(dirPin,LOW); // sentido de giro del motor a la izquierda
 for(int x = 0; x < calculo2; x++) {
 digitalWrite(stepPin,HIGH);
 delayMicroseconds(total);
 digitalWrite(stepPin,LOW);
 delayMicroseconds(total);
 }
 delay(10); // un segundo de retraso
}
//Fin del Código

Archivo:Codigo motor pdf.pdf

Link de descarga

Archivo:Ejemplo stepper motor 2019 ead.rar