ESP32 con motor CC y controlador de motor L298N: control de velocidad y dirección

¿Quieres aprender a controlar la velocidad y dirección de un motor CC utilizando un ESP32 y un controlador de motor L298N? En este artículo te mostraremos cómo puedes realizar esta tarea de forma sencilla y eficiente. Sigue leyendo para descubrir todo lo que necesitas saber para llevar a cabo este interesante proyecto de electrónica.

Este tutorial muestra cómo controlar la dirección y velocidad de un motor de CC usando un ESP32 y el controlador de motor L298N. Primero, echemos un vistazo rápido a cómo funciona el controlador del motor L298N. A continuación te mostraremos con un ejemplo cómo controlar la velocidad y dirección de un motor DC con el controlador de motor L298N usando el ESP32 programado con Arduino IDE.

ESP32 con motor CC y controlador de motor L298N: control de velocidad y dirección

Actualizado el 11 de junio de 2024

Nota: Hay muchas formas de controlar un motor de CC. Usamos el controlador de motor L298N. Este tutorial también es compatible con módulos de controlador de motor similares.

Tabla de contenido

Este tutorial cubre los siguientes temas:

¿Estás usando un ESP8266? En su lugar, siga este tutorial: ESP8266 NodeMCU con motor CC y controlador de motor L298N – Control de velocidad y dirección (Arduino IDE)

requisitos

Antes de continuar, asegúrese de verificar los siguientes requisitos previos:

ESP32 con Arduino IDE

Programamos el ESP32 con Arduino IDE. Así que asegúrese de tener instalado el complemento ESP32. Siga el siguiente tutorial si aún no lo ha hecho:

  • Instalación de la placa ESP32 en Arduino IDE 2 (Windows, Mac OS X, Linux)

Alternativamente, también puedes programar el ESP32 con VS Code y la extensión platformIO:

  • Comenzando con VS Code y PlatformIO IDE para ESP32 y ESP8266

Piezas requeridas

Para completar este tutorial necesitarás las siguientes partes:

ESP32 con motor CC y controlador de motor L298N: control de velocidad y dirección

Puedes utilizar los enlaces anteriores o ir directamente MakerAdvisor.com/tools ¡Para encontrar todas las piezas para tus proyectos al mejor precio!

ESP32 con motor CC y controlador de motor L298N: control de velocidad y dirección

Presentamos el controlador de motor L298N

Hay varias formas de controlar un motor de CC. El método que utilizamos aquí es adecuado para la mayoría de los motores de hobby que requieren 6 V o 12 V para funcionar.

Usaremos el controlador de motor L298N que puede manejar hasta 3A a 35V. Además, nos permite accionar dos motores DC al mismo tiempo, lo que es perfecto para construir un robot.

El controlador del motor L298N se muestra en la siguiente figura:

ESP32 con motor CC y controlador de motor L298N: control de velocidad y dirección

Configuración de pines del controlador del motor L298N

Echemos un vistazo a la distribución de pines del controlador del motor L298N y veamos cómo funciona.

ESP32 con motor CC y controlador de motor L298N: control de velocidad y dirección

El controlador del motor tiene un bloque de dos terminales a cada lado para cada motor. APAGADO1 Y APAGADO2 izquierda y APAGADO3 Y APAGADO4 bien.

  • APAGADO1: Terminal A + del motor CC
  • APAGADO2: Motor CC A – terminal
  • APAGADO3: Motor CC B + terminal
  • APAGADO4: Motor CC B – terminal

Hay un bloque tripolar en la parte inferior. +12V, DimensionesY +5V. El +12V Los motores se alimentan a través del bloque de terminales. +5V El terminal se utiliza para encender el chip L298N. Sin embargo, si el puente está en su lugar, el chip se alimenta de la fuente de alimentación del motor y no es necesario conectar 5 V a través del +5V Terminal.

Importante: A pesar de la designación del terminal +12 V, puede aplicar cualquier voltaje entre 5 V y 35 V (sin embargo, el rango recomendado es de 6 V a 12 V).

nota: Si suministra más de 12 V, deberá quitar el puente y aplicar 5 V al terminal +5 V.

