Servos ruckeln

  • Hallo zusammen,

    Ich habe derzeit drei Servos an meinem Pi(3B+) angeschlossen. Leider ruckeln diese, sobald sie angesprochen werden extrem stark(siehe hier). Ich habe schon versucht einen 330 Ohm Wiederstand einzubauen, das hat aber leider auch nicht geholfen. Bei den Servos handelt es sich um die SG92R von Tower Pro, hier ist der Code mit dem sie betrieben werden. Ich bin gerade leider total ratlos und würde mich sehr über Hilfe freuen.

    Beste Grüße

  • Das sieht aber sehr ungewöhnlich aus. Trifft das nur einen Servo oder hast du das Problem bei allen?

    Ein Widerstand wird da gar nichts bringen.

    Welche Frequenz hat dein PWM -Signal?

    Der Servo hat einen Tiefpassfilter, der die Spannung des PWM-Eingangssignals glättet. Wenn deine Signalfrequenz niedrig ist, fällt die Glättung schlechter aus bzw. wirkt gar nicht richtig. Das Ruckeln in deinem Video sieht nach einer Frequenz von vielleicht 10-20 Hz aus. Liegt vielleicht dein PWM-Signal in diesem Bereich, statt bei >=50 Hz liegt?

    Aber das ist so extrem, dass ich eher auf einen defekten Servo tippe. Im Servo ist ein Potentiometer, wenn das einen Schaden hat, kann das schon die Ursache sein.

    Wenn du das Problem bei mehreren Servos hast, vermute ich eher einen Fehler in der Software.

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

  • Gnom

    Das Problem trifft mindestens zwei der drei Servos, bei dem einem ist es schwer zu sagen, da sich der nur minimal bewegt. Bei der PWM Frequenz habe ich nichts geändert. Habe mal ein bisschen rumgestöbert, habe das gefunden:

    Code
    # the pulse frequency should be no higher than 100Hz - higher values could (supposedly) damage the servos
        self.rpi.set_PWM_frequency(14,50)
        self.rpi.set PWM frequency(15, 50)

    An einen Defekt habe ich auch gedacht und einen Servo, der Probleme gemacht hat, durch einen neuen ersetzt. Da aber wieder das selbe Thema.

  • Wie sieht denn dein Programm aus? Ich vermute, dass der Fehler eher dort liegt.


    Versuch doch erst mal rauszufinden, ob es an den Servos oder am Programm liegt. Was passiert denn, wenn du einen einfachen Testaufbau mit einem ganz simplen Testprogramm machst?


    Du versorgst die Servos mit 5V, deine Steuerspannung vom GPIO ist aber nur 3,3 Volt - vielleicht hat das Einfluss. Die kleinen Servos funktionieren auch mit 3,3 Volt. Schließ mal einen Servo an 3,3 V an. Die Spannungsversorgung des Pi müsste für eine Servo genügend Strom liefern können.

    Oder schalte einen Transistor als Treiber vor den Pulseingang des Servos, so dass du ihn mit 5V ansteuerst.

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

  • Einen solcher Servo an der 3,3V SV des RPi ist vermutl. keine so gute Idee, das mag im Leerlauf vielleicht noch gehen aber unter Last kann dieser Servo bei 5V bis max. 650mA Strom ziehen. Mit 3,3V wird es dann noch mehr sein.

  • servos benötigen immer eine eigene stromversorgung, ende der diskussion :)

    ich würde wenn das zucken der servos stört, mal nach einem i2c servo adapter schauen.

    das leben ist hart, aber wir müssen da durch.

  • Einen solcher Servo an der 3,3V SV des RPi ist vermutl. keine so gute Idee, das mag im Leerlauf vielleicht noch gehen aber unter Last kann dieser Servo bei 5V bis max. 650mA Strom ziehen. Mit 3,3V wird es dann noch mehr sein.

    Und bei 1,0 V noch viel, viel mehr... Am besten legst du 0 Volt an, dann wird der Strom unendlich. Du hast das Perpetuum Mobile erfunden. Herzlichen Glückwunsch!

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

  • servos benötigen immer eine eigene stromversorgung, ende der diskussion :)

    ich würde wenn das zucken der servos stört, mal nach einem i2c servo adapter schauen.

    Toll, dass endlich mal einer die Eier in der Hose hat, anderen zu sagen, wann sie gefälligst eine Diskussion zu beenden haben! Und die fundierte Begründung... Respekt! Solche Experten brauchen wir hier!

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

  • ich habe die eier in der hose, weil die stromversorgung der servos immer auch die stromversorgung des raspberry pi angeht, das bringt immer fehler im system, deshalb servo eigene stromversorgung, 6v bringt auch meist noch mehr kraft.

    das leben ist hart, aber wir müssen da durch.

  • Und bei 1,0 V noch viel, viel mehr... Am besten legst du 0 Volt an, dann wird der Strom unendlich. Du hast das Perpetuum Mobile erfunden. Herzlichen Glückwunsch!

    :conf: Ich hoffe mal dass es dir gut geht.


    Zurück zum Thema: Vielleicht hast du ja andere Erfahrungen gemacht, aber die meisten RPi reagieren nicht besonders gut auf zu hohen Strombedarf von extern angeschlossenen Verbrauchern u. besonders nicht am 3,3V SV Pin. Das hat dann mit Sicherheit auch negative Folgen auf das Systemverhalten.

  • :conf: Ich hoffe mal dass es dir gut geht.


    Zurück zum Thema: Vielleicht hast du ja andere Erfahrungen gemacht, aber die meisten RPi reagieren nicht besonders gut auf zu hohen Strombedarf von extern angeschlossenen Verbrauchern u. besonders nicht am 3,3V SV Pin. Das hat dann mit Sicherheit auch negative Folgen auf das Systemverhalten.

    Mag alles sein. Blockierne sollte man den Motor jedenfalls nicht.


    Danke, mir gehts gut. Ich frag mich nur, warum der Motor bei 3,3 V mehr Strom zeihen sollte als bei 5 V. Das müsstest du mir erklären. Vielleicht klappt das auch bei Glühbirnen. Wir nehmen 5 V statt 230 V und sie wird heller...

    Ich würde mal sagen, deine Aussage ist falsch. Der Motor wird bei 3,3 V NICHT mehr Strom zeihen als bei 5 V. Abe rman kann sowas ja mal behaupten, um irgendjemanden zu beeindrucken oder vermeintliche Gefahren heraufzubeschwören. Falsch ist es trotzdem.

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

  • Einen solcher Servo an der 3,3V SV des RPi ist vermutl. keine so gute Idee, das mag im Leerlauf vielleicht noch gehen aber unter Last kann dieser Servo bei 5V bis max. 650mA Strom ziehen. Mit 3,3V wird es dann noch mehr sein.

    Was Fliegenhals meinte, ist völlig eindeutig gesagt. Und man muss kein Physiker sein, um zu erkennen, dass der letzte Satz falsch ist.

    Ja, wenn man den Servo blockiert, kann er 650 mA ziehen. Ok, das wäre auch für den Pi sicher etwas heftig. Von blockieren war aber auch nicht die Rede.

    Falsch ist aber, dass er bei 3,3 V noch mehr Strom zieht. Das würde heißen, je geringer die Spannung, desto mehr Strom. Dann drehen wir im Geiste mal die Spannung runter.... 1 Volt, ... 0,1 Volt, ... 0,01 Volt... wie hoch soll denn der Strom werden? 1 Ampere? 50? 100? unendlich? Es ist offensichtlich, dass das nicht sein kann.

    Ich frag mich manchmal, ob hier absichtlich solcher Unsinn erzählt wird, um Leute zu verwirren, ob die Leute es nicht besser wissen oder ob es einfach nur Schusselfehler sind. Im letzten Fall würde ich aber die Reaktionen aller Beteiligeten nicht verstehen. Da könnte man auch sagen: "Ups, sorry, da lag ich daneben.. Und andere müssten abfällige Bemerkungen wie "Ich hoffe mal dass es dir gut geht." nicht mit Pokalen beehren. Das ist erbärmlich!


    Auch wenn es so scheint, dass der Servo den Pi überlasten könnte, sehe ich da im Normalfall keine Gefahr. Zum Serve habe ich nur vage Angaben von 100-300 mA im Normalbetrieb und eben die oben genannten 650 mA bei Blockieren gefunden. Die gelten aber für 5 V. Bei 3,3 V dürfen wir mal annehmen, dass es im Normalfall bei 200 mA bleibt. Der Spannungsregler auf dem Pi 3B+ (XML7704) liefert bei 3,3 V bis zu 1,5 A Dauerstrom und 2,5 A peak. Für einen Test des Servos an 3,3 V (und das war meine Anregung), sollte das ausreichend sein. Es gibt aber sicher noch genügend andere Einschränkungen, die es nicht empfehlenswert machen, einen Servo länger an 3,3 V zu betreiben. Das war auch nicht mein Vorschlag - ich sagte "Testaufbau". Das Teil dauerhaft an 3,3 V anzuschließen ist - da stimme ich völlig zu - vermutlich keine so gute Idee.

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

  • Danke, mir gehts gut. Ich frag mich nur, warum der Motor bei 3,3 V mehr Strom zeihen sollte als bei 5 V. Das müsstest du mir erklären.

    1. Ausbildungsjahr MA (Maschinen und Anlangen): Asynchronmotoren, die z.B. nur an 110 V/60 Hz betrieben werden, benötigen einen höheren Strom als bei 230V/50Hz. Das steht auf jedem Typenschild drauf. Wenn du das genau wissen willst, dann beschäftige dich mit Magnetfeldern und wie man diese berechnet.


    Die Spannungsversorgung sollte aber nicht vom RPI selbst kommen, da der Wandler auch seine Grenzen hat.

    Des Weiteren können Stromspitzen auch das Verhalten des RPI beeinflussen.

    Wenn zu viel Strom gezogen wird, merkt man das am RPI. Der stürzt dann ab.


    Für mich sieht das eher nach Jitter aus.

    Wenn die Servos ein unsauberes Signal bekommen, verhalten die sich so wie auf dem Bild Video.

    Also eigentlich wäre es sinnvoll sich mal die Spannung am Eingang des Servos mit einem Oszilloskop anzusehen.

    Da es nur 50 Hz sind, reicht auch ein günstiges Oszilloskop.



    Die gelten aber für 5 V. Bei 3,3 V dürfen wir mal annehmen, dass es im Normalfall bei 200 mA bleibt.

    Ja, vielleicht. Vielleicht aber auch 400 mA oder 600 mA.



    Ich würde vorschlagen sich zuerst einmal, um eine vernünftige Spannungsversorgung zu kümmern, sofern das nicht schon geschehen ist.


    Den Servo direkt über den RPI zu versorgen ist die erste Fehlerquelle.

    Den Servo mit einem Computer anzusteuern, der ggf. im Hintergrund noch 1000 andere Sachen macht und Ausgänge steuern muss, die eben kein Hardware-PWM können, haben ein unsauberes Signal, dass sich im Verhalten der Servos äußert.


    Wie man Servos ohne diese Probleme ansteuern kann, hat morob65 bereits erwähnt.

    Es gibt I2C Schnittstellen/Ansteuerungen für Servos. D.h. der RPI generiert überhaupt kein PWM-Signal, sondern erteilt dem Slave Befehle und der Slave generiert dann unabhängig vom RPI das entsprechende PWM-Signal für den Servo. Da hat man dann auch keine Probleme mit Jitter.

  • 1. Ausbildungsjahr MA (Maschinen und Anlangen): Asynchronmotoren, die z.B. nur an 110 V/60 Hz betrieben werden, benötigen einen höheren Strom als bei 230V/50Hz. Das steht auf jedem Typenschild drauf. Wenn du das genau wissen willst, dann beschäftige dich mit Magnetfeldern und wie man diese berechnet.

    "[...] die z.B. nur an 110 V/60 Hz betrieben werden, benötigen einen höheren Strom als bei 230V/50Hz."

    ... um die Nennleistung zu erreichen, müsste man hier wohl ergänzen.


    Die Leistung ist Drehzahl x Drehmoment. Drehmoment ist proportional zum Strom. Bei kleinerer Spannung sinkt die Leistung und es stellt sich ein anderes Verhältnis aus aus Drehmoment und Drehzahl ein. Beide Werte werden geringer.

    Wir sprachen vom blockierten Motor. Der wird bei halber Spannung mit geringerer Kraft gegen die Blockade angehen, als bei normaler Spannung.


    Wollt ihr mich alle auf den Arm nehmen? Bei halber Spannung braucht der Motor einfach mehr Strom und bringt die gleiche Leistung? Klar, ich schließe statt 5 Volt einfach 3,3 Volt an und der Motor bewegt meine Fahrzeug oder was auch immer genauso schnell wie vorher indem er einfach mehr Strom braucht ...


    Es genügt schon, im Servodatenblatt die Bewegungszeit anzusehen - die ist bei 3,3 V länger als bei 5 V. Geringere Spannung, geringere Leistung, geringeres Drehmoment, geringere Geschwindigkteit.


    Ich ziehe logisches Denken dem Halbwissen aus dem 1. Ausbildungsjahr vor.

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

  • Wir sprachen vom blockierten Motor. Der wird bei halber Spannung mit geringerer Kraft gegen die Blockade angehen, als bei normaler Spannung.

    Das werde ich am Dienstag einfach mal messen.


    Letztendlich ändert es aber nichts daran, dass man die Motoren nicht mit den 3.3V des RPI betreiben sollte.

    Kann man machen, aber denkt daran, dass die Hardware immer teurer wird.