PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Servo Geschwindigkeitsregelung



lwink
23.03.2011, 14:07
Hallo zusammen,

ich steuere mittels einer Mess-/Steuerkarte über einen PC über ein PWM-Signal einen Digitalservo an. Die Ansteuerung zur jeweiligen Position klappt einwandfrei.
Jedoch möchte ich auch den Servo in der Geschwindigkeit steuern. Meine Idee dazu war, dem Servo auf dem Weg zur Endposition weitere Zwischenpositionen zu schicken bzw. anfahren zu lassen. Problem dabei ist nur, dass der Servo bei dem Fahren durch die Zwischenpositionen zur Enposition in der Bewegung eine Art zittern ausführt. Den Motor im Servo über die Spannung zu steuern bringt auch nichts, denn da verliert der Servo an Kraft.
Ich habe jedoch gelesen, dass man bei Servos auch die Geschwindigkeit steuern kann lediglich bloß wie, stellt sich mir die Frage.
Daher nun meine Frage. Kennt jemand eine andere Art und Weise wie ich einen Servo im PWM-Signal auch in der Geschwindigkeit steuern kann oder gibt es andere Möglichkeiten?

Viele Grüße
Lars

TobiKa
23.03.2011, 15:42
Also, die eine Variante hast du ja schon angesprochen. Selbst noch nciht ausprobiert, aber vielleicht liegts auch daran wie du es machst, das er "zittert".

Eine andere Variante sind programmierbare Servos, aber auch nciht ganz billig...

Oder du schaust dich mal heir um: http://www.openservo.com/

lokirobotics
23.03.2011, 16:31
Du könntest den Motor im Servo ja auch per PWM ansteuern, dann verliert er keine Kraft.
Das läuft dann aber auf zusätzliche Hardware hinaus (H-Brücke). Und du musst selber regeln.
Dürfte aber noch wesentlich billiger sein, als Openservo oder gar programmierbares Servo.
Deine Karte kann doch sicher auch analoge Signale aufnehmen? Dann könnteste die Regelung dem PC überlassen.

oberallgeier
23.03.2011, 18:45
Hi Lars,

willkommen im Forum.

Eine Frage ist natürlich: warum willst Du die Servogeschwindigkeit regeln - ich vermute Du meinst aber steuern. Trotzdem bleibt die Frage offen: warum? Für Modellbauzwecke dürfte "so schnell wie möglich" die richtige Wahl sein - ich denke mal nur an Ruderbetätigung - da wird ne variable Stellgeschwindigkeit kaum Sinn machen.

