Approved Reseller
Approved Reseller
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.
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))
Referencias: