Ir a contenido
Cómo conectar un Motor a Pasos a Raspberry Pi - 330ohms

Cómo conectar un Motor a Pasos a Raspberry Pi - 330ohms

En este pequeño tutorial veremos cómo conectar un motor a pasos a una tarjeta Raspberry Pi, también encontrarás un código de programación para tus primeras pruebas.

Este ejemplo está pensado para usar un motor a pasos de imanes permanentes bipolar, ya que estos son los más comunes en proyectos pequeños de electrónica. Si deseas saber más sobre como se clasifican los motores a pasos te recomendamos: Motores a pasos… ¿unipolares o bipolares?

En este caso utilizaremos el Motor a pasos 5v – 28BYJ-48, dicho motor es del tipo unipolar, sin embargo al utilizar solo 4 de sus terminales y omitir el uso de una de ellas el motor puede funcionar como bipolar.

Un motor a pasos bipolar cuenta con 2 bobinas, 2 cables/terminales para cada una. Debido a la configuración de las bobinas la corriente puede fluir en ambos sentidos por lo que se requiere de una etapa de potencia que permita esto. Nosotros utilizaremos el puente H L293D.

Componentes Necesarios

  • Motor a pasos 5v – 28BYJ-48
  • Raspberry Pi
  • Puente H L293D
  • Jack de 2.1mm Terminal de Barril a Terminal de Tornillo
  • Eliminador 5V, mínimo 1A – Terminal de Barril 2.1mm
  • Protoboard chica
  • Cables para conexión M-M y H-M

Diagrama de Conexiones

Raspberry Pi – L293D – 28BYJ-48

Código de Python3

Copiamos el siguiente código de ejemplo de Adafruit a un script de Python y lo ejecutamos con Python3 para observar el movimiento del motor según los parámetros a ingresar.

 import time import board import digitalio   enable_pin = digitalio.DigitalInOut(board.D18) coil_A_1_pin = digitalio.DigitalInOut(board.D15) coil_A_2_pin = digitalio.DigitalInOut(board.D14) coil_B_1_pin = digitalio.DigitalInOut(board.D23) coil_B_2_pin = digitalio.DigitalInOut(board.D24)   enable_pin.direction = digitalio.Direction.OUTPUT coil_A_1_pin.direction = digitalio.Direction.OUTPUT coil_A_2_pin.direction = digitalio.Direction.OUTPUT coil_B_1_pin.direction = digitalio.Direction.OUTPUT coil_B_2_pin.direction = digitalio.Direction.OUTPUT   enable_pin.value = True   def forward(delay, steps):     i = 0     while i in range(0, steps):         setStep(1, 0, 1, 0)         time.sleep(delay)         setStep(0, 1, 1, 0)         time.sleep(delay)         setStep(0, 1, 0, 1)         time.sleep(delay)         setStep(1, 0, 0, 1)         time.sleep(delay)         i += 1   def backwards(delay, steps):     i = 0     while i in range(0, steps):         setStep(1, 0, 0, 1)         time.sleep(delay)         setStep(0, 1, 0, 1)         time.sleep(delay)         setStep(0, 1, 1, 0)         time.sleep(delay)         setStep(1, 0, 1, 0)         time.sleep(delay)         i += 1   def setStep(w1, w2, w3, w4):     coil_A_1_pin.value = w1     coil_A_2_pin.value = w2     coil_B_1_pin.value = w3     coil_B_2_pin.value = w4   while True:     user_delay = input("Delay between steps (milliseconds)?")     user_steps = input("How many steps forward? ")     forward(int(user_delay) / 1000.0, int(user_steps))     user_steps = input("How many steps backwards? ")     backwards(int(user_delay) / 1000.0, int(user_steps))

¡Sigue explorando!

Referencias:

Adafruit’s Raspberry Pi Lesson 10. Stepper Motors

Artículo anterior Tutorial #8 de Raspberry Pi Pico: sensor ultrasónico - 330ohms