Problem bei Rs-10 Segelwindenservo

Hallo wir benötigen Ihre Hilfe. Wir müssen einen Segelwindenservo (RS-10) mit dem Arduiono und einer externen Stromquelle programmieren , doch trotz vieler Recherche bekommen wir ihn nicht ans laufen. Kann uns jemand helfen und den Sketch aufschreiben? Wir würden uns freuen.

Schaltplan? Was geht nicht? Was habt ihr versucht? Sketch?

Der Servo lässt sich nicht kontrolliert bewegen. Deswegen brauchen wir einen Sketch der funktioniert :) Schaltplan: Wir haben den RS-10 servo an eine externe Stromversorgung angeschlossen und diese mit dem Arduino verbunden. Versuche: Wir haben das ganze Internet durchgesucht doch nichts gefunden

Wir würden uns freuen wenn du uns weiter helfen könntest :)

RuLArduino: Der Servo lässt sich nicht kontrolliert bewegen. Deswegen brauchen wir einen Sketch der funktioniert :)

Bewegt er sich denn überhaupt? Beschreib das Verhalten doch mal näher. Mit welchem Sketch habt ihr das Verhalten getestet?

RuLArduino: Schaltplan: Wir haben den RS-10 servo an eine externe Stromversorgung angeschlossen und diese mit dem Arduino verbunden.

Das ist kein Schaltplan! Alternativ zum Schaltplan geht auch ein ordentliches Foto, auf dem man sämtliche Verbindungen gut sieht.

RuLArduino: Versuche: Wir haben das ganze Internet durchgesucht doch nichts gefunden

Lüge! :) Das ganze Internet zu durchsuchen ist nicht machbar. Ihr habt vielleicht etwas Zeit investiert für eine Google-Suche investiert.

Ne funktionierende Servoansteuerung findet man in weniger als 10 Minuten. Also noch ne Lüge.... Macht mal euere Hausaufgaben schön selber-Hilfe zur Selbsthilfe ist okay, aber euere Aufgaben erledigen isses nicht!

RuLArduino:
Der Servo lässt sich nicht kontrolliert bewegen.

So ein Servo funktioniert eher wie ein Motor, der eine Servoansteuerung hat:

myservo.write(0); → dreht links
myservo.write(90); → stopp (kann auch ein etwas anderer Wert als 90 sein)
myservo.write(180); → dreht rechts

Mit so einem Servo kann man keine Position anfahren, da die Istpositionsmeldung des Potis fehlt.

Zu testen wäre, welchen Einfluß die Bibliothek VarSpeedServo auf so ein Servo hat, habe ich noch nicht probiert.

agmue: So ein Servo funktioniert eher wie ein Motor, der eine Servoansteuerung hat:

myservo.write(0); -> dreht links myservo.write(90); -> stopp (kann auch ein etwas anderer Wert als 90 sein) myservo.write(180); -> dreht rechts

Mit so einem Servo kann man keine Position anfahren, da die Istpositionsmeldung des Potis fehlt.

Zu testen wäre, welchen Einfluß die Bibliothek VarSpeedServo auf so ein Servo hat, habe ich noch nicht probiert.

Ich glaube, das ist so nicht richtig. Dann würde man ja die Segel zerreisen. Soweit ich weiß, läuft das wie ein Servo, nur eben mit mehr Weg. Also statt +/-90° macht die halt +/- 3,5 Umdrehungen

Habt Ihr die Masse des Arduino mit dem minuspol der Spannungsversorgung des Servos verbunden? Grüße Uwe

ElEspanol: Ich glaube, das ist so nicht richtig. Dann würde man ja die Segel zerreisen. Soweit ich weiß, läuft das wie ein Servo, nur eben mit mehr Weg. Also statt +/-90° macht die halt +/- 3,5 Umdrehungen

"Max. Laufweg 5x 360°." Ich stimme Dir zu! Da kein Produktlink vorhanden ist, habe ich wohl beim falschen Servo geschaut. Das, was ich beschrieben habe, wurde mal in einem Schiff als Geschützturm verbaut. Danke für die Korrektur :)

