ESP8266 - Feedback-Aktor

In einem früheren Tutorial haben wir den Linearantrieb ohne Rückmeldung besprochen. Dieses Tutorialführt Sie in den Linearantrieb mit Rückmeldung ein (auch bekannt als Linearantrieb mit Rückmeldung). Dieser Linearantriebstyp liefert Informationen, um die Position seines Hubes zu bestimmen und ihn zu steuern. Konkret werden wir lernen:

Erforderliche Hardware

1×ESP8266 NodeMCU
1×USB-Kabel Typ-A zu Typ-C (für USB-A PC)
1×USB-Kabel Typ-C zu Typ-C (für USB-C PC)
1×12V Linear Feedback Actuator
1×L298N Motortreiber-Modul
1×12V Netzteil
1×DC-Stromanschluss
1×Verbindungskabel
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für ESP8266
1×(Empfohlen) Stromverteiler für ESP8266 Typ-C

Oder Sie können die folgenden Kits kaufen:

1×DIYables Sensor-Kit (30 Sensoren/Displays)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Über den Linearantrieb mit Rückmeldung

Ein Linearantrieb mit Rückmeldung ist ein Antrieb, der ein Signal besitzt, um seine Position zu erkennen und zu steuern. Ein Potentiometer wird verwendet, um den Spannungswert in Abhängigkeit von der Hubposition als Rückmeldung zu erzeugen.

Pinbelegung eines Feedback-Linearantriebs

Ein Linearantrieb mit Feedback hat 5 Drähte:

  • Linearantriebs-Plusdraht: Dieser Draht wird verwendet, um den Linearantrieb durch Anlegen einer Hochspannung (12 V, 24 V, 48 V...) zu steuern.
  • Linearantriebs-Minusdraht: Dieser Draht wird verwendet, um den Linearantrieb durch Anlegen einer Hochspannung (12 V, 24 V, 48 V...) zu steuern.
  • 5-V-Draht: Dieser Draht wird für das Feedback-Potentiometer verwendet. Er sollte an 5 V oder 3,3 V angeschlossen werden.
  • GND-Draht: Dieser Draht wird für das Feedback-Potentiometer verwendet. Er sollte an GND angeschlossen werden.
  • Potentiometerdraht: (auch als Feedbackdraht oder Ausgangsdraht bezeichnet) Dieser Draht gibt die Spannung entsprechend der Hubposition aus.
Pinbelegung eines Linearantriebs mit Feedback

Wie es funktioniert

Wenn wir Hochspannung an die positiven und negativen Leitungen anlegen, wird der Hub des Aktuators ausgefahren oder eingefahren. Genauer gesagt:

  • Wenn 12 V (12 V, 24 V, 48 V …) an den Plusdraht angeschlossen ist und GND an den Minusdraht, fährt der Linearantrieb mit voller Geschwindigkeit aus, bis er die Endlage erreicht.
  • Wenn 12 V (12 V, 24 V, 48 V …) an den Minusdraht angeschlossen ist und GND an den Plusdraht, fährt der Linearantrieb mit voller Geschwindigkeit ein, bis er die Endlage erreicht.
  • Wenn dem Linearantrieb die Stromversorgung unterbrochen wird (GND an beiden Leitungen, sowohl dem positiven als auch dem negativen), hört der Linearantrieb auf, auszufahren bzw. einzufahren.

※ Notiz:

  • Die zur Betätigung des Stellantriebs erforderliche Spannung wird durch seine Spezifikationen festgelegt. Um die genaue Spannung herauszufinden, konsultieren Sie das Datenblatt oder das Handbuch.
  • Auch wenn die Stromversorgung ausgeschaltet ist, kann der Stellantrieb seine Position beibehalten, während er eine Last trägt.

Die Spannung im Draht des Potentiometers hängt direkt von der Hubposition des Stellantriebs ab. Durch Messung dieser Spannung können wir die Hubposition bestimmen.

Schaltplan

Nehmen Sie alle drei Jumper vom L298N-Modul heraus, bevor Sie die Kabel anschließen.

ESP8266 NodeMCU Linearantrieb L298N Treiber Verdrahtungsschaltplan

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Weitere Informationen finden Sie unter ESP8266-Pinbelegung und wie man ESP8266 und andere Komponenten mit Strom versorgt.

Wie man einen Linearantrieb ausfährt und einfährt

Schau dir das ESP8266 - Actuator Tutorial an.

Wie man die Position des Linearantriebs findet

Dies ist eine Abbildung davon, wie man den Hub eines Linearaktuators bestimmt.

Kalibrierung

  • Bestimmen Sie die Länge des Hubwegs des Aktuators (in Millimetern), indem Sie entweder mit einem Lineal messen oder im Datenblatt nachsehen.
  • Um die Ausgabewerte zu ermitteln, wenn der lineare Aktuator vollständig ausgefahren bzw. vollständig eingefahren ist, führen Sie den untenstehenden Code aus.
/* * Dieser ESP8266 NodeMCU Code wurde von newbiely.de entwickelt * Dieser ESP8266 NodeMCU Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/esp8266/esp8266-feedback-actuator */ // The code for getting the feedback when the actuator fully extended and retracted #define ENA_PIN 7 // The ESP8266 pin connected to the EN1 pin L298N #define IN1_PIN 6 // The ESP8266 pin connected to the IN1 pin L298N #define IN2_PIN 5 // The ESP8266 pin connected to the IN2 pin L298N #define POTENTIOMETER_PIN A0 // The ESP8266 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); }
  • Sie werden das Protokoll im seriellen Monitor beobachten, wie im untenstehenden Beispiel gezeigt.
COM6
Send
POTENTIOMETER_MAX = 987 POTENTIOMETER_MIN = 13
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Notiere die drei Werte im untenstehenden Code. Falls die Minimal- und Maximawerte vertauscht sind, tausche die IN1_PIN und IN2_PIN.

Notieren Sie sich die drei Werte im untenstehenden Code. Wenn die Minimal- und Maximalwerte vertauscht sind, vertauschen Sie IN1_PIN und IN2_PIN.

ESP8266-Code, der die Position des Stellglieds berechnet

/* * Dieser ESP8266 NodeMCU Code wurde von newbiely.de entwickelt * Dieser ESP8266 NodeMCU Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/esp8266/esp8266-feedback-actuator */ #define ENA_PIN 7 // The ESP8266 pin connected to the EN1 pin L298N #define IN1_PIN 6 // The ESP8266 pin connected to the IN1 pin L298N #define IN2_PIN 5 // The ESP8266 pin connected to the IN2 pin L298N #define POTENTIOMETER_PIN A0 // The ESP8266 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"); }
  • Aktualisiere den Code mit den drei kalibrierten Werten.
  • Lade den Code auf ESP8266 hoch.
  • Schau dir das Ergebnis im seriellen Monitor an.
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  

Wie man einen Linearantrieb auf eine bestimmte Position steuert

/* * Dieser ESP8266 NodeMCU Code wurde von newbiely.de entwickelt * Dieser ESP8266 NodeMCU Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/esp8266/esp8266-feedback-actuator */ #define ENA_PIN 7 // The ESP8266 pin connected to the EN1 pin L298N #define IN1_PIN 6 // The ESP8266 pin connected to the IN1 pin L298N #define IN2_PIN 5 // The ESP8266 pin connected to the IN2 pin L298N #define POTENTIOMETER_PIN A0 // The ESP8266 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

Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.

Verwandte Tutorials

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!