PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Periodendauer beim Servo



.Johannes.
20.02.2005, 13:00
Hi!
Ich wollte eine Servosteuerung programmieren leider hab ich auf
verschiedenen Internetseiten verschiedene Angaben zur Gesamtperiodendauer eines Servosignals gelesen.
Die Pulslänge für die 0-Stellung ist ja 1,5 ms.
dauert die Gesamtperiode nun 20ms oder 21,5 ms?

jap
20.02.2005, 13:40
Die Gesamtperiode bleibt immer konstant 20ms egal ob die Highperiode 1ms....2ms beträgt.
Das bedeutet:
Stellung links 1ms high und 19ms low
Stellung mitte 1.5ms high und 18.5 low
Stellung rechts 2ms high und 18ms low.

Hellmut
21.02.2005, 01:16
Je Kanal stimmts jap. Die Impulse an den einzelnen Signalleitungen der Servo-Stecker am Empfänger folgen einander. Also z.B. Kanal 1: 1ms, Kanal 2: unmittelbar anschliessend z.B. 1,5ms. Bei einem 2 Kanal-Empfänger wäre dann etwa 17,5ms Ruhe. Nach meinen Recherchen schwanken aber die genauen Werte der Zyklendauer so +/-10%. Vermute allerdings von Gerät zu Gerät.

Bei einem 8 Kanal Empfänger kann die Zeit für administrative Arbeiten vom Controller knapp werden. 8x 2ms = 16ms => <4ms Zeit oder weniger als 20%.

Fritzli
21.02.2005, 10:52
Hallo

Da wär noch hinzuzufügen, dass es auf die genaue Periodendauer nicht so draufankommt. Die Periode darf einiges kürzer/länger sein als die 20ms, wieviel toleriert wird hängt jedoch vom einzelnen Servo ab. Wird die Periode zu kurz, so beginnt das Servo zu zittern. Bei längerer Periode nimmt das Drehmoment ab, da der Motor weniger häufig angesteuert wird.

Als Bsp: Ich hab einen Graupner-Servo der bei ca 16ms betrieben wird; keine Probleme


Gruess
Felix

srem
24.02.2005, 19:45
Hellmut
hast du erfahrung mit Controller Empfänger und mehrern Servos. Ich arbeite gerade an diesem Problem. Zur Zeit verwende ich zwei Controller und glaub dass ich morgen fertig werde. Aber fallst du ein paar Infos hast wäre ich dir sehr dankbar.

Johannes
Ich würde an deiner Stelle bei 50Hz bleiben. Aus meiner Erfahrung fährst du da bei allen Servos recht gut.

Gruss Matthias

Hellmut
25.02.2005, 10:46
Hallo Matthias

Ich habe mich im Zusammenhang mit der Konzeption der Elektronik für mein Modell-Segelboot sehr intensiv mit der Thematik beschäftigt, da Lösungen gefunden werden mussten und Engpässe wenn möglich zu identifizieren sind. Kodierung leider noch nicht, da ich als Langzeitarbeitsloser viel zeit warten muß die nötigen Materialien bezahlen zu können.

Die 50Hz, also 20ms Zykluszeit würde auch ich immer als Zielmarke anpeilen. Was ich allerdings unter dem Gesichtspunkt der Verwendbarkeit für den "normalen" Benutzer sehr empfehlen würde ist jeglichen Kode Parameter gesteuert zu machen. Der Benutzer könnte dann ohne PC, mit den Tasten z.B. auf der RN-Control und einem Display, siehe Projekte hier im Forum, die Werte der Parameter pflegen, in dem Kode im uC die Veränderung der Parameter gestattet. Ich würde sogar empfehlen dieses in Robotiknetz.de-Spezifikationen aufzunehmen, da man dann eine Spezifikationskonforme Parameterpflege-Routine hier bereitstellen könnte und es ein Verfahren geben sollte, auch wo die Paramter im Speicher abgelegt werden, definiert ist.

So könnte man z.B. die Frequenz verändern, statt 50Hz, 51Hz zu wählen. Das verlangt bei der Kodierung natürlich sich sehr reiflich Gedanken dazu zu machen, was die Folgewirkungen an anderen Stellen im Kode sind.