Dann eben so: myservo.write(0); -> 0 Grad myservo.write(90); -> 900 Grad myservo.write(180); -> 1800 Grad

Die Dinger werden wie ganz normale Servos angesteuert. Die "Wegverlängerung" macht die Winde rein intern, sonst könnte man sie im RC-Bereich nämlich nicht einfach anstelle eines Servos benutzen. Kann man aber. Daher wird es hier falsch sein, Ausschläge ausserhalb eines normalen Servoweges anzugeben,denn davon bekommt die Winsch nix mit.

eben. genau so schreibt es ja agmue.

Nur die Auflösung bzw. kleinstmöglicher Weg ist dadurch natürlich auf 10 Mal so gross wie bei einem Servo.

ElEspanol:
Nur die Auflösung bzw. kleinstmöglicher Weg ist dadurch natürlich auf 10 Mal so gross wie bei einem Servo.

Dazu ein Zitat aus VarSpeedServo.cpp:
“write(value) - Sets the servo angle in degrees. (invalid angle that is valid as pulse in microseconds is treated as microseconds)”

Wenn ich grob Zeiten von 500 bis 1500 µs zugrunde lege, hat man 1000 Werte anstelle 180 bei den Gradzahlen. Damit würde ich mal experimentieren.

sind 1000 bis 2000 microseconds, Mittelstellung bei normalen Servos 1500 us. Ob +/- 90 Grad oder 45 oder 60 hängt vom Servo ab

Da habe ich wohl die Werte eines Exoten als Standard angenommen: “Note that some manufactures do not follow this standard very closely so that servos often respond to values between 700 and 2300.” Quelle

Die Differenz von 1000 wäre die gleiche und damit die Möglichkeit einer besseren Positionierung gegeben.

Du meinst die Differenz zur Mittelstellung 1500

Es kann schon sein, das manche Servos Werte unter 1000 us und über 2000 us umsetzen können, brauchen dann aber den passenden RC Empfänger dazu, oder eben eine andere Ansteuerung wie den Arduino. Die kommen mit den normalen Signalen von 1000-1500-2000 natürlich auch zurecht, dann wird aber logischerweise nicht der gesamte mechanisch mögliche Servoweg genutzt. Und mit dem richtigen Equipment wird natürlich durch die vergrösserte Signalbreite eine höhere Auflösung möglich. Dies kann beispielsweise auch bei Stabilisierungssystemen von RC Helikoptern interessant sein.

Aber wie grsagt, der Standard im Modellbau hierfür ist 1000-1500-2000 us, wie es ja auch in deinem Link gesagt wird

Die RC-Empfänger können das alle. Einige RC-Sender verfügen über eine "Servowegexpander-Funktion" (oder ähnlich, das nennt jeder, wie er will), wo man mehr als den normalen Servoweg benutzen kann- falls das Servo da auch mit spielt! Falls es das nicht tut, rennt es in die Endstellung, kurzzeitig verträgt das jedes, aber man hört es dann deutlich brummen und muss den Weg zurück nehmen (einige versterben sonst). Mitm Arduino kann man das genauso machen, wenn man statt der (eh recht sinnlosen, da ungenauen) write(Grad) die writeMicroseconds() nimmt, kann man auch unter bzw. oberhalb des eigentlich gültigen Bereiches fahren. Mir ist kein Servo bekannt, was wirklich nur 90 Grad Drehwinkel hat, 120 schaffen alle, manche auch 180 oder noch mehr. Auch Segelwinden gibt es unterschiedliche- bei manchen kann man den Wickelweg sogar mittels Poti einstellen. Ich würd den Arduino einfach mal den Wertebereich durchfahren lassen (langsam), die entsprechend aktuellen Werte auf die Konsole geben und gucken, bei welchem das Ding stoppt. Dann nimmt man sicherheitshalber noch bissel zurück (viele Servos laufen soo genau auch nich), und hat den maximalen Weg. Den Bereich zwischen min und max kann man dann immer noch auf nen anderen Wertebereich (meinetwegen Grad) mappen, wenn man will.