Arduino - Aktuator mit Rückkopplung

In einem früheren Tutorial haben wir über den Linearantrieb ohne Rückkopplung gelernt. In diesem Tutorial lernen wir den Linearantrieb mit Rückkopplung kennen (auch als Linearantrieb mit Rückkopplung bezeichnet). Die Rückmeldung des Linearantriebs liefert die Information, die Position seines Hubwegs zu bestimmen und anschließend zu steuern. Im Detail werden wir lernen:

Erforderliche Hardware

1×Arduino Uno R3
1×USB 2.0 Kabel Typ A/B (für USB-A PC)
1×USB 2.0 Kabel Typ C/B (für USB-C PC)
1×12V Linearaktor mit Rückmeldung
1×L298N Motortreiber-Modul
1×12V Netzteil
1×DC-Stromanschluss
1×Verbindungskabel
1×(Empfohlen) Schraubklemmenblock-Shield für Arduino Uno
1×(Empfohlen) Breadboard-Shield für Arduino Uno
1×(Empfohlen) Gehäuse für Arduino Uno
1×(Empfohlen) Prototyping-Grundplatte & Breadboard-Kit für Arduino Uno

Oder Sie können die folgenden Kits kaufen:

1×DIYables STEM V3 Starter-Kit (Arduino enthalten)
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 Linearantrieb mit Rückkopplung ist ein Linearaktuator, der über ein Rückkopplungssignal verfügt, das es ermöglicht, seine Position zu identifizieren und ihn zu steuern. Das Rückkopplungssignal ist ein Potentiometer, das den Spannungswert proportional zur Hubposition ausgibt.

Pinbelegung des Feedback-Linearantriebs

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

  • Positivdraht des Aktuators: Dieser Draht wird verwendet, um den linearen Aktuator mittels Hochspannung (12 V, 24 V, 48 V ...) zu steuern.
  • Positivdraht des Aktuators: Dieser Draht wird verwendet, um den linearen Aktuator mittels Hochspannung (12 V, 24 V, 48 V ...) zu steuern.
  • 5V-Draht: Dieser Draht wird für das Feedback-Potentiometer verwendet. Verbinden Sie diesen Draht mit 5 V oder 3,3 V.
  • GND-Draht: Dieser Draht wird für das Feedback-Potentiometer verwendet. Verbinden Sie diesen Draht mit GND.
  • Potentiometerdraht: (auch als Feedbackdraht oder Ausgangsdraht bezeichnet) Dieser Draht gibt den Spannungswert proportional zur Hubposition aus.
Pinbelegung des Feedback-Linearantriebs

Wie es funktioniert

Wenn wir Hochspannung an die Plus- und Minusleitungen anlegen, wird der Hub des Aktuators ausgefahren oder eingefahren. Im Detail: Wenn wir verbinden:

  • 12V (12V, 24V, 48V...) und GND an den positiven Draht bzw. den negativen Draht anschließen: Der Linearantrieb fährt mit voller Geschwindigkeit aus, bis er den Endanschlag erreicht.
  • 12V (12V, 24V, 48V...) und GND an den negativen Draht bzw. den positiven Draht anschließen: Der Linearantrieb fährt mit voller Geschwindigkeit ein, bis er den Endanschlag erreicht.
  • Während des Ausfahrens oder Einfahrens wird die Stromzufuhr zum Linearantrieb unterbrochen (GND an beide Drähte, sowohl an den positiven als auch an den negativen Draht). Der Linearantrieb stoppt das Ausfahren bzw. Einfahren.

※ Notiz:

  • Der Spannungswert zur Steuerung des Aktuators hängt von der Spezifikation des Aktuators ab. Lesen Sie das Datenblatt oder das Handbuch, um den entsprechenden Spannungswert zu erfahren.
  • Der Aktuator kann die Position auch halten, wenn die Stromzufuhr gestoppt wird, während er eine Last trägt.

Der Spannungswert im Potentiometerdraht ist proportional zur Hubposition des Aktuators. Durch die Messung dieser Spannung können wir die Hubposition bestimmen.

Schaltplan

Bitte entfernen Sie alle drei Jumper-Stecker auf dem L298N-Modul, bevor Sie es verdrahten.

Arduino Linearantrieb L298N-Treiber Verdrahtungsdiagramm

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

Wie man einen Linearantrieb ausfährt und einzieht

Siehe Arduino - Aktuator Tutorial

Wie man die Position des Linearantriebs findet

Nachstehend wird gezeigt, wie die Hubposition eines linearen Aktuators bestimmt wird.

Kalibrierung

  • Bestimmen Sie den Hub des Aktuators (in Millimetern) durch Messen (mit einem Lineal) oder durch Lesen des Datenblatts
  • Bestimmen Sie die Ausgabewerte, wenn der lineare Aktuator vollständig ausgefahren bzw. vollständig eingefahren ist, indem Sie den untenstehenden Code ausführen
/* * Dieser Arduino Code wurde von newbiely.de entwickelt * Dieser Arduino 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/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); }
  • Sie werden das Protokoll im Serial Monitor wie im untenstehenden Beispiel sehen
COM6
Send
POTENTIOMETER_MAX = 987 POTENTIOMETER_MIN = 13
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Schreibe diese Werte auf
  • Wenn die Min- und Max-Werte vertauscht sind, vertausche IN1_PIN und IN2_PIN
  • Aktualisiere drei Werte im untenstehenden Code
  • Arduino-Code, der die Position des Aktuators berechnet

    /* * Dieser Arduino Code wurde von newbiely.de entwickelt * Dieser Arduino 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/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"); }
    • Aktualisiere die drei kalibrierten Werte im Code
    • Lade den Code auf den Arduino hoch
    • Sieh dir das Ergebnis im Serial 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 Arduino Code wurde von newbiely.de entwickelt * Dieser Arduino 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/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); }

    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!