En este tutorial utilizamos 4 pilas AA de 1,5 V, que juntas dan alrededor de 6 V, pero también puedes utilizar cualquier otra fuente de alimentación adecuada. Por ejemplo puedes Fuente de alimentación de mesa para probar este tutorial.

En total:

  • +12V: Conecte la fuente de alimentación del motor al terminal +12V
  • Dimensiones: GND de la fuente de alimentación
  • +5V: suministra 5V cuando se quita el puente. Actúa como una salida de 5 V cuando se inserta el puente.
  • saltador: Puente insertado: utiliza la fuente de alimentación del motor para alimentar el chip. Puente retirado: Debe suministrar 5 V al terminal +5 V. Si suministras más de 12V deberás quitar el jumper.

En la parte inferior derecha hay cuatro pines de entrada y dos conexiones de activación. Los pines de entrada se usan para controlar la dirección de sus motores de CC y los pines de habilitación se usan para controlar la velocidad de cada motor.

  • EN 1: Entrada 1 para motor A
  • EN 2: Entrada 2 para motor A
  • EN 3: Entrada 1 para motor B
  • IN4: Entrada 2 para motor B
  • EN1: Pasador de activación para el motor A
  • EN2: Pasador de activación para el motor B

Hay tapas de puente estándar en los pines de activación. Debes quitar estas tapas de puente para controlar la velocidad de tus motores. De lo contrario, se detendrán o girarán a máxima velocidad.

Controle motores de CC con el controlador de motor L298N

Ahora que está familiarizado con el controlador de motor L298N, veamos cómo usarlo para controlar sus motores de CC.

Activar pines

Los pines de habilitación son como un interruptor de ENCENDIDO y APAGADO para sus motores. Ejemplo:

  • Si tienes un señal ALTA para habilitar el pin 1: el motor A está listo para el control y a máxima velocidad;
  • Si tienes un Señal débil al pin Enable 1, el motor A se apaga;
  • Si tienes un señal pwmPuedes controlar la velocidad del motor. La velocidad del motor es proporcional al ciclo de trabajo. Sin embargo, tenga en cuenta que en ciclos de trabajo pequeños es posible que los motores no giren y produzcan un zumbido continuo.
SEÑAL EN PIN DE HABILITACIÓN CONDICIÓN DEL MOTOR
ALTO Motor activado
BAJO Motor no activado
PWM Motor activado: velocidad proporcional al ciclo de trabajo.

pines de entrada

Los pines de entrada controlan la dirección de rotación de los motores. La entrada 1 y la entrada 2 controlan el motor A y las entradas 3 y 4 controlan el motor B.

  • Si aplica BAJO a la entrada 1 y ALTO a la entrada 2, el motor girará hacia adelante;
  • Si aplica el voltaje al revés: ALTO en la entrada 1 y BAJO en la entrada 2, el motor girará al revés. El motor B se puede controlar usando el mismo método pero aplicando ALTO o BAJO a la entrada 3 y a la entrada 4.

Por ejemplo, para el motor A la lógica es la siguiente:

Dirección Entrada 1 Entrada 2 Activar 1
Adelante 0 1 1
Hacia atrás 1 0 1
Para detener 0 0 0

Control de 2 motores CC: ideal para construir un robot

Si desea construir un automóvil robot con dos motores de CC, estos deben girar en direcciones específicas para que el robot vaya hacia la izquierda, hacia la derecha, hacia adelante o hacia atrás.

Por ejemplo, si desea que su robot avance, ambos motores deben girar hacia adelante. Para moverlo hacia atrás, ambos motores deben girar hacia atrás.

Para girar el robot en una dirección, es necesario girar el motor opuesto más rápido. Por ejemplo, para hacer que el robot gire hacia la derecha, active el motor de la izquierda y desactive el motor de la derecha. La siguiente tabla muestra las combinaciones de estados de los pines de entrada para las direcciones del robot.

DIRECCIÓN Entrada 1 Entrada 2 Entrada 3 Entrada 4
Adelante 0 1 0 1
Hacia atrás 1 0 1 0
Bien 0 1 0 0
Izquierda 0 0 0 1
Para detener 0 0 0 0

Recomendaciones de literatura: Construya un kit de chasis de automóvil robot para ESP32, ESP8266, Arduino, etc.

Controle el motor DC con ESP32 – velocidad y dirección

