Control de un motor paso a paso con Raspberry Pi

Stepper Motor Control IRP102

Control de un motor paso a paso con Raspberry Pi

22 Febrero, 2016 DIY, Raspberry Pi 4

En este tutorial veremos como realizar el control de un motor paso a paso con Raspberry PI.

Vamos a utilizar un motor de 5V con reductora. Este tipo de motores son bastante económicos y fáciles de conseguir.

Este motor se controla mediante 5 cables:

  • 5V
  • Fase 1
  • Fase 2
  • Fase 3
  • Fase 4

Para controlar cada una de las fases utilizaremos el integrado ULN2803, que nos proporciona 8 salidas en colector abierto controladas por 8 entradas digitales.

Podremos controlar el motor desde nuestra Raspberry Pi desde una sencilla aplicación en Python.

1. Conexión Hardware

El esquema de conexión sería el siguiente:

stepper_motor_connections

stepper_motor_connection_table
Los que dispongáis de una Hat Board IRP-102 no tendréis que preocuparos de nada, simplemente conectar el motor al conector X6, OPEN COL OUT, haciendo coincidir el cable rojo con el pin 1 del conector. Si no utilizáis la hat-board, podéis utilizar cualquier GPIO disponible, no tienen porqué ser las que se muestran en el diagrama, que corresponden con la disposición en la IRP-102.

IRP102 stepper Connection

IRP102 stepper Connection

2. Instalación de paquetes necesarios

Partimos de Raspbian como sistema operativo y Python instalado (viene por defecto con la distribución).
Solamente debemos instalar el paquete RPI.GPIO para manejar las GPIO. Para ello introducimos la siguiente orden en la línea de comandos.

 

3. Funcionamiento del motor

Este motor puede ser accionado de dos maneras:

  • Accionamiento por 4 pasos.
  • Accionamiento por 8 pasos ( 4 pasos y 4 medios pasos).
Accionamiento por 4 pasos:

Las bobinas se excitan por parejas.

Accionamiento por 8 pasos:

Se alternan parejas con bobinas solas. Con este método se consigue mayor precisión, pero menor velocidad y par.

Como ejemplo realizaremos una aplicación en Python que controle el motor en ambas modalidades. Para ello crearemos un fichero llamado stepper.py.

Lo primero que debemos hacer es añadir las siguientes líneas para importar los módulos necesarios.

La función en python que activaría los GPIO en la secuencia adecuada para un funcionamiento en 8 pasos sería la siguiente:

Habría que ir haciendo llamadas sucesivas a esta función con valores consecutivos del 1 al 8 para que el motor gire en un sentido, o del 8 al 1 para que gire en sentido contrario. Por lo tanto, la secuencia se repite cada 8 llamadas siempre que no haya un cambio de sentido. Hemos dejado el caso 0 para desactivar todas las bobinas después de cada movimiento del motor, ya que si dejamos alguna bobina activada permanentemente el motor se sobrecalentaría pudiendo llegar a dañarse.

Para el funcionamiento en 4 fases, la función en Python sería la siguiente:

En este caso la secuencia se repetirá cada cuatro pasos. Igualmente el 0 se reserva para desactivar todas las bobinas.

Para aplicar la secuencia de pasos apropiada, estas funciones serán llamadas por otras de nivel superior que harán girar el motor un número determinado de pasos en un sentido concreto.

Para el funcionamiento en 8 pasos seria de esta manera:

Mientras que para 4 pasos tendríamos:

El valor del parámetro de entrada representa al número de pasos a aplicar, y el signo del parámetro establece el sentido de giro, de forma que para valores positivos, el motor girará tantos pasos en el sentido de las agujas del reloj, mientras que para valores negativos lo hará en sentido contrario. Al finalizar la secuencia se llama a la función con valor 0 para desactivar las bobinas.

Para completar la aplicación, la función main inicializará las GPIO, capturará los parámetros de entrada y llamara a las funciones para aplicar los pasos correspondientes.

Salimos del editor guardando los cambios.

Al lanzar la aplicación le pasaremos al menos un parámetro, que es el número de pasos a realizar, con signo para determinar el sentido de giro. Si además añadimos un “1” como segundo parámetro, el motor funcionará en modo “8-pasos”, para cualquier otro valor trabajará en “4-pasos”.

Puedes descargar el script completo en tu raspberry con:

Si quieres descargar el archivo en el pc, pincha aquí.

4. Probando la aplicación
500 pasos en sentido contrario a las agujas del reloj en modo 4-pasos

800 pasos en el sentido de las agujas del reloj, en modo 8-pasos.

About the author

IngeniApp:

4 Comentarios

  1. wuilmer

    27 Mayo, 2016
    Responder

    hola tengo un motor minebea de 6 cables modelo 17PM-K302-P1V pero no se como conectarlo.

  2. wuilmer

    28 Mayo, 2016
    Responder

    Hola tengo una raspberry pi 2, tengo un motor 17PM-K302-P1V Minebea tiene 6 pines pero no se como conectarlo he utilizado tu ejemplo pero solo vibra mas no da los pasos. Espero de tu ayuda. gracias

    • IngeniApp

      28 Mayo, 2016
      Responder

      Hola! Antes de nada queremos darte la bienvenida y agradecerte tu visita.

      Sobre la cuestión que planteas. He visto que ese modelo de motor necesita una tensión de alimentación de 24V, y el gpio de la raspberry alimenta como mucho a 5V. Prueba a alimentarlo con una fuente externa.

      Saludos

    • IngeniApp

      30 Mayo, 2016
      Responder

      Hola de nuevo:

      Para manejar tu motor deberías usar un doble "puente en H" alimentado a 24V. En este tutorial lo puedes ver http://electronilab.co/tutoriales/tutorial-de-uso-driver-dual-l298n-para-motores-dc-y-paso-a-paso-con-arduino/
      Mira en el apartado "Control de una motor paso a paso Bipolar"
      Saludos

Would you like to share your thoughts?

Your email address will not be published. Required fields are marked *

Deja un comentario

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies