kleinster Schritt vom Servo

OP #4511462
Lesenswert?
• ▲
▼
Nabend

Ich habe aus einem normalen Servo das Poti ausgelötet und durch eine 
Spannungsteiler aus zwei 2k2 Widerständen ersetzt.
Das Servo dreht nun endlos, genau so wie es soll.

Der Code sieht wie folgt aus:
1
void loop()
2
{ 
3
    currentMillisImp = millis();
4
    if (currentMillisImp - previousMillisImp > 18)
5
    {
6
        previousMillisImp = currentMillisImp;
7
        digitalWrite(servo, 1);
8
        delayMicroseconds(1200); 
9
        digitalWrite(servo, 0);
10
     }
11
     delay(1000);
12
}

Damit sollte sich das Servo in den kleinst möglichen Schritten (im 
Sekundentakt) drehen.
Es dreht sich aber in ca 40° Schritten.

Wie verkleinere ich diese Schritte?
Gast #4511477
Lesenswert?
• ▲
▼
Das ist völlig falsch implementiert. Du erzeugst hier 1,2µs Impulse mit 
1s Abstand.

R/C Servos wollen ein Kontinuierliches Signal haben, alle 20ms ein 
Impuls. Wenn die Impulse fehlen, gehen die meisten Servos in Standby 
Betrieb.

Bei deinem Umbau funktioniert das so:

a) Wenn du Impulse mit mittlerer Länge sendest (also alle 20ms einen 
Impuls mit 1,5ms Länge), dann dreht sich der Motor nicht.

b) Wenn du längere Impulse sendest, dreht er sich nach rechts. Je länger 
die Impulse, umso schneller dreht sich der Motor.

c) Wenn du kürzere Impulse sendest, dreht er sich nach links. Je kürzer 
die Impulse, umso schneller dreht sich der Motor.

Zurück zu einem NICHT modifizierten Servo:

Exakte Positionen bei sehr kleinen Schritten kannst du nicht erreichen. 
Denn die Elektronik im Servo sorgt auch dafür, dass der Motor nicht für 
jeden Klein-Scheiß belastet wird. Sonst würde der Motor ununterbrochen 
hin und her zittern und dadurch die Batterie leer ziehen und die 
Mechanik frühzeitig verschleißen.

Wenn du zum Beispiel gerade bei 30° stehst und 31° sendest, dann mach 
der Servo gar nichts. Wenn du aber 35° sendet, dann dreht er sich 
ziemlich genau auf diese Position. Wie groß diese Hysterese ist, hängt 
sehr vom Servo Modell ab. Aber alle haben diesen Effekt.

Das bedeutet für deinen gehackten Servo, dass sehr kleine Abweichungen 
vom Stillstand einfach weg ignoriert werden.

Aber dein Code ist trotzdem ganz falsch, den musst du überarbeiten. Mit 
den delay Befehlen erreichst du kein ausreichend genaues Timing. Du 
musst das Signal mit einem PWM Ausgang erzeugen.
#4511480
Lesenswert?
• ▲
▼
Hallo,

ein Servo hat keinen Schrittmotor, Was "in den kleinst möglichen 
Schritten" für einen Servomotor ist, hängt davon ab, wann der Motor 
anläuft und sich damit überhaupt dreht. Das wird nie bei der gleichen 
Impulsdauer sein und auch wie weit er dreht, wird von mechanischen 
Zufällen abhängen.

Wozu macht und will man sowas?

Gruß aus Berlin
Michael
OP #4511514
Lesenswert?
• ▲
▼
Danke für die ganzen Antworten.

Durch den Spannungsteiler ist der Istwert für die Servoelektronik ja 
festgelegt.
Da ich den Sollwert über die Software ja ändern kann, war die 
Überlegung,
dass ich damit die Servoelektronik überlisten kann.

Das Poti ist übrigens noch im Servo und die Anschlüsse sind nach außen 
geführt.
Gast #4511538
Lesenswert?
• ▲
▼
Kolja L. schrieb:
> Durch den Spannungsteiler ist der Istwert für die Servoelektronik ja
> festgelegt.

Aber dein Sollwert hat nichts mit servoelektronikgerechten Steuerpulsen 
zu tun. Mit den zwei Widerständen gaukelst du dem Regler den Ist-Wert 
der Mittelstellung vor. Wenn du dann Pulse von nominell 1.5ms Dauer mit 
etwa 50Hz Updaterate schickst, sollte der Motor ruhig sein. Bei kürzeren 
Pulsen läuft er in die eine, bei längeren Pulsen in die andere Richtung. 
Du müßtest also vom Programm laufend 1.5ms-Pulse schicken (Motor steht) 
und für die Drehung ein paar länger bzw. kürzere (je nach Richtung).
#4511590
Lesenswert?
• ▲
▼
Und das geht halt so nicht. Der kleinste Schritt wird von der 
eingebauten Hysterese bestimmt, die minimale Zeit von der PWM-Frequenz.
Du brauchst minimal 40ms (2 Perioden), 20ms für den Start, 20ms für den 
Stop.

Dein Servo dürfte der falsche Motor für Deine Anwendung sein.
#4511601
Lesenswert?
• ▲
▼
20ms mit 0,7-2,3ms High für den gesammten Bereich ist nunmal der 
Standard.

W.A. schrieb:
> und die meisten Servos können damit umgehen.

Man kann immer irgendwie außerhalb der Spezifikationen arbeiten, aber ob 
das sinnvoll ist, bevor man die Grundlagen verstanden hat?
Und nach Murphy kann gerade der Servo der vor einem liegt das eben 
nicht.
Gast #4511672
Lesenswert?
• ▲
▼
Oliver R. schrieb:
> Man kann immer irgendwie außerhalb der Spezifikationen arbeiten, aber ob
> das sinnvoll ist, bevor man die Grundlagen verstanden hat?

Bei den Servos ist die Dauer des High-Pulses die Grundlage für die 
Position (Soll-Wert). Die Periodendauer bestimmt, wie oft die Elektronik 
einen neuen Sollwert bekommt (Update-Rate).
#4511750
Lesenswert?
• ▲
▼
Um himmels Wilhelm!

Schmeiß doch mal einen Blick in die Wikipedia!

Vorzugsweise in den/die Artikel, in dem/denen die Ansteuerung eines 
Servos erläutert wird.

Du scheinst weder zu wissen, wie das Steuersignal auszusehen hat, noch 
wie ein Servo überhaupt funktioniert.
Das ist auch ohne Hochschulabschluss möglich.
(Firma: matzetronics) #4511760
Lesenswert?
• ▲
▼
Sebastian S. schrieb:
> Du scheinst weder zu wissen, wie das Steuersignal auszusehen hat, noch
> wie ein Servo überhaupt funktioniert.

Das haben wir in einem der Servo Threads von Kolja schon ein dutzendmal 
probiert zu erklären - es scheint eine regelrechte Lernresistenz 
vorzuliegen:
Beitrag "Servo mit 360° gesucht, kein Hack!"
Beitrag "Servo hacken"
Gast #4516791
Lesenswert?
• ▲
▼
Kolja L. schrieb:
> Wie verkleinere ich diese Schritte?

Zunächst durch Analyse eines ähnlichen Systems:

Vorschlag:
Einfache 2 Kanal Fernsteuerung mit elektronischer Trimmung.
Ein Trimschritt entspricht dem kleinsten Verstellschritt.

Nun benötigst du nur ein Oszi oder Logikanalyser wo du das 
Übertragungsverhalten am Servo anzeigst.

Das sollte dir für das Verständnis weiterhelfen.
Gruß

Marc
Gast #4516818
Lesenswert?
• ▲
▼
Die größe des kleinsten Schrittes hängt vom konkreten Servo ab. Also 
suche Dir ein Servo, welches mit Datenblatt geliefert wird und die 
entsprechende Info im Datenblatt steht. Oder kaufe irgendein Servo, 
probiere es aus und hoffe, dass die anderen Servos, die du danach 
kaufst, sich genau so verhalten.

Eins solltest du wissen: Die Produkte für den R/C Modellbau sin 
SPIELZEUGE. In entsprechender Qualität sind sie produziert und 
dokumentiert.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren