Usando um driver de motor L298N para controlar um motor de passo de 4 fios

Usando um driver de motor L298N para controlar um motor de passo de 4 fios

Neste tutorial, vamos explorar como controlar um motor de passo de 4 fios usando o driver de motor L298N em conjunto com um Arduino. O L298N é um driver duplo de ponte H versátil que nos permite controlar de forma eficaz a direção e a velocidade de motores de passo. Ao final deste guia, você terá uma configuração funcional que pode girar o motor de passo em ambas as direções e controlar sua velocidade usando um potenciômetro.

L298N motor driver (yellow connector)

Para ajudá-lo a entender melhor o processo, recomendo assistir ao vídeo associado, que apresenta uma demonstração visual da fiação e da programação (no vídeo em 01:30).

Hardware Explicado

O driver de motor L298N foi projetado para controlar motores, permitindo que você os acione tanto para frente quanto para trás. Ele utiliza uma configuração em ponte H, o que significa que pode inverter a polaridade da tensão aplicada ao motor, invertendo assim seu sentido de rotação. Este driver suporta uma tensão de alimentação de até 46V e uma corrente contínua de 2A por canal, tornando-o adequado para muitas aplicações.

Na nossa configuração, usaremos quatro pinos para controlar o motor de passo. Os pinos principais sãoENAeENB, que deve ser definido como HIGH (5V) para habilitar o driver. Os pinosIN1,IN2,IN3, eIN4controlará os estados dos enrolamentos do motor, permitindo que ele avance na direção desejada.

Detalhes da ficha técnica

FabricanteSTMicroelectronics
Número da peçaL298N
Tensão lógica/IO5 V
Tensão de alimentação5-46 V (VS)
Corrente de saída (por canal)2 A máx./canal (contínuo)
Corrente de pico (por canal)3 A máx.
Orientação sobre a frequência PWM1 kHz a 20 kHz
Limiares lógicos de entrada0.8 V (baixo), 2.0 V (alto)
Queda de tensão / RDS(on) / saturação1,5 V máx.
Limites térmicos150 °C máx.
PacoteDIP-15
Notas / variantesTambém disponível em versões planas (L298P)

  • GarantirENAeENBsão conectados a 5V para o funcionamento adequado.
  • Use dissipação térmica adequada em aplicações de alta corrente para evitar superaquecimento.
  • Mantenha o terra comum entre o Arduino e o driver do motor.
  • Tenha cuidado com a polaridade da fiação para evitar danificar o motor ou o driver.
  • Implemente capacitores de desacoplamento próximos aos pinos de alimentação para filtrar ruído.
  • Ajuste a frequência PWM de acordo com as especificações do motor para um desempenho ideal.

Instruções de fiação

L298N motor driver (yellow connector)
L298N motor driver (yellow connector)

Para conectar o driver de motor L298N ao Arduino e ao motor de passo, comece conectando a fonte de alimentação. ConecteVINpino no L298N à sua fonte de alimentação de 12V. Em seguida, conecte oGNDConecte o pino do L298N ao terra da sua fonte de alimentação e também ao terra do Arduino.

Agora, para os pinos de controle, conecteENApara o pino 2 do Arduino eENBao pino 3. Em seguida, conecteIN1ao pino 8,IN2ao pino 9,IN3ao pino 10, eIN4para o pino 11 no Arduino. Por fim, conecte os fios do motor de passo aos terminais de saída do L298N. Certifique-se de que os dois pares de fios do motor estejam conectados corretamente às saídas.

Exemplos de código e guia passo a passo

No código, primeiro incluímos oStepper.hbiblioteca para simplificar o controle do motor de passo. Definimos o número total de passos por revolução, o que é crucial para um movimento preciso. Os principais identificadores no código incluemstepsPerRevolution, que define o número de passos necessários para uma rotação completa, emyStepper, que inicializa o objeto stepper com os pinos especificados.

const int stepsPerRevolution = 200;  // change this to fit the number of steps per revolution
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11); // initialize the stepper library

Este trecho inicializa o motor de passo com os pinos apropriados. Nosetup()Na função, definimos a velocidade do motor e habilitamos o driver definindo os pinos 2 e 3 como HIGH.

void setup() {
  myStepper.setSpeed(300); // set the speed at 60 rpm
  pinMode(2,OUTPUT); // for EN1
  digitalWrite(2,HIGH); // enable EN1
  pinMode(3,OUTPUT); // for EN2
  digitalWrite(3,HIGH); // enable EN2
}

Noloop()função, o motor avança uma revolução nos sentidos horário e anti-horário, com um atraso entre eles. Isso permite que você observe o funcionamento do motor.

void loop() {
  myStepper.step(stepsPerRevolution); // step one revolution in one direction
  delay(500); // wait half a second
  myStepper.step(-stepsPerRevolution); // step one revolution in the other direction
  delay(500); // wait half a second
}

Este trecho demonstra como controlar o motor para que ele gire em ambas as direções. O código completo está disponível abaixo do artigo para sua referência.

Demonstração / O que esperar

Uma vez que tudo esteja conectado corretamente e o código carregado, você deverá ver o motor de passo girar uma volta completa em uma direção, seguida por uma volta completa na direção oposta. Além disso, se você incorporar o potenciômetro para controle de velocidade, ajustá-lo mudará a velocidade de rotação do motor. Esteja atento à corrente do motor; à medida que você aumenta a velocidade, o motor pode consumir mais corrente, o que pode levar ao superaquecimento se não for gerenciado adequadamente (no vídeo às 09:45).

Se o motor não girar como esperado, verifique a fiação para garantir que todas as conexões estejam seguras e corretamente orientadas. Além disso, verifique se a tensão da fonte de alimentação é apropriada para o seu motor de passo.

Marcas de tempo do vídeo

  • 00:00- Introdução
  • 01:30- Explicação da fiação
  • 05:00- Visão Geral do Código
  • 09:45- Demonstração de Controle de Motor

Imagens

L298N motor driver (yellow connector)
L298N motor driver (yellow connector)
L298N motor driver (yellow connector)
L298N motor driver (yellow connector)
L298N motor driver (yellow connector)
L298N motor driver (yellow connector)
Nema17_stpper_motor-1
Nema17_stpper_motor-1
Nema17_stpper_motor-2
Nema17_stpper_motor-2
94-Code for One Revolution
Idioma: C++
95-Code for rotating a stepper motor one step at a time
Idioma: C++
Copiado!

Coisas que você pode precisar

Recursos e referências

Ainda não há recursos.

Arquivos📁

Nenhum arquivo disponível.