ESP32 - Actionneur avec retour d'information

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

Préparation du matériel

1×ESP-WROOM-32 Dev Module
1×USB Cable Type-C
1×12V Linear Actuator with Feedback
1×L298N Motor Driver Module
1×12V Power Adapter
1×DC Power Jack
1×Jumper Wires
1×(Recommended) ESP32 Screw Terminal Adapter

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.

Sur l'actionneur linéaire à retour de force

Un actionneur linéaire à retour d'information est un actionneur linéaire qui dispose d'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 retour d'information

Un actionneur linéaire à rétroaction 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 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 délivre une valeur de tension proportionnelle à la position de la course.
Brochage de l'actionneur linéaire à retour d'information

Comment ça marche

Si nous appliquons une haute tension aux fils positif et négatif, 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'à atteindre 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.
  • Pendant l'extension ou la rétraction, si nous arrêtons l'alimentation de l'actionneur (GND aux 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 la 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 le câblage.

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

This image is created using Fritzing. Click to enlarge image

Si vous ne savez pas comment alimenter l'ESP32 et d'autres composants, vous pouvez trouver des conseils dans le tutoriel suivant : Comment alimenter l'ESP32.

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

Consultez le tutoriel ESP32 - Actionneur

Comment trouver la position de l'actionneur linéaire

La phrase ci-dessous montre comment identifier la position du coup sur un actionneur linéaire.

Étalonnage

  • Déterminez 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 complètement étendu et complètement rétracté en exécutant le code ci-dessous
/* * Ce code ESP32 a été développé par newbiely.fr * Ce code ESP32 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/esp32/esp32-actuator-with-feedback */ // the code for getting the feedback when the actuator fully extended and retracted #define ENA_PIN 27 // The ESP32 pin GPIO27 connected to the EN1 pin L298N #define IN1_PIN 26 // The ESP32 pin GPIO26 connected to the IN1 pin L298N #define IN2_PIN 25 // The ESP32 pin GPIO25 connected to the IN2 pin L298N #define POTENTIOMETER_PIN 36 // The ESP32 pin GPIO36 (ADC0) 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 ESP32 qui calcule la position de l'actionneur

    /* * Ce code ESP32 a été développé par newbiely.fr * Ce code ESP32 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/esp32/esp32-actuator-with-feedback */ #define ENA_PIN 27 // The ESP32 pin GPIO27 connected to the EN1 pin L298N #define IN1_PIN 26 // The ESP32 pin GPIO26 connected to the IN1 pin L298N #define IN2_PIN 25 // The ESP32 pin GPIO25 connected to the IN2 pin L298N #define POTENTIOMETER_PIN 36 // The ESP32 pin GPIO36 (ADC0) connected to the potentiometer of the actuator #define STROKE_LENGTH 102 // PLEASE UPDATE THIS VALUE (in millimeter) #define POTENTIOMETER_MAX 2340 // 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 ESP32
    • 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 ESP32 a été développé par newbiely.fr * Ce code ESP32 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/esp32/esp32-actuator-with-feedback */ #define ENA_PIN 27 // The ESP32 pin GPIO27 connected to the EN1 pin L298N #define IN1_PIN 26 // The ESP32 pin GPIO26 connected to the IN1 pin L298N #define IN2_PIN 25 // The ESP32 pin GPIO25 connected to the IN2 pin L298N #define POTENTIOMETER_PIN 36 // The ESP32 pin GPIO36 (ADC0) connected to the potentiometer of the actuator #define STROKE_LENGTH 102 // PLEASE UPDATE THIS VALUE (in millimeter) #define POTENTIOMETER_MAX 2340 // 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!