Como Controlar a Velocidade de um Motor DC com um Módulo ESP32 e L298N

Como Controlar a Velocidade de um Motor DC com um Módulo ESP32 e L298N

Controlar motores DC pode ser uma tarefa simples com os componentes e o entendimento certos. Neste tutorial, vamos explorar como controlar dois motores DC usando o microcontrolador ESP32 e o módulo driver de motor L298N. Ao final deste guia, você será capaz de ajustar a velocidade e a direção dos seus motores com base em sinais PWM do ESP32, permitindo aplicações versáteis em robótica e automação.

ESP32_L298N_DC_principal

O vídeo que acompanha este tutorial fornece uma demonstração visual de todo o processo, incluindo a fiação e a programação (no vídeo em :00).

Hardware Explicado

Módulo Controlador de Motor L298N
Módulo Controlador de Motor L298N

Para alcançar o controle do motor, usaremos o ESP32 e o módulo driver de motor L298N. O ESP32 é um microcontrolador poderoso com capacidades de Wi-Fi e Bluetooth, tornando-o ideal para projetos de IoT. O L298N é um driver de motor em ponte H que nos permite controlar a direção e a velocidade dos motores usando sinais PWM. O módulo L298N possui dois circuitos em ponte H, o que significa que podemos controlar dois motores de forma independente. Cada ponte H permite o controle da direção do motor (horário ou anti-horário) e da velocidade variando o sinal PWM. Conectando os pinos de habilitação e entrada do L298N ao ESP32, podemos manipular os motores de forma eficaz.

Detalhes da Ficha Técnica

Fabricante STMicroelectronics
Número da peça L298N
Tensão de Lógica/IO 5 V
Tensão de alimentação 5-46 V (VS)
Corrente de saída (por canal) 2 A max/canal (máx. abs.)
Corrente de pico (por canal) 2,5 A
Orientação sobre a frequência de PWM 1 kHz - 15 kHz
Limiares de lógica de entrada 2,5 V (alto), 1,5 V (baixo)
Queda de tensão / RDS(on)/ saturação 1,8 V a 2 A
Limites térmicos 150 °C
Pacote Multiwatt de 15 pinos
Notas / variantes Driver de motor com ponte H dupla

  • Certifique-se de que a classificação de tensão do motor corresponda à tensão de alimentação do L298N.
  • Use dissipadores de calor adequados para operação contínua em altas correntes.
  • Conecte os componentes de terra para evitar referências flutuantes.
  • Use uma frequência PWM adequada para a aplicação (1-15 kHz).
  • Tenha cuidado com as classificações de corrente máxima para prevenir o superaquecimento.
  • Teste a direção do motor antes de finalizar a fiação para evitar danos.
  • Considere capacitores de desacoplamento na fonte de alimentação para estabilidade.

Instruções de fiação

ESP32_L298N_wiring

Para conectar o L298N ao ESP32, comece ligando os dois motores DC aos terminais de saída do L298N. Conecte o Motor 1 aos terminais etiquetados comoOUT1eOUT2, e Motor 2 paraOUT3eOUT4. A polaridade dos motores não importa, pois o L298N cuidará da direção. Em seguida, conecte sua fonte de alimentação externa aoVMSeGNDterminais no L298N. Certifique-se de que a voltagem é apropriada para seus motores, tipicamente entre 5V e 46V. O5Vo terminal no L298N pode ser usado para alimentar o ESP32, se necessário, mas certifique-se de que os requisitos de corrente sejam atendidos. Para os pinos de controle, conecteENApara GPIO 19,IN1para GPIO 18, eIN2para o GPIO 5 para o Motor 1. Para o Motor 2, conecteIN3para GPIO 17,IN4para GPIO 16, eENBpara o GPIO 4. Finalmente, conecte os aterramentos do ESP32 e do L298N juntos para garantir uma referência comum.

Exemplos de Código e Passo a Passo

Os seguintes trechos de código ilustram como controlar os motores usando a biblioteca L298N projetada para o ESP32. A biblioteca simplifica o processo de envio de comandos para os motores. Primeiro, a biblioteca necessária é incluída e os parâmetros do motor são definidos:


#include 
#define ENA 19
#define IN1 18
#define IN2 5
#define IN3 17
#define IN4 16
#define ENB 4
Robojax_L298N_DC_motor robot(IN1, IN2, ENA, CHA, IN3, IN4, ENB, CHB);

Neste trecho, definimos os pinos de controle para ambos os motores. A instância da bibliotecaroboté criado, que será usado para controlar os motores durante todo o programa. Em seguida, configuramos a comunicação serial e inicializamos a instância do robô nasetup()função:


void setup() {
  Serial.begin(115200);
  robot.begin();
}

Isso inicializa a comunicação serial para depuração e prepara a biblioteca de controle do motor para operação. Por fim, a lógica de controle principal é colocada noloop()função, onde podemos girar os motores e ajustar sua velocidade:


void loop() {
  robot.rotate(motor1, 80, CW); // run motor1 at 80% speed in CW direction
  delay(3000); // wait for 3 seconds
  robot.brake(1); // brake motor1
  delay(2000); // wait for 2 seconds
}

Este trecho demonstra como girar o Motor 1 a 80% da velocidade em uma direção horária por três segundos antes de frear. O código completo inclui lógica adicional para o Motor 2 e variação de velocidades, que pode ser vista no programa completo carregado abaixo do artigo.

Demonstração / O Que Esperar

Ao ser executados, os motores devem responder aos sinais PWM enviados do ESP32. Você verá o Motor 1 girando no sentido horário a 80% da velocidade, seguido por uma ação de frenagem. O programa também inclui lógica para gerenciar variações de velocidade de forma gradual, que pode ser testada observando a aceleração do motor de 0% a 100% (no vídeo às 05:00). Armadilhas comuns incluem não conectar os aterramentos adequadamente, o que pode levar a um comportamento errático, e exceder as classificações de corrente do L298N, causando superaquecimento. Certifique-se de monitorar o comportamento do motor e ajustar os parâmetros conforme necessário.

Marcação de Vídeo

  • 00:46 Introdução
  • 04:07 Ligando ESP32 com L298N
  • 06:10 Preparando o Arduino IDE para trabalhar com placas ESP32
  • 08:15 Código Arduino explicado
  • 15:00 Demonstração de controle de motor único
  • 16:00 Demonstração de controle de 2 motores DC
  • 17:00 Demonstração de Alimentação do ESP32 a partir do L298N e fonte de energia externa

Imagens

Módulo Controlador de Motor L298N
Módulo Controlador de Motor L298N
ESP32_L298N_DC_main
ESP32_L298N_DC_main
ESP32_L298N_wiring
ESP32_L298N_wiring
278-Library Example for L298N Module to control DC motors
Idioma: C++
Copiado!

Coisas que você pode precisar

Recursos e referências

Arquivos📁

Bibliotecas do Arduino (zip)

Arquivo Fritzing