Actuonix Linearservo L-12

Guten Abend geschätzte Forum Mitglieder
Ich bin auf der Suche nach Beispielen zur Programmierung eines Actuonix L12-R Mikro-Linearservo 50 mm von Actuonix.

Der Linearservo soll mit einem Potentiometer von 0 bis 50mm Hub eingestellt werden.
Verwendung: Zuluftklappe.

Aktueller Zustand:
Der Servo lässt sich mit dem Poti über die 50mm Hub bewegen.
Allerdings ist die Bewegung sehr ruckartig und wenn man dien Poti etwas schneller dreht, bleibt der Linearmotor manchmal irgendwo stehen.

Aktueller Code:
`#include "Servo.h"
#define Pin_Servo_L2 (23)
int ReglerWert_L2;

// Position des Motors
int Position_L2;
int Prozent_L2;

const int potPin = A0; // Potentiometer input pin

void setup(){

Servo_L2.attach(Pin_Servo_L2);

}

void loop(){
int ReglerWert_L2 = analogRead(A2); // A2 = Potentiometer
Position_L2 = map(ReglerWert_L2, 0, 1023, 0, 140);

// Motor zur Position bewegen
Servo_L2.write(Position_L2);
delay(50);

// Reglerwert Ausgabe in % am Display
Prozent_L2 = map(ReglerWert_L2, 0, 1023, 0, 100);
delay(100);
}`

Beste Grüsse, Harald

#include "Servo.h"
constexpr byte Pin_Servo_L2 {23};

Servo Servo_L2;

uint16_t ReglerWert_L2;
constexpr uint16_t maxReglerwert {140};
// Position des Motors
byte Position_L2;
byte Prozent_L2;

constexpr byte potPin {A0}; // Potentiometer input pin

constexpr byte inputPin {A2};

constexpr uint32_t intervall {200};
uint32_t lastmillis;

void setup()
{
  Serial.begin(9600);
  Serial.println(F("Start..."));
  Servo_L2.attach(Pin_Servo_L2);
}

void loop()
{
  readData();
  Servo_L2.write(Position_L2);
  // Reglerwert Ausgabe in % am Display
  printData();
}
//
void readData()
{
  constexpr byte zyklen {6};
  for (byte b = 0; b < zyklen; b++)
  {
    ReglerWert_L2 += analogRead(inputPin); // A2 = Potentiometer
  }
  ReglerWert_L2 /= zyklen;
  Position_L2 = map(ReglerWert_L2, 0, 1023, 0, maxReglerwert);
  Prozent_L2 = map(Position_L2, 0, maxReglerwert, 0, 100);
}
//
void printData()
{
  if (millis() - lastmillis > intervall)
  {
    Serial.print(F("Daten pwm / %: "));
    Serial.print(Position_L2);
    Serial.print(" / ");
    Serial.println(Prozent_L2);
    lastmillis+=intervall;
  }
}
1 Like

A0 oder A2, was ist richtig?

Wozu sollen diese Verzögerungen gut sein? Hast Du es schonmal ohne versucht?

hab ich mich auch gefragt und dann :game_die: :wink:

Vielen herzlichen Dank für die schnelle und unbürokratische Hilfe, sowie auch für das praktisch fertige Lehrbeispiel zur Steuerung des Linearservo.

1 Like

Ist halt dunkel und naß draussen :slight_smile:

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.