Nur so eine Idee. Im Schiffsmodellbau, habe ich es erreicht, dass das Thema Elektronik/Robotik, jetzt zum aktuellen Projekt geworden ist. Schiffsmodellbauer sind in der Regel sehr gut in Mechanik, aber nur einige gut in Elektronik und Programmierung. Will man jetzt Schiffsmodelle mit den Möglichkeiten der Robotik, siehe dieses Forum, bereichern, so muß ein Verfahren vorgesehen werden, das der Schiffsmodellbauer ohne PC am Seeufer seine Elektronik im Boot zu trimmen! Ein kleines Display wie hier bei RobotikHardware.de angeboten, sowie das Projekt eine LCD-Display Karte mit Tasten bereitzustellen, würde eine preiswerte und doch sehr mächtiges Werkzeug bereitstellen, wenn die Kodierungen Parameter gesteuert wären und ein Verfahren und eine Speicherreservierung spezifiziert wären.

srem
25.02.2005, 17:14
Hellmut
Du hast echt gute Ideen. Aber hast du konkret eine funktionierende Anwendung? Hast du dich mit dem Problem auch schon praktisch konfrotiert(programmiertechnisch)
Also Ich habe gerade ein Programm fertiggestellt. Dass 4 Kanäle vom Fernsteuerungsempfänger decodiert und 4 Motoren regelt. Wär schön wenn du mir Programmschipsel oder deine Problem lösungen schicken könntest.
mfg Matthias

Hellmut
27.02.2005, 13:35
Hallo Matthias

Ich komme in der gegenwärtigen Entwicklungsphase noch mit dem Leistungsumfang der Test-Programme zu den bei RobotikHardware.de beziehbaren Platinen hin.

Bei meinem Boot, arbeite ich mich zur Zeit im Iterationsverfahren an akzeptierbare Lösungen heran. Daher nehme ich die Test-Programme und ergänze diese um Teilfunktionalitäten zur Verifikation. Auf der anderen Seite dient mir das Schiffsmodellbau-Forum um die pragmatischen Inputs der Mitglieder dort in meine Überlegungen einzubeziehen.

Es ist unglaublich, aber mit dem Einsatz nur der Boards von Robotikhardware.de und den hier im Forum stattfindendenden Diskussionen habe ich als Schiffsmodellbauer die "Büchse der Pandora" geöffnet. Die Möglichkeiten sind scheinbar unendlich, das Machbare und das was die Akzeptanz bei Schiffsmodellbauern findet, stehen sich im Spektrum gegenüber.

Die zur Zeit erzielten Zwischenergebnisse sind beachtlich, und doch noch weit vor dem Abschluß.

1. Die Schiffmodellbauer haben ein Projekt bei welchem Sie sich die Grundlagen erarbeiten eine einfache Motorsteuerung zu bauen. Die Diskussionen bis dahin waren für mich sehr wertvoll.

2. Ich habe mit der Motorsteuerung von stupsi und Kjion möglicher Weise meinen ideale Motorsteuerung gefunden.

Auf der mechanischen Seite meines Segelbootes hat die Verfügbarkeit der Motorsteuerung von stupsi, welche eben über die Dekodierung der Impulse vom Inkrementalwertgeber díe Fähigkeit hat Positionen geziehlt abzufragen, sowie der mechanischen Bremse von Dunkermotoren, E38, die über I2C und der RN-Relai von Robotikhardware.de betätigt werden unglaubliche Möglichkeiten bekommen.

Und hier eben auch, das Lösen und Aktivieren der Bremse benötigt keine eigene Programmentwicklung. Ich ergänze den Kode in stupsis Motorsteuerung um die Routinen zur Steuerung der Relais vom Frank und das wars.

Jetzt warte ich auf das Eintreffen der Bremsen mitte März, die RN-Relai ist am Samstag eingetroffen, die Platine von stupsis Motorsteuerung auch.

