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
Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
ESP32 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
New Line
9600 baud
The limit switch: TOUCHED The DC motor is STOPPED The DC motor is STOPPED The DC motor is STOPPED The DC motor is STOPPED
Ln 11, Col 1
ESP32 Dev Module on COM15
2

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.
Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
ESP32 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
New Line
9600 baud
The limit switch: TOUCHED The direction -> ANTI-CLOCKWISE The limit switch: TOUCHED The direction -> CLOCKWISE
Ln 11, Col 1
ESP32 Dev Module on COM15
2

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.
Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
ESP32 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
New Line
9600 baud
The limit switch 1: TOUCHED The direction -> ANTI-CLOCKWISE The limit switch 2: TOUCHED The direction -> CLOCKWISE
Ln 11, Col 1
ESP32 Dev Module on COM15
2

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!