Controlando motor de passo 28BYJ-48 com o Arduino Motor Shield L293D

Conforme prometido no artigo Controlando motores DC com o Arduino Motor Shield L293D, hoje vou apresentar o esquema de funcionamento desse shield com o nosso também já conhecido Motor de Passo 28BYJ-48 Arduino (imagem abaixo).

Atualizado: Controle também servo motores com o Motor Shield L293D. Veja no artigo  Controlando servo motor com o Motor Shield L293D.

O motor de passo 28BYJ-48 funciona com alimentação de 5V e possui uma redução de 1/64. Essa redução faz com que o número de passos necessários para que o motor dê uma volta completa seja de 4096, ou no modo de ativação de 4 passos, esse número cai pela metade, para 2048.

Modo de ativação de 8 e de 4 passos

O motor de passo pode funcionar em 2 modos de ativação: 8 passos (half-mode) ou 4 passos (full step).

No modo de ativação de 8 passos, a sequência de acionamento das bobinas segue a tabela abaixo. Primeiro é acionada uma bobina, depois duas, depois uma, depois duas novamente, e assim por diante, até se completarem os 8 passos:

Já no modo de 4 passos, são acionadas 2 bobinas de cada vez, o que reduz o número de acionamentos necessários para movimentar o motor:

O modo de acionamento de 4 passos é utilizado pela biblioteca padrão do Arduino, e teoricamente imprime mais força ao motor, já que sempre teremos duas bobinas sendo acionadas ao mesmo tempo.

Relembrando um pouco sobre o funcionamento do Motor Shield L293D, vimos que ele pode controlar 2 servos, e até 4 motores DC ou 2 motores de passo.

Para controlar motores de passo, utilizamos os conectores laterais, os mesmos usados para controlar motores DC.

Conexão dos motores no Arduino Motor Shield

Vamos ligar não só um, mas dois motores de passo 28BYJ-48 nessa placa (muito útil para um robô, não ?). Atenção para a ordem de ligação dos fios desse motor, que deve ser a mesma do circuito abaixo.

A alimentação será feita por meio dos 5V do próprio Arduino Uno que usaremos nos testes, por isso vamos manter o jumper PWR na placa.

Programa e biblioteca AFMotor

A biblioteca utilizada para controlar os motores de passo é a AFMotor, que você pode baixar nesse link. Descompacte o arquivo, renomeie a pasta para AFMotor e coloque-a dentro da pasta LIBRARIES da IDE do seu Arduino.

Para controle de motor de passo, os principais comandos do programa são :

O programa gira os dois motores de passo, alternadamente, um em cada direção. A cada ciclo, o motor se move na quantidade de graus definida na variável angulo, no início do programa.

// Programa : Controlando 2 motores de passo 28BYJ-48 com 
// Arduino Motor Shield L293D
// Autor : Arduino e Cia
 
// Carrega a biblioteca AFMotor 
#include <AFMotor.h>

//Numero de passos para 1 rotacao total
double passos_total = 2048; 
 
// Define as portas para os motores
// Valor 1 para motor em M1/M2 e 2 para motor em M3/M4
int porta_motor_1 = 1; 
int porta_motor_2 = 2;

// Angulo de rotacao do eixo
int angulo = 45; 
 
// Armazena o numero de passos que o motor vai girar
double numero_de_passos = 0; 
 
// Define os parametros do motor 1
AF_Stepper motor_de_passo_1(passos_total, porta_motor_1); 
// Define os parametros do motor 2
AF_Stepper motor_de_passo_2(passos_total, porta_motor_2);
 
void setup()
{
  // Define a velocidade de rotacao do motor 1
  motor_de_passo_1.setSpeed(10);
  // Define a velocidade de rotacao do motor 2
  motor_de_passo_2.setSpeed(10);
  // Inicializa a serial
  Serial.begin(9600);
}
 
void loop()
{
  //Calcula a quantidade de passos, baseado no angulo determinado
  numero_de_passos = angulo / (360 / passos_total);
 
  //Mostra no serial monitor o numero de passos calculados
  Serial.print("Numero de passos : ");
  Serial.println(numero_de_passos);
 
  //Move o motor 1. Use FORWARD para sentido horario,
  //BACKWARD para anti-horario
  motor_de_passo_1.step(numero_de_passos, FORWARD, SINGLE);
  motor_de_passo_1.release();

  delay(10);

  //Move o motor 1. Use FORWARD para sentido horario,
  //BACKWARD para anti-horario
  motor_de_passo_2.step(numero_de_passos, BACKWARD, SINGLE);
  motor_de_passo_2.release();
 
  delay(500);
}

O funcionamento dessa ligação e do programa apresentados você confere no vídeo abaixo:


Gostou? Confira outros posts usando motores aqui mesmo no Arduino e Cia!

5/5 - (1 voto)

Related posts

Como usar um servo motor com Arduino

by Arduino e Cia
12 anos ago

Como usar o Servo Motor Shield 16 canais Adafruit

by Arduino e Cia
9 anos ago

Como ligar o motor de passo 28BYJ-48 na Raspberry Pi

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