Motor de Passo + Driver ULN2003
O motor de passo 28BYJ-48 tem 4 bobinas ativadas em sequência. O driver ULN2003 amplifica os sinais do Arduino (5V, poucos mA) para corrente suficiente para mover o motor.
📐 Especificações
64 passos por revolução × redução interna ≈ 512 passos por volta completa. Tensão: 5V DC.
🔌 Driver ULN2003
Módulo com 4 entradas (IN1–IN4), 4 saídas, LEDs indicadores e conector direto para o motor.
Ligação
🔌 Arduino → Driver ULN2003
| Arduino | → | Driver ULN2003 |
|---|---|---|
| Pino 8 | → | IN1 |
| Pino 9 | → | IN2 |
| Pino 10 | → | IN3 |
| Pino 11 | → | IN4 |
| 5V | → | VCC (+) |
| GND | → | GND (−) |
O conector do motor encaixa diretamente no socket do módulo ULN2003.
Exercício 1 — Rotação Básica
ex1_stepper_basico.ino
#include <Stepper.h>
// 512 passos por revolução (com redução)
const int PASSOS = 512;
// Stepper(passos, IN1, IN3, IN2, IN4)
// IMPORTANTE: a ordem é IN1, IN3, IN2, IN4!
Stepper meuMotor(PASSOS, 8, 10, 9, 11);
void setup() {
meuMotor.setSpeed(10); // RPM (10–15 recomendado)
}
void loop() {
meuMotor.step(512); // 1 volta no sentido horário
delay(500);
meuMotor.step(-512); // 1 volta no sentido anti-horário
delay(500);
}
⚠️Não aumente a velocidade acima de 15 RPM — o motor perde passos e pode não conseguir rodar.
Exercício 2 — Controlo com Potenciómetro
ex2_stepper_pot.ino
#include <Stepper.h>
const int PASSOS = 512;
Stepper meuMotor(PASSOS, 8, 10, 9, 11);
const int POT = A0;
void setup() {
meuMotor.setSpeed(10);
}
void loop() {
int leitura = analogRead(POT);
// Mapeia 0–511 para -256 a +256 passos
int passos = map(leitura, 0, 1023, -256, 256);
meuMotor.step(passos);
// Sem delay — o step() já bloqueia durante a execução
}