Ahora que sabe cómo controlar un motor de CC utilizando el controlador de motor L298N, creemos un ejemplo sencillo para controlar la velocidad y dirección de un motor de CC.

Conexión de un motor de CC al ESP32 (controlador de motor L298N)

El motor que vamos a controlar está conectado a los pines de salida del motor A, por lo que necesitamos conectar los pines ENABLEA, INPUT1 e INPUT2 del controlador del motor al ESP32. Siga el siguiente diagrama de circuito para conectar el motor de CC y el controlador del motor L298N al ESP32.

ESP32 con motor CC y controlador de motor L298N: control de velocidad y dirección
Controlador de motor LN298N Entrada 1 Entrada 2 Activar Dimensiones
ESP32 GPIO27 GPIO26 GPIO 14 Dimensiones

Usamos los GPIO en la tabla anterior para conectarnos al controlador del motor. Puede utilizar cualquier otro GPIO adecuado siempre que modifique el código en consecuencia. Obtenga más información sobre los GPIO ESP32: Guía de referencia de configuración de pines ESP32.

Fuente de alimentación del controlador del motor LN298N

El motor de CC requiere un gran aumento de corriente para moverse, por lo que los motores deben ser alimentados por una fuente de alimentación externa del ESP32. Como ejemplo utilizamos 4 pilas AA, pero también puedes utilizar cualquier otra fuente de alimentación adecuada. En esta configuración puedes utilizar una fuente de alimentación de 6V a 12V.

El interruptor entre el soporte de la batería y el controlador del motor es opcional pero muy conveniente para apagar y encender nuevamente. De esta forma no tendrás que conectar y desconectar cables constantemente para ahorrar energía.

Recomendamos soldar un condensador cerámico de 0,1 µF a los terminales positivo y negativo del motor de CC como se muestra en la figura para compensar los picos de voltaje. (Nota: los motores también funcionan sin condensador).

Código: ESP32 con motor DC – control de velocidad y dirección

El siguiente código controla la velocidad y dirección del motor de CC. Es posible que este código no tenga ninguna aplicación práctica en el mundo real, pero es un buen ejemplo para comprender cómo controlar la velocidad y dirección de un motor de CC utilizando el ESP32.

/*********
  Rui Santos & Sara Santos - Random Nerd Tutorials
  Complete project details at https://RandomNerdTutorials.com/esp32-dc-motor-l298n-motor-driver-control-speed-direction/
  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files.  
  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
*********/
// Motor A
int motor1Pin1 = 27; 
int motor1Pin2 = 26; 
int enable1Pin = 14; 

// Setting PWM properties
const int freq = 30000;
const int pwmChannel = 0;
const int resolution = 8;
int dutyCycle = 200;

void setup() {
  // sets the pins as outputs:
  pinMode(motor1Pin1, OUTPUT);
  pinMode(motor1Pin2, OUTPUT);
  pinMode(enable1Pin, OUTPUT);
  
  // configure LEDC PWM
  ledcAttachChannel(enable1Pin, freq, resolution, pwmChannel);

  Serial.begin(115200);

  // testing
  Serial.print("Testing DC Motor...");
}

void loop() {
  // Move the DC motor forward at maximum speed
  Serial.println("Moving Forward");
  digitalWrite(motor1Pin1, LOW);
  digitalWrite(motor1Pin2, HIGH); 
  delay(2000);

  // Stop the DC motor
  Serial.println("Motor stopped");
  digitalWrite(motor1Pin1, LOW);
  digitalWrite(motor1Pin2, LOW);
  delay(1000);

  // Move DC motor backwards at maximum speed
  Serial.println("Moving Backwards");
  digitalWrite(motor1Pin1, HIGH);
  digitalWrite(motor1Pin2, LOW); 
  delay(2000);

  // Stop the DC motor
  Serial.println("Motor stopped");
  digitalWrite(motor1Pin1, LOW);
  digitalWrite(motor1Pin2, LOW);
  delay(1000);

  // Move DC motor forward with increasing speed
  digitalWrite(motor1Pin1, HIGH);
  digitalWrite(motor1Pin2, LOW);
  while (dutyCycle <= 255){
    ledcWrite(enable1Pin, dutyCycle);   
    Serial.print("Forward with duty cycle: ");
    Serial.println(dutyCycle);
    dutyCycle = dutyCycle + 5;
    delay(500);
  }
  dutyCycle = 200;
}

