Motor de Passo 28BYJ-48 com Controlador ( Driver ULN2003 )

Aplicação e funcionamento: O Motor de Passo é um dispositivo muito prático desenvolvido a partir de um motor onde é possível ter o controle preciso da quantidade de voltas...

Aplicação e funcionamento:

O Motor de Passo é um dispositivo muito prático desenvolvido a partir de um motor onde é possível ter o controle preciso da quantidade de voltas dadas. Comumente é muito utilizado em Scan DJ (equipamento para iluminação de festas), cortinas elétricas, ou até mesmo em alguns tipos de carrinho.

Uma característica do Motor de Passo é a menor velocidade desenvolvida com maior torque, ampliando sua aplicação. O Motor de Passo aqui apresentado possui uma redução, ou seja, enquanto o motor gira mais rápido internamente, um conjunto de engrenagens transforma a velocidade em força.

O Motor de Passo é extremamente leve e contém hastes para fixação, para funcionamento vem acompanhado de um drive que tem a função de mandar para o motor uma corrente maior que o Arduino pode fornecer.

É possível visualizar na imagem a seguir a respectiva ordem de seqüência para funcionamento do motor, lembrando que as bobinas (Coil, como descrito na imagem) que estão em vermelho estão energizadas.
No teste logo abaixo, estaremos desenvolvendo uma demonstração de funcionamento prático do Motor de passo.

 

Teste prático:

 

Produtos utilizados no teste:

arduinomotor-de-passo-com-controlador

Arduino Mega ou Arduino Uno

Motor de Passo com controlador

– Fonte de Alimentação

Jumpers

 

Montagem Física:

Para fazer as ligações é muito simples, basta seguir os passos da imagem abaixo:

esquema-motor-de-passo-com-controlador

Funcionamento do Programa:

Nosso software tem a função de fazer a sequência de pulsos aguardada pelo motor, e fazê-lo girar para um lado e para outro, onde através das variáveis no cabeçalho do código é possível alternar a velocidade do motor.

Download para programa para teste

/*********************************
***Autor: Leonardo Dalla Porta****
***********19/07/2014*************
*************Atenção**************
***O Codigo esta livre para uso,**
*desde que seja mantida sua fonte* 
********e seu autor.**************
********Faça um bom uso***********
******Att. Equipe UsinaInfo*******
*********************************/
 
int A = 4; //Entradas Motor 
int B = 5; 
int C = 6; 
int D = 7; 
 
 
// Velocidade do Motor
int velocMotor = 1048; 
 
//Variavel de pulsos
int cont = 0; 
 
// Numero de passos nescessaria para dar uma volta completa
int passosPorRotacao = 512;
 
//Definiçao da sequencia do motor
int Sequencia[8] = {B01000, B01100, B00100, B00110, B00010, B00011, B00001, B01001};
 
void setup() 
{
 pinMode(A, OUTPUT);
 pinMode(B, OUTPUT);
 pinMode(C, OUTPUT);
 pinMode(D, OUTPUT);
}
 
void loop()
{
 if(cont < passosPorRotacao )
 sentidoHorario(); 
 else if (cont == passosPorRotacao * 2)
 cont = 0;
 
 else
 sentidoAntiHorario(); 
 cont++;
}
 
//Auxiliar para girar para sentido Anti Horario
void sentidoAntiHorario()
{
 for(int i = 0; i < 18; i++)
 {
 setOutput(i);
 delayMicroseconds(velocMotor);
 }
}
 
// Auxiliar para girar para sentido Horário
void sentidoHorario()
{
 for(int i = 17; i >= 0; i--)
 {
 setOutput(i);
 delayMicroseconds(velocMotor);
 }
}
 
// Ativa o motor
void setOutput(int out) 
{
 digitalWrite(A, bitRead(Sequencia[out], 0));
 digitalWrite(B, bitRead(Sequencia[out], 1));
 digitalWrite(C, bitRead(Sequencia[out], 2));
 digitalWrite(D, bitRead(Sequencia[out], 3));
}

Conclusões:

Após os teste é possível concluir que o Motor de Passo além de ser um dispositivo pequeno e de grande utilidade para inúmeros fins, apresenta funcionamento adequado a sua proposta com rotações em velocidade reduzida, mas com maior torque, aproximadamente 2,2Kgf.cm. A utilização prática do Motor de Passo vai depender da sua criativa e necessidade.

 

Autor: Leonardo Dalla Porta

Categorias
Arduino
Um Comentário
  • Glen
    15 setembro 2018 at 00:48
    Enviar Resposta

    Muito obrigado – fácil a usar.
    Tem um erro no software: está contando entre 0 e 17 em vez de só 7. Deve ser:
    for(int i = 0; i = 0; i–)

    Eu também ajustei o código assim:
    void loop()
    {
    if (cont < passosPorRotacao )
    sentidoHorario();
    else
    sentidoAntiHorario();
    cont++;
    if (cont == passosPorRotacao * 2)
    cont = 0;
    }

    • Equipe Usinainfo
      27 setembro 2018 at 14:08
      Enviar Resposta

      Bom dia Glen!

      Agradecemos pela dica, esperamos que seja útil também para os demais usuários, o projeto foi desenvolvido como base para inspirar nosso público e ficamos felizes em saber que isto está acontecendo.

    Enviar Resposta

    *

    *

    Sobre nós

    Hoje a Usinainfo é um dos maiores ecommerces de Ferramentas, Peças para Eletrônica, Componentes Eletrônicos, Sensores e Arduino do Brasil, contando com uma grande diversidade de produtos na linha de eletrônica.

    Sugestões
    • Continuando a série de tutoriais sobre Micropython ESP32, iremos desenvolver alguns projetos para exemplificar o seu uso. Em todos os exemplos, estaremos utilizando o uPyCraft IDE. O entendimento do...
    • Micropython ESP32 é uma linguagem de programação compacta, porém eficiente, derivada de Python 3. Ela inclui diversas subfunções da biblioteca padrão do Python e é otimizada para rodar em...
    • Nesse projeto iremos usar o Sensor AM2302 para exibir informações de temperatura e umidade no display integrado do NodeMCU ESP32 Display OLED. Veremos como utilizar a biblioteca DHT para...
    • Termostato Arduino As prensas térmicas, chocadeiras e diversos equipamentos que trabalham com sistema de aquecimento necessitam de um controle de temperatura. Esse controle é utilizado, para manter a temperatura...

    Artigos Relacionados