Magos do Arduino

Step Motor com ULN2003

Aprenda a utilizar um step motor controlado pelo módulo ULN2003 com o Arduino

Magos do Arduino

Step Motor com ULN2003

Um step motor (motor de passo) é um tipo de motor elétrico que converte pulsos elétricos em movimentos mecânicos discretos.

Por dentro, ele tem um ímã giratório (rotor) e bobinas ao redor (estator).

Ele é muito utilizado em impressoras 3D, máquinas CNC, automação residencial, entre outros.

Quando você manda um pulso elétrico para uma bobina, ela vira um eletroímã e puxa o rotor para uma nova posição.

Cada vez que você envia um novo pulso, o rotor gira um passo - um pequeno ângulo fixo, como 1,8°.

Se você mandar muitos pulsos seguidos, o motor vai girando passo a passo.

Se você mudar a ordem dos pulsos, o motor gira em outra direção.

Para controlarmos um step motor, precisamos de um módulo que consiga emitir os pulsos corretos para sua movimentação.

O módulo ULN2003 é um driver de corrente com sete canais.

Cada canal funciona como um interruptor eletrônico.

Quando combinado com o Arduino, sinais são enviados para o módulo, que repassam os pulsos para o step motor, o movimentando.

O Arduino possui a biblioteca Stepper.h que facilita essa integração.

O módulo ULN2003 possui quatro entradas de controle (IN1, IN2, IN3, IN4).

Um CI principal ULN2003.

Contém uma entrada para conexão do Step Motor.

Pinos para conexão de alimentação entre 5v-12v.

Possui 4 LEDs de indicação dos sinais de entrada.

Jumper que liga ou desliga o módulo.

Step Motor com ULN2003

Neste projeto você criará um circuito que faz o uso de um step motor controlado pelo módulo ULN2003 com o Arduino.

Para a criação deste circuito serão necessários os seguintes componentes:

  • 1x Breadboard (opcional)
  • 1x Arduino UNO
  • 1x Step Motor
  • 1x Módulo ULN2003
  • 1x Alimentação externa de 5v
  • Jumpers

Circuito Step Motor com ULN2003

Para montar o circuito, visualize na imagem a seguir como conectar os componentes entre a placa Arduino e a breadboard.

Circuito Step Motor com ULN2003

Schematics Step Motor com ULN2003

A seguir temos o schematics do circuito, que detalha suas conexões e fornece detalhes mais específicos do que o circuito da imagem anterior.

Schematics Step Motor com ULN2003

Código fonte para o circuito do Step Motor com ULN2003

Uma vez criado o circuito, use o código fonte a seguir no Arduino IDE para fazer o upload dele na placa Arduino e assim ver o resultado do circuito em funcionamento.

/**
 * Código do curso Magos do Arduino para controlar um step motor 
 * com o módulo ULN2003 no Arduino.
 * 
 * Controle de um step motor usando o módulo ULN2003 com o Arduino. 
 * Este código demonstra como rotacionar o motor em diferentes 
 * direções e velocidades.
 *
 * (c) Copyright KazaleIT
 * @kazaleitoficial no YouTube
 **/
#include <Stepper.h>

// define a quantidade de passos para uma volta no motor de passo
// consulte sobre o modelo do step motor e ajuste aqui o valor
#define PASSOS_POR_VOLTA 2048

#define PIN_IN1 8
#define PIN_IN2 9
#define PIN_IN3 10
#define PIN_IN4 11

#define VELOCIDADE_10_RPM 10
#define VELOCIDADE_15_RPM 15

// cria uma instância do objeto do step motor
Stepper stepMotor = Stepper(PASSOS_POR_VOLTA, PIN_IN1, PIN_IN3, PIN_IN2, PIN_IN4);

void setup() {
}

void loop() {
  // rotaciona 360 graus em sentido anti-horário a 10 RPM
  stepMotor.setSpeed(VELOCIDADE_10_RPM);
  stepMotor.step(PASSOS_POR_VOLTA);
  delay(1000);

  // rotaciona 180 graus em sentido horário a 15 RPM
  stepMotor.setSpeed(VELOCIDADE_15_RPM);
  stepMotor.step(-PASSOS_POR_VOLTA/2);
  delay(1000);

  // rotaciona 360 graus em 4 etapas de 90 graus em sentido anti-horário a 15 RPM,
  // con intervalo de 1 segundo a cada etapa
  stepMotor.step(PASSOS_POR_VOLTA/4);
  delay(1000);
  stepMotor.step(PASSOS_POR_VOLTA/4);
  delay(1000);
  stepMotor.step(PASSOS_POR_VOLTA/4);
  delay(1000);
  stepMotor.step(PASSOS_POR_VOLTA/4);
  delay(1000);
}