Site icon AranaCorp

Usando um módulo L298N com Arduino

O módulo L298N é uma placa de desenvolvimento baseada no IC L298N para a condução de motores CC ou motores passo-a-passo. Já vimos a utilização da ponte H. Pode ser encontrado como um módulo conveniente para utilizar com diferentes desempenhos, dependendo dos componentes utilizados. Veremos neste tutorial a utilização do módulo L298N com um microcontrolador Arduino.

Material

Princípio funcional

O módulo L298N é baseado no circuito integrado com o mesmo nome. O circuito L298N é uma ponte dupla H que permite mudar a direcção e a intensidade da tensão no terminal de duas cargas eléctricas.
As características do módulo L298N são:

Diagrama de cablagem

O módulo L298N é alimentado por uma fonte de tensão externa. Cada meia-ponte requer 3 pinos de saída de um microcontrolador.

Em alguns modelos deste módulo, é possível adicionar dois jumpers para ligar directamente os pinos de activação (ENA e ENB) a 5V. Isto permite activar sempre a ponte H e guardar duas saídas do microcontrolador

Código de gestão do módulo L298N

Para utilizar o módulo L298N, é necessário activar a ponte H, aplicando uma tensão de 5V ao pino EN. Em seguida, enviar um sinal PWM para o pino de Avanço (Entrada1/4) ou Inverter (Entrada2/3) para controlar a direcção e velocidade de rotação. A direcção de rotação para a frente ou para trás depende da direcção da ligação do motor.

//Constants
#define nbL298N 2

//Parameters
const int enaL298NPin[2] = {2, 4};
const int fwdL298NPin[2] = {3, 5};
const int bwdL298NPin[2] = {6, 9};

//Variables
int Power = 200;

void setup() {
  //Init Serial USB
  Serial.begin(9600);
  Serial.println(F("Initialize System"));
  //Init DCmotor
  for (int i = 0; i < nbL298N; i++) {
    pinMode(fwdL298NPin[i], OUTPUT);
    pinMode(bwdL298NPin[i], OUTPUT);
    pinMode(enaL298NPin[i], OUTPUT);
  }
}

void loop() {
  testL298N();
}

void testL298N() { /* function testL298N */
  ////Scenario to test H-Bridge
  for (int i = 0; i < nbL298N; i++) {
    digitalWrite(enaL298NPin[i], HIGH);
    analogWrite(bwdL298NPin[i], 0);
    for (int j = 0; j <= Power; j = j + 10) {
      analogWrite(fwdL298NPin[i], j);
      delay(20);
    }
    for (int j = Power; j >= 0; j = j - 10) {
      analogWrite(fwdL298NPin[i], j);
      delay(20);
    }
    delay(2000);
  }
}

Resultado

Uma vez carregado o código, deverá ver os motores a funcionar numa direcção e depois na outra.

Aplicações

Fontes

Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie

Exit mobile version