Controlando motor de passo 28BYJ-48 utilizando CustomStepper

Além da tradicional biblioteca Stepper do Arduino, uma outra biblioteca bastante utilizada para controle de motores de passo, e que vamos utilizar com o motor de passo 28BYJ-48 e driver ULN2003, é a CustomStepper, que tem funções como rotacionar o motor determinado número de vezes, rotacionar apenas em um ângulo específico, ou rotacionar até que um novo comando seja enviado ao motor.

Atenção: Para mais informações sobre o funcionamento do 28BYJ-48, assim como a utilização do mesmo com a biblioteca Stepper, consulte o artigo Ligando Motor de passo 28BYJ-48 e ULN2003.

O download da biblioteca CustomStepper pode ser feito nesse link, e a instalação segue o procedimento da maioria das bibliotecas do Arduino: descompacte o arquivo zip e coloque a pasta CustomStepper na pasta LIBRARIES da IDE do seu Arduino. Não esqueça de reiniciar a IDE para que a biblioteca seja carregada corretamente.

Conexão do motor de passo no Arduino

Vamos demonstrar as funções desta biblioteca utilizando dois programas diferentes. Primeiramente, monte o circuito abaixo, que utiliza o motor de passo 28BYJ-48 e o driver ULN2003 juntamente com o Arduino Uno:

O primeiro exemplo é o controle do número de rotações do motor. Carregue o programa abaixo, que rotaciona o motor 3 vezes no sentido horário, aguarda 2 segundos e rotaciona 2 vezes no sentido anti-horário:

// Programa : Controle motor de passo 28BYJ-48 - Rotacoes  
// Autor : Arduino e Cia  
   
#include <CustomStepper.h>  
   
//Define os parametros de ligacao do motor de passo  
CustomStepper stepper(8, 9, 10, 11, (byte[]){8, B1000, B1100, B0100, 
B0110, B0010, B0011, B0001, B1001}, 4075.7728395, 12, CW);  

boolean rotate1 = false;  
boolean rotatedeg = false;  
boolean crotate = false;  
   
void setup()  
{  
  //Define a velocidade do motor  
  stepper.setRPM(12);  
  //Define o numero de passos por rotacao  
  stepper.setSPR(4075.7728395);  
}  
   
void loop()  
{  
  if (stepper.isDone() && rotate1 == false)  
  {  
    delay(2000);  
    //Define o sentido de rotacao (CW = Horario)  
    stepper.setDirection(CW);  
    //Define o numero de rotacoes  
    stepper.rotate(3);  
    rotate1 = true;  
  }  
    
  if (stepper.isDone() && rotate1 == true)  
  {  
    delay(2000);  
    //Define o sentido de rotacao (CCW = Anti-horario)  
    stepper.setDirection(CCW);  
    //Define o numero de rotacoes  
    stepper.rotate(2);  
    rotate1 = false;  
  }  

  //Comando obrigatorio para funcionamento da biblioteca  
  stepper.run();  
}  

O segundo exemplo é o controle do motor de passo pelo ângulo de rotação. A cada 2 segundos, o motor rotaciona 90 graus:

// Programa : Controle motor de passo 28BYJ-48 - Angulo  
// Autor : Arduino e Cia  
   
#include <CustomStepper.h>  
   
//Define os parametros iniciais de ligacao do motor de passo  
CustomStepper stepper(8, 9, 10, 11, (byte[]){8, B1000, B1100, B0100, 
B0110, B0010, B0011, B0001, B1001}, 4075.7728395, 12, CW);  
   
void setup()  
{  
  //Define a velocidade do motor  
  stepper.setRPM(12);  
  //Define o numero de passos por rotacao  
  stepper.setSPR(4075.7728395);  
}  
   
void loop()  
{  
 if (stepper.isDone())  
 {  
   //Intervalo entre acionamentos  
   delay(2000);  
   //Define o sentido de rotacao (CW = Horario)  
   stepper.setDirection(CW);  
   //Define o angulo de rotacao  
   stepper.rotateDegrees(90);  
  }  

  stepper.run();  
}  

Você pode adaptar esse programa para outros motores de passo observando a sintaxe do comando CustomStepper no inicio do programa:

CustomStepper stepper(8, 9, 10, 11, (byte[]){8, B1000, B1100, B0100, B0110, B0010, B0011, B0001, B1001}, 4075.7728395, 12, CW)

onde:

8, 9, 10 e 11 : são as portas utilizadas para ligação ao motor/driver

byte[]){8, B1000, B1100, B0100, B0110, B0010, B0011, B0001, B1001}

Refere-se à sequência de ativação das bobinas do motor. O número 8 corresponde ao número de passos, que no caso do 28BYJ-48 segue a tabela abaixo:

4075.7728395 = Numero de passos necessários para uma rotação completa do motor. O valor refere-se ao motor de passo 28BYJ-48, e deve ser ajustado para outros tipos de motores.

12 = Velocidade de rotação

CW = O último parâmetro é o sentido de rotação, que pode ser CW = Horário, CCW = Anti-horário, ou STOP = Parado

Como vimos, a utilização da biblioteca CustomStepper é bem simples e se mostra uma boa alternativa para controle de motores de passo.

Gostou? Confira outros posts usando motor de passo aqui mesmo no Arduino e Cia!

5/5 - (1 voto)

Related posts

Como usar o motor shield para ESP8266 NodeMCU

by Arduino e Cia
4 anos ago

Controlando servo motor com o Motor Shield L293D

by Arduino e Cia
10 anos ago

Como medir a rotação de um motor com o sensor de velocidade LM393

by Arduino e Cia
9 anos ago
Sair da versão mobile