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 :

À 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:

  • 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

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'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.
Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
Arduino Uno
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno' on 'COM15')
New Line
9600 baud
POTENTIOMETER_MAX = 987 POTENTIOMETER_MIN = 13
Ln 11, Col 1
Arduino Uno on COM15
2
  • 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
    Newbiely | Arduino IDE 2.3.8
    ──
    File
    Edit
    Sketch
    Tools
    Help
    Arduino Uno
    Newbiely.ino
    ···
    8 Serial.println("Hello World!");
    Output
    Serial Monitor
    Message (Enter to send message to 'Arduino Uno' on 'COM15')
    New Line
    9600 baud
    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
    Ln 11, Col 1
    Arduino Uno on COM15
    2

    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

    ※ NOS MESSAGES

    • N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !