Hoje o assunto é motor de passo. Já fazia um tempo que eu queria escrever sobre motores de passo, que é um item quase que obrigatório na montagem de robôs. Vamos ver como utilizar o motor de passo 28BYJ-48 com arduino, controlando a rotação do motor. Outros usos incluem relógios, mostradores, painéis ou outros dispositivos que exijam algum tipo de deslocamento.

Vamos utilizar este conjunto Motor de passo 28BYJ-48 com driver ULN2003, que contém tudo o que você precisa para dar os primeiros passos (ops!) no assunto “motores”.

Conjunto motor passo 28BYJ-48 e ULN2003

Como funciona um motor de passo

Um motor de passo funciona aplicando-se tensões específicas a cada uma das bobinas do motor, o que faz com que ele rode no sentido horário ou anti-horário, com maior ou menor velocidade, etc.

No datasheet do motor você tem (quase) todas as informações sobre o componente, como por exemplo a disposição das bobinas:

Motor de passo 28BYJ-48 - Bobinas
Imagem : Modmypi

Esse experimento utiliza o módulo controlador com o chip driver ULN2003 (datasheet), um CI Driver de corrente que permite que, com o Arduino (que suporta corrente máxima de 50 mA por porta), sejam controlados motores que exijam correntes maiores, de até 500 mA. Este módulo aceita alimentação de 5 a 12 volts e possui leds indicadores que mostram o acionamento das bobinas.

Note que o ULN2003 somente auxilia no gerenciamento da tensão e corrente para as portas. Assim, toda a lógica de programação e sequência de bobinas que devem ser acionadas, é controlada pelo Arduino (ou outro microcontrolador que você esteja usando).

Circuito motor de passo 28BYJ-48 com arduino

Para testes, montei um circuito utilizando dois push-buttons para controlar a rotação do motor. O botão da esquerda move o motor no sentido anti-horário, e o botão da direita, no sentido horário, sem alterar a velocidade:

Circuito motor de passo 28BYJ-48 e ULN2003

E finalmente o programa, utilizando como base o exemplo da biblioteca Stepper com algumas alterações para tratamento das funções dos botões:

//Programa: Controle de sentido de rotacao de motor de passo  
//Autor: Arduino e Cia  
   
#include <Stepper.h>  
int pinobotao_ah = 3; //Porta botao sentido anti-horario  
int pinobotao_h = 2;  //Porta botao sentido horario  
int passos = 50;      //Passos a cada acionamento do botao  
int leitura = 0;      //Armazena o valor lido do botao horario  
int leitura2 = 0;   //Armazena o valor lido do botao anti-horario  
   
const int stepsPerRevolution = 500;   
 
//Inicializa a biblioteca utilizando as portas de 8 a 11 para  
//ligacao ao motor  
Stepper myStepper(stepsPerRevolution, 8,9,10,11);        
   
void setup()   
{  
  pinMode(pinobotao_h, INPUT);  
  pinMode(pinobotao_ah, INPUT);  
  myStepper.setSpeed(60); //Determina a velocidade do motor  
}  
   
void loop()  
{  
  //Gira o motor no sentido horario  
  leitura = digitalRead(pinobotao_h);   
  if (leitura != 0)
  {
    myStepper.step(-passos);   
  }  

  //Gira o motor no sentido anti-horario  
  leitura2 = digitalRead(pinobotao_ah);  
  if (leitura2 != 0)  
  {  
    myStepper.step(passos);   
  }   
}  

Por último uma observação: este motor possui uma caixa de redução embutida (daí o eixo aparente do motor não estar no centro do mesmo). A falta de algumas especificações das engrenagens da redução geram uma certa confusão na definição dos parâmetros, principalmente no número de passos para uma volta completa, o que exige atenção se você for utilizar este motor em tarefas mais precisas.

No vídeo abaixo você confere o projeto em funcionamento:


Confira outros posts usando motor de passo 28BYJ-48 aqui mesmo no Arduino e Cia!

4/5 - (1 vote)