ESP32 - Motor de corriente continua

Este tutorial explica cómo usar ESP32 para controlar un motor de corriente continua utilizando el controlador de motor L298N. En detalle, aprenderemos a controlar la velocidad y la dirección del motor de corriente continua. Aprenderemos a controlar un único motor de corriente continua y, luego, dos motores de corriente continua utilizando un único controlador L298N.

Acerca del motor de corriente continua

Disposición de pines del motor de corriente continua

Un motor de CC incluye dos cables: Negativo(negro), y Positivo(rojo)

Pinout del motor de corriente continua

Cómo funciona un motor de corriente continua

La dirección y la velocidad de un motor de corriente continua se determinarán por la forma en que le suministramos energía. A continuación se muestran las imágenes que detallan la relación entre la potencia, la velocidad y la dirección.

Cómo controlar un motor de corriente continua

En el caso de usar PWM, cuanto mayor sea el ciclo de trabajo del PWM, mayor será la velocidad a la que gira el motor.

Cómo controlar la velocidad y la dirección de un motor de corriente continua usando ESP32

En primer lugar, el motor de corriente continua funciona con un voltaje alto que puede quemar el ESP32. No podemos conectar directamente el motor de corriente continua al ESP32. Necesitamos un controlador de hardware entre el motor de corriente continua y el ESP32. El controlador cumple tres funciones:

  • Proteger el ESP32 de la alta tensión
  • Recibir la señal desde el ESP32 para cambiar el polo de la fuente de alimentación y controlar la dirección del motor.
  • Amplificar la señal PWM del ESP32 (corriente y voltaje) para controlar la velocidad del motor.
Control de motor de corriente continua con ESP32

Hay muchos controladores para motores de corriente continua. Este tutorial utilizará el controlador L298N.

Acerca del controlador L298N

Un solo controlador L298N puede controlar dos motores de corriente continua o un motor paso a paso. Este tutorial utiliza este controlador para controlar el motor de corriente continua.

Pinout del controlador L298N

La imagen de abajo muestra la disposición de pines del controlador L298N.

Disposición de pines del controlador L298N

La explicación detallada de cada pin está disponible en este Arduino - DC motor tutorial

Un solo controlador L298N puede controlar dos motores DC de forma independiente:

  • El primer motor (llamado motor A) es controlado por los pines IN1, IN2, ENA, OUT1, OUT2.
  • El segundo motor (llamado motor B) es controlado por los pines IN3, IN4, ENB, OUT3, OUT4.

Cómo controlar la velocidad de un motor de corriente continua mediante el controlador L298N

Es sencillo controlar la velocidad del motor de corriente continua generando una señal PWM al pin ENA/ENB del L298N. Podemos hacer esto de la siguiente manera:

  • Conectar el pin de salida digital de un ESP32 al pin ENA/ENB del L298N
  • Creando una señal PWM al pin ENA/ENB utilizando la función analogWrite()
  • Esta señal PWM pasa a través del controlador L298N y aumenta la corriente y el voltaje antes de llegar al motor DC
analogWrite(PIN_ENA, speed); // control motor A analogWrite(PIN_ENB, speed); // control motor B

El speed es un valor entre 0 y 255. Si es 255, el motor funciona a la velocidad máxima. Si es 0, el motor se detiene.

Cómo controlar la dirección del motor de corriente continua mediante el controlador L298N

La dirección del motor A de corriente continua puede ser controlada por los pines IN1 e IN2. La tabla siguiente muestra la relación entre la dirección del motor y la señal en los pines IN1 e IN2.

IN1 pin IN2 pin Direction
HIGH LOW DC Motor A rotates in clockwise direction
LOW HIGH DC Motor A rotates in anticlockwise direction
HIGH HIGH DC Motor A stops
LOW LOW DC Motor A stops

De igual manera, la tabla de abajo es para el motor de corriente continua B.

IN3 pin IN4 pin Direction
HIGH LOW DC Motor B rotates in clockwise direction
LOW HIGH DC Motor B rotates in anticlockwise direction
HIGH HIGH DC Motor B stops
LOW LOW DC Motor B stops

Aprendamos a programar para controlarlo. Tomemos el motor A como ejemplo. El motor B es similar.

  • Controlando el motor A en sentido horario
digitalWrite(PIN_IN1, HIGH); digitalWrite(PIN_IN2, LOW);
  • Controlando la dirección del motor A en sentido antihorario
digitalWrite(PIN_IN1, LOW); digitalWrite(PIN_IN2, HIGH);

※ Nota:

La dirección del motor de CC es opuesta si el cableado entre el motor de CC y el controlador L298N está en orden inverso. En ese caso, intercambie los pines OUT1 y OUT2.

Cómo detener un motor de corriente continua

Hay dos formas de detener un motor de corriente continua.

  • Controlando la velocidad a cero
analogWrite(PIN_ENA, 0);
  • Controlar los pines IN1 y IN2 para que tengan el mismo nivel: bajo o alto
digitalWrite(PIN_IN1, HIGH); digitalWrite(PIN_IN2, HIGH);
  • O
digitalWrite(PIN_IN1, LOW); digitalWrite(PIN_IN2, LOW);

Cómo controlar un motor de corriente continua utilizando el controlador L298N.

Diagrama de cableado

Hay tres jumpers en el módulo L298N. Retire todos ellos antes de realizar el cableado.

Diagrama de cableado del motor DC para ESP32 y el controlador L298N

This image is created using Fritzing. Click to enlarge image

Si no sabe c\u00f3mo alimentar ESP32 y otros componentes, encuentre instrucciones en el siguiente tutorial: C\u00f3mo alimentar ESP32.

Traduce al español el contenido que se indica a continuación; devuelve únicamente el resultado:

Código ESP32

Veamos el código que se encuentra abajo y que hace lo siguiente uno por uno:

  • El ESP32 controla cada vez más la velocidad del motor de corriente continua.
  • El ESP32 invierte la dirección del motor de corriente continua.
  • El ESP32 controla la velocidad del motor de corriente continua de forma decreciente.
  • El ESP32 detiene el motor de corriente continua.
/* * Este código de ESP32 fue desarrollado por es.newbiely.com * Este código de ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/esp32/esp32-dc-motor */ #define PIN_IN1 19 // ESP32 pin GPIO19 connected to the IN1 pin L298N #define PIN_IN2 18 // ESP32 pin GPIO18 connected to the IN2 pin L298N #define PIN_ENA 17 // ESP32 pin GPIO17 connected to the EN1 pin L298N // the setup function runs once when you press reset or power the board void setup() { // initialize digital pins as outputs. pinMode(PIN_IN1, OUTPUT); pinMode(PIN_IN2, OUTPUT); pinMode(PIN_ENA, OUTPUT); } // the loop function runs over and over again forever void loop() { digitalWrite(PIN_IN1, HIGH); // control the motor's direction in clockwise digitalWrite(PIN_IN2, LOW); // control the motor's direction in clockwise for (int speed = 0; speed <= 255; speed++) { analogWrite(PIN_ENA, speed); // speed up delay(10); } delay(2000); // rotate at maximum speed 2 seconds in clockwise direction // change direction digitalWrite(PIN_IN1, LOW); // control the motor's direction in anti-clockwise digitalWrite(PIN_IN2, HIGH); // control the motor's direction in anti-clockwise delay(2000); // rotate at maximum speed for 2 seconds in anti-clockwise direction for (int speed = 255; speed >= 0; speed--) { analogWrite(PIN_ENA, speed); // speed down delay(10); } delay(2000); // stop motor 2 second }

Pasos R\u00e1pidos

  • Si es la primera vez que usas ESP32, consulta cómo configurar el entorno para ESP32 en Arduino IDE.
  • Quita los tres jumpers del módulo L298N.
  • Copia el código anterior y pégalo en el IDE de Arduino.
  • Compila y sube el código a la placa ESP32 haciendo clic en el botón Upload en el IDE de Arduino
  • Observa el motor DC. Verás:
    • El motor DC se acelera y gira a la velocidad máxima durante 2 segundos
    • La dirección del motor DC se invierte
    • El motor DC gira en la dirección inversa a la velocidad máxima durante 2 segundos
    • El motor DC se desacelera
    • El motor DC se detiene durante 2 segundos
  • El proceso anterior se repite de forma infinita.

※ Nota:

Este tutorial te enseña cómo controlar la velocidad del motor de corriente continua de forma relativa. Para controlar la velocidad absoluta (revoluciones por segundo), es necesario utilizar un controlador PID y la retroalimentación de un codificador.

Cómo controlar dos motores de corriente continua utilizando el controlador L298N

(próximamente)

Video Tutorial

Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.

Referencias de idiomas

※ NUESTROS MENSAJES

  • No dude en compartir el enlace de este tutorial. Sin embargo, por favor no use nuestro contenido en otros sitios web. Hemos invertido mucho esfuerzo y tiempo en crear el contenido, ¡por favor respete nuestro trabajo!