ESP8266 - Motor de Passo
Este tutorial ensina você a usar o ESP8266 para controlar um Motor de Passo usando o Driver L298N. Em detalhes, vamos aprender:
- Como usar o ESP8266 e o driver L298N para controlar um motor de passo bipolar
- Como programar o ESP8266 para controlar a posição do motor de passo
- Como programar o ESP8266 para controlar a velocidade do motor de passo
- Como programar o ESP8266 para controlar o sentido do motor de passo
O tutorial é aplicável a todos os tipos de motores de passo bipolares com quatro fios. Ele usará um motor de passo NEMA 17 como exemplo.

Se você quer controlar outro tipo de motor de passo, confira este tutorial ESP8266 - Motor de Passo 28BYJ-48.
Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Sobre o Motor de Passo
Existem dois tipos comuns de motores de passo:
- bipolar: este motor tem 4 fios
- unipolar: este motor tem 5 ou 6 fios
Para um motor de passo unipolar de 6 fios, podemos usar quatro dos seus seis fios e controlá-lo como se fosse um motor de passo bipolar.
Para motores de passo unipolares de 5 fios, consulte ESP8266 - controlar o motor de passo 28BYJ-48 usando o driver ULN2003.
O foco deste tutorial é somente o motor de passo bipolar.
Pinagem do Motor de Passo Bipolar
A pinagem do motor de passo bipolar tem 4 pinos. Diferentes fabricantes usam vários nomes para os pinos do motor. A tabela a seguir mostra alguns dos nomes de pinos mais usados:
| Nº DO PINO | Nomenclatura 1 | Nomenclatura 2 | Nomenclatura 3 |
|---|---|---|---|
| 1 | A+ | A | A |
| 2 | A- | A | C |
| 3 | B+ | B | B |
| 4 | B- | B | D |

A sequência dos pinos, a rotulagem dos fios e as cores dos fios podem variar entre fabricantes. É necessário ler o datasheet ou o manual para entender a correlação entre a cor do fio e o nome do pino. A imagem acima também mostra os detalhes de dois motores distintos, com rotulagem e coloração de fios diferentes.
Passos por Revolução
A especificação do motor indica o DEG_PER_STEP. Dependendo do tipo de controle, o STEP_PER_REVOLUTION pode ser determinado usando a tabela abaixo:
| Método de controle | Passos por Revolução | Grau real por passo |
|---|---|---|
| Passo completo | STEP_PER_REVOLUTION = 360 / DEG_PER_STEP | DEG_PER_STEP |
| Meio passo | STEP_PER_REVOLUTION = (360 / DEG_PER_STEP) * 2 | DEG_PER_STEP / 2 |
| Micropasso (1/n) | STEP_PER_REVOLUTION = (360 / DEG_PER_STEP) * n | DEG_PER_STEP / n |
Por exemplo, se o datasheet do motor informa que ele tem 1.8 grau/passo:
| Método de controle | Passos por Revolução | Grau real por passo |
|---|---|---|
| Passo completo | 200 passos/revolução | 1.8° |
| Meio passo | 400 passos/revolução | 0.9° |
| Micropasso (1/n) | (200 * n) passos/revolução | (1.8 / n)° |
Como controlar um motor de passo usando o ESP8266
O ESP8266 pode produzir sinais para operar o motor de passo. No entanto, os sinais do ESP8266 não têm a tensão e/ou a corrente necessárias para o motor de passo. Consequentemente, é preciso um driver de hardware entre o ESP8266 e o motor de passo. Este driver tem duas funções:
- Aumentar os sinais de controle do ESP8266 (corrente e tensão)
- Proteger o ESP8266 da alta corrente e tensão usadas para alimentar o motor de passo.
Existem vários tipos de drivers de hardware que podem ser usados para gerenciar motores de passo. Um dos drivers de hardware mais usados para controlar motores de passo é o Driver L298N.
Sobre o Driver L298N
Um Driver L298N pode ser usado para controlar dois motores DC ou um motor de passo. Este tutorial ensina você a usá-lo para controlar o motor de passo.
Pinagem do Driver L298N

O Driver L298N tem 11 pinos e três jumpers:
- Pino VCC: Fornece energia para o motor e pode ficar entre 5 e 35V.
- Pino GND: É um pino de terra comum e precisa ser conectado ao GND (0V).
- Pino 5V: Fornece energia para o módulo L298N e pode ser alimentado com 5V do ESP8266.
- Pinos IN1, IN2, IN3, IN4: São conectados aos pinos do ESP8266 para receber o sinal de controle do motor de passo.
- Pinos OUT1, OUT2, OUT3, OUT4: São conectados ao motor de passo.
- Jumpers ENA, ENB: São usados para habilitar o motor de passo, e os dois jumpers ENA e ENB precisam ficar no lugar.
- Jumper 5V-EN: Se ele ficar no lugar, a energia para o módulo L298N vem do VCC e nada precisa ser conectado ao pino 5V. Se ele for removido, é preciso fornecer energia ao módulo L298N por meio de um pino 5V.
O driver L298N tem duas alimentações de entrada:
- Uma para o motor de passo (pinos VCC e GND): de 5 a 35 Volts.
- Uma para a operação interna do módulo L298N (pinos 5V e GND): de 5 a 7 Volts. Se o jumper 5V-EN for deixado no lugar, essa alimentação não é necessária.
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.
※ Nota:
- Deixe os três jumpers do módulo L298N no lugar se a fonte de alimentação do motor for de 12V ou menos.
- A disposição dos pinos nos motores de passo pode variar entre fabricantes. Consulte a tabela abaixo para garantir a ligação correta.
Tabela de ligação entre o ESP8266 e o Driver L298N
| Pinos do ESP8266 | Pinos do L298N |
|---|---|
| 7 | IN1 |
| 6 | IN2 |
| 5 | IN3 |
| 4 | IN4 |
Tabela de ligação entre o Driver L298N e o Motor de Passo
Importante!: Não dê atenção à ordem dos fios do motor de passo na imagem do diagrama de ligação. Ela é apenas uma ilustração. A disposição dos pinos nos motores de passo pode variar dependendo do fabricante. Certifique-se de que a sua ligação siga a tabela abaixo.
| Pinos do L298N | Pinos do motor de passo | Ou | Ou |
|---|---|---|---|
| OUT1 | A+ | A | A |
| OUT2 | A- | A | C |
| OUT3 | B+ | B | B |
| OUT4 | B- | B | D |
Antes de comprar um motor de passo, sugerimos que você revise o datasheet, a especificação ou o manual do motor de passo. Certifique-se de que ele inclui a correlação entre a cor e o nome do pino. Por exemplo, este motor de passo fornece o mapeamento como visto na imagem a seguir:

