Ejemplo de motor paso a paso con la controladora A4983.

Lo relacionado con la electronica y arduino.
kurtsik
Mensajes: 124
Registrado: 30 Ene 2015 11:29

Ejemplo de motor paso a paso con la controladora A4983.

Mensaje por kurtsik » 30 Ene 2015 19:51

Ahi va el segundo articulo sobre los motores paso a paso:


El modulo A4983 de Pololu (y compatibles comercializados en China) es un modulo controlador de motores paso a paso bastante conocido por formar parte de los kits de montaje de impresoras 3D.

En este pequeño manual vamos a explicar el esquema de cableado y un sketch simple para ver su funcionamiento. No entraremos en el funcionamiento propiamente dicho de este tipo de motores por que eso esta muy bien explicado en la Wikipedia (http://es.wikipedia.org/wiki/Motor_paso_a_paso).


Este modulo se alimenta con 3-5.5V (Pololu tambien comercializa una version con regulador de voltaje incorporado, el A4988), conexiones VDD y GND, y puede controlar motores alimentados con 8-35V, conexiones VMOT y GND. Tiene capacidad para controlar un motor paso a paso de 4, 6 y 8 cables. Este modulo puede soportar una corriente maxima de 2A por bobina y consecuente disipa mucho calor, si necesitamos aplicar mas de 1A por bobina es recomendable colocar un disipador sobre el IC o proveer algun tipo de refrigeracion.


Los motores paso a paso suelen especificar la dimension de los pasos estandar pero un controlador como el que nos ocupa puede aumentar la resolucion permitiendo micropasos intermedios. Esto se consigue configurando adecuadamente los pines MS1, MS2 y MS3 de la controladora.
Los pines MS2 y MS3 tienen una resistencia de pull-down interna de 100Ω pero en el caso del pin MS1 no es asi por lo que debe ser añadida externamente.



En el cuadro inferior podemos ver la configuracion de los pines para controlar la resolucion:

MS1 MS2 MS3 Resolucion

Baja Baja Baja Paso completo
Alta Baja Baja Medio paso
Baja Alta Baja Cuarto de paso
Alta Alta Baja Octavo de paso
Alta Alta Alta Dieciseisavo de paso



Por otro lado podemos observar los pines de control DIR, STEP, SLP y EN, que se manejan mediante señales digitales del controlador.
El pin STEP recoge la señal para activar un paso segun la resolucion configurada. El pin DIR activa la direccion de giro configuradolo en 1 o 0.
El pin EN (enable) activa las bobinas del motor y los deja frenados.
Los otros 2 pines permiten configuraciones avanzadas que se puede ver en la hoja de datos (enlace al final del articulo).
Tal y como se aprecia en el esquema de conexiones los pines EN y RST estan flotantes (no conectados) si no necesitas utilizar el pin RST este puede ser conectado al adyacente SLP.


Esquema de conexiones:
0J2681.599.png
(72.8 KiB) Descargado 984 veces

El esquema de conexiones no tiene excesiva complicacion, solamente hay que tener en cuenta las implicaciones mencionadas anteriormente. Para los sketches que veremos posteriormente el pin DIR estara conectado al pin 8 de Arduino y el pin STEP al 9.




Sketch de ejemplo:

En este sencillo ejemplo podemos ver como avanza, cambia de direccion y acelera un motor paso a paso controlado desde Arduino.

Código: Seleccionar todo

const int myDir = 8;
const int myStep = 9;
int velocidad = 100;
char orden = 'x';
bool direccion = 1;
bool estado = 0;

void setup() {
  Serial.begin(9600);
  Serial.println("En marcha");
  
  pinMode(myDir, OUTPUT);
  pinMode(myStep, OUTPUT);
  digitalWrite(myDir, direccion);
}

void loop() {
  orden = Serial.read();
  
  // El comando 1 cambia el estado, si esta parado arrancara o viceversa.
  if (orden == '1'){
    estado = !estado;
    orden = 'x';
  }
  
  // El comando 2 cambia la direccion de giro.
  if (orden == '2'){
   direccion = !direccion;
   orden = 'x';
  }
  
  // Aumenta la velocidad. Hay un umbral por debajo del cual el motor
  // se bloqueara.
  if (orden == '+'){
   velocidad -= 10;
   orden = 'x';
  }
  
  // Disminuir velocidad
  if (orden == '-'){
   velocidad += 10;
   orden = 'x';
  }
  
  if (estado) {
    digitalWrite(myDir, !direccion);
    digitalWrite(myStep, HIGH);
    delay(velocidad);
    digitalWrite(myStep, LOW);
  }

}

Establecer el cableado de los motores paso a paso.
0J2363.200.jpg
0J2363.200.jpg (4.48 KiB) Visto 4349 veces

Llegar a conocer el cableado de las bobinas de un motor paso a paso es un procedimiento bastante sencillo. Primero comprobaremos que el motor no ofrece ninguna resistencia cuando tratamos de girar el eje del rotor. Despues iremos uniendo los cables dos a dos hasta que percibamos resistencia al giro, eso nos indicara que esos dos cables pertenecen a la misma bobina.



Enlace al datasheet:
a4983_datasheet.pdf
(359.63 KiB) Descargado 387 veces
Modulo para KiCad:
https://github.com/jharvey/Cinch_enclos ... les/pololu

Responder