🔄 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()