PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mal wieder Servos - Probleme



Neupi
03.06.2014, 12:18
Hallo Community,

ich bin seit einiger Zeit dabei einen humanoiden Roboter zu bauen und vor allem zu programmieren. Der Torso (beinhaltet 2s Lipoakku und die Elektronik), sowie beide Beine (jeweils 6 DOF, 2xFuß, 1xKnie, 3x Hüfte) sind fertig, sodass ich nun auch gleich mit dem schreiben der Programme begonnen habe (aufgrund des massiv geringeren Programmspeicherplatzverbrauchs in C). Zum experimentieren nutze ich aktuell das RN-Control in Verbindung mit dem SD-21, wird aber wahrscheinlich in Zukunft auf eine Eigenlösung hinauslaufen. Um bei den benötigten 12 Servos zunächst nicht zu tief in die Tasche greifen zu müssen habe ich mich für die Towardpro 996r entschieden, auch wenn fast alle Nutzer davon abraten. Ich persönlich war zunächst recht zufrieden mit diesen Servos, haben Sie doch recht viel Kraft, mit Metallgetriebe und Kugellager und sind bisher noch nicht ausgefallen. Auch die Präzision ist in Ordnung, auf die Geschwindigkeit kommts nicht so an (Die Servos sind direkt an den Gelenken verbaut). Gut was nervt ist, dass sie recht viel Totspiel haben, aber auch damit kann man leben.

Kurzum, ich habe die Dinger eingebaut und den Roboter auch zum Stehen, Knien, Hocken und einfachen Laufen bekommen. Aktuell habe ich folgendes Problem: Wenn ich ein Programm schreibe, z.B. das Laufen, es funktioniert und ich nehme die Spannung vom System, kann es passieren, dass das Programm beim erneuten bestromen nicht mehr funktioniert, der Roboter also z.B. umfällt. Es sieht so aus, als würde die Nullposition der Servos jedesmal wenn sie neu bestromt werden ein kleines bisschen schwanken, obwohl ich mir das eigentlich nicht erklären kann. An der Ansteuerung kann es denke ich nicht liegen, dass SD-21 arbeitet doch zuverlässig oder?

Hatte jmd. dieses problem schoneinmal? Liegt es möglicherweise an den Servos? Welche Servos nehmt ihr bzw. könnt ihr empfehlen. Ich benötige zum Einbau die Standardabmessungen, etwa 40mm x 20mm x 40mm. Das Drehmoment sollte mindestens 10 kg*cm haben, mehr wäre besser. Preis natürlich angemessen, ab 40€ wirds mir zu teuer. Naja viell. hat ja jmd nen heißen Tip

Danke und Grüße

Thomas

Geistesblitz
03.06.2014, 15:00
Hmm, also ich habe die Erfahrung gemacht, dass Servos gerne mal ein wenig herumspinnen, wenn sie ohne anliegendes Signal bestromt werden. Es wäre vielleicht günstig, wenn die Servos erst ihr Signal bekommen und dann mit ein wenig Verzögerung ihren Saft bekommen. Jedenfalls hab ich von diesem Lösungsansatz schon gelesen, denke aber, dass das funktionieren könnte.

malthy
03.06.2014, 15:38
nehme die Spannung vom System, kann es passieren, dass das Programm beim erneuten bestromen nicht mehr funktioniert

Hast Du mal geguckt was die Versorgungsspannung im Moment des Einschaltens macht? Klingt für mich so als wären da einige Servos im Spiel, die, wenn sie alle gleichzeitig Spannung bekommen einen durchaus nicht unerheblichen Einschaltstrom ziehen werden. Vielleicht schlägt das bis in Deine Logik-Versorgung durch und bringt den Controller durcheinander.

