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.
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:
Para montar o circuito, visualize na imagem a seguir como conectar os componentes entre a placa Arduino e a breadboard.
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.
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);
}