20
Motores Bipolares (Stepper) Control con Arduino. Dom 16.03.2014 CRTL+D, para volver a visitarnos. Creado por: V. García. Tema: Buscar  PROLOGO. Esta documentación, pretende ser una aproximación práctica a las formas de control de motores paso a paso, también conocidos en la terminología inglesa como, stepper's. En este sitio, puede encontrar un artículo que trata extensamente sobre los motores paso a paso, donde puede disipar cualquier duda sobre los mismos. En dicho documento, se hace un análisis de los tipos de motores paso a paso, su constitución, su lógica y además se presentan algunos ejemplo de uso con el puerto paralelo del PC. La característica principal de los motores paso a paso, es el hecho de poder moverlos un paso con cada impulso aplicado. Los pasos necesarios para dar un giro de 360º, depende de la constitución de cada motor, pueden variar desde 90º cada paso a 1'8 grados por pulso. No basta con decir motor paso a paso o si me apuran motor stepper. Hay que distinguir entre dos tipos de motores paso a paso, motor bipolar y motor unipolar. En esta ocasión, vamos a abordar el tema desde la perspectiva práctica, en la que se propone, la puesta en

Motores Bipolares

Embed Size (px)

Citation preview

Motores Bipolares (Stepper)Control con Arduino.

Dom 16.03.2014 CRTL+D, para volver a visitarnos.Creado por: V. Garca.Principio del formularioTema:Final del formulario

PROLOGO.Esta documentacin, pretende ser una aproximacin prctica a las formas de control de motores paso a paso, tambin conocidos en la terminologa inglesa como, stepper's.En estesitio, puede encontrar un artculo que trata extensamente sobre los motores paso a paso, donde puede disipar cualquier duda sobre los mismos. En dicho documento, se hace un anlisis de los tipos de motores paso a paso, su constitucin, su lgica y adems se presentan algunos ejemplo de uso con el puerto paralelo del PC. La caracterstica principal de los motores paso a paso, es el hecho de poder moverlos un paso con cada impulso aplicado. Los pasos necesarios para dar un giro de 360, depende de la constitucin de cada motor, pueden variar desde 90 cada paso a 1'8 grados por pulso.

No basta con decir motor paso a paso o si me apuran motor stepper. Hay que distinguir entre dos tipos de motores paso a paso, motor bipolar y motor unipolar. En esta ocasin, vamos a abordar el tema desde la perspectiva prctica, en la que se propone, la puesta en servicio de un control para un motor paso a paso bipolar, en otro artculo abordaremos la descripcin de los motores del tipo unipolar. En adelante, especificar al tipo de motor en uso, como motor bipolar o en su caso motor unipolar.MOTOR BIPOLAR.Para hacer girar un motor paso a paso bipolar, se aplican impulsos en secuencia los devanados, la secuencia de estos impulsos, se aplican externamente con un controlador electrnico. Dichos controladores, se disean de manera que el motor se pueda mantener en una posicin fija y tambin para que se le pueda hacer girar en ambos sentidos. Los motores bipolares, se pueden hacer avanzar a frecuencias de audio, lo que les permite girar muy velozmente. Este es el motivo por que se suele decir que un motor "canta", debido a la frecuencia a la que se produce la conmutacin. Con un controlador apropiado, se les puede hacer arrancar y detenerse en cualquier instante y en una posicin determinada. Este es en teora, el esquema de un motor bipolar.

Estos motores, tienen varios bobinados que, para producir el avance de un paso, deben ser alimentados en una secuencia adecuada. Al invertir el orden de esta secuencia, se logra que el motor gire en sentido opuesto. El torque de detencin, hace que un motor paso a paso (esto vale para los bipolares y unipolares) se mantenga firmemente en su posicin, estando alimentado aun cuando no est girando.Hay tres caractersticas que, son comunes a los motores paso a paso: Voltaje.Los motores paso a paso tienen una tensin elctrica de trabajo. Este valor viene impreso en su carcasa o por lo menos se especifica en su hoja de datos. Resistencia elctrica.La resistencia de los bobinados, esta resistencia determinar la corriente que consumir el motor y su valor afecta la curva de torque del motor y su velocidad mxima de operacin. Grados por paso.Generalmente, este es el factor ms importante al elegir un motor paso a paso para un uso determinado. Este factor define la cantidad de grados que rotar el eje para cada paso completo. Una operacin de medio-paso o semi-paso (half step) del motor duplicar la cantidad de pasos por revolucin al reducir la cantidad de grados por paso.Si adquirimos un motor paso a paso, es bastante sencillo conocer las caractersticas del motor, sin embargo, lo ms comn es que nos encontremos ante un motor de desguace. Cmo distinguir ante qu tipo de motor nos encontramos, el procedimiento es bastante sencillo, el primer paso es mirar en el cuerpo del motor si permanece alguna leyenda que nos pueda servir de orientacin como, el fabricante, modelo, la tensin o alguna otra pista que nos indique las caractersticas ms inmediatas.Si no dispusiera de dichas indicaciones, nos centraremos en los cables de alimentacin (descartamos los de dos cables que, corresponden a motores de corriente continua), generalmente presentan cuatro, cinco o seis cables de salida. Nos referiremos a los de cuatro cables, estos, para controlarlos necesitan de ciertos trucos, debido a que requieren del cambio de direccin del flujo de corriente a travs de las bobinas en la secuencia apropiada para lograr avanzar un paso en su movimiento.

