Interfaceando o motor de passo com o Arduino Uno

Tempo de leitura: 6 minutes
Motores de passo estão cada vez mais assumindo sua posição no mundo da eletrônica. Começando de uma câmera de vigilância normal a uma complicada máquina/robô CNC, esses motores de passo são usados ​​em todos os lugares como atuadores, pois fornecem controle preciso. Neste tutorial, aprenderemos sobre o motor de passo mais comumente disponível/mais barato 28-BYJ48  e como fazer a interface com o Arduino  using  módulo deslizante ULN2003.

Motores de passo:

Vamos dar uma olhada neste  28-BYJ48 Motor de passo.

Stepper motor

Ok, tão diferente de um motor DC normal, este tem cinco fios de todas as cores sofisticadas que saem dele e por que é isso? Para entender isso, primeiro devemos saber como funciona um stepper e qual é a sua especialidade. Antes de mais motores de passo não giram, eles pisam e também são conhecidos como & nbsp; motores de passo . Ou seja, eles irão mover apenas um passo de cada vez. Esses motores possuem uma sequência de bobinas presentes e essas bobinas precisam ser energizadas de uma maneira específica para fazer o motor girar. Quando cada bobina está sendo energizada, o motor dá um passo e uma sequência de energização fará o motor dar passos contínuos, fazendo com que ele gire. Vamos dar uma olhada nas bobinas presentes no interior do motor para saber exatamente de onde vêm esses fios.
Stepper motor wires
Como você pode ver, o motor possui arranjo de bobina Unipolar de 5 derivações. Existem quatro bobinas que precisam ser energizadas em uma sequência específica. Os fios vermelhos serão fornecidos com + 5V e os quatro fios restantes serão puxados para o terra para acionar a respectiva bobina. Usamos um microcontrolador como o Arduino energizando essas bobinas em uma sequência específica e fazendo o motor executar o número necessário de etapas.
Então agora, por que esse motor é chamado de  28-BYJ48? A sério!!! Eu não sei. Não há razão técnica para esse motor ter esse nome; talvez devêssemos mergulhar muito mais fundo nisso. Vejamos alguns dos dados técnicos importantes obtidos na folha de dados deste motor na figura abaixo.
Technical Data from the Datasheet of Stepper Motor
Dados técnicos da folha de dados do motor de passo
Essa é uma cabeça cheia de informações, mas precisamos examinar algumas importantes para saber que tipo de passo estamos usando, para que possamos programá-la com eficiência. Primeiro sabemos que é um motor de passo de 5V, pois energizamos o fio vermelho com 5V. Então, também sabemos que é um motor de passo de quatro fases, uma vez que possuía quatro bobinas. Agora, a relação de transmissão é de 1:64. Isso significa que o eixo que você vê do lado de fora fará uma rotação completa somente se o motor girar por 64 vezes. Isso ocorre devido às engrenagens conectadas entre o motor e o eixo de saída, que ajudam a aumentar o torque.
Outro dado importante a ser observado é o Stride Angle: 5.625°/64. Isso significa que o motor, quando opera na sequência de 8 etapas, moverá 5,625 graus para cada etapa e será necessário 64 etapas (5,625*64 = 360) para concluir uma rotação completa.

Cálculo dos passos por rotação para o motor de passo:

É importante saber como calcular os passos por rotação do seu motor de passo, porque só assim você poderá programá-lo de maneira eficaz.
No Arduino, operaremos o motor em uma sequência de 4 etapas, para que o ângulo da passada seja 11,25° desde que seja 5.625<(fornecido na folha de dados) por 8 etapas  sequência será 11,25° (5,625 * 2 = 11,25).
     Passos por rotação = 360/ângulo de passo
Aqui, 360/11,25 = 32 etapas por revolução.

Por que precisamos de módulos de driver para motores de passo?

A maioria motores de passo funcionará apenas com a ajuda de um módulo de driver. Isso ocorre porque o módulo controlador (no nosso caso, Arduino) não poderá fornecer corrente suficiente de seus pinos de E/S para o motor operar. Portanto, usaremos um módulo externo como ULN2003 módulo como motores de passo. Existem muitos tipos de módulos de acionamento e a classificação de um será alterada com base no tipo de motor usado. O princípio principal para todos os módulos de acionamento será fornecer/absorver corrente suficiente para o motor operar.

Diagrama e explicação do circuito de controle do motor de passo Arduino: 

