Servo ruckelt im Stand

Hallo Forum!

Ich habe 2 Servos an meinen Arduino angeschlossen. Sie sollen zwei Modellbahntor öffnen und schließen. Hier der Kode:

#include <VarSpeedServo.h>

VarSpeedServo Tor1;
VarSpeedServo Tor2;
const int Schalter[] = {7};
const int richtungaus[] = {12};
int Schalterstatus1 = 0;
int vorherigerSchalterstatus1 = 0;
int drehservo1 = 1;

//int posZU = 94;
//int posAUF = 108;

void setup() {
  // put your setup code here, to run once:
  Tor1.attach(9);
  Tor2.attach(10);
  pinMode(Schalter[0], INPUT);
  pinMode(richtungaus[0], OUTPUT);
  Tor1.write(74, 3);
  //Tor2.write(100, 3);
}

void Servoroutine1(int posZU, int posAUF) {
  Schalterstatus1 = digitalRead(Schalter[0]);
  delay(1);
  
  if (Schalterstatus1 != vorherigerSchalterstatus1) {
    if (Schalterstatus1 == HIGH) {
      drehservo1 = !drehservo1;
      }
    } 

  if (drehservo1 == 1) {
    Tor1.write (posZU,4,true); // (Winkel, Geschwindigkeit)
    digitalWrite(richtungaus[0], HIGH);
    federn = true; 
    }
  else if (drehservo1 == 0) {
    Tor1.write (posAUF,4, true);
    digitalWrite(richtungaus[0], LOW);
    federn = false;
  }
  vorherigerSchalterstatus1 = Schalterstatus1;
}

void Servoroutine2(int posZU, int posAUF) {
  Schalterstatus1 = digitalRead(Schalter[0]);
  delay(1);
  
  if (Schalterstatus1 != vorherigerSchalterstatus1) {
    if (Schalterstatus1 == HIGH) {
      drehservo1 = !drehservo1;
      }
    } 

  if (drehservo1 == 1) {
    Tor2.write (posZU,4,true); // (Winkel, Geschwindigkeit)
    digitalWrite(richtungaus[0], HIGH);
    federn = true; 
    }
  else if (drehservo1 == 0) {
    Tor2.write (posAUF,4, true);
    digitalWrite(richtungaus[0], LOW);
    federn = false;
  }
  vorherigerSchalterstatus1 = Schalterstatus1;
}

void loop(){
  Servoroutine1(74, 90);   // Wert ZU, Wert AUF
  Servoroutine2(61, 75);
}

Das Problem ist, dass Servo #1 nach dem Erreichen seiner Position etwas ruckelt und vibriert. Woran könnte das liegen?
Beide Servos ziehen Strom über den Arduino.
Danke für Eure Hilfe, Tjarko

tj_berlin: Ich habe 2 Servos an meinen Arduino angeschlossen. Sie sollen zwei Modellbahntor öffnen und schließen. Hier der Kode: Das Problem ist, dass Servo #1 nach dem Erreichen seiner Position etwas ruckelt und vibriert. Woran könnte das liegen? Beide Servos ziehen Strom über den Arduino. Danke für Eure Hilfe, Tjarko

Den Strom vom Arduino nehmen, ist keine gute Lösung. Verwende dafür ein eigenes Netzteil. Meist liegt es daran, dass es billige Servos sind.

Das kannst du umgehen, wenn du die nicht voll an den Anschlag fährst.

Ok, das mit dem Strom ändere ich.

Danke für die schnelle Antwort.

tj_berlin: Woran könnte das liegen? Beide Servos ziehen Strom über den Arduino.

Beide Servos ziehen Strom über den Arduino.

Grüße Uwe

;D , ja, die Sache mit dem Strom. Da muss ich doch mal das alte Netzteil 5V suchen...

Lege mal einen Widerstand 4,7 K vom Ausgang des Arduino auf 5V. Im Zusammenhang mit "nicht bis zum Anschlag fahren" habe ich meine Billigservos ruhig bekommen.

Grüße Ingo

Hallo Ingo,

Danke für den Tipp.

Kurze Frage: Meinst Du mit "Ausgang Arduino" den Pin zur Signalübermittlung zum Servo? Wenn ja, dann müsste ich beide Servos mit einem 4,7K Wiederstand versehen?

LG Tjarko

tj_berlin: Kurze Frage: Meinst Du mit "Ausgang Arduino" den Pin zur Signalübermittlung zum Servo? Wenn ja, dann müsste ich beide Servos mit einem 4,7K Wiederstand versehen?

Das meint er bestimmt.

Hast du es denn schon mal wie von mir vorgeschlagen, den Servo nicht bis an den Anschlag fahren, ausprobiert ?

Sorry, lese hier nicht so oft.

Anbei Schaltplan und Sketch, ist lediglich eine Abwandlung von Knop.

Grüße Ingo

Knob1.ino (1.54 KB)