Controlando Motores DC con Arduino y el módulo L298N 5/5 (1) Leave a comment

Comparte este Post

Cómo controlar Motores de corriente continua con Arduino

En este tutorial, aprenderás unas cuantas cosas sobre la interfaz del módulo de controladores de motor Arduino L298N. El módulo L298N tiene el L298 Motor driver IC que es la parte principal de este módulo. Este módulo utiliza el método PWM para controlar la velocidad de los motores de corriente continua.

Especificaciones del controlador de motor L298N

  • El módulo le permitirá controlar la velocidad y la dirección de dos motores de corriente continua.
    Puede controlar motores que operan entre 5 y 35V y hasta 2A.
  • El módulo tiene un regulador incorporado que ayuda a dar la salida de 5V.
  • El módulo puede ser alimentado de 5 a 35V desde Arduino o desde una fuente de alimentación externa. Se recomienda utilizar siempre la fuente de alimentación externa.
  • También puede controlar un motor paso a paso.
  • Es económico y perfecto para proyectos de robótica.

Pin out del controlador del motor L298N

  • Motor A: Este bloque de terminales dará la salida para el primer motor.
  • Puente de 12 V: Mantén este puente en su lugar si tu voltaje de suministro es menor de 12V y la clavija de alimentación de 5V dará la salida de 5V. Si la tensión de alimentación es superior a 12V, retira este puente y suministra la alimentación de 5V a la clavija de alimentación de 5V para que el Dual H Bridge IC L298 pueda funcionar correctamente.
  • Pines de potencia: Suministra la tensión de alimentación de 5 a 35V en la clavija de 12V y a tierra. Si la tensión de alimentación es superior a 12, asegúrate de retirar el puente de 12 V. La clavija de 5V actuará como Salida si la Vs. es menor de 12V y la clavija de 5V actuará como Entrada si la Vs. es mayor de 12V.
  • Habilitar pines: Quita los puentes de los módulos Enable A y Enable B si quieres controlar la velocidad de los motores DC y conéctalos a los pines PWM de Arduino. Si deseas controlar el motor paso a paso con L298N, entonces mantén el puente en Enable A y Enable B. Mantener el puente en estos pines significa que estos pines estarán altos.
  • Pines Lógicos: Conecta los pines lógicos a cualquier pino digital de Arduino. Esto ayudará a controlar la rotación y la velocidad de los motores de corriente continua.
  • Motor B: Este bloque de terminales dará la salida para el segundo motor.
  • Regulador lineal de 5V: Esto reducirá la tensión de alimentación a 5V y dará la salida en el pin de 5V.

Arduino
  • Módulo del controlador del motor L298N
  • 2 X Motores DC
  • Módulo Joystick
  • Batería de 12V
  • Control de los motores de DC con el controlador de motor L298N

    El diagrama de circuitos para conectar el módulo del controlador del motor L298N con el Arduino se muestra a continuación. Realiza las conexiones de la siguiente manera

    L298NArduinoBatería de 5 a 12V/alimentación
    ENAPin 11
    IN1Pin 9
    IN2Pin 8
    IN3Pin 7
    IN4Pin 6
    BNTPin 10
    12VFuente de alimentación o batería de 5 a 12V
    GNDGNDNegativo de fuente de alimentación o batería

    Por último, conecta los dos motores de corriente continua en los dos lados del L298N

    Para alimentar el L298N, puedes usar las 2 baterías recargables de 3.7V. Luego conecta el módulo Joystick con el Arduino de la siguiente manera:

    Módulo Joystick
    Arduino
    VCC5V
    VERA1
    HORA0
    GNDGND

    Código del proyecto

    //Joystick Pins
    int x_key = A0;
    int y_key = A1;
    int x_pos;
    int y_pos;

    //Motor Pins
    int EN_A = 11; //Enable pin for first motor
    int IN1 = 9; //control pin for first motor
    int IN2 = 8; //control pin for first motor
    int IN3 = 7; //control pin for second motor
    int IN4 = 6; //control pin for second motor
    int EN_B = 10; //Enable pin for second motor
    //Initializing variables to store data
    int motor_speed;
    int motor_speed1;

    void setup ( ) {
    Serial.begin (9600); //Starting the serial communication at 9600 baud rate
    //Initializing the motor pins as output
    pinMode(EN_A, OUTPUT);
    pinMode(IN1, OUTPUT);
    pinMode(IN2, OUTPUT);
    pinMode(IN3, OUTPUT);
    pinMode(IN4, OUTPUT);
    pinMode(EN_B, OUTPUT);

    //Initializng the joystick pins as input
    pinMode (x_key, INPUT) ;
    pinMode (y_key, INPUT) ;
    }

    void loop () {
    x_pos = analogRead (x_key) ; //Reading the horizontal movement value
    y_pos = analogRead (y_key) ; //Reading the vertical movement value

    if (x_pos < 400){ //Rotating the left motor in clockwise direction
    motor_speed = map(x_pos, 400, 0, 0, 255); //Mapping the values to 0-255 to move the motor
    digitalWrite(IN1, LOW);
    digitalWrite(IN2, HIGH);
    analogWrite(EN_A, motor_speed);
    }

    else if (x_pos>400 && x_pos <600){ //Motors will not move when the joystick will be at center
    digitalWrite(IN1, LOW);
    digitalWrite(IN2, LOW);
    }

    else if (x_pos > 600){ //Rotating the left motor in anticlockwise direction
    motor_speed = map(x_pos, 600, 1023, 0, 255);
    digitalWrite(IN1, HIGH);
    digitalWrite(IN2, LOW);
    analogWrite(EN_A, motor_speed);
    }

    if (y_pos < 400){ //Rotating the right motor in clockwise direction
    motor_speed1 = map(y_pos, 400, 0, 0, 255);
    digitalWrite(IN3, LOW);
    digitalWrite(IN4, HIGH);
    analogWrite(EN_B, motor_speed1);
    }

    else if (y_pos>400 && y_pos <600){
    digitalWrite(IN3, LOW);
    digitalWrite(IN4, LOW);
    }

    else if (y_pos > 600){ //Rotating the right motor in anticlockwise direction
    motor_speed1 = map(y_pos, 600, 1023, 0, 255);
    digitalWrite(IN3, HIGH);
    digitalWrite(IN4, LOW);
    analogWrite(EN_B, motor_speed1);
    }
    }

    También te puede interesar


    Comparte este Post

    Deja un comentario

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

    Abrir chat
    0

    Tu carrito