ESP8266 - Interruptor de fin de carrera para motor DC

En este tutorial de ESP8266, vamos a aprender a usar ESP8266 para controlar un motor de corriente continua mediante un interruptor de fin de carrera y un controlador L298N. En detalle, vamos a aprender:

Acerca de motor de corriente continua y interruptor de fin de carrera

Si no sabes sobre motor de corriente continua y interruptor de fin de carrera (diagrama de pines, cómo funciona, cómo programarlo...), aprende sobre ellos en los siguientes tutoriales:

Diagrama de Cableado

Este tutorial proporciona los códigos de ESP8266 para dos casos: un motor de CC y un interruptor de límite; un motor de CC y dos interruptores de límite.

  • Diagrama de cableado entre el motor de corriente continua y un interruptor de fin de carrera
Diagrama de cableado del ESP8266 NodeMCU, del motor de corriente continua y del interruptor de fin de carrera

This image is created using Fritzing. Click to enlarge image

Para obtener m\u00e1s informaci\u00f3n, consulte Pines del ESP8266 y c\u00f3mo alimentar ESP8266 y otros componentes.

  • Diagrama de cableado entre el motor de CC y dos finales de carrera
Diagrama de cableado para ESP8266 NodeMCU, motor de corriente continua y dos interruptores de fin de carrera

This image is created using Fritzing. Click to enlarge image

Código ESP8266 - Detener un motor de corriente continua mediante un interruptor de fin de carrera

El código mostrado a continuación hace que un motor de corriente continua gire indefinidamente y se detenga inmediatamente cuando se acciona un interruptor de fin de carrera.

/* * Este código de ESP8266 NodeMCU fue desarrollado por es.newbiely.com * Este código de ESP8266 NodeMCU se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/esp8266/esp8266-dc-motor-limit-switch */ #include <ezButton.h> #define PIN_ENA D5 // The ESP8266 pin connected to the EN1 pin L298N #define PIN_IN1 D6 // The ESP8266 pin connected to the IN1 pin L298N #define PIN_IN2 D7 // The ESP8266 pin connected to the IN2 pin L298N ezButton limitSwitch(D1); // create ezButton object for pin ESP8266 pin D1 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

Para empezar con ESP8266 en el IDE de Arduino, siga estos pasos:

  • Consulta el cómo configurar el entorno para ESP8266 en Arduino IDE tutorial si es tu primera vez usando ESP8266.
  • Conecta los componentes tal como se muestra en el diagrama.
  • Conecta la placa ESP8266 a tu computadora usando un cable USB.
  • Abre Arduino IDE en tu computadora.
  • Selecciona la placa ESP8266 correcta, como (por ejemplo NodeMCU 1.0 (ESP-12E Module)), y su puerto COM correspondiente.
  • Conecta ESP8266 al PC mediante un cable USB.
  • Abre Arduino IDE, selecciona la placa y el puerto correctos.
  • Haz clic en el ícono Libraries en la barra izquierda del IDE de Arduino.
  • Busca “ezButton”, luego encuentra la biblioteca ezButton de ESP8266GetStarted.com.
  • Haz clic en el botón Install para instalar la biblioteca ezButton.
Biblioteca de botones para ESP8266 NodeMCU
  • Copie el código anterior y ábralo con Arduino IDE
  • Haga clic en el botón Subir en Arduino IDE para subir el código al ESP8266
  • Si el cableado es correcto, verá que el motor gira en sentido horario.
  • Toque el interruptor de límite.
  • Verá que el motor se detiene de inmediato.
  • El resultado en el Monitor Serial se muestra 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

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

Código ESP8266 - Cambiar la dirección de un motor DC mediante un interruptor de fin de carrera

El código de abajo hace que un motor de CC gire indefinidamente y cambie su dirección cuando se toca un interruptor de límite.

/* * Este código de ESP8266 NodeMCU fue desarrollado por es.newbiely.com * Este código de ESP8266 NodeMCU se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/esp8266/esp8266-dc-motor-limit-switch */ #include <ezButton.h> #define DIRECTION_CCW -1 #define DIRECTION_CW 1 #define PIN_ENA D5 // The ESP8266 pin connected to the EN1 pin L298N #define PIN_IN1 D6 // The ESP8266 pin connected to the IN1 pin L298N #define PIN_IN2 D7 // The ESP8266 pin connected to the IN2 pin L298N ezButton limitSwitch(D1); // create ezButton object for pin ESP8266 pin D1 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

  • Copia el código anterior y ábrelo con el IDE de Arduino
  • Haz clic en el botón Subir en el IDE de Arduino para subir el código al ESP8266
  • Si el cableado es correcto, verás que el motor gira en sentido horario.
  • Toca el interruptor de límite
  • Verás que la dirección del motor DC cambia a antihorario
  • Toca de nuevo el interruptor de límite
  • Verás que la dirección del motor DC vuelve a girar en 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 ESP8266 - Cambiar la dirección de un motor de corriente continua mediante dos interruptores de límite

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

/* * Este código de ESP8266 NodeMCU fue desarrollado por es.newbiely.com * Este código de ESP8266 NodeMCU se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/esp8266/esp8266-dc-motor-limit-switch */ #include <ezButton.h> #define DIRECTION_CCW -1 #define DIRECTION_CW 1 #define PIN_ENA D5 // The ESP8266 pin connected to the EN1 pin L298N #define PIN_IN1 D6 // The ESP8266 pin connected to the IN1 pin L298N #define PIN_IN2 D7 // The ESP8266 pin connected to the IN2 pin L298N ezButton limitSwitch_1(D1); // create ezButton object for pin ESP8266 pin D1 ezButton limitSwitch_2(D2); // create ezButton object for pin ESP8266 pin D2 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

  • Haz clic en el botón Subir en Arduino IDE para subir código al ESP8266
  • 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 de corriente continua cambia a sentido antihorario
  • Toca el interruptor de límite 2
  • Verás que la dirección del motor de corriente continua 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!