Estos motores, podemos obtenerlos al desguazar una vieja impresora, los podemos encontrar en la vieja unidad de disquete y son relativamente fciles de controlar, son de imn permanente. Existen dos tipos de motores paso a paso: unipolares y bipolares. En los unipolares la corriente circula siempre en el mismo sentido en cada bobina, en los bipolares, la corriente sigue una secuencia alterna que cambia el sentido de la intensidad.Los cuatro cables se corresponden a los cuatro terminales, dos de cada devanado, aunque internamente pueden contener varios pares de bobinas, como se aprecia en la imagen anterior. Los motores paso a paso, difieren de los motores de CC, en la relacin entre velocidad y torque o "par motor". Su mayor capacidad de torque se produce a baja velocidad.Los motores bipolares requieren circuitos de control y de potencia ms complejos que los unipolares. Estos circuitos de control, se suelen implementar con un circuito integrado que, soluciona dicha complejidad con un solo componente. Cuando se requieren mayores potencias, se deben agregar algunos componentes, como transistores y diodos para las contracorrientes, aunque esto no es del todo necesario en los pequeos motores.La configuracin de los motores bipolares requiere que las bobinas reciban corriente en ambos sentidos y no solamente un encendido-apagado como en los unipolares. Esto hace necesario el uso de un Puente H con una secuencia sobre cada uno de los devanados.PasosBobinas

1a1b2a2b

11001

21010

30110

40101

51001

61010

70110

80101

Al avanzar un paso de la secuencia al paso siguiente, hace mover el estator del motor un paso. Si vamos hacia adelante en la secuencia, el motor se mueve hacia adelante un paso y si lo hacemos al revs, el motor se mueve un paso atrs. El cdigo que sigue, muestra la secuencia de activacin de las bobinas 1a-1b y 2a-2b.Motor BipolarCDIGO:SELECCIONAR TODO/* Motor paso a paso bipolar* ---------------------------** (cleft) 2005 DojoDave for K3* http://www.0j0.org | http://arduino.berlios.de** @author: David Cuartielles* @date: 20 Oct. 2005** Es un motor paso a paso bipolar con cuatro cables:* - azul3 y naranja5 : bobina 1* - rojo4 y amarillo6: bobina 2* Sin usar la librera de Arduino.** Adaptado a mis necesidades.**/

int motorPin1 = 3; // pines del Motorint motorPin2 = 5;int motorPin3 = 4;int motorPin4 = 6;int delayTime = 1; // Delay que determina la velocidad de giro

void setup() {pinMode(motorPin1, OUTPUT); // Configuracin de los PINes como salida digitalpinMode(motorPin2, OUTPUT);pinMode(motorPin3, OUTPUT);pinMode(motorPin4, OUTPUT);

}

