Arduino Nano - Feedback Actuator

Feedback Actuator

In een eerdere tutorial hebben we de lineaire actuator zonder feedback besproken. Nu gaan we de feedback lineaire actuator verkennen (ook wel feedback linear actuator genoemd). Dit type actuator geeft informatie terug waarmee de positie van zijn slag bepaald kan worden en vervolgens bestuurd kan worden. We bekijken onder meer:

  • Hoe een feedback lineaire actuator werkt
  • Hoe u de positie van een feedback lineaire actuator (in millimeters) kunt vaststellen
  • Hoe u de positie van een feedback lineaire actuator kunt aansturen

Benodigde Hardware

1×Official Arduino Nano
1×Alternatief: DIYables ATMEGA328P Nano Development Board
1×USB A naar Mini-B USB-kabel
1×12V Lineaire Feedback Actuator
1×L298N Motordriver Module
1×12V Voeding Adapter
1×DC Voeding Jack
1×Jumperdraden
1×(Aanbevolen) Schroefklem Uitbreidingsboard voor Arduino Nano
1×(Aanbevolen) Breakout Uitbreidingsboard voor Arduino Nano
1×(Aanbevolen) Stromsplitter voor Arduino Nano

Of u kunt de volgende kits kopen:

1×DIYables Sensorkit (30 sensoren/displays)
1×DIYables Sensorkit (18 sensoren/displays)
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.

Over de Feedback Lineaire Actuator

Een lineaire actuator met feedback is voorzien van een signaal waarmee zijn positie kan worden vastgesteld en aangestuurd. Deze feedback komt van een potentiometer die een spanningswaarde levert die evenredig is aan de positie van de slag.

Feedback Lineaire Actuator Pinout

Een feedback lineaire actuator heeft 5 draden:

  • Actuator Positieve draad: Deze draad wordt gebruikt om de actuator aan te sturen met een hoge spanning (12V, 24V, 48V...).
  • Actuator Negatieve draad: Deze draad wordt gebruikt om de actuator aan te sturen met een hoge spanning (12V, 24V, 48V...).
  • 5V draad: deze draad is voor de feedback potentiometer. Verbind deze met 5V of 3.3V.
  • GND draad: deze draad is voor de feedback potentiometer. Verbind deze met GND.
  • Potentiometer draad: (ook feedback draad of output draad genoemd) deze draad levert een spanningswaarde die in verhouding staat tot de positie van de slag.
Feedback Lineaire Actuator pinout

Hoe werkt het

Wanneer we hoge spanning aanleggen op de positieve en negatieve draden, zal de actuator uitschuiven of inklappen. Concreet:

  • Wanneer 12V (of 24V, 48V...) op de positieve draad wordt aangesloten en GND op de negatieve draad, schuift de lineaire actuator met volle snelheid uit tot de eindlimiet wordt bereikt.
  • Wanneer 12V (of 24V, 48V...) op de negatieve draad wordt aangesloten en GND op de positieve draad, trekt de lineaire actuator met volle snelheid in tot de eindlimiet wordt bereikt.
  • Als de voeding uitgeschakeld wordt (GND op zowel positieve als negatieve draad), stopt de actuator met uitschuiven/inklapppen.

※ Notiz:

  • De vereiste spanning voor het bedienen van de actuator is afhankelijk van de specificaties. Raadpleeg de datasheet of handleiding voor de exacte spanningswaarde.
  • Ook wanneer de voeding uit staat, kan de actuator zijn positie behouden terwijl hij belast wordt.

De spanning op de potentiometerdraad is gerelateerd aan de positie van de slag op de actuator. Door deze spanning te meten kan de positie bepaald worden.

Aansluitschema

Verwijder alle drie de jumpers van de L298N module voordat u de draden aansluit.

Arduino Nano Lineaire Actuator L298N Driver aansluitdiagram

This image is created using Fritzing. Click to enlarge image

Hoe u een lineaire actuator uitschuift/ inklapt

Bekijk de tutorial over Arduino Nano - Actuator.

Hoe u de positie van de lineaire actuator bepaalt

Hier ziet u een voorbeeld van hoe u de slag van een lineaire actuator kunt lokaliseren. Het laat zien hoe dit in zijn werk gaat.

Calibratie

  • Bepaal de lengte van de slag van de actuator (in millimeters) door deze te meten met een liniaal of te raadplegen in de datasheet.
  • Voer de volgende code uit om de outputwaarden te bepalen wanneer de lineaire actuator volledig is uitgeschoven en volledig is ingeschoven.
/* * Deze Arduino Nano code is ontwikkeld door newbiely.nl * Deze Arduino Nano code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/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); }
  • Houd de log in de Serial Monitor in de gaten zoals hieronder weergegeven.
COM6
Send
POTENTIOMETER_MAX = 987 POTENTIOMETER_MIN = 13
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Noteer de drie waarden hieronder en pas ze aan in de code: de minimum- en maximumwaarde, en IN1_PIN en IN2_PIN. Als minimum en maximum omgedraaid zijn, verwissel dan ook IN1_PIN en IN2_PIN.

Arduino Nano code die de positie van de actuator berekent

/* * Deze Arduino Nano code is ontwikkeld door newbiely.nl * Deze Arduino Nano code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/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"); }
  • Werk de drie gekalibreerde waarden in de code bij.
  • Upload de code naar de Arduino Nano.
  • Bekijk de resultaten in de Serial Monitor.
COM6
Send
De positie van de slag = 2 mm De positie van de slag = 35 mm De positie van de slag = 43 mm De positie van de slag = 60 mm De positie van de slag = 68 mm De positie van de slag = 79 mm De positie van de slag = 83 mm De positie van de slag = 96 mm De positie van de slag = 100 mm
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Hoe u een lineaire actuator naar een specifieke positie aanstuurt

/* * Deze Arduino Nano code is ontwikkeld door newbiely.nl * Deze Arduino Nano code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/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

We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.

Gerelateerde Tutorials

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!