ESP8266 - Motor de Passo 28BYJ-48 com Driver ULN2003
Este tutorial ensina você a usar o ESP8266 para controlar o Motor de Passo 28BYJ-48 usando o Driver ULN2003. Em detalhes, vamos aprender:
- Como conectar o ESP8266 ao motor de passo 28BYJ-48 por meio do driver ULN2003
- Como programar o ESP8266 para controlar um motor de passo 28BYJ-48 por meio do driver ULN2003

Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Sobre o Motor de Passo 28BYJ-48
Os motores de passo são ideais para o controle de posição. Eles dividem uma revolução completa em um conjunto de "passos" iguais. Esses motores são usados em uma variedade de dispositivos, incluindo impressoras, impressoras 3D, máquinas CNC e automação industrial.
Um dos métodos de baixo custo para adquirir conhecimento sobre motores de passo é usar os motores de passo 28BYJ-48. Eles geralmente vêm com uma placa de driver baseada no ULN2003, o que os torna fáceis de usar.
Conforme indicado no datasheet, o motor 28BYJ-48 opera no modo de passo completo, com cada passo representando uma rotação de 11.25°. Portanto, há 32 passos em uma única revolução (360°/11.25° = 32).
Além disso, o motor tem um conjunto de engrenagens de redução de 1/64. Isso se traduz em 32 x 64 = 2048 passos. Cada passo equivale a 360°/2048 = 0.1758°.
Conclusão: Se o motor estiver configurado no modo de passo completo, ele precisará de 2048 passos para completar uma revolução.
Pinagem do Motor de Passo 28BYJ-48 com Driver ULN2003
O motor de passo 28BYJ-48 tem 5 pinos. Não precisamos nos preocupar com os detalhes desses pinos. Tudo o que precisamos fazer é encaixá-lo no conector do driver de motor ULN2003.

Sobre o Módulo Driver de Motor de Passo ULN2003
O ULN2003 é um módulo driver de motor muito usado para motores de passo.
- Ele tem quatro LEDs que mostram a atividade das quatro linhas de entrada de controle, o que dá um efeito impressionante quando o motor está em movimento.
- Além disso, inclui um jumper ON/OFF para separar a fonte de alimentação do motor de passo.
Pinagem do ULN2003

O módulo ULN2003 tem 6 pinos e um conector fêmea:
- IN1: Este pino é usado para acionar o motor e deve ser conectado a um pino de saída do ESP8266.
- IN2: Este pino é usado para acionar o motor e deve ser conectado a um pino de saída do ESP8266.
- IN3: Este pino é usado para acionar o motor e deve ser conectado a um pino de saída do ESP8266.
- IN4: Este pino é usado para acionar o motor e deve ser conectado a um pino de saída do ESP8266.
- GND: É um pino de terra comum e deve ser conectado aos dois GNDs: o do ESP8266 e o da fonte de alimentação externa.
- VDD: Este pino fornece energia para o motor e deve ser conectado à fonte de alimentação externa.
- Conector do Motor: É onde o motor é encaixado.
※ Nota:
- A tensão da fonte de alimentação externa deve corresponder à tensão do motor de passo. Por exemplo, se um motor de passo opera com 12V DC, deve-se usar uma fonte de 12V. No caso de um motor de passo 28BYJ-48, que funciona com 5V DC, deve-se usar uma fonte de 5V.
- No entanto, mesmo que o motor de passo precise de uma fonte de 5V, o pino VDD NÃO deve ser conectado ao pino 5V do ESP8266. Em vez disso, ele deve ser conectado a uma fonte externa de 5V, pois o motor de passo consome energia demais.
Diagrama de Ligação