void loop() {digitalWrite(motorPin1, HIGH); // Los pines se activan en secuenciadigitalWrite(motorPin2, HIGH);digitalWrite(motorPin3, LOW);digitalWrite(motorPin4, LOW);delay(delayTime);digitalWrite(motorPin1, LOW);digitalWrite(motorPin2, HIGH);digitalWrite(motorPin3, HIGH);digitalWrite(motorPin4, LOW);delay(delayTime);digitalWrite(motorPin1, LOW);digitalWrite(motorPin2, LOW);digitalWrite(motorPin3, HIGH);digitalWrite(motorPin4, HIGH);delay(delayTime);digitalWrite(motorPin1, HIGH);digitalWrite(motorPin2, LOW);digitalWrite(motorPin3, LOW);digitalWrite(motorPin4, HIGH);delay(delayTime);}RECONOCIENDO EL MOTOR.Los motores paso a paso, tambin tienen un nmero determinado de pasos, necesarios para girar una vuelta completa. Por ejemplo, el motor que estoy usando tiene 96 pasos por revolucin. En su etiqueta dice: STP-42H100 3'75 grados/paso, 4'6V y 0'55A. No obstante, si prueba a girar su motor y observa que se salta algn paso o se mueve con dificultad, deber probar de poner un mltiplo de 4, piense que tiene 360 grados y un mnimo de 4 polos (esto seran 90 por paso, claramente muy poco), si quiere un movimiento limpio de 3 aproximadamente, seran 360/3 = 120 pasos, ahora, guardamos los 120 pasos y ya usaremos este valor en la variable adecuada del programa.Aprovechando elEscudoque realic en otra prctica, ahora ms acabado, como puede verse en la imagen de abajo. Se pueden ver detallados los cuatro pines dispuestos para el uso de un motor bipolar, la entrada de tensin exterior con un jack adecuado junto al selector de tensin, dispuesto por un puente en amarillo y naturalmente dos conexiones independientes para aplicar a dos motores de corriente continua o en su caso a un motor bipolar con cables separados.

Uso de la libreraStepper.hEl software Arduino viene con la biblioteca que hace que sea fcil de controlar un el motor paso a paso bipolar.Un problema con esta configuracin bsica es que requiere cuatro cables para su control. Un Arduino slo tiene doce pines digitales disponibles, as que, pronto nos quedaremos sin salidas. Sera agradable poder utilizar slo dos cables para manejar un motor.Ahora, se muestra un cdigo que utiliza dicha librera de Arduino. Con esta librera, se generaliza el uso de los motores bipolares.Motor Stepper DC con librera CDIGO:SELECCIONAR TODO/** motor_dc_stepper.pde**/

#include

int pot[10]; // nada que ver con el potenciometro

// cambiar este numero por los pasos de su motor#define STEPS 196 // los pasos del motor

// crea una instancia de clase stepper, especificando// el numero de steps del motor y los pines usadosStepper stepper(STEPS, 3, 4, 5, 6); // poner pines entre (2-12)

// the previous reading from the analog inputint previous = 0;

void setup() { // set the speed of the motor stepper.setSpeed(200); Serial.begin(9600);}

void loop(){// promedio de los ltimos valores para suprimir el desordenlong sum = 0;for (int i= 0; i interval) {previousMillis = millis();

st = stepsSeq[pos]; if( dir == GOLEFT ) { pos++; if(pos>3) pos=0; motorPos++; } else { pos--; if(pos debounce) { if (estado == HIGH) { estado = LOW; time = millis(); } else { estado = HIGH; time = millis(); }}digitalWrite(outPin, estado);previo = switchState; if (estado == LOW) avanza(); else retrocede(); }

void avanza(){digitalWrite(motorPin1, HIGH);digitalWrite(motorPin2, HIGH);digitalWrite(motorPin3, LOW);digitalWrite(motorPin4, LOW);delay(delayTime);digitalWrite(motorPin1, LOW);digitalWrite(motorPin2, HIGH);digitalWrite(motorPin3, HIGH);digitalWrite(motorPin4, LOW);delay(delayTime);digitalWrite(motorPin1, LOW);digitalWrite(motorPin2, LOW);digitalWrite(motorPin3, HIGH);digitalWrite(motorPin4, HIGH);delay(delayTime);digitalWrite(motorPin1, HIGH);digitalWrite(motorPin2, LOW);digitalWrite(motorPin3, LOW);digitalWrite(motorPin4, HIGH);delay(delayTime);}

void retrocede(){digitalWrite(motorPin1, HIGH);digitalWrite(motorPin2, LOW);digitalWrite(motorPin3, LOW);digitalWrite(motorPin4, HIGH);delay(delayTime);digitalWrite(motorPin1, LOW);digitalWrite(motorPin2, LOW);digitalWrite(motorPin3, HIGH);digitalWrite(motorPin4, HIGH);delay(delayTime);digitalWrite(motorPin1, LOW);digitalWrite(motorPin2, HIGH);digitalWrite(motorPin3, HIGH);digitalWrite(motorPin4, LOW);delay(delayTime);digitalWrite(motorPin1, HIGH);digitalWrite(motorPin2, HIGH);digitalWrite(motorPin3, LOW);digitalWrite(motorPin4, LOW);delay(delayTime);}Notese que dentro del bucle (loop), se lee el estado del potencimetro y se utiliza el mapa tipo, para modificar los PWM y suavizar el cambio de velocidad. As mismo, he intercalado la lectura del estado del pulsador que, nos permite cambiar la direccin de giro, incluso respetando la velocidad anterior sin necesidad de poner a cero, naturalmente esto tiene mucho que ver con la inercia del motor que se utilice. El cdigo empleado, recomendado por los fabricantes, es decir, paso completo que activa dos bobinas al tiempo, esto infiere un alto par motor o torque.

Esto es todo, por este simple tutorial. Si tiene inters en leer ms sobre Arduino, revele esta seccin. (Mostrar/Ocultar)