ESP8266 - Actuador de retroalimentación

En un tutorial anterior, discutimos el actuador lineal sin retroalimentación. Este tutorial le enseña sobre el actuador lineal con retroalimentación (también llamado actuador lineal de retroalimentación). Este tipo de actuador lineal proporciona información para identificar la posición de su recorrido y controlarlo. Específicamente, aprenderemos:

Hardware Requerido

1×ESP8266 NodeMCU
1×Cable USB Tipo-A a Tipo-C (para PC USB-A)
1×Cable USB Tipo-C a Tipo-C (para PC USB-C)
1×12V Linear Feedback Actuator
1×Módulo Controlador de Motor L298N
1×Adaptador de Corriente 12V
1×Conector de Alimentación DC
1×Cables Puente
1×(Recomendado) Placa de Expansión de Terminales de Tornillo para ESP8266
1×(Recomendado) Divisor de Alimentación para ESP8266 Tipo-C

Or you can buy the following kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgación: Algunos de los enlaces proporcionados en esta sección son enlaces de afiliado de Amazon. Podemos recibir una comisión por las compras realizadas a través de estos enlaces sin costo adicional para usted. Apreciamos su apoyo.

Acerca del actuador lineal con retroalimentación

Un actuador lineal con retroalimentación es aquel que tiene una señal para identificar su ubicación y gestionarla. Se utiliza un potenciómetro para generar el valor de voltaje en relación con la posición del recorrido como retroalimentación.

Diagrama de pines del actuador lineal con retroalimentación

Un actuador lineal con retroalimentación tiene 5 cables:

  • Cable positivo del actuador: Este cable se utiliza para controlar el actuador lineal aplicando un voltaje alto (12V, 24V, 48V, ...).
  • Cable negativo del actuador: Este cable se utiliza para controlar el actuador lineal aplicando un voltaje alto (12V, 24V, 48V, ...).
  • Cable de 5V: este cable se utiliza para el potenciómetro de retroalimentación. Debe conectarse a 5V o 3.3V.
  • Cable GND: este cable se utiliza para el potenciómetro de retroalimentación. Debe conectarse a GND.
  • Cable del potenciómetro: (también conocido como cable de retroalimentación, o cable de salida) este cable entrega el valor de voltaje de acuerdo con la posición del recorrido.
Esquema de pines del actuador lineal con retroalimentación

Cómo funciona

Si suministramos alta tensión a los cables positivo y negativo, el recorrido del actuador se extenderá o retraerá. Específicamente:

  • Si se conecta 12V (12V, 24V, 48V...) al cable positivo y GND al cable negativo, el actuador lineal se extenderá a máxima velocidad hasta que alcance el límite.
  • Si se conecta 12V (12V, 24V, 48V...) al cable negativo y GND al cable positivo, el actuador lineal se retraerá a máxima velocidad hasta que alcance el límite.
  • Si se corta la alimentación al actuador (GND a ambos cables, positivo y negativo), el actuador dejará de extenderse/retraerse.

※ Nota:

  • El voltaje requerido para operar el actuador está determinado por sus especificaciones. Para conocer el voltaje exacto, consulte la hoja de datos o el manual.
  • Incluso cuando la alimentación está desconectada, el actuador puede mantener su posición mientras soporta una carga.

La tensión en el alambre del potenciómetro está directamente relacionada con la posición de carrera del actuador. Al medir esta tensión, podemos determinar la posición de carrera.

Diagrama de cableado

Retira los tres jumpers del módulo L298N antes de conectar los cables.

Diagrama de cableado del actuador lineal ESP8266 NodeMCU y del controlador L298N

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.

Cómo controlar la extensión y la retracción de un actuador lineal

Consulta el ESP8266 - Actuador tutorial.

Cómo encontrar la posición del actuador lineal

Esta es una ilustración de cómo localizar el recorrido en un actuador lineal.

Calibración

  • Determine la longitud del recorrido del actuador (en milímetros) midiendo con una regla o consultando la hoja de datos.
  • Para determinar los valores de salida cuando el actuador lineal esté completamente extendido y completamente retraído, ejecute el código a continuación.
/* * 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-feedback-actuator */ // The code for getting the feedback when the actuator fully extended and retracted #define ENA_PIN 7 // The ESP8266 pin connected to the EN1 pin L298N #define IN1_PIN 6 // The ESP8266 pin connected to the IN1 pin L298N #define IN2_PIN 5 // The ESP8266 pin connected to the IN2 pin L298N #define POTENTIOMETER_PIN A0 // The ESP8266 pin connected to the potentiometer of the actuator void setup() { Serial.begin(9600); // initialize digital pins as outputs. pinMode(ENA_PIN, OUTPUT); pinMode(IN1_PIN, OUTPUT); pinMode(IN2_PIN, OUTPUT); digitalWrite(ENA_PIN, HIGH); } void loop() { // extend the actuator digitalWrite(IN1_PIN, HIGH); digitalWrite(IN2_PIN, LOW); delay(20000); // wait for actuator fully extends. It will stop extending automatically when reaching the limit // read the analog in value: int POTENTIOMETER_MAX = analogRead(POTENTIOMETER_PIN); Serial.print("POTENTIOMETER_MAX = "); Serial.println(POTENTIOMETER_MAX); // retracts the actuator digitalWrite(IN1_PIN, LOW); digitalWrite(IN2_PIN, HIGH); delay(20000); // wait for actuator fully extends. It will stop retracting automatically when reaching the limit int POTENTIOMETER_MIN = analogRead(POTENTIOMETER_PIN); Serial.print("POTENTIOMETER_MIN = "); Serial.println(POTENTIOMETER_MIN); }
  • Observarás el registro en el Monitor Serial, como se demuestra en el siguiente ejemplo.
COM6
Send
POTENTIOMETER_MAX = 987 POTENTIOMETER_MIN = 13
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Toma nota de los tres valores en el código que se muestra a continuación. Si los valores mínimo y máximo están invertidos, intercambia IN1_PIN y IN2_PIN.

Tenga en cuenta los tres valores en el código que se muestra a continuación. Si los valores mínimo y máximo están invertidos, intercambie IN1_PIN y IN2_PIN.

Código ESP8266 que calcula la posición del actuador

/* * 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-feedback-actuator */ #define ENA_PIN 7 // The ESP8266 pin connected to the EN1 pin L298N #define IN1_PIN 6 // The ESP8266 pin connected to the IN1 pin L298N #define IN2_PIN 5 // The ESP8266 pin connected to the IN2 pin L298N #define POTENTIOMETER_PIN A0 // The ESP8266 pin connected to the potentiometer of the actuator #define STROKE_LENGTH 102 // PLEASE UPDATE THIS VALUE (in millimeter) #define POTENTIOMETER_MAX 987 // PLEASE UPDATE THIS VALUE #define POTENTIOMETER_MIN 13 // PLEASE UPDATE THIS VALUE void setup() { Serial.begin(9600); // initialize digital pins as outputs. pinMode(ENA_PIN, OUTPUT); pinMode(IN1_PIN, OUTPUT); pinMode(IN2_PIN, OUTPUT); digitalWrite(ENA_PIN, HIGH); } void loop() { // extend the actuator digitalWrite(IN1_PIN, HIGH); digitalWrite(IN2_PIN, LOW); int potentiometer_value = analogRead(POTENTIOMETER_PIN); int stroke_pos = map(potentiometer_value, POTENTIOMETER_MIN, POTENTIOMETER_MAX, 0, STROKE_LENGTH); Serial.print("The stroke's position = "); Serial.print(stroke_pos); Serial.println(" mm"); }
  • Actualiza el código con los tres valores calibrados.
  • Carga el código al ESP8266.
  • Consulta el resultado en el Monitor Serial.
COM6
Send
The stroke's position = 2 mm The stroke's position = 35 mm The stroke's position = 43 mm The stroke's position = 60 mm The stroke's position = 68 mm The stroke's position = 79 mm The stroke's position = 83 mm The stroke's position = 96 mm The stroke's position = 100 mm
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Cómo controlar un actuador lineal para que alcance una posición específica

/* * 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-feedback-actuator */ #define ENA_PIN 7 // The ESP8266 pin connected to the EN1 pin L298N #define IN1_PIN 6 // The ESP8266 pin connected to the IN1 pin L298N #define IN2_PIN 5 // The ESP8266 pin connected to the IN2 pin L298N #define POTENTIOMETER_PIN A0 // The ESP8266 pin connected to the potentiometer of the actuator #define STROKE_LENGTH 102 // PLEASE UPDATE THIS VALUE (in millimeter) #define POTENTIOMETER_MAX 987 // PLEASE UPDATE THIS VALUE #define POTENTIOMETER_MIN 13 // PLEASE UPDATE THIS VALUE #define TOLERANCE 5 // in millimeter int targetPosition_mm = 50; // in millimeter void setup() { Serial.begin(9600); // initialize digital pins as outputs. pinMode(ENA_PIN, OUTPUT); pinMode(IN1_PIN, OUTPUT); pinMode(IN2_PIN, OUTPUT); digitalWrite(ENA_PIN, HIGH); } void loop() { int potentiometer_value = analogRead(POTENTIOMETER_PIN); int stroke_pos = map(potentiometer_value, POTENTIOMETER_MIN, POTENTIOMETER_MAX, 0, STROKE_LENGTH); Serial.print("The stroke's position = "); Serial.print(stroke_pos); Serial.println(" mm"); if (stroke_pos < (targetPosition_mm - TOLERANCE)) ACTUATOR_extend(); else if (stroke_pos > (targetPosition_mm + TOLERANCE)) ACTUATOR_retract(); else ACTUATOR_stop(); } void ACTUATOR_extend() { digitalWrite(IN1_PIN, HIGH); digitalWrite(IN2_PIN, LOW); } void ACTUATOR_retract() { digitalWrite(IN1_PIN, LOW); digitalWrite(IN2_PIN, HIGH); } void ACTUATOR_stop() { digitalWrite(IN1_PIN, LOW); digitalWrite(IN2_PIN, LOW); }

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 Funciones

Tutoriales Relacionados

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