Neupi
03.06.2014, 20:38
Danke erstmal für die interessanten Antworten. Ich werde es untersuchen. Es ist richtig, der Strom ist sehr hoch. Aber eigentlich kann man nicht von "Spinnen" reden, also sie zittern nicht oder verstellen sich sehr stark, es sind nur sehr kleine Abweichungen, die aber ausreichen dass alles nicht mehr funktioniert.
Es geschieht komischerweise auch nicht immer, sondern zu einem bestimmten Zeitpunkt sporadisch und lässt sich durch erneutes aus und einschalten auch nicht rückgängig machen, also einmal verstellt, immer verstellt, ich kapiers nicht. Falls die Tips nicht helfen, habt ihr wie gesagt noch eine Empfehlung für gut funktionierende Servos, die vielleicht etwas präziser laufen als die towardpro dinger, die viell. JMD. anderes bereits für humanoide robboter genutzt hat?

HeXPloreR
05.06.2014, 13:01
Hallo,

ich kann nur immer wieder die Hitec 5645MG Digitalservos (645MG = nur als Analaogservo).

Ob die genauer sind als Deine bisherigen kann ich aber nicht sagen.

Das Problem welches Du beschreibst iat aber nicht das allgemeine Wackeln der Servos beim einschalten oder? Denn da bewegensich einige und immer andere immer. Vielleicht geht es mit Geistesblitz's Tipp in den griff zu bekommen.

Wie versorgst Du deine Servos? Ich empfehle eine 7,4V LiPo Akkus zu nehmen. Da weiß ich sicher das die an den Hitecs (5645MG + 645MG) direkt funktionieren. Bei jedem anderen Servo kann ich Dir nur zu einen BEC-Adapter mit ausreichend Ampere raten der dir die Spannung auf 6V regelt, aber dennoch die Leistung wenig behindert.

Viele Grüße
Jörg

Neupi
06.06.2014, 13:10
Hallo,

ja die werden sicherlich genauer sein. Sind auch ein klein wenig stärker aber ob ich die direkt mit nem 2s Lipo betreiben würde... Ich denke nicht. Zumal die Ladeschlussspannung ja meist noch über dem Nennwert liegt. Ich nutze zur Zeit einen BEC mit 8A Dauerstrom und bis zu 15A Spitzenstrom. Das sollte eigentlich ausreichen. Jedes Servo zieht etwa 1,5A wenn es belastet wird. Gleichzeitig sind es etwa 6 Servos also rund 8 - 10A.
@ malthy und Geistesblitz: Im Moment des Einschaltens sendet das SD-21 seine Defaultwerte an die Servos, d.h. sie bewegen sich allesamt in ihre Nullstellung und ziehen insegesamt sehr viel Strom. Da diese direkt angeschlossen werden gestaltet sich eine Abkopplung bzw. einzelne Zuschaltung als schwierig. Leider lässt sich das SD-21 nicht umprogrammieren, sodass z.b. die Servos nacheinander angesteuert werden. Versorgt man das SD-21 mit Strom werden automatisch auch die Servos mitversorgt, sodass Steuersignal und Versorgungsspannung gleichzeitig am Servo ankommen. Die Spannung habe ich bis jetzt noch nicht untersucht, da man diese recht flott abtasten müsste um die Minimalspannung direkt beim Einschalten aufzuzeichnen.

Grüße

Rabenauge
06.06.2014, 13:30
Hab im Seeteufel auch TowerPro verbaut für die Bergefunktionen.
Die Dinger (meine sind kleine MG90s, reicht aus) haben wirklich beim Einschalten oft nen _geringfügig_ anderen Nullpunkt.
Das ist so wenig, dass mans nicht sieht, nur "knurren" sie halt dann ein bisschen.

HeXPloreR
06.06.2014, 16:18
... Leider lässt sich das SD-21 nicht umprogrammieren, sodass z.b. die Servos nacheinander angesteuert werden. Versorgt man das SD-21 mit Strom werden automatisch auch die Servos mitversorgt, sodass Steuersignal und Versorgungsspannung gleichzeitig am Servo ankommen.

Grüße