Ver código sin formato

Sube el código a tu ESP32. Asegúrese de haber seleccionado la placa y el puerto COM correctos. Veamos cómo funciona el código.

Declarar pines del motor

Primero, defina los GPIO a los que están conectados los pines del motor. En este caso, la entrada 1 para el motor A está conectada a GPIO27la entrada 2 a GPIO26y el pin de habilitación para GPIO 14.

int motor1Pin1 = 27; 
int motor1Pin2 = 26; 
int enable1Pin = 14;

Configuración de propiedades de PWM para controlar la velocidad

Como ya hemos visto, puede controlar la velocidad del motor de CC aplicando una señal PWM al pin Enable del controlador del motor L298N. La velocidad es proporcional al ciclo de trabajo. Para usar PWM con el ESP32, primero debe configurar las propiedades de la señal PWM.

const int freq = 30000;
const int pwmChannel = 0;
const int resolution = 8;
int dutyCycle = 200;

En este caso generamos una señal de 30000 Hz en el canal 0 con una resolución de 8 bits. Comenzamos con un ciclo de trabajo de 200 (puede establecer un valor de ciclo de trabajo de 0 a 255).

A la frecuencia que estamos usando, si aplica un ciclo de trabajo inferior a 200, el motor no se moverá y emitirá un zumbido extraño. Por eso establecimos un ciclo de trabajo de 200 al principio.

nota: Las características PWM definidas aquí son sólo un ejemplo. El motor también funciona perfectamente con otras frecuencias.

configuración()

En el configuración()Comience configurando los pines del motor como salidas.

pinMode(motor1Pin1, OUTPUT);
pinMode(motor1Pin2, OUTPUT);
pinMode(enable1Pin, OUTPUT);

Necesita configurar un pin LEDC con las propiedades PWM que definió anteriormente. Para hacer esto, use el ledcAttachChannel() Función que acepta como argumentos el pin a controlar frecuenciaEl resolucióny eso canal ppm como sigue:

// configure LEDC PWM
ledcAttachChannel(enable1Pin, freq, resolution, pwmChannel);

Mueva el motor de CC hacia adelante

En el Cinta() es el lugar donde se mueve el motor. El código contiene comentarios detallados sobre lo que hace cada parte del código. Para mover el motor hacia adelante, configure el pin de entrada 1 en BAJO y el pin de entrada 2 en ALTO. En este ejemplo, el motor gira hacia adelante durante 2 segundos (2000 milisegundos).

// Move the DC motor forward at maximum speed
Serial.println("Moving Forward");
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, HIGH); 
delay(2000);

Mueva el motor de CC hacia atrás

Para mover el motor de CC hacia atrás, aplique energía a los pines de entrada del motor en orden inverso. ALTO en la entrada 1 y BAJO en la entrada 2.

// Move DC motor backwards at maximum speed
Serial.println("Moving Backwards");
digitalWrite(motor1Pin1, HIGH);
digitalWrite(motor1Pin2, LOW); 
delay(2000);

Detenga el motor de CC

Para detener el motor de CC, puede configurar el pin de habilitación en BAJO o configurar los pines de entrada 1 y 2 en BAJO. En este ejemplo configuramos ambos pines de entrada en BAJO.

// Stop the DC motor
Serial.println("Motor stopped");
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, LOW);
delay(1000);

Control de velocidad del motor de CC

Para controlar la velocidad del motor de CC, necesitamos cambiar el ciclo de trabajo de la señal PWM. Para hacer esto, use el ledcEscribir() Función que acepta como argumentos el GPIO que genera la señal y el ciclo de trabajo de la siguiente manera.

ledcWrite(enable1Pin, dutyCycle);

En nuestro ejemplo, tenemos un bucle while que aumenta el ciclo de trabajo en 5 en cada bucle.

// Move DC motor forward with increasing speed
digitalWrite(motor1Pin1, HIGH);
digitalWrite(motor1Pin2, LOW);
while (dutyCycle <= 255){
  ledcWrite(enable1Pin, dutyCycle);
  Serial.print("Forward with duty cycle: ");
  Serial.println(dutyCycle);
  dutyCycle = dutyCycle + 5;
  delay(500);
}

