Arduino Nano - Actionneur de retour

avec des retours

Dans un tutoriel précédent, nous avons discuté de l'actionneur linéaire sans retour. Nous allons maintenant explorer l'actionneur linéaire avec retour (également connu sous le nom d'actionneur linéaire avec feedback). Ce type d'actionneur fournit des informations pour déterminer la position de sa course et ensuite la contrôler. Plus précisément, nous examinerons :

Préparation du matériel

1×Arduino Nano
1×USB A to Mini-B USB cable
1×12V Linear Feedback Actuator
1×L298N Motor Driver Module
1×12V Power Adapter
1×DC Power Jack
1×Jumper Wires
1×(Optional) 9V Power Adapter for Arduino Nano
1×(Recommended) Screw Terminal Adapter for Arduino Nano

Or you can buy the following sensor kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À propos de l'actionneur linéaire à retour d'information

Un actionneur linéaire avec retour d'information est disponible, qui fournit un signal pour identifier sa position et le contrôler. Ce retour se présente sous la forme d'un potentiomètre qui délivre une valeur de tension proportionnelle à la position de la course.

Brochage de l'actionneur linéaire à retour d'information

Un actionneur linéaire à retour de force possède 5 fils :

  • Fil positif de l'actionneur : Ce fil est utilisé pour contrôler l'actionneur linéaire en utilisant une haute tension (12V, 24V, 48V...).
  • Fil négatif de l'actionneur : Ce fil est utilisé pour contrôler l'actionneur linéaire en utilisant une haute tension (12V, 24V, 48V...).
  • Fil 5V : ce fil est utilisé pour le potentiomètre de retour. Connectez ce fil à 5V ou 3.3V
  • Fil GND : ce fil est utilisé pour le potentiomètre de retour. Connectez ce fil à GND
  • Fil de potentiomètre : (également appelé fil de retour, ou fil de sortie) ce fil émet la valeur de tension proportionnelle à la position de la course.
Brochage de l'actionneur linéaire à rétroaction

Comment ça fonctionne

Si nous appliquons une haute tension aux fils positif et négatif, la course de l'actionneur sera étendue ou rétractée. Plus précisément :

  • Si 12V (12V, 24V, 48V...) est connecté au fil positif et GND au fil négatif, l'actionneur linéaire s'étendra à pleine vitesse jusqu'à ce qu'il atteigne la limite.
  • Si 12V (12V, 24V, 48V...) est connecté au fil négatif et GND au fil positif, l'actionneur linéaire se rétractera à pleine vitesse jusqu'à ce qu'il atteigne la limite.
  • Si l'alimentation est coupée à l'actionneur (GND aux fils positif et négatif), l'actionneur cessera de s'étendre/se rétracter.

※ NOTE THAT:

  • La tension nécessaire pour faire fonctionner l'actionneur est déterminée par ses spécifications. Pour connaître la valeur exacte de la tension, consultez la fiche technique ou le manuel.
  • Même lorsque l'alimentation est coupée, l'actionneur peut maintenir sa position tout en portant une charge.

La tension dans le fil du potentiomètre est liée à la position de la course sur l'actionneur. En mesurant cette tension, nous pouvons déterminer la position de la course.

Schéma de câblage

Retirez les trois cavaliers du module L298N avant de connecter les fils.

Schéma de câblage du pilote L298N pour actionneur linéaire Arduino Nano

This image is created using Fritzing. Click to enlarge image

Comment contrôler l'extension/rétraction d'un actionneur linéaire

Consultez le tutoriel sur Arduino Nano - Actionneur à [BASE_URL/tutorials/arduino-nano/arduino-nano-actuator].

Comment trouver la position de l'actionneur linéaire

Ceci est un exemple de comment localiser la course sur un actionneur linéaire. Il fournit une illustration du processus.

Étalonnage

  • Déterminez la longueur de la course de l'actionneur (en millimètres) soit en la mesurant avec une règle, soit en consultant la fiche technique.
  • Exécutez le code suivant pour déterminer les valeurs de sortie lorsque l'actionneur linéaire est entièrement étendu et entièrement rétracté.
/* * Ce code Arduino Nano a été développé par newbiely.fr * Ce code Arduino Nano est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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); }
  • Observez le journal sur le moniteur série comme démontré dans l'exemple ci-dessous.
COM6
Send
POTENTIOMETER_MAX = 987 POTENTIOMETER_MIN = 13
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Prenez note des trois valeurs suivantes et mettez-les à jour dans le code ci-dessous : la valeur minimale, la valeur maximale, et IN1_PIN et IN2_PIN. Si les valeurs minimale et maximale sont inversées, inversez également IN1_PIN et IN2_PIN.

Code Arduino Nano qui calcule la position de l'actionneur

/* * Ce code Arduino Nano a été développé par newbiely.fr * Ce code Arduino Nano est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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"); }
  • Rafraîchir les trois valeurs calibrées dans le code
  • Transférer le code vers Arduino Nano
  • Vérifier le résultat sur le moniteur série
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  

Comment contrôler un actionneur linéaire pour atteindre une position spécifique

/* * Ce code Arduino Nano a été développé par newbiely.fr * Ce code Arduino Nano est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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); }

Vidéo

Références de Fonction

Tutoriels connexes

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!