ESP32 - Motor de corriente continua - Interruptor de límite

En este tutorial de ESP32, vamos a aprender cómo usar ESP32 para controlar un motor DC mediante un interruptor de límite y un controlador L298N. En detalle, vamos a aprender:

En este tutorial sobre ESP32, exploraremos el proceso de utilizar el ESP32 para controlar un motor de corriente continua utilizando un interruptor de fin de carrera y un controlador L298N. Específicamente, cubriremos los siguientes aspectos:

Acerca del motor de corriente continua y el interruptor de límite

Si no conoces el motor de corriente continua y el interruptor de límite (disposición de pines, cómo funciona, cómo programarlo ...), aprende sobre ellos en los siguientes tutoriales:

Diagrama de Cableado

Este tutorial proporciona los códigos para ESP32 para dos casos: un motor DC y un interruptor de final de carrera; un motor DC y dos interruptores de final de carrera.

  • Diagrama de cableado entre el motor de corriente continua y un interruptor de fin de carrera
Diagrama de cableado del motor DC y del interruptor de fin de carrera para ESP32

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.

  • Diagrama de cableado entre el motor de corriente continua y dos interruptores de fin de carrera
Diagrama de cableado para ESP32: motor de corriente continua y dos interruptores de límite.

This image is created using Fritzing. Click to enlarge image

Código para ESP32 - Detener un motor DC mediante un interruptor de fin de carrera

El código a continuación hace que un motor DC gire indefinidamente y se detenga de inmediato cuando se activa un interruptor de fin de carrera.

/* * 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-limit-switch */ #include <ezButton.h> #define ENA_PIN 19 // ESP32 pin GPIO19 connected to the IN1 pin L298N #define IN1_PIN 18 // ESP32 pin GPIO18 connected to the IN2 pin L298N #define IN2_PIN 17 // ESP32 pin GPIO17 connected to the EN1 pin L298N ezButton limitSwitch(25); // create ezButton object that attach to pin GPIO25 void setup() { Serial.begin(9600); limitSwitch.setDebounceTime(50); // set debounce time to 50 milliseconds // initialize digital pins as outputs. pinMode(ENA_PIN, OUTPUT); pinMode(IN1_PIN, OUTPUT); pinMode(IN2_PIN, OUTPUT); digitalWrite(ENA_PIN, HIGH); // max speed digitalWrite(IN1_PIN, HIGH); // control motor A spins clockwise digitalWrite(IN2_PIN, LOW); // control motor A spins clockwise } void loop() { limitSwitch.loop(); // MUST call the loop() function first if (limitSwitch.isPressed()) { Serial.println(F("The limit switch: TOUCHED")); digitalWrite(IN1_PIN, LOW); // stop motor digitalWrite(IN2_PIN, LOW); // stop motor } }

Pasos R\u00e1pidos

  • Si es la primera vez que usas ESP32, consulta cómo configurar el entorno para ESP32 en Arduino IDE.
  • Realiza el cableado como en la imagen de arriba.
  • Conecta la placa ESP32 a tu PC mediante un cable USB micro.
  • Abre el IDE de Arduino en tu PC.
  • Selecciona la placa ESP32 correcta (p. ej. ESP32 Dev Module) y el puerto COM.
  • Conecta la ESP32 al PC mediante un cable USB.
  • Abre el IDE de Arduino y selecciona la placa y el puerto correctos.
  • Haz clic en el icono de Libraries en la barra izquierda del IDE de Arduino.
  • Busca “ezButton”, luego encuentra la biblioteca de ArduinoGetStarted.com.
  • Haz clic en el botón Install para instalar la biblioteca ezButton.
Biblioteca de botones para ESP32
  • Copia el código anterior y ábrelo con Arduino IDE
  • Haz clic en el botón Subir en Arduino IDE para subir el código al ESP32
  • Si el cableado es correcto, verás que el motor gira en sentido horario.
  • Toca el interruptor de límite
  • Verás que el motor se detiene de inmediato
  • El resultado en el Monitor Serial se ve a continuación
COM6
Send
The limit switch: TOUCHED The DC motor is STOPPED The DC motor is STOPPED The DC motor is STOPPED The DC motor is STOPPED
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Explicación del código

Puedes encontrar la explicación en la línea de comentarios del código de Arduino anterior.

Código ESP32: Cambiar la dirección de un motor de corriente continua mediante un interruptor de límite

El código que se muestra a continuación hace que un motor de corriente continua gire indefinidamente y cambie su dirección cuando se toca un interruptor de fin de carrera.

/* * 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-limit-switch */ #include <ezButton.h> #define DIRECTION_CCW -1 #define DIRECTION_CW 1 #define ENA_PIN 19 // ESP32 pin GPIO19 connected to the IN1 pin L298N #define IN1_PIN 18 // ESP32 pin GPIO18 connected to the IN2 pin L298N #define IN2_PIN 17 // ESP32 pin GPIO17 connected to the EN1 pin L298N ezButton limitSwitch(25); // create ezButton object that attach to pin GPIO25 int direction = DIRECTION_CW; void setup() { Serial.begin(9600); limitSwitch.setDebounceTime(50); // set debounce time to 50 milliseconds // initialize digital pins as outputs. pinMode(ENA_PIN, OUTPUT); pinMode(IN1_PIN, OUTPUT); pinMode(IN2_PIN, OUTPUT); digitalWrite(ENA_PIN, HIGH); // max speed digitalWrite(IN1_PIN, HIGH); // control motor A spins clockwise digitalWrite(IN2_PIN, LOW); // control motor A spins clockwise } void loop() { limitSwitch.loop(); // MUST call the loop() function first if (limitSwitch.isPressed()) { Serial.println(F("The limit switch: TOUCHED")); direction *= -1; // change direction Serial.print(F("The direction -> ")); if (direction == DIRECTION_CW) { Serial.println(F("CLOCKWISE")); digitalWrite(IN1_PIN, HIGH); // control motor A spins clockwise digitalWrite(IN2_PIN, LOW); // control motor A spins clockwise } else { Serial.println(F("ANTI-CLOCKWISE")); digitalWrite(IN1_PIN, LOW); // control motor A spins anti-clockwise digitalWrite(IN2_PIN, HIGH); // control motor A spins anti-clockwise } } }

