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?
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?
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.
@ 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?
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?!
@ 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?
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.
@ 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?
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.
Ciao sagt der JoeamBerg
Hi lwink, hi lokirobotics,
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.Zitat von lwink
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) 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).
@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?
Geändert von oberallgeier (02.04.2011 um 09:27 Uhr) Grund: ... 5° an der Abtriebswelle ...
Ciao sagt der JoeamBerg
Lesezeichen