PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie kann man Servos vom Zittern in Ruheposition abhalten?



Getorix
13.02.2012, 11:07
Hallo zusammen,

ich betreibe meinen Kletterroboter mit drei sehr kräftigen Servos (Kondo, KRS2350, Hochvolt-Version), die ich mit einem Arduino Duemillanove und der dazugehörigen Servo-Library ansteuere.

Das Anfahren von Positionen läuft soweit super - auch wenn die Motoren dabei an ihre Leistungsgrenze kommen.
Aber was ganz schlecht geht ist das Halten der Ruheposition.

Die Servos (alle drei) finden einfach keine stabile Ruheposition und zittern und rattern und stören den Roboterfuss dadurch am Festmachen an der Wand und unnötig Energie aus dem Akku braucht das Zittern auch. Abschalten kann ich die Motoren leider nicht, weil die Schwerkraft den Roboter sonst in eine andere Position fahren würde.

Es ist zwar kein Problem, das den Roboter völlig funktionsuntüchtig macht, aber doch eines, das mich so stört, dass ich es gerne beheben würde.

Über google und die Forensuchfunktion konnte ich bereits herausbekommen, dass das Problem nicht wirklich selten ist, nur weiss ich bis jetzt nicht, ob und was man dagegen tun kann.
- Es tritt auch auf, wenn ich die Servos mit einer Spannungsquelle betreibe und auch, wenn das Arduino seperat mit spannung versorgt wird.
- Kabellängen sind so kurz wie möglich (Kondo-Originalkabel wird in einen selbstgelöteten Stecker gesteckt , der ins Arduino kommt)

Hat jemand von euch eine Idee?

- ich denke ist ist eine Art "Überschiessen" des servointernen Regelkreises - und ich vermute, dass analoge Servos gutmütiger wären, hab aber leider keine gefunden, die mind. 3 Nm leisten (besser ab 4 Nm, denn eigentlich will ich am Roboter später Gewicht anhängen können)
- Aber evt. kann man da über die Ansteruerung von aussen etwas machen?
- oder würde ein "Entstören" etwas bringen? Wie würde man das korrekt machen?

Liebe Grüsse
Lina

oberallgeier
13.02.2012, 11:20
Hi Lina,

mit hochpreisigen Servos habe ich praktisch keine Erfahrung (ausser durch Hinsehen/Fachsimpeln bei Modellfliegern) aber diese unschönenen Zitterpartien scheinen nicht nur mit den Regelalgorithmen zu tun zu haben.