Cuando ya no se cumple la condición While, volvemos a establecer el ciclo de trabajo en 200.

dutyCycle = 200;

Mira el vídeo de demostración

Mire el siguiente vídeo para ver el proyecto en acción:

Envolver

En este tutorial le mostramos cómo controlar la dirección y velocidad de un motor de CC usando un ESP32 y el controlador de motor L298N. Resumido:

  • Para controlar la dirección de rotación del motor de CC, utilice el Entrada 1 Y Entrada 2 Lápices;
  • Para girar el motor hacia adelante, aplique BAJO a la entrada 1 y ALTO a la entrada 2. Para hacerlo girar hacia atrás, aplique la corriente en la otra dirección.
  • Para controlar la velocidad del motor de CC, envíe una señal PWM al pin de activación. La velocidad del motor de CC es proporcional al ciclo de trabajo.

Esperamos que este tutorial te haya resultado útil.

Este es un extracto de nuestro curso: Aprendiendo ESP32 con Arduino IDE. Si te gusta ESP32 y quieres aprender más sobre él, te recomendamos apuntarte al curso Aprende ESP32 con Arduino IDE.

Obtenga más información sobre el ESP32 con nuestros recursos:

  • Aprenda ESP32 con Arduino IDE (libro electrónico)
  • Construya servidores web con ESP32 y ESP8266 (libro electrónico)
  • Aplicación web Firebase con ESP32 y ESP8266 (libro electrónico)
  • HOGAR INTELIGENTE con Raspberry Pi, ESP32 y ESP8266
  • Proyectos y tutoriales ESP32 gratuitos…

Gracias por leer.

Error 403 The request cannot be completed because you have exceeded your quota. : quotaExceeded

ESP32 con motor CC y controlador de motor L298N: control de velocidad y dirección

Este tutorial muestra cómo controlar la dirección y la velocidad de un motor de corriente continua utilizando un ESP32 y el controlador de motor L298N. Primero, echaremos un vistazo rápido a cómo funciona el controlador de motor L298N. Luego, te mostraremos un ejemplo de cómo controlar la velocidad y dirección de un motor de corriente continua con el controlador de motor L298N utilizando el ESP32 programado con Arduino IDE.

Tabla de Contenidos

  1. Introducción al Controlador de Motor L298N
  2. Pinout del Controlador de Motor L298N
  3. Control de Motores de Corriente Continua con el L298N
  4. Control de Motor de Corriente Continua con ESP32 – Velocidad y Dirección
  5. Cableado de un Motor de Corriente Continua al ESP32 (Controlador L298N)
  6. Código: ESP32 con un Motor de Corriente Continua – Control de Velocidad y Dirección

Preguntas Frecuentes

  1. ¿Cómo se controla la dirección de un motor con el L298N?
  2. Para controlar la dirección de un motor con el L298N, se utilizan los pines de entrada 1 y 2. Si aplicas un valor BAJO al pin de entrada 1 y un valor ALTO al pin de entrada 2, el motor girará hacia adelante. Si aplicas los valores de manera opuesta, es decir ALTO al pin de entrada 1 y BAJO al pin de entrada 2, el motor girará hacia atrás.

  3. ¿Cómo se controla la velocidad de un motor con el L298N?
  4. Para controlar la velocidad de un motor con el L298N, se envía una señal PWM al pin de habilitación. La velocidad del motor será proporcional al ciclo de trabajo de la señal. Por lo tanto, ajustando el ciclo de trabajo de la señal PWM, se puede controlar la velocidad del motor.

  5. ¿Cómo se conecta un motor de corriente continua al ESP32?
  6. Para conectar un motor de corriente continua al ESP32, necesitas cablear los pines de entrada 1, entrada 2 y habilitación del controlador L298N a los pines GPIO específicos del ESP32. Además, se debe proporcionar una fuente de alimentación adecuada tanto para el ESP32 como para el motor.

Nota: hay muchas formas de controlar un motor de corriente continua. Utilizaremos el controlador de motor L298N en este tutorial. Este tutorial también es compatible con módulos de controladores de motor similares.

Deja un comentario