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:

Motor de passo ESP8266 NodeMCU ULN2003 28BYJ-48

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.

Motor de passo 28BYJ-48

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

Pinagem do driver de motor de passo 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

Diagrama de ligação do motor de passo com driver ULN2003 e ESP8266 NodeMCU

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

/* * Este código de ESP8266 NodeMCU foi desenvolvido por pt.newbiely.com * Este código de ESP8266 NodeMCU é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp8266/esp8266-28byj-48-stepper-motor-uln2003-driver */ // Include the AccelStepper Library #include <AccelStepper.h> // define step constant #define FULLSTEP 4 #define STEP_PER_REVOLUTION 2048 // this value is from datasheet // The ESP8266 pins entered in sequence IN1-IN3-IN2-IN4 for proper step sequence AccelStepper stepper(FULLSTEP, D1, D5, D2, D6); void setup() { Serial.begin(9600); stepper.setMaxSpeed(1000.0); // set the maximum speed stepper.setAcceleration(50.0); // set acceleration stepper.setSpeed(200); // set initial speed stepper.setCurrentPosition(0); // set position stepper.moveTo(STEP_PER_REVOLUTION); // set target position: 64 steps <=> one revolution } void loop() { // change direction once the motor reaches target position if (stepper.distanceToGo() == 0) stepper.moveTo(-stepper.currentPosition()); stepper.run(); // MUST be called in loop() function Serial.print(F("Current Position: ")); Serial.println(stepper.currentPosition()); }

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.
Biblioteca AccelStepper para ESP8266 NodeMCU
  • 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.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Nodemcu 1.0 (ESP-12E Module)
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Nodemcu 1.0 (ESP-12E Module)' on 'COM15')
New Line
9600 baud
Ln 11, Col 1
Nodemcu 1.0 (ESP-12E Module) on COM15
2

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.

Vídeo

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!