Nicht ganz... man kann mit dem Jumper die Servospannungsversorgung von der Logikspannung trennen. Dann muss man aber die 5V Logikspannung extra zuführen. GND nicht vergessen.
Die Servos werden im 20ms Takt (50Hz) von der SD21 angesteuert, der Reihe nach von 01 bis 21. Daran kann man nichts verändern.

Ich vermute mal Du liegst mit dem BEC leider etwas zu niedrig. Auch wenn Du einen Servo nicht direkt ansteuerst muss er dennoch seine Position halten, und je nachdem welche Hebelkraft auf ihn einwirkt wird eben ein gewisser Strom verbraucht.

Einen Defaultwert gibt es meines wissens nicht bei der SD21. Was du mal ausprobieren kannst:
Das ganze Verhalten mal nur mit nur 4 Servos testen. Dann mit 8. Tretten hier jetzt erst Probleme auf liegt es vermutlich an der Stromversorgung.
Danach einen 45° Wert von Neutral über dein Programm eistellen lassen. Dann das PWM-Signal vom µC anhalten. Die SD21 generiert jetzt den letzten PWM-Wert. Und jetzt die Spannung von der SD21 trennen, inklusive der Logikspannung. Der Servo per Hand auf Neutral drehen. Jetzt die Spannungen wieder anschliessen. Eigentlich sollte der Servo jetzt wieder auf seine 45° Lage von vorher fahren.
Also hat das SD21 keine Defaultwerte, was es maximal speichert ist der letzte Wert im jeweiligen Register. Vielleicht kann man noch die Speedwerte vor Spannungstrennung runtersetzen, dann sollte es wenigstens alles etwas entspannter anfahren. Ich werde das mal versuchen durchzuspielen heute abend.

Neupi
07.06.2014, 12:34
Nicht ganz... man kann mit dem Jumper die Servospannungsversorgung von der Logigspannung trennen. Dann muss man aber die 5V Logigspannung extra zuführen

Richtig, das war mir nach dem Posting dann auch eingefallen, werde ich mal testen. Allerdings:


Die Dinger (meine sind kleine MG90s, reicht aus) haben wirklich beim Einschalten oft nen _geringfügig_ anderen Nullpunkt. Das ist so wenig, dass mans nicht sieht.

Genau das ist das was ich meine. Bei meinen programmen reichen schon vielleicht 1-2° aus, damit die Funktion nicht mehr 100%ig hinhaut.


Einen Defaultwert gibt es meines wissens nicht bei der SD21.

Doch, wenn dem SD-21 nichts ins Register geschrieben wird stehen dort Anfangswerte (etwa Mittelwert, ich denke 1500) die dem Servo übertragen werden. Alte Registerwerte gehen bei Spannungstrennung verloren.

Ich werde die anderen Tips testen aber ich denke dass es ein Servoproblem ist. Falls dies noch jmd. bestätigen kann (ich habe schon von einigen Leuten gelesen, dass sie diese Servos verbaut oder zumindest mal getestet haben) möge er es doch bitte hier schreiben.

Grüße

Thomas

Rabenauge
07.06.2014, 17:53
Hm-eventuell umschiffen?
Du sprichst von nem Zweibeiner, der ja sowieso irgendwie Balance halten sollte.
Nen MPU rein, und dann das Teil immer gezielt hochfahren, bzw. runter (sichere Parkposition)?
Dann würden die Beine sich quasi selber kalibrieren.

Bei mir vermute ich, dass das Problem daher rührt (wie gesacht, soo genau kommts bei mir nicht drauf an, auch mit nem Grad Abweichung funktioniert das), dass ich zum einen nen Arduino hab, der die Dinger steuert, zum zweiten die dazugehörige Servo-Bibliothek (die gewiss nicht der Weisheit letzter Schluss ist), und ich drittens aus Bequemlichkeit direkt Gradangaben auf die Servos füttere.
Weiss zwar nicht genau, was die Bibliothek intern treibt, aber das riecht nen bisschen nach Rundungsfehlern, denn: belastet werden die Servos bei mir nicht, wenn sie nix zu stellen haben.
Eventuell wärs besser, wenn ich direkt ms von der Lib fordern würde, aber da ich das nicht brauche (ist halt eh alles für diese Billigstservos ausgelegt), mach ich mir die Mühe nicht. Aber eventuell hast du nen ähnliches Problem (Ungenauigkeiten der Software)?

