Arduino Nano - Actuador de Retroalimentación

con retroalimentación

En un tutorial anterior, discutimos el actuador lineal sin retroalimentación. Ahora exploraremos el actuador lineal con retroalimentación (también conocido como el actuador lineal con retroalimentación). Este tipo de actuador proporciona información para determinar la posición de su recorrido y luego controlarlo. Específicamente, veremos:

Hardware Requerido

1×Official Arduino Nano
1×Alternatively, DIYables ATMEGA328P Nano Development Board
1×Cable USB A a Mini-B
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 Arduino Nano
1×(Recomendado) Placa de Expansión Breakout para Arduino Nano
1×(Recomendado) Divisor de Alimentación para Arduino Nano

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 de Retroalimentación

Un actuador lineal con retroalimentación está disponible y proporciona una señal para identificar su posición y controlarlo. Esta retroalimentación tiene la forma de un potenciómetro que genera un valor de voltaje proporcional a la posición del recorrido.

Pinout 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 empleando alta tensión (12V, 24V, 48V, etc.).
  • Cable negativo del actuador: Este cable se utiliza para controlar el actuador lineal empleando alta tensión (12V, 24V, 48V, etc.).
  • Cable de 5V: Este cable se utiliza para el potenciómetro de retroalimentación. Conecte este cable a 5V o a 3.3V.
  • Cable GND: Este cable se utiliza para el potenciómetro de retroalimentación. Conecte este cable a GND.
  • Cable del potenciómetro: (también llamado cable de retroalimentación, o cable de salida) Este cable proporciona el valor de voltaje en proporción a la posición del recorrido.
Esquema de pines del actuador lineal con retroalimentación

Cómo funciona

Si suministramos un voltaje alto 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 alcanzar 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 alcanzar el límite.
  • Si se corta la alimentación al actuador (GND conectado a ambos cables, positivo y negativo), el actuador dejará de extenderse/retraerse.

※ Nota:

  • El voltaje necesario para operar el actuador está determinado por sus especificaciones. Para conocer el valor exacto de voltaje, consulte la hoja de datos o el manual.
  • Incluso cuando se corta la energía, el actuador puede mantener su posición mientras soporta una carga.

El voltaje en el alambre del potenciómetro está relacionado con la posición del recorrido del actuador. Al medir este voltaje, podemos determinar la posición del recorrido.

Diagrama de cableado

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

Diagrama de cableado del controlador L298N para actuador lineal con Arduino Nano

This image is created using Fritzing. Click to enlarge image

Ver La mejor forma de alimentar Arduino Nano y otros componentes.

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

Consulta el tutorial sobre Arduino Nano - Actuador.

Cómo encontrar la posición del actuador lineal

Este es un ejemplo de cómo localizar el recorrido de un actuador lineal. Proporciona una ilustración del proceso.

Calibración

  • Determine la longitud del recorrido del actuador (en milímetros) midiendo con una regla o consultando la hoja de datos.
  • Ejecute el siguiente código para determinar los valores de salida cuando el actuador lineal esté completamente extendido y completamente retraído.
/* * Este código de Arduino Nano fue desarrollado por es.newbiely.com * Este código de Arduino Nano se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino-nano/arduino-nano-feedback-actuator */ // The code for getting the feedback when the actuator fully extended and retracted #define ENA_PIN 7 // The Arduino Nano pin connected to the EN1 pin L298N #define IN1_PIN 6 // The Arduino Nano pin connected to the IN1 pin L298N #define IN2_PIN 5 // The Arduino Nano pin connected to the IN2 pin L298N #define POTENTIOMETER_PIN A0 // The Arduino Nano 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); }
  • Observe el registro en el Monitor Serial tal como se demuestra en el ejemplo a continuación.
COM6
Send
POTENTIOMETER_MAX = 987 POTENTIOMETER_MIN = 13
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Tome nota de los siguientes tres valores y actualícelos en el código a continuación: el valor mínimo, el valor máximo y IN1_PIN e IN2_PIN. Si se invierten el valor mínimo y el valor máximo, también intercambie IN1_PIN e IN2_PIN.

Código de Arduino Nano que calcula la posición del actuador

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

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