... Kondo, KRS2350, Hochvolt ... zittern und rattern ... auch, wenn das Arduino seperat mit spannung versorgt ...Lina, also ich hatte festgestellt, dass eine separate Versorgung so ne Art MUSS ist - fast jegliche Art von Servos, Motoren, Sensoren u.ä. bringen einfach so viele Störungen zum Controller, dass sich der geringen Mehraufwand auch in der Störsicherheit rechnet. Ich hatte erst kürzlich einen platzmässig ziemlich gedrängten Aufbau mit einer separaten Versorgung betriebssicher(er) gemacht. Aufwand der lohnt. (https://www.roboternetz.de/community/threads/36121-Autonom-in-kleinen-Dosen-R2_D03-Nachfolger-R3D01?p=538277&viewfull=1#post538277)

Ein Servo hat als Stellungsgeber üblicherweise einen Poti in Spannungsteiler-Schaltung, der durch die Abtriebswelle angetrieben/verstellt wird => die Mittenspannung ist ein Maß für die Servostellung. Die Abtriebswelle muss daher irgendwie an das Poti gekuppelt werden - und dies ist dann leider öfters keine sehr eng tolerierte, möglichst starre Kupplung. Dadurch rattern die Servos öfters bei gleichbleibendem Signal "im eigenen Saft". Holzhammermethode wäre also eine mikroskopische Menge Kleber (Epoxy, Heißkleber - würde ich testweise bevorzugen, Papiermache o.ä.) in diese Kupplungsstelle einzubringen. Für Schäden, die dadurch am Servo auftreten übernehme ich keine Haftung.

Andere Möglichkeit wäre natürlich, die gesamte Mess- und Regeltechnik selbst aufzubauen, Stichwort "OpenServo" (klick hier). (http://www.openservo.com/) So wäre durch geeignete Soft- und Hardwarelösungen sicher eine deutliche Verbesserung möglich. Noch ne Möglichkeit: Ich habe mehrfach in Billigservos eine Drehzahlerfassung eingebaut (klick hier). (https://www.roboternetz.de/community/threads/32293-DC-Kleinstmotor-mit-Getriebe-Drehsensor-5V-510-Upm?p=401963&viewfull=1#post401963) Du könntest also die Servos hacken (Poti drin lassen) und über die Drehzahlmessung zusammen mit dem Potisignal selbst eine sauberere Lösung aufbauen (so ne Art DoItYourselv-Open-Servo). Fazit: es gibt (fast) nix Gutes, ausser man tut es (selbst).

Viel Erfolg.

James
13.02.2012, 11:54
Hi.
Ich denke, dass das Problem vom Poti im Servo kommt. IMHO rauscht das ein bisschen und abhängig von der Schaltung im Servo zittert er dann.
bzw. Kannst du mal ausprobieren, ob der Servo seine Position hält, wenn du ihm kein Signal mehr schickst?
Bernhard

Geistesblitz
13.02.2012, 12:24
Ich hatte bei meinem Roboter gerade ein ähnliches Problem, das sich teilweise lösen ließ, indem ich mithilfe von dicken Gummibändern eine Gegenkraft eingebaut hab, die das Eigengewicht des Armes beim absenken kompensiert. Muss nicht so wirklich genau sein, wichtig ist dabei nur, dass dem Servo ein guter Teil der Last abgenommen wird. Kommt halt auf den mechanischen Aufbau an, wo man sowas am besten platziert und wie man es einstellt. Die meisten Servos arbeiten sowieso bei geringen Geschwindigkeiten recht ruckelig. Eigenen Servoregler entwerfen ist aber auch nicht ganz ohne...

oderlachs
13.02.2012, 12:40
Obwohl ich noch nicht allzuviel Erfahrungen mit Servos so habe, aber eines habe ich feststellen können, das alle bei mir auftretenden Fehler bei Servos mit einer separaten, gesiebten Betriebsspannung, für Ansteuerung, µC, wie auch Servobetriebsspannung, ausgemerzt werden konnten , auch das "Rütteln" des Servos im algemeinen. Ich muss dazu sage, dass es von Servo zu Servo unterschiedlich war, also auch Servotypabhängig ist... bei Pollin habe ich mir 'nen "Sack" billige Ferritdrosseln versch. Bauart gekauft, damit ich Allgemeinen besser die Spannungen sieben kann, auch die der Motore zum Antrieb. Die bei meinen "Entwicklungen" immer über eine separate Stromversorgung(Ackupack) verfügen, wenn es möglich ist.

Gruss
Gerhard

Arkon
13.02.2012, 12:45
Das Problem wird sein, dass die Servos an ihrer Grenze arbeiten. Bei erreichen der SOLL-Position schaltet das Servo auf eine Art "Haltemoment". Dieses ist aber nicht hoch genug, um den Servoarm in dieser Position zu halten, da das Gewicht des Bots dran zerrt. Somit verlässt das Servo seine SOLL-Postion und regelt nach. Dieser Umstand äußert sich durch das zittern.

Da dies ein mechanisches Problem ist, kann die Software nicht viel ausrichten.

Ich würde dir den Lösungsvorschlag von Geistesblitz empfehlen, und die Servos nach Möglichkeit mit Federn und/oder Gummis unterstützen.

malthy
13.02.2012, 15:41
Hallo,

Zittert der Servo auch ohne Last? Das Problem hatte ich kürzlich bei einem Miniservo (https://www.roboternetz.de/community/threads/56313-Zittern-von-digital-Servo-HG-D-202-MG). Es war nicht durch äußere Maßnahmen in den Griff zu bekommen, deshalb hab ich mich von den Dingern wieder verabschiedet. Wenn das Problem bei Dir nur unter Last auftritt, könntest Du - am besten mit einem Oszi - mal kontrollieren, ob die Versorgungsspannung dabei signifikant einknickt. Wenn das nicht der Fall ist, wirst Du den Servo wohl zu nah an seiner Leistungsgrenze betreiben (wie hier bereits vermutet wurde).

Gruß
Malte

Getorix
13.02.2012, 17:21
Hallo

wow, so viele hilfreiche Antworten :). Ich bin wirklich jedes mal positiv überrascht von diesem Forum. Ein ganz herzliches Dankeschön an alle, die geantwortet haben.


also ich hatte festgestellt, dass eine separate Versorgung so ne Art MUSS ist
Danke für den Hinweis, ich war die ganze Zeit nicht sicher und hab daher beides vorgesehen und es nun umgehängt :).


Zittert der Servo auch ohne Last?
Ganz ohne Last zittert er tatsächlich merklich weniger. Aber schon bei kleinsten Lasten geht das mit dem Zittern richtig los.
Und ich hab soeben herasugefunden, dass die Last an den beiden anderen Servos auch Einfluss hat. Wenn ich einen belaste, zitttern die beiden anderen los und das nicht etwa im Akkubetrieb, wo ich mir das besser erklären könnte, sondern bei Speisung direkt von einer Spannungsquelle aus (die sehr viel mehr leisten kann, als ich mit den Servos ziehe)



bzw. Kannst du mal ausprobieren, ob der Servo seine Position hält, wenn du ihm kein Signal mehr schickst?
Ja, macht er. Klingt erfolgsversprechend. Der Widerstand gegen Verdrehung, den er mit Spannung aber ohne Signal liefert, könnte tatsächlich reichen (in der Halteposition sind die Servos weit weg von der Leistungsgrenze).
Ich versuch das mal in meinem Programm umzusetzen :).


