jueves, 20 de marzo de 2014

Motor Paso a Paso 4

http://txapuzas.blogspot.com/2009/12/paperstepperunipolar-driver-de-potencia_12.html?iact=rc&dur=763&page=1&start=0&ndsp=16&ved=0CGcQhBwwBg
Subir a Inicio


PaperStepperUnipolar: Driver de potencia para motor paso a paso unipolar


Descripción
PaperStepperUnipolar es un driver de potencia para motores paso a paso unipolares utilizando el chip ULN2003. 

Entradas de control: 2 TTL (D1 y D2) ¡NO STEP Y DIR!
Salidas de potencia 4 (L1,L2,L3 y L4) 
Tensión alimentación: 5v
Tensión máxima salida:  50V 
Corriente máxima salida: 500mA por salida (picos de 600mA)



Identificación del tipo de motor

El primer problema con el que nos encontramos al realizar proyectos con motores paso a paso, es identificar el tipo de motor que tenemos (sobre todo si utilizamos motores de desguace).

Para saber si un  motor es "paso a paso", realizaremos la comprobación siguiente:  Giraremos con la mano el eje del motor y deberemos notar que éste ejerce una resistencia al giro a golpes (o pasos).

Existen dos tipos de motores paso a paso: unipolares y bipolares. En los primeros la corriente circula siempre en el mismo sentido por cada bobina, y en el segundo se alterna cambia el sentido de la intensidad.
Un modo de identificarlos es contando el número de cables que tiene el motor:

4 cables (bipolar)



Necesariamente será bipolar. Este tipo de motores no puede ser controlado con este circuito.

6 cables (unipolar-bipolar)

Es probable que sea unipolar.
Para identificar los terminales, cojemos uno y con un tester medimos el resto de terminales, si es infinito, pertenece a la otra bobina, si con dos cables nos da R es terminal central (5 ó 6). Si con los dos cables restantes nos da R y 2R, puede ser el borne 1 o 2. Con las otras bobinas haremos lo mismo. De esta forma tendremos identificados los terminales centrales de cada bobina y sus extremos, pero no podemos distinguir los extremos. lo que haremos será utilizar el método de ensayo-error.

5 cables (unipolar-bipolar)



En este caso se han unido los terminales intermedios de las dos bobinas. El borne 5 es el único que mide R con el resto de los cables, el resto de cables (con los que mide 2R) deberemos intercambiarlos en la placa haste que el motor gire.
Para conectarlo deberemos unir los terminales 5 y 6 y si al conectarlo en la placa el motor no gira, deberemos alternar los terminales 3 y 4.

NOTA: Una página muy buena sobre motores paso a paso es la siguiente: Tutorial sobre motores paso a paso

Otra página muy interesante, con un simulación de funcionamiento de diferentes motores paso a paso y con diferentes tipos de paso (una forma muy fácil de entender los micropasos) y control nos la ofrece nanotec, una empresa alemana: http://en.nanotec.com/support/tutorials/stepper-motor-and-bldc-motors-animation/
Aunque la página está en alemán, puedes ver una traducción en la imagen inferior. Elige el tipo de motor, y elige una velocidad de demo.



Descripción
Para la realización de este proyecto nos basaremos en el circuito siguiente:



En este circuito vemos que con sólo 2 pines de control (D1 y D2) controlamos las 4 bobinas del motor paso a paso (L1,L2,L3 y L4). Esto lo podemos hacer ya que para mover un motor paso a paso debemos alimentar las bobinas en el orden siguiente:

En esta tabla vemos que los valores del devanado 2 es el invertido del 1 y que los del devanado 4 son los invertidos del 3, por lo que si invertimos la señal del L1 obtenemos la señal de control necesaria para L2 y de la misma manera si invertimos la señal de L3 obtendremos la señal de control de L4, con lo que la tabla para poder mover el motor quedaría de la forma siguiente:


Esta inversión de señal la realizamos en el circuito utilizando 2 entradas inversoras del ULN2003.

Como vemos en el circuito, la entrada 1 está conectada a 5v a través una resistencia pull-up, pero la señal invertida de la patilla 11 la deriva a masa. Esta salida invertida se activa mediante la resistencia R2 que lleva la señal de D1 a la entrada 6. De forma que cuando D1 esté activo L2 irá a masa y L1 a la tensión del motor. De la misma manera haremos una doble inversión con la entrada D2 que controlará las bobinas L3 y L4.