This image is created using Fritzing. Click to enlarge image
Para mais informações, veja Pinagem do ESP8266 e como alimentar o ESP8266 e outros componentes.
Não é necessário levar em conta a cor dos fios do motor de passo. Só precisamos encaixar o conector macho do motor de passo 28BYJ-48 no conector fêmea do driver ULN2003.
Como Programar para controlar um motor de passo
Há três formas de controlar um motor de passo:
- Passo completo
- Meio passo
- Micropasso
Para aplicações básicas, podemos usar o método de passo completo. Os detalhes dos três métodos serão discutidos na parte final deste tutorial. Programar esses métodos pode ser complexo. Felizmente, há muitas bibliotecas que já fizeram o trabalho para nós, então tudo o que precisamos fazer é usar a biblioteca.
O Arduino IDE inclui uma biblioteca Stepper. No entanto, não sugerimos usar essa biblioteca pelos seguintes motivos:
- A biblioteca é bloqueante, ou seja, impede o ESP8266 de executar outras tarefas enquanto controla o motor de passo.
- Ela não oferece funções suficientes.
Em vez disso, sugerimos que você use a biblioteca AccelStepper. Esta biblioteca oferece:
- Aceleração
- Desaceleração
- Acionamento em passo completo e meio passo
- A capacidade de controlar vários motores de passo de forma independente
- Desvantagem: Não suporta acionamento em micropasso.
Código ESP8266
Passos Rápidos
Para começar com o ESP8266 no Arduino IDE, siga estes passos:
- Confira o tutorial como configurar o ambiente para o ESP8266 no Arduino IDE se esta for a sua primeira vez usando o ESP8266.
- Ligue os componentes como mostrado no diagrama.
- Conecte a placa ESP8266 ao seu computador usando um cabo USB.
- Abra o Arduino IDE no seu computador.
- Escolha a placa ESP8266 correta, como (e.g. NodeMCU 1.0 (ESP-12E Module)), e a respectiva porta COM.
- Clique no ícone Libraries na barra esquerda do Arduino IDE.
- Pesquise “AccelStepper” e localize a biblioteca AccelStepper criada por Mike McCauley.
- Depois, pressione o botão Install para instalar a biblioteca AccelStepper.

- Copie o código e abra-o com o Arduino IDE.
- Clique no botão Upload para carregar o código no ESP8266.
- Confira o motor girando.
- Ele deve girar uma revolução no sentido horário, seguida de duas revoluções no sentido anti-horário, e depois duas revoluções no sentido horário.
O procedimento é feito continuamente.
- Acompanhe o resultado no Serial Monitor.
Conhecimento Adicional
1. O motor de passo vibra enquanto se move
NÃO se preocupe se o motor de passo tremer enquanto está em movimento. Esta é uma característica típica do motor de passo. Podemos reduzir a vibração usando a técnica de controle por micropasso.
Além disso, devido a essa característica, se for gerenciado com precisão, o motor de passo pode gerar tons musicais como se fosse um instrumento musical. Um exemplo disso pode ser encontrado aqui no Hackster.io.
2. Método de controle de motores de passo
- Passo completo: A unidade de movimento é um passo, que é igual ao valor de graus especificado no datasheet ou no manual do motor de passo.
- Meio passo: Cada passo completo é dividido em dois passos menores. A unidade de movimento é a metade do passo completo. Este método permite que o motor se mova com o dobro da resolução.
- Micropasso: Cada passo completo é dividido em muitos passos menores. A unidade de movimento é uma fração do passo completo. A fração pode ser 1/4, 1/8, 1/16, 1/32 ou até mais. Este método permite que o motor se mova com resolução maior. Ele também faz o motor se mover de forma mais suave em baixas velocidades. Quanto maior o divisor, maior a resolução e mais suave será o movimento.
Se o datasheet do motor especifica 1.8 grau/passo:
- Passo completo: O motor pode se mover em incrementos de 1.8 graus por passo, resultando em 200 passos por revolução.
- Meio passo: O motor pode se mover em incrementos de 0.9 grau por passo, resultando em 400 passos por revolução.
- Micropasso: O motor pode se mover em incrementos de 0.45, 0.225, 1125, 0.05625 graus por passo, resultando em 800, 1600, 3200, 6400... passos por revolução.
O código acima usou a técnica de controle por passo completo.
3. Problema de Ressonância
Isto é para usuários avançados. Iniciantes não precisam se preocupar com isso. Ocorre em uma faixa de velocidades em que a taxa de passos é igual à frequência natural do motor. Pode haver uma mudança perceptível no ruído feito pelo motor, além de um aumento na vibração. Em aplicações reais, os desenvolvedores devem estar cientes disso.