Neupi
08.06.2014, 23:27
Hallo,

ich habe mich nochmal etwas schlau gemacht und gelesen, dass das Servo Toward Pro MG996 anders als von den Verkäufern beschrieben ein analoges Servo ist. Beworben wird es immer als digital. Weiterhin ist zu lesen, dass es einen riesigen Temperaturdrift hat. Das würde auch mein Problem erklären, nochmal etwas präziser formuliert:

Ich programmiere und probiere aus, die Servos erwärmen sich dabei auf eine "Betriebstemperatur", das Programm funktioniert so lange, wie ich daran arbeite. Ein und Ausschalten zeigt keine Veränderung am Servoverhalten. Beende ich meine Arbeit und teste das Programm einige Zeit später nocheinmal (Servos haben sich offensichtlich zwischenzeitlich wieder abgekühlt) gehts nicht mehr.

Aus Kundenrezension Amazon:


Aber im praktischen Betrieb stellte sich schnell heraus, das das Servo eine riesige Temperaturdrift hat.
im Warmen abgeglichen, rausgefahren, und plötzlich steht der Servoarm um fast 30° falsch (bei -5°C Aussentemperatur).
Da ich diesen Effekt nur von billigen Analogen Servos kenne.

Zuhause flugs geöffnet, und siehe da: Da ist ein analoger Ansteuer-IC drin!

Ach ja wer billig kauft, kauft zweimal...

Rabenauge
09.06.2014, 02:05
Nuja-auf Kundenrezensionen bei Amazong geb ich nicht soo viel. 30 Grad Abweichung ist garantiert völliger Nonsens-da wären die Dinger für gar nix zu gebrauchen.
Aber der Gedanke mit der Temperaturdrift kam mir auch schon.
Sollte sich dann aber, recht unabenteuerlich, umgehen lassen, indem du entweder:

-nachschaust, wie lange der Roboter schon läuft, und entsprechend nachkalibrierst oder besser:
-einfach an eins der Servos (besser wär an alle, da würden sich die hübschen Dallas DS18B20 anbieten, wegen dem EinDraht-Bus) Temperaturfühler klebst und die gelegentlich ausliest. Wiegen nix, gehn sehr genau und du kannst nahezu beliebig viele (ich glaub, bis 100 Stück, dürfte genügen) an eine Leitung hängen.
Alternativ halt andere Servos, aber das läppert sich, die Sensoren sind so für 1.80 das Stück zu haben.

HeXPloreR
09.06.2014, 09:23
Die Idee mit dem Temperatur messen ist ja nicht schlecht...aber jetzt muss man genau wissen wie weit sich welcher Servo anders verhält als vorher. Dazu müsste man genauere Tests fahren um einen Algoritmus zu schreiben. Das könnte schon abenteuerlich werden ;)
Man müsste auch prüfen ob sich das Problem auch auf dem gesamten Servohebelweg auswirkt oder wirklich nur in eine Richtung verschiebt. Hierzu fällt mir ein das ein Servo ja eigentlich auch nicht für diese Roboteranwendungen gemacht sind wo es auf Präzision so sehr ankommt. Ein RC-Fernbedienung hat dazu ja Trimmer eingebaut um genau solche Fälle manuell abzufangen.

Ich selbst würde es so machen: Die Betriebstemperatur der Servos vor dem Laufen lassen wieder herstellen in dem du nur die Servos 5min vorher mit Spannung versorgst. Und dann nochmal probierst ob der Roboter jetzt besser funktioniert.

Hier mal was zum lesen zu "diesen" Servos: http://www.rockcrawler.de/index.php?page=Thread&threadID=7197