Arduino stepper motor control circuit diagram
O diagrama do circuito para o projeto de controle do motor de passo do arduino é mostrado acima. Usamos o motor de passo 28BYJ-48 e o módulo Driver ULN2003. Para energizar as quatro bobinas do motor de passo, estamos usando os pinos digitais 8,9,10 e 11. O módulo de acionamento é alimentado pelo pino de 5V da placa Arduino.
Mas, ligue o driver com fonte de alimentação externa quando estiver conectando alguma carga ao motor da estepe. Como estou apenas usando o motor para fins de demonstração, usei o trilho de + 5V da placa Arduino. Lembre-se também de conectar o terra do Arduino ao solo do módulo Driver.

Código para o Arduino Board:

Antes de começarmos a programar com o nosso Arduino, vamos entender o que realmente deve acontecer dentro do programa. Como dito anteriormente, usaremos o método de sequência de quatro etapas, por isso teremos quatro etapas a serem executadas para fazer uma rotação completa.
Passo
Pino energizado
Bobinas Energizadas
Passo 1
8 e 9
A e B
Passo 2
9 e 10
B e C
Passo 3
10 e 11
C e D
Passo 4
11 e 8
D e A
O módulo Driver terá quatro LEDs, nos quais podemos verificar qual bobina está sendo energizada a qualquer momento. O vídeo que mostra a sequência de energização pode ser encontrado no final deste tutorial.
Neste tutorial, vamos escrever o código do motor de passo arduino e por isso vamos programar o Arduino de forma que possamos inserir o número de etapas a serem seguidas pelo motor de passo através do monitor serial do Arduino. O programa completo pode ser encontrado no final do tutorial, e algumas linhas importantes são explicadas abaixo.
O número de etapas por rotação do nosso motor de passo foi calculado em 32; portanto, inserimos isso como mostrado na linha abaixo
#define STEPS 32
Em seguida, você deve criar instâncias nas quais especificamos os pinos aos quais conectamos o motor de passo.
Stepper stepper (STEPS, 8, 10, 9, 11);
Nota: O número de pinos é desordenado como 8,10,9,11 de propósito. Você deve seguir o mesmo padrão, mesmo se alterar os pinos aos quais o seu motor está conectado.
Como estamos usando a biblioteca passo a passo do Arduino, podemos definir a velocidade do motor usando a linha abaixo. A velocidade pode variar de 0 a 200 para motores de passo 28-BYJ48.
stepper.setSpeed(200);
Agora, para fazer o motor se mover um passo, podemos usar a seguinte linha.
stepper.step(val);
O número de etapas a serem movidas será fornecido pela variável “val”. Como temos 32 etapas e 64 como a relação de transmissão, precisamos mover 2048 (32*64=2048), para fazer uma rotação completa.
O valor da variável “val” pode ser inserido pelo usuário usando o monitor serial.

Trabalho do motor deslizante com Arduino:

Após a conexão, o hardware deve se parecer com isso na figura abaixo.
Arduino Stepper Motor Control
Agora, faça o upload do programa abaixo no seu Arduino UNO e abra o monitor serial. Como discutido anteriormente, teremos que fazer 2048 etapas para fazer uma rotação completa; assim, quando entrarmos em 2048, o motor fará uma rotação completa no sentido horário, fazendo 2048 etapas. Para girar no sentido anti-horário, basta digitar o número com o sinal negativo “n”. Então, entrando no  -1024 fará o motor girar na metade do caminho no sentido anti-horário. Você pode inserir os valores desejados, como digitar 1; fará o motor dar apenas um passo.
Espero que você tenha entendido o projeto e tenha gostado de construí-lo. O trabalho completo do projeto é mostrado no vídeo abaixo. Se você tiver alguma dúvida, poste-as na seção de comentários abaixo, em nossos fóruns.
Código:
//Código de controle do motor de passo Arduino
#include <Stepper.h> //Incluir o arquivo de cabeçalho

//altere isso para o número de etapas no seu motor
#define STEPS 32

//crie uma instância da classe stepper usando as etapas e pinos
Stepper stepper(STEPS, 8, 10, 9, 11);
int val = 0;

void setup() {
  Serial.begin(9600);
  stepper.setSpeed(200);
}

void loop() {
  if (Serial.available()>0)
  {
    val = Serial.parseInt();
    stepper.step(val);
    Serial.println(val); //para depuração
  }
}

 

Visits: 2 Visits: 1191660