Arduino Nano - Rückmeldungsaktuator

mit Feedback

In einer früheren Anleitung haben wir den Linearantrieb ohne Rückkopplung besprochen. Jetzt werden wir den Linearantrieb mit Rückkopplung untersuchen (auch bekannt als der Rückkopplungs-Linearantrieb). Dieser Stellantrieb liefert Informationen, um die Position seines Hubes zu bestimmen und ihn anschließend zu steuern. Konkret werden wir uns Folgendes ansehen:

Erforderliche Hardware

1×Official Arduino Nano
1×Alternativ: DIYables ATMEGA328P Nano Development Board
1×USB-A-zu-Mini-B-Kabel
1×12V Linear Feedback Actuator
1×L298N Motortreiber-Modul
1×12V Netzteil
1×DC-Stromanschluss
1×Verbindungskabel
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für Arduino Nano
1×(Empfohlen) Breakout-Erweiterungsboard für Arduino Nano
1×(Empfohlen) Stromverteiler für Arduino Nano

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 Linearantrieb mit Rückkopplung

Ein Linearaktuator mit Feedback ist verfügbar, der ein Signal bereitstellt, mit dem seine Position bestimmt und gesteuert werden kann. Dieses Feedback liegt in Form eines Potentiometers vor, das eine Spannung ausgibt, die proportional zur Hubposition ist.

Pinbelegung des Rückkopplungs-Linearantriebs

Ein Linearantrieb mit Rückkopplung hat 5 Drähte:

  • Plusdraht des Stellantriebs: Dieser Draht wird verwendet, um den Linearantrieb durch Hochspannung zu steuern (12V, 24V, 48V ...).
  • Minusdraht des Stellantriebs: Dieser Draht wird verwendet, um den Linearantrieb durch Hochspannung zu steuern (12V, 24V, 48V ...).
  • 5V-Draht: Dieser Draht wird für das Rückkopplungs-Potentiometer verwendet. Verbinden Sie diesen Draht mit 5V oder 3,3V.
  • GND-Draht: Dieser Draht wird für das Rückkopplungs-Potentiometer verwendet. Verbinden Sie diesen Draht mit GND.
  • Potentiometerdraht: (auch als Feedbackdraht oder Ausgangsdraht bezeichnet) Dieser Draht liefert den Spannungswert proportional zur Hubposition.
Pinbelegung des Feedback-Linearantriebs

Wie es funktioniert

Wenn wir Hochspannung auf die positiven und negativen Drähte anlegen, wird der Hub des Aktuators verlängert oder verkürzt. Genauer gesagt:

  • Wenn 12V (12V, 24V, 48V ...) an den positiven Draht angeschlossen wird und GND an den negativen Draht, fährt der Linearantrieb mit voller Geschwindigkeit aus, bis er die Endlage erreicht.
  • Wenn 12V (12V, 24V, 48V ...) an den negativen Draht angeschlossen wird und GND an den positiven Draht, fährt der Linearantrieb mit voller Geschwindigkeit ein, bis er die Endlage erreicht.
  • Wenn die Versorgung des Linearantriebs unterbrochen wird (GND an beiden Drähten, sowohl dem positiven als auch dem negativen Draht), hört der Linearantrieb auf, auszufahren bzw. einzufahren.

※ Notiz:

  • Die für den Betrieb des Aktuators notwendige Spannung wird durch seine Spezifikationen festgelegt. Um den genauen Spannungswert zu erfahren, konsultieren Sie das Datenblatt oder das Handbuch.
  • Auch wenn die Stromversorgung abgeschaltet wird, kann der Aktuator seine Position beibehalten, während eine Last getragen wird.

Die Spannung im Potentiometerdraht hängt mit der Hubposition des Aktuators zusammen. Durch Messung dieser Spannung können wir die Hubposition bestimmen.

Schaltplan

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

Arduino Nano Linearantrieb L298N-Treiber Verdrahtungsdiagramm

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

Siehe Der beste Weg, den Arduino Nano und andere Komponenten mit Strom zu versorgen.

Wie man einen Linearantrieb steuert: Ausfahren und Einfahren

Schau dir das Tutorial zu Arduino Nano - Aktuator an.

Wie man die Position des Linearantriebs findet

Dies ist ein Beispiel dafür, wie man den Hub eines Linearantriebs bestimmt. Es veranschaulicht den Ablauf des Prozesses.

Kalibrierung

  • Bestimmen Sie den Hubweg des Aktuators (in Millimetern), indem Sie ihn entweder mit einem Lineal messen oder das Datenblatt konsultieren.
  • Führen Sie den folgenden Code aus, um die Ausgabewerte zu bestimmen, wenn der Linearantrieb vollständig ausgefahren bzw. vollständig eingefahren ist.
/* * Dieser Arduino Nano Code wurde von newbiely.de entwickelt * Dieser Arduino Nano 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/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); }
  • Beobachten Sie das Protokoll im Serial Monitor, wie im untenstehenden Beispiel gezeigt.
COM6
Send
POTENTIOMETER_MAX = 987 POTENTIOMETER_MIN = 13
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Notieren Sie sich die folgenden drei Werte und aktualisieren Sie sie im untenstehenden Code: den Minimalwert, den Maximalwert sowie IN1_PIN und IN2_PIN. Falls die Minimal- und Maximalwerte vertauscht sind, vertauschen Sie auch IN1_PIN und IN2_PIN.

Arduino Nano-Code, der die Position des Aktuators berechnet

/* * Dieser Arduino Nano Code wurde von newbiely.de entwickelt * Dieser Arduino Nano 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/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"); }
  • Aktualisieren Sie die drei kalibrierten Werte im Code
  • Übertragen Sie den Code auf den Arduino Nano
  • Überprüfen Sie das Ergebnis im Serial Monitor
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 Arduino Nano Code wurde von newbiely.de entwickelt * Dieser Arduino Nano 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/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); }

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!