Pasos R\u00e1pidos

  • Si es la primera vez que usas ESP32, consulta cómo configurar el entorno para ESP32 en Arduino IDE.
  • Realiza el cableado como en la imagen anterior.
  • Conecta la placa ESP32 a tu PC mediante un cable micro USB.
  • Abre Arduino IDE en tu PC.
  • Selecciona la placa ESP32 correcta (p. ej. ESP32 Dev Module) y el puerto COM.
  • Copia el código anterior y ábrelo con Arduino IDE
  • Haz clic en el botón Upload en Arduino IDE para subir el código al ESP32
  • Si el cableado es correcto, verás que el motor gira en sentido horario.
  • Toca el interruptor de tope.
  • Verás que la dirección del motor DC cambia a sentido antihorario.
  • Toca de nuevo el interruptor de tope.
  • Verás que la dirección del motor DC cambia a sentido horario.
  • El resultado en el Monitor Serial se muestra a continuación.
COM6
Send
The limit switch: TOUCHED The direction -> ANTI-CLOCKWISE The limit switch: TOUCHED The direction -> CLOCKWISE
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Código ESP32 - Cambiar la dirección del motor de corriente continua mediante dos interruptores de límite

El código que se muestra a continuación hace que un motor de corriente continua gire indefinidamente y cambie de dirección cuando se active uno de los dos interruptores de fin de carrera.

/* * 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-limit-switch */ #include <ezButton.h> #define DIRECTION_CCW -1 #define DIRECTION_CW 1 #define ENA_PIN 19 // ESP32 pin GPIO19 connected to the IN1 pin L298N #define IN1_PIN 18 // ESP32 pin GPIO18 connected to the IN2 pin L298N #define IN2_PIN 17 // ESP32 pin GPIO17 connected to the EN1 pin L298N ezButton limitSwitch_1(25); // create ezButton object that attach to pin GPIO25 ezButton limitSwitch_2(26); // create ezButton object that attach to pin GPIO26 int direction = DIRECTION_CW; int prev_direction = DIRECTION_CW; void setup() { Serial.begin(9600); limitSwitch_1.setDebounceTime(50); // set debounce time to 50 milliseconds limitSwitch_2.setDebounceTime(50); // set debounce time to 50 milliseconds // initialize digital pins as outputs. pinMode(ENA_PIN, OUTPUT); pinMode(IN1_PIN, OUTPUT); pinMode(IN2_PIN, OUTPUT); digitalWrite(ENA_PIN, HIGH); // max speed digitalWrite(IN1_PIN, HIGH); // control motor A spins clockwise digitalWrite(IN2_PIN, LOW); // control motor A spins clockwise } void loop() { limitSwitch_1.loop(); // MUST call the loop() function first limitSwitch_2.loop(); // MUST call the loop() function first if (limitSwitch_1.isPressed()) { direction *= -1; // change direction Serial.println(F("The limit switch 1: TOUCHED")); } if (limitSwitch_2.isPressed()) { direction *= -1; // change direction Serial.println(F("The limit switch 2: TOUCHED")); } if (prev_direction != direction) { Serial.print(F("The direction -> ")); if (direction == DIRECTION_CW) { Serial.println(F("CLOCKWISE")); digitalWrite(IN1_PIN, HIGH); // control motor A spins clockwise digitalWrite(IN2_PIN, LOW); // control motor A spins clockwise } else { Serial.println(F("ANTI-CLOCKWISE")); digitalWrite(IN1_PIN, LOW); // control motor A spins anti-clockwise digitalWrite(IN2_PIN, HIGH); // control motor A spins anti-clockwise } prev_direction = direction; } }

Pasos R\u00e1pidos

  • Si es la primera vez que usas ESP32, consulta cómo configurar el entorno para ESP32 en Arduino IDE.
  • Realiza el cableado como en la imagen de arriba.
  • Conecta la placa ESP32 a tu PC mediante un cable micro USB.
  • Abre Arduino IDE en tu PC.
  • Selecciona la placa ESP32 correcta (p. ej. Módulo de desarrollo ESP32) y el puerto COM.
  • Copia el código anterior y ábrelo con Arduino IDE.
  • Haz clic en el botón Subir de Arduino IDE para cargar el código al ESP32.
  • Si el cableado es correcto, verás que el motor gira en sentido horario.
  • Toca el interruptor de límite 1.
  • Verás que la dirección del motor DC cambia a antihorario.
  • Toca el interruptor de límite 2.
  • Verás que la dirección del motor DC cambia a sentido horario.
  • El resultado en el Monitor Serial se muestra a continuación.
COM6
Send
The limit switch 1: TOUCHED The direction -> ANTI-CLOCKWISE The limit switch 2: TOUCHED The direction -> CLOCKWISE
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

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.

※ 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!