Si utilizas Arduino, no es necesario que envies manualmente los pulsos a cada bobina del motor, tienes la vida un poco más fácil, ya que dispone de la librería Stepper, que simplifica este proceso. (Tienes más información en la sección de enlaces).

NOTA: Ten en cuenta que este este circuito necesita dos señales D1 y D2, que deben activarse según la tabla anterior (o la librería Stepper en Arduino).
ESTE CIRCUITO NO FUNCIONA CON SEÑALES PASO y DIRECCIÓN.


Componentes

4 resistencias de 1K (~0,02x4=0,08€)
1 Zócalo de 16 patillas (0,3€)
1 CI ULN2003 (0,25€)
un trozo de placa de 10 filas por 11 agujeros. (0,5€)
Cables de colores (0,5€)
3 regletas CI de paso 2,54 (0,4x3=1,2€)
(En la entrada puedes soldar directamente los cables, y en la salida utilizar una regleta típica de electricista)

El coste total es de unos 3 € (precios 2011)


Realización
 
El método Paper consiste en ayudarnos en unas pegatinas para facilitarnos el proceso de montaje y soldadura.

Primero imprimiremos el documento PaperStepperUnipolar (disponible en la parte inferior de esta página en el apartado de descargas):




Una vez impreso el documento, comprobaremos que la impresión se ha realizado a la escala correcta con la ayuda de la regla impresa situada en el lateral izquierdo de la hoja. Al colocar a su lado un regla en centímetros deberán coincidir las marcas.



Si quieres puedes proteger la paperetiqueta con un plástico transparente autoadhesivo:



  
Después recortamos la Paperetiqueta:









Necesitaremos cortar un trozo de placa de stripboard de 10 filas por 11 agujeros, lo podemos hacer con un cutter.

Y con una lija conseguimos unos cantos lisos:
Con lo que obtenemos la placa para montar.

NOTA
en la foto ves que he cortado la paperetiqueta un poco más grande que lo indicado para poder ajustarla a la placa una vez encolada y  corregir el descentramiento de los agujeros de la placa.



Ahora aplicaremos adhesivo a la paperetiqueta (suelo utilizar cinta de doble cara)


deberemos colocar la etiqueta sobre la placa. Para que coincidan los agujeros dibujados en la etiqueta con los agujros de la placa, utilizo una aguja como guía.


Con una aguja gruesa taladramos todos los agujeros de la paperetiqueta



Podemos comprobar al transluz que hemos taladrado todos los agujeros.



Soldamos los pines, zócalos, puentes y resistencias.
Deberemos prestar atención a los puentes (sobre todo a los que están debajo del zócalo)
 

El único componente con polaridad es el circuito integrado  así que comprobaremos que el zócalo tiene la zona con marca cerca del borne de 5v.


NOTA
En la imagen puedes ver que en vez de utilizar un uln2003 estoy utilizando un uln2803 dejando las patillas 1 y 10 al aire. ¡ Funciona perfectamente ! .

Si no quieres utilizar bornas para soldar en circuito impreso, puedes utilizar una clema de electricista (más baratas y fáciles de conseguir). 


Una vez soldados todos los componentes, y fijándote en la imagen del documento impreso (lado pistas) puedes cortar con un taladrín y una fresa fina las pistas indicadas (yo hago este paso una vez soldados todos los elementos para poder tomar como referencia las patillas soldadas):





 Y el resultado es ...





Andrés Lopez nos provee el enlace a unos archivos pdf por si quereis realizar este circuito por fotograbado o con el método de la plancha (muchas gracias!!).
 



Funcionamiento

Si no has descargado y descomprimido el archivo PaperSteepperUnipolarXX.zip, ha llegado el momento de hacerlo. Lo tienes disponible en el enlace inferior.

Deberás compilar e instalar en el Arduino (o Paperduino) el programa de ejemplo realizado por Tom Igoe que tienes disponible en el archivo de descargas (/Sketsches/PaperStepper2w.pde).

Deberás realizar el siguiente montaje:


NOTA
En mi caso como el motor es de 12v, utilizo una vieja fuente de alimentación de un PC para el motor y el Arduino se alimenta a través de USB. 

Otra posibilidad es alimentar el Arduino y el motor paso a paso con la fuente de Alimentación.


El programa simplemente da un número de vueltas en un sentido, y en otro indefinidamente.
Debes modificar el valor de la linea:
#define motorSteps PASOSVUELTA, donde PASOSVUELTA indica el número de pasos que hay que suministrar al motor para que el eje de una vuelta completa.
En mi caso al utilizar un motor de paso 3,75grados : 360/3,75=96.

