Início › Componentes › Motor de Passo
⬤ Avançado

🔄 Motor de Passo + ULN2003

Controlar direção, velocidade e número de rotações com precisão.

⏱️ Duração: 45 min
🧩 Componentes: Stepper + Driver ULN2003

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
}
Ver Exercícios Intermédios → ← Voltar ao Início