Schau Matthias, der Weg ist bei mir das Ziel, ich rechne mit 2006 bevor Elektronik und Mechanik soweit sind das ich mein Modellsegelboot erstmals fahren kann.

Ich habe aber im Rahmen meiner Konzept-Entwicklung auch einige mögliche "show-stopper" identifiziert die mich zwingen könnten das Konzept teilweise umzustricken.

Es ist das Zusammenspiel der Dekodierung der Anweisungen vom Benutzer über die Funkfernsteuerung, Impulslängenmessung einer Anzahl zwischen 8 und 24 Kanälen (Multiprop und Multiswitch), den Administrativen Aufgaben, Impulslängendekodierung, Vergleich mit Wert aus früheren Zyklen (20ms), Senden veränderter Werte an Zentraleinheit und/oder an zuständige Funktionsmodule.

Die Fragen die hier auftreten sind:

1. Wieviele Kanäle kann ein mega8 z.B. dekodieren
2. Reicht die verbleibende Zeit im 20ms-Zyklus für administrative Aufgaben
3. Wird der I2C-Bus hierdurch wegen Überbelastung nicht blockiert? Kann dadurch das ein I2C-Slave das Clock-Signal auf "Low" hält weil er eine Aufgabe erst abschliessen muß, der I2C-Master ja dadurch eingefroren wird, alles einfrieren?

Da diese Fragen sehr komplex sind und letztendlich erst dann beantwortet werden können wenn mein System steht, versuche ich in den Threads hier meine Überlegungen einzubringen und dadurch vielleicht neue Erkenntnisse gewinnen. Die Dekodierung der Steuerimpulse von der Funkfernsteuerung habe ich deshalb erstmal nach hinten geschoben und konzentriere mich auf die Verfügbarmachung der "building blocks".

Ich habe daher, ist mir direkt peinlich, keine "Kodeschnipsel" die ich mit dir teilen könnte, ich verwende ja nur existierendes, aber kann meine Überlegungen zum Besten bringen. Ich habe eine ganze Weile darüber nachgedacht wie ich auf deine Frage antworte. Ich wollte keine Rechtfertigung geben, ich wollte mich über mein Vorgehen selber klar werden, und ich hoffe trotzdem an deinen Erfahrungen teilhaben zu können, sofern ich hier weder als "Schmarotzer" noch als "Neunmalkluger" erscheine.

srem
28.02.2005, 00:27
Keine Angst. Ich bin der Meinung Schmarotzer gitb es nicht und wenn vielleicht leisten sie doch irgendwann mal einen produktieven Beitrag. Also ich hab mir die RN board noch nicht angesehen aber wie mir scheint sollte ich.
Was meine Erfahrung betrifft: Ich bin sicher nicht der Schlechteste im programmieren. Muss mich aber zur Zeit mit echten Zeitproblemen ärgern.
z.B Da die Kanäle der Ferbedienung im PCM verfahren übertragen werden. Und somit die Kanäle in direkt in Serie folgen habe ich Problem den zweiten Kanal ordentlich abzugreifen da ich doch bei einer Verarbeitungsrutiene des Ersten stecke. Wie auch immer. Ich schaffe es ca. nur 10 mal pro Sekunde neue Werte an den Motortreiber zu schicken. Erscheint mir etwas langsam.
In der Praxis: Des Ding steht und es läuft also muss ich nur mehr schauen ob das Zeitprobelm bei Motoren eine Rolle spielt.
Ich wünsch dir viel Glück Helmut bei deinen Projekten

millioneer
28.02.2005, 11:49
Ich habe neulich auch an einem Servocontroller mit Mega8 gebastelt in C und dabei auch das "Problem" der Wiederholrate gehabt und festgestellt das es kein Problem ist. Ich verwende standardmässig 20ms aber auch Werte von 10ms oder 30 ms sind möglich. Bei 10ms bekommt der Servo häufiger seine Zielposition genannt und man bekommt den noch schwerer aus seiner Position wegbewegt. Bei 30ms fängt der bei anliegender Kraft an zu schwingen weil er ja erst bei der nächsten PWM-Signal wieder seine Position ansteuert.
Also häufiger ist besser. (<20ms)