Usando o mapeamento, a tabela de ligação é:
| Pinos do L298N | pinos do motor de passo | cor do fio |
|---|---|---|
| OUT1 | A | fio preto |
| OUT2 | C | fio verde |
| OUT3 | B | fio vermelho |
| OUT4 | D | fio azul |
※ Nota:
Nas tabelas de ligação apresentadas acima, OUT1 e OUT2, assim como OUT3 e OUT4, podem ser trocados entre si. Isso aumenta o número de configurações de ligação possíveis. No entanto, isso também pode fazer o motor mudar o seu sentido de rotação (de horário para anti-horário, ou vice-versa).
Como controlar um Motor de Passo usando um driver L298N.
Controlar um motor de passo pode ser uma tarefa desafiadora, principalmente quando precisamos fazê-lo sem interrupção. Felizmente, a biblioteca AccelStepper torna isso muito fácil.
O Arduino IDE inclui uma biblioteca Stepper embutida. No entanto, não sugerimos usar essa biblioteca porque:
- Ela contém uma função bloqueante, que impede o ESP8266 de executar outras tarefas enquanto controla o motor de passo.
- Ela não tem recursos 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 ao mesmo tempo, com cada motor podendo se mover de forma independente
- Desvantagem: Não suporta acionamento em micropasso
Como Controlar a Posição do Motor de Passo via Driver L298N
Podemos alcançar a posição desejada do motor de passo através de: . 1. Definir a posição atual como o ponto de referência . 1. Estabelecer o ponto de referência como a posição atual
※ Nota:
A função stepper.moveTo() é não bloqueante, o que é uma grande vantagem da biblioteca. No entanto, ao usá-la, precisamos ter cuidado:
- Garanta que 'stepper.run()' seja chamada o mais frequentemente possível, de preferência dentro da função void loop().
- Evite usar a função delay() enquanto o motor está em movimento.
- Não use as funções Serial.print() ou Serial.println() enquanto o motor está em funcionamento, pois isso vai deixar o seu movimento mais lento.
Como Controlar a Velocidade do Motor de Passo via Driver L298N
Podemos regular tanto a velocidade quanto a aceleração/desaceleração por meio de algumas funções simples.
Como Controlar o Sentido do Motor de Passo via Driver L298N
Se você ligar o motor como indicado, ele vai girar no:
- Sentido horário: quando o motor é movido de uma posição mais baixa para uma mais alta (incremento de posição)
- Sentido anti-horário: quando o motor é deslocado de uma posição mais alta para uma mais baixa (decremento de posição)
- Se a posição atual é 100 e mandamos o motor para 200, ele vai girar no sentido horário.
- Quando a posição atual é -200 e o motor recebe a instrução de ir para -100, ele vai girar no sentido horário.
- Se a posição atual é 200 e o motor recebe o comando de ir para 100, ele vai girar no sentido anti-horário.
- Se a posição atual é -100 e o motor recebe a instrução de ir para -200, ele vai girar no sentido anti-horário.
※ Nota:
Como observado anteriormente, se você trocar OUT1 com OUT2, ou OUT3 com OUT4, o aumento da posição pode ser anti-horário e a diminuição da posição pode ser horária.
Como Parar o Motor de Passo
- O motor de passo vai parar quando chegar à posição desejada.
- Se uma parada imediata for desejada, a função stepper.stop() pode ser usada.
Código ESP8266 - Código do Motor de Passo
O código abaixo:
- Faz o motor girar uma revolução no sentido horário
- Pausa o motor por 5 segundos
- Faz o motor girar uma revolução no sentido anti-horário
- Para o motor por 5 segundos
- Repete este processo continuamente
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.
- Clique no botão Install para instalar a biblioteca AccelStepper.

Copie o código e abra-o com o Arduino IDE.
Clique no botão Upload no Arduino IDE para carregar o código no ESP8266.
Você vai observar que o motor de passo gira uma revolução no sentido horário, pausa por 5 segundos, depois gira de volta uma revolução no sentido anti-horário e pausa novamente por 5 segundos. Este processo se repete continuamente.
Confira os resultados no Serial Monitor.
Explicação do Código
Confira a explicação linha por linha contida nos comentários do código-fonte!