Arduino - Actionneur avec retour d'information

Dans un tutoriel précédent, nous avons appris à propos de l'actionneur linéaire sans retour d'information (BASE_URL/tutorials/arduino/arduino-actuator). Dans ce tutoriel, nous allons apprendre sur l'actionneur linéaire avec retour d'information (également appelé actionneur linéaire à retour d'information). Le retour d'information de l'actionneur linéaire fournit les informations nécessaires pour identifier la position de sa course, et ensuite contrôler la position. Plus en détail, nous allons apprendre :

Préparation du matériel

1×Arduino Uno
1×USB 2.0 cable type A/B
1×12V Linear Actuator with Feedback
1×L298N Motor Driver Module
1×12V Power Adapter
1×DC Power Jack
1×Jumper Wires
1×(Optional) 9V Power Adapter for Arduino
1×(Recommended) Screw Terminal Block Shield for Arduino Uno
1×(Optional) Transparent Acrylic Enclosure For Arduino Uno

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 à retour d'information est un actionneur linéaire qui possède un signal de retour permettant d'identifier sa position et de la contrôler. Le retour est un potentiomètre qui délivre une valeur de tension proportionnelle à la position de la course.

Brochage de l'actionneur linéaire de rétroaction

Un actionneur linéaire à retour d'information 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 de 5V : ce fil est utilisé pour le potentiomètre de retour. Connectez ce fil à 5V ou 3.3V.
  • Fil de masse : ce fil est utilisé pour le potentiomètre de retour. Connectez ce fil à la masse.
  • Fil de potentiomètre : (également appelé fil de retour, ou fil de sortie) ce fil émet une valeur de tension proportionnelle à la position de la course.
Brochage de l'actionneur linéaire de rétroaction

Comment ça fonctionne

Si nous fournissons une haute tension aux fils positifs et négatifs, la course de l'actionneur sera étendue ou rétractée. En détail, si nous connectons :

  • 12V (12V, 24V, 48V...) et GND au fil positif et au fil négatif, respectivement : l'actionneur linéaire s'étend à pleine vitesse jusqu'à ce qu'il atteigne la limite.
  • 12V (12V, 24V, 48V...) et GND au fil négatif et au fil positif, respectivement : l'actionneur linéaire se rétracte à pleine vitesse jusqu'à ce qu'il atteigne la limite.
  • Lors de l'extension ou de la rétraction, si nous arrêtons l'alimentation de l'actionneur (GND sur les fils positif et négatif), l'actionneur cesse de s'étendre/se rétracter.

※ NOTE THAT:

  • La valeur de tension pour contrôler l'actionneur dépend de la spécification de l'actionneur. Consultez la fiche technique ou le manuel pour connaître la valeur de tension correspondante.
  • L'actionneur peut maintenir la position même lorsqu'il cesse d'être alimenté tout en portant une charge.

La valeur de tension dans le fil du potentiomètre est proportionnelle à la position de la course sur l'actionneur. En mesurant cette tension, nous pouvons connaître la position de la course.

Schéma de câblage

Veuillez retirer les trois cavaliers sur le module L298N avant de procéder au câblage.

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

This image is created using Fritzing. Click to enlarge image

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

Consultez le tutoriel Arduino - Actionneur

Comment trouver la position de l'actionneur linéaire

Ce qui suit montre comment identifier la position du vérin sur un actionneur linéaire.

Étalonnage

  • Identifiez la longueur de la course de l'actionneur (en millimètres) en mesurant (à l'aide d'une règle) ou en consultant la fiche technique
  • Identifiez les valeurs de sortie lorsque l'actionneur linéaire est entièrement étendu et entièrement rétracté en exécutant le code ci-dessous
/* * Ce code Arduino a été développé par newbiely.fr * Ce code Arduino 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/arduino-actuator-with-feedback */ // the code for getting the feedback when the actuator fully extended and retracted #define ENA_PIN 9 // the Arduino pin connected to the EN1 pin L298N #define IN1_PIN 6 // the Arduino pin connected to the IN1 pin L298N #define IN2_PIN 5 // the Arduino pin connected to the IN2 pin L298N #define POTENTIOMETER_PIN A0 // the Arduino 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); }
  • Vous verrez le journal sur le moniteur série comme dans l'exemple ci-dessous.
COM6
Send
POTENTIOMETER_MAX = 987 POTENTIOMETER_MIN = 13
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Notez ces valeurs
  • Si les valeurs min/max sont inversées, échangez IN1_PIN et IN2_PIN
  • Mettez à jour trois valeurs dans le code ci-dessous
  • Code Arduino qui calcule la position de l'actionneur

    /* * Ce code Arduino a été développé par newbiely.fr * Ce code Arduino 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/arduino-actuator-with-feedback */ #define ENA_PIN 9 // the Arduino pin connected to the EN1 pin L298N #define IN1_PIN 6 // the Arduino pin connected to the IN1 pin L298N #define IN2_PIN 5 // the Arduino pin connected to the IN2 pin L298N #define POTENTIOMETER_PIN A0 // the Arduino 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"); }
    • Mettez à jour les trois valeurs calibrées dans le code
    • Téléchargez le code sur Arduino
    • Voir 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 a été développé par newbiely.fr * Ce code Arduino 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/arduino-actuator-with-feedback */ #define ENA_PIN 9 // the Arduino pin connected to the EN1 pin L298N #define IN1_PIN 6 // the Arduino pin connected to the IN1 pin L298N #define IN2_PIN 5 // the Arduino pin connected to the IN2 pin L298N #define POTENTIOMETER_PIN A0 // the Arduino 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!