Und noch ein Tipp von mir: Wenn Du neue bzw anders Servos zusätzlich mit einbaust - prüfe vorher in welche Richtung sie sich drehen im Vergleich zu Dem der vorher in dem Gelenk steckte. Aus eigener Erfahrung kann ich sagen das ein HS-5645MG andersrum dreht als ein RS-2 vom C. Und das ist manchmal etwas semioptimal wenn man nicht mal eben einen Seitentausch oder ähnliches durchführen kann oder möchte. Und dieses Problem also nur noch über Programierung lösbar ist.

oberallgeier
09.06.2014, 12:39
Die Idee mit dem Temperatur messen ist ja nicht schlecht ...Hier mal ein Beispiel von meinen Temperaturmessungen (https://www.roboternetz.de/community/threads/32293-DC-Kleinstmotor-mit-Getriebe-Drehsensor-5V-510-Upm?p=304931&viewfull=1#post304931). Die Anwärmung der Elektronik im geschlossenen Servogehäuse hatte ich nicht erfasst, die dürfte aber auch recht dynamisch sein.


... Betriebstemperatur ... herstellen in dem du nur die Servos 5min vorher mit Spannung versorgst ...Je nach Servo ziehen die unter Last erheblich unterschiedliche Ströme - auch wenns mir spanisch vorkam, siehe hier (https://www.roboternetz.de/community/threads/61379-Kopfsache-und-ein-m1284-etliche-Servos-viel-Alu?p=583165&viewfull=1#post583165) und die Postings davor. Bei manchen (der wenigen von mir gemessenen Typen) ist auch noch die Stromaufnahme im Ruhezustand recht unterschiedlich und schwankt z.B. wenn man den Servo von Hand in eine etwas andere Position bringt :-/

Hier bringt natürlich ein Servo-Mess-Tester (https://www.roboternetz.de/community/threads/62904-Servomesstester-%28Servotester-und-%C2%96messaufbau%29?p=585556&viewfull=1#post585556) einiges Licht ins Dunkel. Ein Tester kann/könnte ja auch einen einzelnen Servo überwachen. Mir jedenfalls waren die Ergebnisse die ich mit meinem Messtester gefunden hatte eine ziemich gute Basis für den weiteren Umgang mit den Motörchen.

Neupi
10.06.2014, 20:03
Naja gut, erstmal vielen Dank für die ganzen Ideen, die ihr mir mit auf den Weg gebt. Aber ich denke kaum, dass ich für jedes der 12 Servos eine eigene Temperaturkurve aufzeichne, 12 mal die Temperatur messe und darüber meine Servos kalibriere. Das ist einfach zu aufwendig und die Effekte werden nicht linear sein. Es wird wohl auf neue Servos hinauslaufen.


Und noch ein Tipp von mir: Wenn Du neue bzw anders Servos zusätzlich mit einbaust - prüfe vorher in welche Richtung sie sich drehen im Vergleich zu Dem der vorher in dem Gelenk steckte. Aus eigener Erfahrung kann ich sagen das ein HS-5645MG andersrum dreht als ein RS-2 vom C. Und das ist manchmal etwas semioptimal wenn man nicht mal eben einen Seitentausch oder ähnliches durchführen kann oder möchte. Und dieses Problem also nur noch über Programierung lösbar ist.

Muss die Programmierung bei den neuen Servos sowieso ändern...

@Oberallgeier Du hattest den "HD High-Torque Servo 1501MG" getestet. Kannst du ihn weiterempfehlen? Bewegt er sich stark aus der Position, wenn man ihn belastet?

Was haltet ihr von diesem Servo: Hobbyking: HK15298B https://www.youtube.com/watch?v=FnUNjnPfT2Y bei 3:25

Er schreibt in der Beschreibung, dass er von diesem Servo sehr überrascht war, man sieht auch, dass sich das servo kaum bewegt.

Grüße
Thomas

Rabenauge
10.06.2014, 20:23
Gar nix halt ich von dem Ding. Abgesehen davon, dass der "Test" kein richtiger ist, hört man grade bei dem Ding, wie es auch ohne Last deutlich schnurrt-also Müll.