PR.FT5_15·Kit RPi›Motor de PassoPróximo →
⬤ Avançado · ULN2003 · 28BYJ-48

🔄 Motor de Passo 28BYJ-48

Controlar motor de passo unipolar com driver ULN2003. 512 passos por volta em modo half-step. Direção, velocidade e número de passos preciso.

Circuito

ULN2003 IN1 → GPIO 17
ULN2003 IN2 → GPIO 18
ULN2003 IN3 → GPIO 27
ULN2003 IN4 → GPIO 22
ULN2003 VCC → 5V externo (não do RPi!)
ULN2003 GND → GND comum
⚠️
O motor consome até 300mA. Não alimentar pelo 5V do RPi — usar fonte externa de 5V com terra comum ao RPi para evitar ruído e dano à placa.

Exercício — Dar uma volta completa

Python · motor_passo.py
import RPi.GPIO as GPIO
import time

PINOS = [17, 18, 27, 22]
SEQUENCIA = [
    [1,0,0,0], [1,1,0,0],
    [0,1,0,0], [0,1,1,0],
    [0,0,1,0], [0,0,1,1],
    [0,0,0,1], [1,0,0,1],
]

GPIO.setmode(GPIO.BCM)
for p in PINOS:
    GPIO.setup(p, GPIO.OUT)
    GPIO.output(p, GPIO.LOW)

def passo(passos, atraso=0.002):
    for _ in range(abs(passos)):
        seq = SEQUENCIA if passos > 0 else SEQUENCIA[::-1]
        for estado in seq:
            for i, val in enumerate(estado):
                GPIO.output(PINOS[i], val)
            time.sleep(atraso)

print("Uma volta completa para a frente...")
passo(512)   # 512 meio-passos = 1 volta
print("Meia volta para trás...")
passo(-256)

GPIO.cleanup()