Ich hatte bei meinem Roboter gerade ein ähnliches Problem, das sich teilweise lösen ließ, indem ich mithilfe von dicken Gummibändern eine Gegenkraft eingebaut hab, die das Eigengewicht des Armes beim absenken kompensiert. Muss nicht so wirklich genau sein, wichtig ist dabei nur, dass dem Servo ein guter Teil der Last abgenommen wird.
Klingt auch sehr gut. Werd ich auch mal testen. Nicht des Zitterns willen, in der Haltelage ist die Belastung klein, aber während der Maximalbelastung kommen die Servos wirklich arg an ihre Grenzen, etwas Hilfe täte ihnen bestimmt gut. Dann mögen sie später evt. auch die zusätzliche Ladung tragen, die ich ihnen gerne aufhalsen würde.
(ich bin ja am überlegen, ob ich ernsthaft 44 kg -Servos anschaffen soll, aber darüber gabs im Netz soviel über Zitterprobleme zu lesen, dass ich wirklich zuerst das in den Griff bekommen möchte)


ch muss dazu sage, dass es von Servo zu Servo unterschiedlich war, also auch Servotypabhängig ist... bei Pollin habe ich mir 'nen "Sack" billige Ferritdrosseln versch. Bauart gekauft, damit ich Allgemeinen besser die Spannungen sieben kann, auch die der Motore zum Antrieb. Die bei meinen "Entwicklungen" immer über eine separate Stromversorgung(Ackupack) verfügen, wenn es möglich ist.
*nachschau was Ferritdroseln sind* - interpretiere ich das richtig? Sind das Tiefpassfilter für Stromkabel? Sprich hochfrequente Störungen werden ausgefiltert und nur der Gleichstrom durchgelassen?
Wenn ja, ist das sicher auch eine Idee, die ich testen werde. irgend eine unerwünschte Interaktion zwischen den Motoren besteht ja offensichtlich.
Sprich, ich müsste dann für jeden Motor eine solche Drossel einbauen und nicht nur einfach eine in die Spannungsversorgung der Motoren, oder?


Liebe Grüsse
Lina

malthy
13.02.2012, 17:34
Und ich hab soeben herasugefunden, dass die Last an den beiden anderen Servos auch Einfluss hat. Wenn ich einen belaste, zitttern die beiden anderen los und das nicht etwa im Akkubetrieb, wo ich mir das besser erklären könnte, sondern bei Speisung direkt von einer Spannungsquelle aus (die sehr viel mehr leisten kann, als ich mit den Servos ziehe)

also das sieht dann in jedem Fall schon sehr danach aus, dass Du ein Problem mit der Stromversorgung hast. Wie gesagt, ich würde mal versuchen mir anzugucken was die Betriebsspannung wirklich macht, wenn der Servo belastet wird...

Gruß
Malte

Getorix
13.02.2012, 18:22
Hallo,


also das sieht dann in jedem Fall schon sehr danach aus, dass Du ein Problem mit der Stromversorgung hast. Wie gesagt, ich würde mal versuchen mir anzugucken was die Betriebsspannung wirklich macht, wenn der Servo belastet wird...

Ja, ich werde versuchen an ein Oszilloskop zu kommen. Das Voltmeter zeigt mal nichts besonders an, aber da sieht man natürlich kurze Sachen auch nicht.

Ich hab mittlerweile das Gefühl, dass sich die Servos gegenseitig stören. Wenn ich nämlich zwei Servos austecke, kann ich den dritten so stark belasten, wie ich will. Er fängt dann zwar an zu "singen" (= gibt ein lautes, eher hohes Geräusch von sich) und der Stromverbrauch steigt auch, aber zittern tut er dabei nicht.

