Menu
in

Motores paso a paso

Muchos proyectos, sobre todo los relacionados con la robótica, involucran la utilización de motores paso a paso. Se trata de un tipo muy particular de motor, cuyo funcionamiento difiere sustancialmente de los motores que vemos habitualmente, y cuyos secretos vamos a develar en este artículo. 

Un motor “paso a paso” (o “PAP”) es un dispositivo electromecánico capaz de convertir  una serie de impulsos eléctricos en desplazamientos angulares discretos. Esto significa que, a diferencia de un motor convencional (que gira de forma continua),  es capaz de avanzar una serie de grados (o pasos) a la vez, dependiendo del estado de sus entradas de control. Un motor paso a paso se comporta de la misma manera que un convertidor digital-analógico y puede ser gobernado por impulsos procedentes de sistemas lógicos, tales como microcontroladores u ordenadores.

Los motores PAP son ideales para la construcción de mecanismos en donde se requieren movimientos muy precisos. Existen al menos 3 tipos fundamentales de motores paso a paso: el llamado motor de reluctancia variable, el motor de magnetización permanente, y el motor paso a paso híbrido.

Entre las principales aplicaciones de estos motores se pueden mencionar la robótica en general, la tecnología aeroespacial, el control de discos duros, de discos flexibles (disquetes), unidades de CD-ROM o de DVD e impresoras de todo tipo. Todos estos aparatos, una vez desechados, pueden emplearse como fuente de motores PAP para utilizar en nuestros proyectos.

La característica principal de estos motores es el hecho de poder moverlos un paso a la vez por cada pulso que se le aplique. Este paso puede variar desde 90° hasta pequeños movimientos de tan solo 1.8°, es decir, que se necesitarán 4 pasos en el primer caso (90°) y 200 para el segundo caso (1.8°), para completar un giro completo de 360°.

Principio de funcionamiento
Al igual que sus “parientes”, los motores de corriente continua, un motor paso a paso esta constituido por dos partes: una fija, llamada estator; y una móvil, llamada rotor.

El estator esta construida en base de una serie de cavidades en las que se ubican las bobinas. Cuando una corriente eléctrica atraviesa una de estas bobinas, se forman  los polos norte-sur necesarios para impulsar el motor.

El  rotor puede basarse en un imán permanente o un inducido ferromagnético, siempre con el mismo número de pares de polos que el contenido en una sección de la bobina del estator. Todo esto se monta sobre un eje que a su vez se apoya en dos cojinetes que le permiten girar libremente.

Si somos capaces de lograr que las bobinas mencionadas se energicen en el orden y con la frecuencia adecuada, podremos hacer que el motor avance un paso en uno u otro sentid. Para ello, se necesita de un sistema de control adecuado. Y ahí es donde nuevamente podemos hacer uso de un microcontrolador. Con el programa adecuado podemos conseguimos excitar el estator, creando los polos N-S. Al variar dicha excitación, de modo que el campo magnético formado efectúe un movimiento giratorio, el motor seguirá el movimiento de dicho campo, produciéndose de este modo el giro del rotor.

Otra característica no menos importante es que estos motores poseen la habilidad de quedar “enclavados” en una posición determinada. Efectivamente, si una o más de sus bobinas están alimentadas, el motor estará enclavado en la posición correspondiente. Si, por el contrario, no circula corriente por ninguna de sus bobinas, el rotor queda totalmente libre.
 

Controladora de motores PAP
Uno de los tipos más comunes de motores PAP son los que poseen 5 (o 6) cables. En estos motores, uno de los cables es común a todas las cuatro bobinas, y los otros cuatro son el extremo restante de cada una de ellas. En el caso de tener 6 cables, dos bobinas tienen un cable común, y las otras dos el otro. Si esos dos cables se unen entre si, se obtiene el equivalente a un motor de 5 cables.

La forma de hacer girar uno de estos motores es alimentar las bobinas una a una, en secuencia, de forma que el motor vaya avanzando paso a paso. Para ello hemos creado esta pequeña placa controladora, que debería funcionar sin problemas casi con cualquier motor que podamos sacar de alguno del los equipos que mencionábamos al principio.

El circuito tiene, como ya es costumbre, una etapa destinada a la alimentación basada en un regulador de voltaje integrado. No hay mucho que aclarar sobre su funcionamiento, solo la presencia de un resistor cuyo valor deberemos determinar en caso de que la alimentación sea mayor a los 15 o 20 voltios. Su función es reducir esta tensión a un valor cercano a los 9 o 12V, para permitir al LM7805 realizar su tarea sin esfuerzo.

La tensión de alimentación de esta placa será la que necesite el motor. El microcontrolador que se encargar del control del motor obtendrá los 5V a partir del regulador, independientemente de cual sea la tensión de alimentación (siempre que sea inferior a los 30V).

El microcontrolador no tiene ninguna entrada. Sus pines se han configurado como salidas, y cuatro de ellos se encargan de controlar sendos grupos de dos transistores cada uno, capaces de lidiar con la corriente que consume el motor. Debemos aclarar que hemos utilizado transistores tipo TIP42, que pueden manejar varios amperes cada uno, y que en la mayoría de los casos pueden ser exagerados. Pero de esta manera nos aseguramos que la controladora funcione con casi cualquier motor. Si el usuario va a limitarse a pequeños motores como los de las fotos, puede usar un BD136 / BD138 o BS140, sobre el mismo PCB, sin problemas.

Hemos empleado el oscilador interno del PIC12F675, por lo que hacen falta muy pocos componentes externos para que este microcontrolador funcione. De hecho, y aunque eventualmente podríamos haberlo evitado cambiando la configuración de los “fuses” del micro, solo hemos utilizado un resistor de 10K para mantener el pin RESET en estado alto.

El software
Nuestro programa tiene que ser capaz de energizar las bobinas en el orden adecuado. Utilizando el lenguaje BASIC del PIC SIMULATOR IDE (que puedes aprender a utilizar leyendo nuestro tutorial sobre programación de microcontroladores) resulta muy sencillo.

Comenzamos definiendo los pines del 12F675 como salidas, a la vez que cambiamos sus nombres por “bobina0”… bobina3”. Como el programa de ejemplo contempla la demostración de giros en ambos sentidos y a diferentes velocidades, es que hemos definido una serie de variables cuyo valor inicial determinan como y a que velocidad girará el motor.

Estas variables están comentadas en el código fuente, y los tiempos están expresados en milisegundos. El giro se produce en uno u otro sentido gracias a las sentencias que componente las subrutinas “rotacionder” y “rotacionizq”.

Cada bucle FOR-NEXT se encarga de efectuar 10 pasos en un sentido, y luego de un tiempo, 10 pasos en el sentido contrario. Por supuesto, el lector puede variar estos parámetros para experimentar con el motor.

‘————————————————–
‘NeoTeo – Controladora de motores PAP
‘con PIC12F675    –  Versión 1.01
‘————————————————–
Symbol bobina0 = GPIO.0
Symbol bobina1 = GPIO.1
Symbol bobina2 = GPIO.2
Symbol bobina3 = GPIO.4

AllDigital
TRISIO = %000000  ‘GPIO Todo como salidas

Dim tiempoder As Word  ‘Demora entre energizado de bobinas
Dim tiempoizq As Word  ‘Demora entre energizado de bobinas
Dim tiempo1 As Word  ‘Demora después de girar a un lado
Dim tiempo2 As Word  ‘Demora después de girar al otro lado

Dim i As Word  ‘cantidad de pasos a dar

tiempo1 = 5000  ‘En milisegundos
tiempo2 = 1500  ‘En milisegundos
tiempoder = 50  ‘En milisegundos
tiempoizq = 10  ‘En milisegundos

GPIO = %000000  ‘todas las salidas a 0

loop:  ‘Bucle principal   For i = 1 To 10       Gosub rotacionder   Next i
   WaitMs tiempo1
   For i = 1 To 10       Gosub rotacionizq   Next i
   WaitMs tiempo2

Goto loop

End                                              

rotacionder:   bobina2 = 1   bobina0 = 1   WaitMs tiempoder
   bobina0 = 0   bobina2 = 1   WaitMs tiempoder
   bobina1 = 1   bobina2 = 1   WaitMs tiempoder      bobina2 = 0   bobina1 = 1   WaitMs tiempoder
   bobina3 = 1   bobina1 = 1   WaitMs tiempoder
   bobina1 = 0   bobina3 = 1   WaitMs tiempoder
   bobina0 = 1   bobina3 = 1   WaitMs tiempoder
   bobina3 = 0   bobina0 = 1   WaitMs tiempoder
Return                                           

rotacionizq:   bobina2 = 0   bobina0 = 1   WaitMs tiempoizq
   bobina0 = 1   bobina3 = 1   WaitMs tiempoizq
   bobina0 = 0   bobina3 = 1   WaitMs tiempoizq
   bobina3 = 1   bobina1 = 1   WaitMs tiempoizq
   bobina3 = 0   bobina1 = 1   WaitMs tiempoizq
   bobina1 = 1   bobina2 = 1   WaitMs tiempoizq
   bobina1 = 0   bobina2 = 1   WaitMs tiempoizq
   bobina2 = 1   bobina0 = 1   WaitMs tiempoizq
Return                                           

En un articulo futuro analizaremos con detalle el funcionamiento de los motores PAP de 4 cables, que requieren de dos circuitos conocidos como “puente H” para funcionar.

Escrito por Ariel Palazzesi

Leave a Reply