También puede ser necesario que reduzcas la velocidad del motor si éste tiene mucha inercia, reduciendo el valor de VELOCIDAD de la linea: myStepper.setSpeed(VELOCIDAD)

NOTA: Debido a un fallo de Blogger en la línea 19 después del #include no aparece "mayor que" Stepper.h "menor que". En el ejemplo del archivo de descargas este error no se produce.

/*
 Stepper Motor Controller
 language: Wiring/Arduino

 This program drives a unipolar or bipolar stepper motor.
 The motor is attached to digital pins 8 and 9 of the Arduino.

 The motor moves 100 steps in one direction, then 100 in the other.

 Created 11 Mar. 2007
 Modified 7 Apr. 2007
 by Tom Igoe

 */

// define the pins that the motor is attached to. You can use
// any digital I/O pins.

#include

#define motorSteps 96     // (360/3,75)change this depending on the number of steps
                           // per revolution of your motor
#define motorPin1 8
#define motorPin2 9
#define ledPin 13

// initialize of the Stepper library:
Stepper myStepper(motorSteps, motorPin1,motorPin2);

void setup() {
  // set the motor speed at 60 RPMS:
  myStepper.setSpeed(50);

  // Initialize the Serial port:
  Serial.begin(9600);

  // set up the LED pin:
  pinMode(ledPin, OUTPUT);
  // blink the LED:
  blink(3);
}

void loop() {
  // Step forward 100 steps:
  Serial.println("Forward");
  myStepper.step(96);
  delay(500);

  // Step backward 100 steps:
  Serial.println("Backward");
  myStepper.step(-96);
  delay(500);

}

// Blink the reset LED:
void blink(int howManyTimes) {
  int i;
  for (i=0; i< howManyTimes; i++) {
    digitalWrite(ledPin, HIGH);
    delay(200);
    digitalWrite(ledPin, LOW);
    delay(200);
  }





NOTA
En el video, el motor da tres vueltas (96x3) a cada lado a una velocidad  150 , el programa disponible en descargas es diferente, da una vuelta a cada lado a una velocidad de 50.


Si quieres, dispones de más ejemplos que funcionan con este circuito, desde el propio entorno Arduino:



NOTA:
Estos ejemplos están pensados para utilizar 4 pines de Arduino, para poder usarlos, simplemente modifica la linea siguiente, utilizando sólo los pines 8 y 9.:

// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8,9,10,11);

// initialize the stepper library on pins 8 and 9:
Stepper myStepper(stepsPerRevolution, 8,9);

Enlaces de Interés
 

Información legal

1. Propiedad intelectual
Todos los derechos de propiedad intelectual del contenido de Txapuzas eléctronicas, están bajo una licencia Creative Commons Share-Alike, cuyo contenido podéis revisar en este enlace.
Por tanto queda permitido copiar, distribuir, comunicar públicamente la obra y hacer obras derivadas de la misma, siempre que se respeten los términos de la licencia arriba reseñada.
3. Actualizaciones y modificaciones de Txapuzas electrónicas
El autor se reserva el derecho a actualizar, modificar o eliminar la información contenida en Txapuzas eléctrónicas, y la configuración o presentación del mismo, en cualquier momento, sin previo aviso, y sin asumir responsabilidad alguna por ello.
4. Indicaciones sobre aspectos técnicos
El autor no asume ninguna responsabilidad que se pueda derivar de problemas técnicos o fallos en los equipos informáticos, que se produzcan a causa de los circuitos e ideas expuestos en el blog de txapuzas electrónicas, así como de los daños que pudieran ocasionar.
El autor se exime de toda responsabilidad ante posibles daños o perjuicios que pueda sufrir el usuario a consecuencia de errores, defectos u omisiones en la información facilitada.


Descargas

El esquema, descripción e imágenes están disponibles en el siguiente enlace:

Si tienes problemas con el enlace anterior, aquí puedes descargar todos los archivos de txapuzas

Notas
Para la realización de este proyecto se han utilizado los programas: Arduino, Inkscape, Openoffice, Gimp, Picasa, Fritzing
Si encuentras algún fallo, se te ocurre alguna mejora, o simplemente quieres hacer algún comentario, te lo agradeceré: Gracias :-)

1 comentario:

  1. Estimado cuál es el peso máximo que puede mover este motor, tengo el mismo modelo y quisiera saber como encontrar el valor en la especificación técnica.

    ResponderEliminar