Aber ich kann doch nicht jedem Servo einen eigenen Akkupack zuordnen *seuftz*, zumal ich wirklich alle zusammen bleiben müssen, weil ich mit dem Akkupack nicht nur Servos bewege, sondern auch Heissleim erwärme und zweiteres fast 50 W Leistung braucht.

Gibt es - nebst den Feritdrosseln - irgend einen schlauen Weg, die Servos etwas stärker voneinander zu entkoppeln und sie trotzdem alle an den gleichen Akkus zu lassen?

Liebe Grüsse
Lina

malthy
13.02.2012, 19:18
Hallo Lina,

Mir ist gerade dieser Thread wieder eingefallen: https://www.roboternetz.de/community/threads/39549-Servos-Entstören Ich habe ihn jetzt nicht nochmal im Detail durchgesehen, aber da waren einige gute Hinweise zum "Entstören" von Servos drin verstreut.

Gruß
Malte

rolber
14.02.2012, 11:02
Hallo !

Welche Art von Akkus verwendest Du ?
Habe mit LiPos gute - und mit NiCd und NiMh schlechte Erfahrungen bei hoher Stromabnahme gemacht!
Verwende bei meinem Hexa einen 5 Ah 2s LiPo.
Aber auch dabei ist ab u. zu ein leichtes Servozittern zu verzeichnen.

Roland

Manf
14.02.2012, 13:48
Servozittern entsteht durch Änderungen (Einbrüche) der Versorgungsspannung beim Anlaufen der Servomotoren.
Im ersten Schritt sollte man den Fehler sichtbar machen, also den Servo zittern lassen, bei einer Spannungs-Versorgung über ein langes Kabel oder über einen entsprechenden Widerstand. Dann sollte man Kondensatoren (Elkos) zur Versorgung dicht am Servo parallel schalten. Es kann schon sein dass dabei ein paar mF zusammen kommen bis das Zittern nachläßt und dass "low ESR Elkos" von Vorteil sind.
Drosseln zum Trennen der Servos (mit Elkos) von der übrigen Versorgung sind sicher auch vorteilhaft.

Getorix
14.02.2012, 14:21
Hallo,


aber da waren einige gute Hinweise zum "Entstören" von Servos drin verstreut.
Danke für den Tipp, ich bin dran ihn durchzulesen und herauszufinden, was genau ich wie zusammenlöten soll, damit sich die Servos nicht mehr gegenseitig stören.

Im Moment denke ich, dass ich es mal mit Servo und Elko parallel versuche und da in Serie eine Drossel davorlöte und ich hab eben erst gesehen, dass Mapf das auch vorschlägt :). Beruhigend :).

Ich überlege auch, ob Dioden etwas bringen *mich viel zu wenig mit angewandter Elektrotechnik auskenn* - aber ich probiers wohl mal ohne.


Welche Art von Akkus verwendest Du ?
im Moment gar keine. Ich hab das ganze an eine Spannungsquelle gehängt um auszuschliessen, dass es die Akkus sind, die Probleme machen.

Der Roboter benutzt sonst Lithium-Eisenphosphat-Akkus und zwar die hier: http://www.modellbaufuchs.de/A123_APR18650M1.html in einer 3p4s-Konfiguration. Aber ich ziehe in den Heizphasen da auch 50 W raus d.h. ich jage um die 5 A durch Widerstandsdraht. Während dem Heizen müssen allerdings die Servos fast nichts machen.


Liebe Grüsse
Lina

PICture
14.02.2012, 15:12
Die Servos (alle drei) finden einfach keine stabile Ruheposition und zittern und rattern und stören den Roboterfuss dadurch am Festmachen an der Wand und unnötig Energie aus dem Akku braucht das Zittern auch.
.................................................. .................................................. ...........................
Hat jemand von euch eine Idee?

Rein theoretisch sollte eine grössere Hysterese beim Vergleichen der "ist" und "soll" Positionen helfen ? ;)

Getorix
14.02.2012, 16:22
Hallo,


Rein theoretisch sollte eine grössere Hysterese beim Vergleichen der "ist" und "soll" Positionen helfen ?
Ja. Nur kann ich da Einfluss drauf nehmen? Macht das nicht die servointerne Elektronik?



Im ersten Schritt sollte man den Fehler sichtbar machen, also den Servo zittern lassen, bei einer Spannungs-Versorgung über ein langes Kabel oder über einen entsprechenden Widerstand. Dann sollte man Kondensatoren (Elkos) zur Versorgung dicht am Servo parallel schalten. Es kann schon sein dass dabei ein paar mF zusammen kommen bis das Zittern nachläßt und dass "low ESR Elkos" von Vorteil sind.
Drosseln zum Trennen der Servos (mit Elkos) von der übrigen Versorgung sind sicher auch vorteilhaft.
Nur mal zu Sicherheit, nicht dass ich es falsch löte.
Der Kondensator kommt zwischen das + und - Anschluss jedes Servos, oder?

Habt ihr Erfahrungswerte, was bei einem starken Servo in etwa Sinn macht? So um die 500 µF?


Liebe Grüsse
Lina

PICture
14.02.2012, 16:26
Praktisch muss man leider in die servointerne Elektronik eingreifen. :(

rolber
14.02.2012, 17:07
Hallo!

Um Spannungseinbrüche sicher abzufangen rechnet man ca. 1000uF pro 1 Ampere Elko(Low ESR wie Manf andeutete ist empfehlenswert) parallel zur Spannungsversorgung dazu sollte man noch einen 100nF Kerko parallel schalten.
Was auch oft angewendet wird ist ein 100 Ohm Widerstand in Reihe zur Signalleitung.
Das alles möglichst nah an jedem Servo.
Ich würde zum austesten auch eher den Akku nehmen als das Netzteil.

Roland

Getorix
15.02.2012, 14:05
Hallo zusammen,

ich hab nun jedem Servo eine 470 µF-Kapazität angelötet und tatsächlich ist das Zittern nun auf ein sehr erträgliches Mass reduziert :). Es zittert zwar schon noch, aber merklich weniger und auch mit kleinerer Amplitude. Der Stromverbrauch beim Halten ist auch um die Faktor 7 kleiner *freu*.

Aber die beiden Servos drehen sich nun ganz langsam im Kreis. In der Praxis wird das keine Rolle spielen, da sie schon bei kleinster Kraft damit aufhören, aber etwas erstaunt bin ich schon darüber und es nähme mich auch wunder, was da die Ursachen sind.


parallel zur Spannungsversorgung dazu sollte man noch einen 100nF Kerko parallel schalten.
Werd ich testen. Kannst du mir noch erklären, was genau der Zusatzeffekt dieser Massnahme wäre?

Liebe Grüsse
Lina

Getorix
15.02.2012, 14:59
Hallo,


Hallo zusammen,
Aber die beiden Servos drehen sich nun ganz langsam im Kreis.
Das hat sich als Reaktion auf die Streuspannung herausgestellt. Die Servos liefen nur noch in Zeitlupe und ohne Kraft, weil ich gestern echt müde war und das löteten nicht so klappen wollte.... weil ich die Platzverhälnisse nicht berücksichigte und ich meinen Stecker biegen musste, sind bei zwei von sechs Lötstellen ist die Verbindung inzwischen gebrochen und die Speisespannung kommt nicht mehr an. :-b

Also zerbrecht euch bitte nicht den Kopf. Beim servo, bei dem die Lötverbindung klappte, siehts jedenfalls gut aus :).

Liebe Grüsse
Lina

rolber
15.02.2012, 22:44
Der 100 nF Kondensator leitet hochfrequente Störspannungen, die z.B. beim Schalten von Motoren entstehen, ab.
Ist also als Entstörkondensator zu sehen.

Roland

aigj
25.02.2012, 23:18
Hallo,
bin jetzt zwar nicht der Elektronikguru weit hin, aber das Servozittern kenne ich aus meiner Modellflugzeit. Da gibts das auch hin und wider und ich habe die Erfahrung gemacht, wenn ich an der Fernsteuerung leicht am jeweiligen Kanal was eben gereade zittert einen leichten Ausschlag mache das es weg sein kann. Grund ist das der Servo aus irgendeinen Grund NICHT in die Position kommt in die er aber aus Schaltungsgründen also was die Steuerung gerade befillt nicht kommt. Dann versucht das Servo immer und immer die gesteuerte Position zu erreichen. Kann sein das das Servo es nicht kann, etwas Mechanisches zu schwer gängig ist oder einfach die Stellkraft eines Servos, bei Roboter vielleicht sogar ein Zweites das funktionell beiseite steht zu schwach ist. Eine Wichtige größe eines Servo ist ja die Stellkraft.

mit Grüßen aigj.

joar50
26.02.2012, 16:12
Habe den Thread nur überflogen und habe es evtl übersehen.
Wenn nicht hilft evtl. nachfolgender Link.
http://www.aero-hg.de/IMPEDANZIMPULS.html