WENN Du den Servo als Endlosdreher umbaust, und danach ne Drehzahlvariabilität wünscht - da geht ne variable Drehzahlsteuerung. Lies mal unter RN-Wissen/Servo (klick) nach. Dort ist unter "Methode 1" (klick hier) (http://www.rn-wissen.de/index.php/Servo#Servos_hacken) beim Servohacking diese Möglichkeit kurz beschrieben. Wenns Dich interessiert, können wir uns hier näher darüber unterhalten.

Die von Dir geübte Methode - schrittweises Anfahren von Zwischenpositionen als Simulation einer Geschwindigkeitssteuerung - gibt eine ruckelnde Bewegung vor allem dann, wenn die PWM z.B. nur 8 Bit Breite kennt. Ich hatte mal nen Servo durch einen Mikrocontroller mit 6000 (sechstausend) Schritten angesteuert, das sind schon rund 12½ Bit Breite. Da ging das selbst mit meinen Billigstservos einigermassen glatt - abgesehen von deren Zittern, das die selbst bei Stillstand haben.

Ansonsten dürfte die Geschichte mit dem OpenServo und I²C die richtige Wahl sein.

TobiKa
23.03.2011, 19:09
Oder du schaust dich mal heir um: http://www.openservo.com/
Ich wollte darauf hinaus sowas selbst zu machen, nicht zu kaufen.

lwink
24.03.2011, 13:58
Vielen Dank ersteinmal für alle eure Antworten. Werde alle Ideen mal sorgfältig betrachten und schauen, welche die Beste sein wird.

Was ich machen will: Ich möchte über einen Servo eine Wippe, welche an einem Gelenk befestigt ist über einen Bowdenzug (Mechanik etc. hab ich schon gebaut) auf und ab bewegen. Dabei sind die Anforderungen, dass ich eine ca. gradgenaue Ansteuerung hinbekomme, sowie dass ich die Wippe in Abhängigkeit der Geschwindigkeit auf und ab bewegen möchte. Mit meinem aktuellen Aufbau bekomme ich das zwar hin, habe aber wie gesagt ein zittern bei der Bewegung. Ich steuere das Servo über ein countergestützes Signal mit High- und Low-Time-Angabe je nach Position.

an oberallgeier:
Das Servohacking würde mir zwar die Geschwindigkeitssteuerung ermöglichen, aber wird mir doch sicher die Positionsansteuerung die ich gern möchte erschweren oder?
Welchen Controller hast du benutzt bzw. wie hast du das aufgebaut, um die Bit-Breite zu verändern?

Viele Grüße
Lars

lokirobotics
24.03.2011, 14:21
Wie "sauber" ist denn das Signal, dass deine Karte liefert? Vielleicht bringt ein dedizierter Servocontroller schon Besserung?!

Inventor76
24.03.2011, 15:04
Nur mal zu Anregung: Ich steuere meine Servos über einen Polou Maestro Servocontroler an. Da lässt sich sowohl die Geschwindigkeit als auch die Beschleunigung recht einfach steuern. Entweder in der jeweiligen Outputkonfiguration oder über einefache Skripts.

lwink
29.03.2011, 17:01
Habe die Geschwindigkeitsregelung jetzt mit einem Pololu Serial 8-Servo Controller realisiert, welche ich zum testen bekommen habe. Leider schaffe ich damit nur die Geschwindigkeit bei einem analog Servo Hitec HS-322HD zu steuern.
Für meinen Modelcraft VSD-18MBWG Digitalservo ist dies nicht möglich, jedoch klappt die Positionszuweisung mit dem Controller. Schicke ich einen Geschwindigkeitsbefehl an den Pololu, ändert sich bei neuer Positionszuweisung nur der Stellweg (es wird nicht die Position voll angefahren) und nicht die Geschwindigkeit. Wenn ich es mit dem Graupner Digitalservo DES 806 BB MG versuche, kann ich nicht mal eine gewünschte Position anfahren.
Kann das an dem Controller liegen, dass dieser nur mit analog Servos funktioniert (habe aber in der Bedienungsanleitung nicht von funktionalitätsauschluss mit digitalen Servos gelesen)?

Das eigentlich Vorgehen eines solchen Controllers zur Geschwindigkeitssteuerung ist doch auch eine Pulsweitenveränderung zu der gewünschten Position hin, entsprechend einer gewissen möglichen Auflösung des Controllers oder?

Das Signal was ich mit meiner Karte erzeugt habe, ist ein counter gestütztes PWM-Signal (je nach Position), dass ich alle 20 ms an den Servo schicke. Ist es dabei vielleicht möglich durch eine Verringerung der Low-Time von 20 ms auf zb. 10ms und meiner Idee des schrittweisen Anfahren einer Zwischenposition zur Endposition (wenn ich die Auflösung der Zwischenschritte sehr klein mache) eine saubere Geschwindigkeitsregelung zu realisieren bzw. das Zittern des Servos zu verringern?

lokirobotics
29.03.2011, 17:58
Warum das jetzt mit den Digitalservos nicht funktioniert, kann ich mir auch nicht erklären.
Ich arbeite zZt mit 5€ Servos von Modelcraft. Ich mache den Refresh alle 10ms. Dabei gibt es keinerlei Probleme.
Auch Fahrten mit konstanter Geschwindigkeit werden relativ sauber ausgeführt.


http://www.youtube.com/watch?v=E97fjHpXbNE&hd=1

lwink
30.03.2011, 08:20
@ lokirobotics: Da hast du recht, das sieht sehr gut aus. Genau das was meine Servos machen sollen. Wie steuerst du denn die Servos an?

lokirobotics
30.03.2011, 09:25
Danke. :D
Ich hab einen eigenen Servocontroller auf Basis eines ATMega32. Die Software läuft aber praktisch auf jedem Controller, der einen Timer mit Compare Match hat.
Der Controller wird einfach mit Positionswerten über die serielle Schnittstelle gefüttert. Für den PC hab ich mir ein Programm geschrieben, mit dem ich Sequenzen erstellen und ablaufen lassen kann.
Der Befehl "set,0,200,1000" z.B. würde Servo1 in einer Sekunde auf Position 200 fahren (0-255 möglich).

lwink
30.03.2011, 10:22
@ lokirobotics: Also verändert dein Controller, wie ich in dem Viedeo gesehen habe, die Pulsweite entsprechend der Zeit, die der Servo für das Anfahren der benötigten Position brauchen soll oder? Hast du die Software in C oder mit was anderem geschrieben? Habe mit meinem Programm und der Messkarte (läuft auch mit Digitalservos), das ganze noch mal optimieren können und das zittern vermindern können. Komme aber immernoch nicht ganz an die saubere Bewegung, wie mit einem Servotester z.B. ran.

lokirobotics
30.03.2011, 11:39
Der Controller erzeugt nur die Signale für die jeweiligen Servos. Das Programm im PC erstellt eine Tabelle, in der die Servopositionen stehen. Jede Tabellenzeile stellt dabei einen Timeslot von 10ms dar. Der Controller kriegt also alle 10ms die Servopositionen übermittelt, die er dann auch sofort anlegt. Die Servos bewegen sich also immer mit maximaler Geschwindigkeit.
Hier mal ein Ausschnitt aus solch einer Tabelle:



0 0 0 0
2 2 0 0
4 4 0 0
6 6 0 0
8 8 0 0
10 10 0 0
12 12 0 0
14 14 0 0
16 16 0 0
18 18 0 0
20 20 0 0
22 22 0 0
24 24 0 0
26 26 0 0
28 28 0 0
30 30 0 0
32 32 0 0
34 34 0 0
36 36 0 0
38 38 0 0
40 40 0 0
42 42 0 0
44 44 0 0
46 46 0 0
48 48 0 0
50 50 0 0
52 52 0 0
54 54 0 0
56 56 0 0
58 58 0 0
60 60 0 0
62 62 0 0
64 64 0 0
66 66 0 0
68 68 0 0
70 70 0 0
72 72 0 0
74 74 0 0
76 76 0 0
78 78 0 0
80 80 0 0
82 82 0 0
84 84 0 0
86 86 0 0
88 88 0 0
90 90 0 0
92 92 0 0
94 94 0 0
96 96 0 0
98 98 0 0
100 100 0 0
102 98 0 0
104 96 0 0
106 94 0 0
108 92 0 0
110 90 0 0
112 88 0 0
114 86 0 0
116 84 0 0
118 82 0 0
120 80 0 0
122 78 0 0
124 76 0 0
126 74 0 0
128 72 0 0
130 70 0 0
132 68 0 0
134 66 0 0
136 64 0 0
138 62 0 0
140 60 0 0
142 58 0 0
144 56 0 0
146 54 0 0
148 52 0 0
150 50 0 0
152 48 0 0
154 46 0 0
156 44 0 0
158 42 0 0
160 40 0 0
162 38 0 0
164 36 0 0
166 34 0 0
168 32 0 0
170 30 0 0
172 28 0 0
174 26 0 0
176 24 0 0
178 22 0 0
180 20 0 0
182 18 0 0
184 16 0 0
186 14 0 0
188 12 0 0
190 10 0 0
192 8 0 0
194 6 0 0
196 4 0 0
198 2 0 0
200 0 0 0



edit: MCU in C, PC Programm in C#

oberallgeier
30.03.2011, 12:09
Gute Arbeit, mein Kompliment.
... Controller kriegt also alle 10ms die Servopositionen übermittelt, die er dann auch sofort anlegt ...Nun ist die Standard-Updateperiode eines Servos 20 ms. Aber wir wissen, dass Servos nicht so pingelig auf diese Zeit achten - aber das Rampenverhältnis muss halt stimmen. Spricht Dein Servo wirklich 100 mal pro Sekunde mit Dir? Dann müsste ja auch Dein Stellungssignal, die Rampe (siehe hier) (http://www.rn-wissen.de/index.php/Servo#Ansteuerung:_Signalform_und_Schaltung) entsprechend kleiner sein, sprich 0,5 bis 1 ms je Periode.

Frage 1: wie lang ist Deine kürzeste Rampe, wie lang Deine längste ?
Frage 2: Verarbeitet Dein Servo wirklich die 100-Hz-Signale? (Wie) Ist das getestet/gesichert?

lokirobotics
30.03.2011, 14:13
Danke. :-)

Zu erstens: Meine Servos halten sich leider gar nicht an die üblichen "Vorgaben".

18374

Wie du siehst, liegt die kürzeste Periode bei 500µS, die längste bei ~2400µS. Bei den Extremwerten kommen die Servos auch nicht ins Zittern, wie das z.B. bei drei oder 4ms Impulsen der Fall wäre.

Zu zweitens: Ob die Servos so schnelle Impulse verarbeiten, weiß ich nicht. Das ist weder getestet, noch irgendwie gesichert. Imho macht es auch keinen Sinn, die Servoposition mit 100Hz zu aktualisieren. Der Controller soll aber auch zur Steuerung von BL-Motor Controllern eingesetzt werden. Da möchte ich dann untersuchen, wie schnell man die Drehzahlen der Motoren ändern kann. Deswegen die 10ms.
...
So, ich habe es gerade mal mit 20ms getestet. Die Servos fahren ruckeliger. Die Servos scheinen die 10ms also zu schlucken.

oberallgeier
30.03.2011, 14:42
Noch mehr Kompliment und danke für die Arbeit. Ich verwende ähnliche Servos, die billigen MODELCRAFT ES-05 JR/FUT - aber derzeit praktisch nur in der Hackversion 2. (http://www.rn-wissen.de/index.php/Servo#Servos_hacken) Bei früheren Arbeiten war mir schon aufgefallen, dass die recht tolerant gegenüber der Periodendauer sind. Aber ich habe das weder so genutzt wie Du, noch habe ich das so genau dokumentiert. Ich hatte lediglich die langsame Fahrweise geübt durch ein paar tausend Schritte für die Rampe und langsames Hochtickern der Rampe.

Bitte nicht prügeln, wenn ich jetzt pingelig werde. Du dokumentierst Pulse von 500 µs bis 2400 µs. Jetzt ist die naheliegende und wichtige Frage, wie lang war bei Deinen Tests die Periodendauer [klugsche--sen] die ja der Abstand von Pulsanfang zu Pulsanfang ist [/klugsche--sen]. Vergleiche auch die üblichen Definitionen hier. (http://www.rn-wissen.de/index.php/Servo#Ansteuerung:_Signalform_und_Schaltung) Jedenfalls danke für die saubere Arbeit.

Na ja, und meine Servos halten sich auch nicht an die üblichen "Vorgaben" die da mal sagten, dass diese Typen gleich/schnell/nachMinuten hinüber seien. Jedenfalls laufen meine gehackten Teilchen seit vielen vielen Betriebsstunden.

lokirobotics
30.03.2011, 15:25
Oh, das freut mich, wenn meine Arbeit nicht nur mir was bringt ;D
Also, bei der 10ms Variante: 10.05ms bis 11.10 ms, je nach Servowert.
Bei der 20ms Variante sind es: 20.1ms bis 21.2ms, je nach Servowert.

Wieso pingelig werden? Ich würde sagen, diese ganze "Rumdokumentiererei" ist schon pingelig genug, da kommt es auf ein bisschen mehr oder weniger nicht an XD

Es sind aber nicht nur ähnliche Servos, es sind die gleichen. ;D
Die sind schon ganz günstig, aber die nächsten werde ich mir bei Hobbyking (http://www.hobbyking.com) holen, da gibts die schon ab $2,60US.

Bevor ich es vergesse: Weißt du, ob man die Potis durchdrehen kann? Oder haben die auch einen Anschlag?

oberallgeier
30.03.2011, 15:44
Ok, also ist die Rampe im üblichen Verhältnis zur Periode. Danke.


... Servos ... die gleichen ... bei Hobbyking holen ... schon ab $2,60US ...Hast Du so etwas schon mal aus USA importiert? Ich habe vor zwei Jahren für einige Gramm (geschätzt um die 50 g Nutzlast von Nevada nach Bayern) etwa 30 .. 40 US$ Porto und ca. 20 Euro Zoll gezahlt. Die nächste Sendung hab ich dann ans Büro in den USA geschickt, Porto dann etwa 3 .. 4 US$, von dort bei der ersten Gelegenheit mitgenommen. Der Zoll an der Grenze sah das als Geschenk/Mitbringsel und zollfrei an.


... ob man die Potis durchdrehen kann ...Ja, man kann die ohne Anschlag durchdrehen, aber es gibt natürlich den undefinierten Übergangsbereich. Ich kann Dir eines schicken - da ich zum Ärger meiner Frau kein Wegschmeisser bin.

lokirobotics
30.03.2011, 16:16
...da ich zum Ärger meiner Frau kein Wegschmeisser bin. <= XD Das gleiche "Problem" hat meine Frau auch.
Ach, danke, aber wenn ich eines umbauen will, dann muss ich's ja eh öffnen.

Hobbyking sitzt in China. Ich hab erst vor ein paar Wochen Lipos, Motoren und Fahrtensteller gekauft.
Das Paket hat 750g gewogen und $18 Versand gekostet. Dann kamen noch 13€ Zoll dazu. Für nen Warenwert von $76 ganz ok, finde ich.
Die haben ne sehr enge Staffelung der Versandkosten. Bis 100g zahlt man z.B. nur $3. Dazu kommt, dass man manche Artikel auch aus Deutschland verschicken lassen kann, dann fällt schonmal der Zoll weg.
Außerdem sind die unglaublich günstig. Leider kriege ich keine Provision ;D

Richard
30.03.2011, 16:49
Noch mehr Kompliment und danke für die Arbeit. Ich verwende ähnliche Servos, die billigen MODELCRAFT ES-05 JR/FUT - aber derzeit praktisch nur in der Hackversion 2. (http://www.rn-wissen.de/index.php/Servo#Servos_hacken) Bei früheren Arbeiten war mir schon aufgefallen, dass die recht tolerant gegenüber der Periodendauer sind. Aber ich habe das weder so genutzt wie Du, noch habe ich das so genau dokumentiert. Ich hatte lediglich die langsame Fahrweise geübt durch ein paar tausend Schritte für die Rampe und langsames Hochtickern der Rampe.

Bitte nicht prügeln, wenn ich jetzt pingelig werde. Du dokumentierst Pulse von 500 µs bis 2400 µs. Jetzt ist die naheliegende und wichtige Frage, wie lang war bei Deinen Tests die Periodendauer [klugsche--sen] die ja der Abstand von Pulsanfang zu Pulsanfang ist [/klugsche--sen]. Vergleiche auch die üblichen Definitionen hier. (http://www.rn-wissen.de/index.php/Servo#Ansteuerung:_Signalform_und_Schaltung) Jedenfalls danke für die saubere Arbeit.

Na ja, und meine Servos halten sich auch nicht an die üblichen "Vorgaben" die da mal sagten, dass diese Typen gleich/schnell/nachMinuten hinüber seien. Jedenfalls laufen meine gehackten Teilchen seit vielen vielen Betriebsstunden.

Im Bascom servo Demo Programm wird die Wiederholrate auch auf 10 ms anstatt 20 ms gewählt. Näher untersucht habe ich das allerdings nicht, nur mal aus Interesse ausprobiert und keine Probleme festgestellt.

Gruß Richard

oberallgeier
30.03.2011, 17:26
Im Bascom servo Demo Programm wird die Wiederholrate auch auf 10 ms ...Danke für diesen zusätzlichen Hinweis. Ich nehme das jetzt zum Anlass, die entsprechende Passage im Wiki zu ändern. Immerhin liegt dieser Wert so abseits der allgemeinen Empfehlung, dass Viele das nicht nutzen. Ich sehe darin eine praktische Freiheit, die ein schnelleres updaten der Servostellung ermöglicht. Die viele Mühe von lokirobotics sollte doch wissbegierigen Menschen nicht vorenthalten bleiben/werden.

lwink
30.03.2011, 17:47
Der Controller erzeugt nur die Signale für die jeweiligen Servos. Das Programm im PC erstellt eine Tabelle, in der die Servopositionen stehen. Jede Tabellenzeile stellt dabei einen Timeslot von 10ms dar. Der Controller kriegt also alle 10ms die Servopositionen übermittelt, die er dann auch sofort anlegt. Die Servos bewegen sich also immer mit maximaler Geschwindigkeit.
Hier mal ein Ausschnitt aus solch einer Tabelle:


das heist: für den Algorithmus bedeutet das, wenn du schneller mit den Servos fahren möchtest, dann schickst du ihm einfach weniger Werte bzw. größere Abstände oder wie kann ich das verstehen?

lokirobotics
30.03.2011, 17:57
Letzteres ist richtig. Der Controller bekommt vom PC alle 10ms die Positionsdaten zugeschickt (solange sich was bewegen soll). Je nach dem, wie schnell sich die Servos bewegen sollen, fallen die Unterschiede zwischen den Werten größer oder kleiner aus.

lwink
01.04.2011, 13:54
@ lokirobotics: Kann es dann aber sein das ich Positionsdaten sende, während der Servo noch die letzte Position anfährt? Da bei meiner Steuerung der Servo für jeden Schritt 0,16 sek benötigt, um ihn anzufahren, wenn ich die Zeit z.B: des Datenschreibens mal messe. Ich schreibe ja auch alle 10ms eine Position (der Servo kann bis 5ms Zyklen annehmen laut Hersteller). Oder mache ich da was falsch bzw. habe einen Denkfehler?

lokirobotics
01.04.2011, 14:26
Falls es so ist, du aber die Rampen richtig berechnet hast, sollte das kein Problem sein. Dann dürfte er ja im schlimmsten Fall erst auf dem Weg dorthin sein und sich so weiter gleichmäßig bewegen.
So wie du das schreibst, hieße das ja, dass der Servo einfach mit maximaler Geschwindigkeit verfährt.
Nen Denkfehler kann ich da jetzt nicht erkennen. Vielleicht hab ich auch nicht ganz verstanden was du meinst?!

lwink
01.04.2011, 15:19
@ lokirobotics: Der Servo fährt ja immer mit maximaler Geschwindigkeit, nur muss er mehr Positionen zwischendurch anfahren und dadurch wird er langsamer. Für jede Position benötigt mein Servo 0,16 sek. (Gemessen über die Zeit des Schreibens der Karte und teilen durch die Anzahl der Positionen ; stimmt auch sehr gut mit der Zeit überein die der Servo dann fährt) Gebe ich mehr Positionen an, fährt der Servo auch langsamer. Trotzdem sende ich Pulse aller 10ms, so hab ich es eingestellt. Das würde doch einfach bedeuten, dass mein Schreibprozess einfach so lang braucht oder?

lokirobotics
01.04.2011, 15:27
Also, das Schreiben sollte ja zwischen 0,001 (1ms) und 0,002 (2ms) dauern. Ich verstehe nicht, was du mit den 0,16s meinst. Meinst du damit die Komplette fahrt von A nach B, oder immer nur einen Zwischenschritt?
Je mehr Positionen der Servo zwischen A und B anfahren muss, desto langsamer wird die Durchschnittsgeschwindigkeit. Das ist richtig.

lwink
01.04.2011, 15:46
@ lokirobotics: Komischer Weise ist das die Zeit (160 ms) die er für nur einen Zwischenschritt braucht. Trotzdem sieht die Bewegung flüssig aus und zittert kaum. Ich denke fast das liegt an der Karte oder wie kann ich die Zeitdauer, des Fahrens des Servo noch messen?

oberallgeier
01.04.2011, 17:46
son Mist - eine halbe Seite Physik geschrieben - und die Forumsoftware hats gefressen - die Daten elektronisch verarbeitet - futsch (wegen langer Schreibzeit wurde ich abgemeldet und pling - war alles weg . . . . ). Ich schreib es in einer Weile noch mal.

oberallgeier
01.04.2011, 19:34
Hi lwink, hi lokirobotics,


... Der Servo fährt ja immer mit maximaler Geschwindigkeit ...
Nein, das stimmt eindeutig nicht. Die Physik ist dagegen, das Trägheitsgesetz ist NICHT aufhebbar (nicht mit gegenwärtigem Wissen). Lass es mich anders formulieren: Nach der Beschleunigungsphase und vor der Einschwingphase (Bremsphase in die vorgegebene Position) fährt der Servo mit maximaler Geschwindigkeit.

Grundlagen: Die Servos von lokirobitics sind die gleichen, die ich für meine Getriebemotoren verwende - ich baue allerdings die interne Elektronik aus, entferne die inneren Anschläge zur Schwenkbegrenzung, baue eine Drehzahlmessung über Lichtschranke ein (klick hier) (https://www.roboternetz.de/community/showthread.php?32293-DC-Kleinstmotor-mit-Getriebe-Drehsensor-5V-510-Upm&p=401963&viewfull=1#post401963) und steuere diese Motoren direkt mit einem L293D an. Damit fehlt mir die Rückmeldung der Position der Abtriebswelle und eine vermutlich im Servo eingebaute Regelungseinrichtung. Die Ansteuerung durch den L293D dürfte leistungsfähiger sein, als der im Servo ursprünglich eingesetzte Motortreiber. Die Ansteuerung meiner Motore erfolgt üblicherweise mit max. 5 V über eine 8bittige PWM.

Meine so umgebauten Motoren habe ich vermessen, sprich ich habe eine Sprungantwort aufgenommen. Es wird dazu die achtbittige PWM auf 255 gesetzt, das entspricht einer Motorversorgung mit Dauerstrich 5 V. Die Motoren beschleunigen dabei in ca. 22 ms von Stillstand auf ca. 90 % Maximaldrehzahl und brauchen dafür 12 Umdrehungen, sprich ca. 5 ° auf der Abtriebswelle (i = 768:1). Motorkonstante 10 ms ± 2 ms. Siehe dieses Diagramm (klick). (http://oberallgeier.ob.funpic.de/SpA-an-Sp-ab-mBr-akt.jpg)

@lwink: Deine Messung "16 ms" für eine Positionsänderung (wie groß ist denn dabei die angepeilte Winkeldifferenz?) ist also recht ordentlich. Immerhin muss der Motor ja deutlich vor dem Zielpunkt heruntergefahren werden, um nicht übes Ziel hinauszuschießen, wird möglicherweise garnicht auf Maximaldrehzahl kommen. Anfahren und Abbremsen erledigt die motorinterne Regelung. Die Bremsrampe verzögert natürlich die Fahrdauer von einer Position zu anderen.

Ist diese Erläuterung hilfreich? Ist sie verständlich? Gibts dazu noch Fragen?