Arduino UNO R4 - Actuador con retroalimentación

Este tutorial de Arduino UNO R4 muestra cómo usar un *actuador lineal de retroalimentación* en tus proyectos de bricolaje.

En la lección anterior, usamos un actuador lineal sin retroalimentación. Ese tipo solo se desplaza hacia adentro o hacia afuera, pero no nos indica su posición.

Ahora, aprenderemos sobre un actuador lineal con retroalimentación. Puede decirnos en qué posición se encuentra mientras se mueve, para que podamos controlar su posición exacta.

En esta guía simple, aprenderás:

Este sencillo proyecto de Arduino es adecuado para principiantes. Sigue esta guía fácil para aprender programación de Arduino y crear un sistema móvil inteligente.

Acerca del Actuador Lineal de Retroalimentación

Un actuador lineal con retroalimentación es un tipo de actuador lineal que incluye una señal de retroalimentación para monitorear y controlar su posición. Esta retroalimentación proviene de un potenciómetro que proporciona una salida de voltaje correspondiente a la posición del actuador.

Esquema de pines del actuador lineal de retroalimentación

Un actuador lineal con retroalimentación tiene cinco cables:

  • Cable positivo del actuador: Este cable controla el actuador lineal utilizando alta tensión (12 V, 24 V, 48 V).
  • Cable de 5 V: Este cable se conecta al potenciómetro de retroalimentación. Conéctelo a 5 V o 3,3 V.
  • Cable GND: Este cable se conecta al potenciómetro de retroalimentación. Conéctelo a la tierra (GND).
  • Cable del potenciómetro: También conocido como el cable de retroalimentación o de salida, este cable envía un voltaje que cambia en función de la posición del recorrido.
Diagrama de pines del actuador lineal con retroalimentación.

Cómo funciona

Cuando suministramos un voltaje alto a los cables positivo y negativo, el actuador se extenderá o se retraerá. Específicamente, si conectamos:

  • Conecte 12V (como 12V, 24V, 48V, ...) y GND a los cables positivo y negativo, respectivamente: el actuador lineal se extiende a máxima velocidad hasta que se detenga al final.
  • Conecte 12V (como 12V, 24V, 48V, ...) y GND a los cables negativo y positivo, respectivamente: el actuador lineal se retrae a máxima velocidad hasta que se detenga al final.
  • Si se corta la energía del actuador (GND conectado a los cables positivo y negativo) mientras se está extendiendo o retrayendo, el actuador dejará de moverse.

※ Nota:

  • La tensión necesaria para controlar el actuador varía según sus especificaciones. Consulte la hoja de datos o el manual para conocer la tensión adecuada.
  • El actuador puede mantener su posición sin energía, incluso si está sosteniendo un peso.

El voltaje en el cable del potenciómetro cambia según la posición del actuador. Al verificar este voltaje, podemos saber en qué posición se encuentra el recorrido.

Diagrama de cableado

Antes de realizar el cableado, retire los tres puentes del módulo L298N.

Diagrama de cableado del controlador L298N para Arduino UNO R4 con actuador lineal.

This image is created using Fritzing. Click to enlarge image

Ver La mejor forma de alimentar Arduino Uno R4 y otros componentes.

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

Visita el tutorial del Arduino UNO R4 Actuador aquí.

Cómo encontrar la posición del actuador lineal

Así es como se encuentra la posición de la carrera en un actuador lineal:

Calibración

  • Mide la longitud de la carrera del actuador (en milímetros) con una regla o consulta la hoja de datos.
  • Obtén los valores de salida cuando el actuador lineal esté completamente extendido y retraído ejecutando el siguiente código.
/* * Este código de Arduino UNO R4 fue desarrollado por es.newbiely.com * Este código de Arduino UNO R4 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-actuator-with-feedback */ // the code for getting the feedback when the actuator fully extended and retracted #define ENA_PIN 11 // The Arduino Uno R4 pin connected to the EN1 pin L298N #define IN1_PIN 6 // The Arduino Uno R4 pin connected to the IN1 pin L298N #define IN2_PIN 5 // The Arduino Uno R4 pin connected to the IN2 pin L298N #define POTENTIOMETER_PIN A0 // The Arduino Uno R4 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); }
  • Verá el registro en el Monitor Serial como se muestra en el ejemplo a continuación.
COM6
Send
POTENTIOMETER_MAX = 987 POTENTIOMETER_MIN = 13
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Anota estos valores.
  • Si los valores mínimo y máximo están invertidos, intercambia IN1_PIN con IN2_PIN.
  • Actualiza tres valores en el código a continuación.

Código para Arduino UNO R4 que calcula la posición del actuador

/* * Este código de Arduino UNO R4 fue desarrollado por es.newbiely.com * Este código de Arduino UNO R4 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-actuator-with-feedback */ #define ENA_PIN 11 // The Arduino Uno R4 pin connected to the EN1 pin L298N #define IN1_PIN 6 // The Arduino Uno R4 pin connected to the IN1 pin L298N #define IN2_PIN 5 // The Arduino Uno R4 pin connected to the IN2 pin L298N #define POTENTIOMETER_PIN A0 // The Arduino Uno R4 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"); }
  • Modifica los tres valores ajustados en el código
  • Carga el código en el Arduino UNO R4
  • Verifica 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 a una posición específica

/* * Este código de Arduino UNO R4 fue desarrollado por es.newbiely.com * Este código de Arduino UNO R4 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-actuator-with-feedback */ #define ENA_PIN 11 // The Arduino Uno R4 pin connected to the EN1 pin L298N #define IN1_PIN 6 // The Arduino Uno R4 pin connected to the IN1 pin L298N #define IN2_PIN 5 // The Arduino Uno R4 pin connected to the IN2 pin L298N #define POTENTIOMETER_PIN A0 // The Arduino Uno R4 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.

Resumen

En este tutorial de Arduino UNO R4, aprendiste a usar un actuador lineal con retroalimentación para proyectos de bricolaje. Esta guía sencilla te mostró cómo funciona el actuador, cómo determinar su posición en milímetros y cómo moverlo al lugar correcto con la programación de Arduino. Después de nuestra lección sobre un actuador lineal sin retroalimentación, este sencillo proyecto de Arduino te enseña a crear un sistema móvil inteligente. ¡Ahora puedes construir tus propios proyectos de control de movimiento con Arduino UNO R4!

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!