- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 27

Thema: Adafruit_PWMServoDriver

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    05.11.2007
    Beiträge
    1.076
    Moin Moppi,

    Servos haben eine "endliche" Auflösung und ja, es ist so, dass bei kleinsten Änderungen er irgendwann nicht mehr darauf reagiert
    bzw. mal mehr oder mal weniger Schritte benötigt bis er sich wieder bewegt.
    Das hängt jetzt aber vom Servo selbst ab wie fein er auflösen kann.

    Der Motor bewegt ja über die Zahnräder ein Poti und das Getriebe zieht sich sozusagen auf.
    So ist es möglich dass z.B. die ersten 5 Schritte nichts passiert und dann gehts aber bei jedem 2 Schritt weiter.
    Dreht man die Richtung um, kann es gut sein, dass wieder 5 oder sogar noch mehr Schritte nicht ausgeführt werden,
    die Getriebe muss nun das Zahnflankenspiel in die andere Richtung ausrichten.
    Auch die Qualität/Linearität des verwendeten Potentiometers spielt hier sicherlich eine Rolle.

    Wenn die Signale ausbleiben ist das theoretisch nicht schlimm, dann bleibt der Servo ja stehen wo er ist, aber
    wenn er nun mechanisch bewegt wird oder eine Kraft ihn aus der Position ziehen/drehen will, kann er das nicht mehr ausgleichen
    So gesehen ist es also Anwendungsspezifisch ob man die Impulse abschalten darf. Die Haltekraft ist dann weg.

    Siro
    Geändert von Siro (04.05.2019 um 06:52 Uhr)

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.713
    .. Servos haben eine "endliche" Auflösung .. dass bei kleinsten Änderungen er irgendwann nicht mehr darauf reagiert ..
    Da ist ja einmal die zeitliche Auflösung des eingegebenen Stellsignals (der SignalPULS). Es ist unwahrscheinlich, dass die Servoelektronik bis herunter zu Femtosekunden und kürzer auflösen kann (kann!). Dazu sollte ne gute Stellungsregelung noch ein klitzekleines Toleranzband um den Sollwert haben in dem nicht geregelt wird - sonst schwingt der vom Regler beeinflusste Stellwert bei minimalsten Abweichungen um den "Nullpunkt" (den genauen Wert den er einhalten soll) rum. Und dabei schwingt der aus Trägheitsgründen theoretisch dauernd. Ein schmales Toleranzband verhindert dies.

    .. Servos haben eine "endliche" Auflösung .. Das hängt jetzt aber vom Servo selbst ab wie fein er auflösen kann ..
    Das sehen wir in einem zufällig herausgepickten Beispiel hier - unter "Device spezifications" .. resolution: 0.5 µs (about 0.05°). Diesen Wert um etwa 0,4 µs hatte ich selbst festgestellt. Für mich gilt daher, dass viele Servos theoretisch den Stellwert von 1 ms (also den "Standardwert", der auswertbare Unterschied von 1ms Puls bis 2 ms Puls) allenfalls in 1000µs/0,4µs = 2500 Schritten auflösen können - das ergibt knapp 11½ Bit Auflösung. Wenn ich in meiner Servoroutine den Stellwert in bis zu sechstausend Schritten auflöse (oder käufliche Servocontroller 12 Bit Auflösung nennen) dann kann der Servo erst nach ein paar Schritten reagieren. Aber erst damit kann ich die mit dem Servo erzielbare Auflösung voll ausnutzen.

    .. Wenn die Signale ausbleiben ist das theoretisch nicht schlimm, dann bleibt der Servo ja stehen wo er ist, aber ..
    Hier ist der Nachsatz extrem wichtig. Ein Servo mit Spannungsversorgung ohne Signal kann da kraftlos bis unangenehm unvorhersehbar reagieren. Ausnahmen gibts aber. So ist der Deckelantrieb meines MiniD0´s in aufgefahrener Stellung so fixiert, dass ich Signal und Spannung bei längeren Fahrten (mitunter) abschalte - der Servo hält dann trotzdem die Position.
    Ciao sagt der JoeamBerg

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.674
    Blog-Einträge
    1
    Gut, Danke!

    Dann weiß ich jetzt, dass es nicht am PCA9685 liegt, sondern tatsächlich am Servo.


    MfG

  4. #4
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.713
    .. Dann weiß ich jetzt, dass es nicht am PCA9685 liegt, sondern tatsächlich am Servo ..
    Du sprichst ein großes Wort gelassen aus ..

    Im Prinzip hast Du wohl Recht und kannst beruhigt sein. Aber solange nicht geklärt/gesichert ist, wie viele Interrupts im code herumwerkeln oder ob noch andere Störmöglichkeiten vorhanden sind hatte ich mir in ähnlichen Fällen kein abschließendes Urteil erlaubt.

    Eigentlich ist ja offen wozu Du eine ?absolute?, möglichst genaue Positionierung haben möchtest. Nur zum Erkenntnisgewinn solltestkönntest Du bei den eher bescheidenen Servoqualitäten mit dem Ruckeln leben. Bei real begründeten Anforderungen dürften "bessere" Servos helfen. Möglicherweise umsteigen auf Digitalservos und für die Servo-Periode und -Puls entsprechend anpassen. Und vielleicht auch mit nem guten Oszi mal die Steuerpulse genau ansehen (ich hab seit ner Weile ein tolles Ding - das kann sehr viel anzeigen und messen - und ich vertrödel damit sooo viel Zeit :-/ :-/ ).
    Ciao sagt der JoeamBerg

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.674
    Blog-Einträge
    1
    Die üblichen Unterbrechungen, der der 328P so zwischendurch einschiebt. Da gibt es wohl so Kleinigkeiten.
    Aber das Ergebnis ist reproduzierbar und es handelt sich immer um 3 bis 5 Werte für die Pulslänge.

    Wozu genaue Positionierung:

    Ich gehe zunächst von der Theorie aus. Servos sollen eine Position anfahren, eigentlich eine genaue Position und diese halten.
    Also wäre es auch schön, wenn das möglichst genau funktioniert. Zumindest so gut, wie es - mit einem nicht zu großen Aufwand - möglich ist.
    Nicht zu vergessen, dass ich mich das erste Mal intensiv damit auseinandersetze, worauf man so achten muss und was es zu bedenken gibt, wenn man damit hantiert.

    Im nächsten Schritt habe ich schon gesehen, dass mir genaue Winkel so viel nicht bringen werden, für das was ich damit versuchen will. Genaue Winkelpositionen wären wichtig, wenn ganze Bewegungsabläufe, innerhalb eines Pfades, berechnet werden sollen. Aber das würde mit so Ungenauigkeiten am Ende unbefriedigende Ergebnisse liefern. Zumal äußere Einflüsse stören. Daher werde ich mich damit auseinandersetzen, Bewegungsabläufe zu erstellen und auf äußere Ereignisse mit Gegenbewegungen zu reagieren. Mal sehen ...

    Ein weiteres Problem, mit diesen kleinen Servos, ist das Aufschwingen (wenn der Servo versucht die Position zu finden), wenn sich ein längerer Hebel mit Gewicht (ein paar Gramm genügen) daran befindet.
    Code:
    
    |----------|          |----------|
    |servo#1 O#|##########|servo#2 O#|###############
    |----------|          |----------|
    
    Servo#1 würde evtl. die Position nie finden, sondern in gewissen Grenzen um die Sollposition schnell hin- und herschwingen.
    Auch hier müssen die Bewegungsabläufe entsprechend gestaltet sein, damit das dann weitgehend verhindert wird.


    MfG
    Geändert von Moppi (05.05.2019 um 15:19 Uhr) Grund: Kuddelmuddel

  6. #6
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.713
    .. Ich gehe zunächst von der Theorie aus. Servos sollen eine Position anfahren, eigentlich eine genaue Position und diese halten ..
    Da bin ich nicht der gleichen Meinung. Was ich benutze sind Modellbauservos (allerdings gibts ja welche die speziell für Roboter sind - die hatte ich aus Preisgründen nie verwendet). Die sind ja dafür gebaut um z.B. Modellflieger über Funk zu steuern. Ohne es zu sehr auszubreiten und nur beispielhaft: wenn der Flieger dann statt auf Kurs 70° auf Kurs 68° ist, dann schwenkt der Pilot den Steuerhebel an der Fernsteuerung etwas zur Seite und alles ist ok. Positionen sehr genau und sehr gut reproduzierbar anzufahren ist ja eher nicht die Aufgabe.

    .. Ein weiteres Problem .. ist das Aufschwingen .. wenn sich ein längerer Hebel mit Gewicht (ein paar Gramm genügen) daran befindet ..
    Da bist Du jetzt bei der Theorie an der richtigen Stelle. Der Servo hat intern einen Stellungsregler. Der stellt mit einer begrenzten Kraft eine durch den Puls vorgegebene Position ein - mit einer bestimmten Geschwindigkeit. Die Variierbarkeit der Lastparameter hält sich in Grenzen. Und wenn Du eben einen längeren Hebel mit einem Gewicht hast, dann ist das Trägheitsmoment - auch bei kleinen Gewichten - teils weit über dem, was bei der Auslegung des Reglers zugrundegelegt wird. Fazit: die Regelung ist dann so verstimmt, dass Schwingen auftritt.

    Wenn Dich die Theorie "hinter" den Servos interessiert, könntest Du da sicher gut verschiedene Effekte sehen, wenn Du mal einen eigenen Servo baust: Motor mit Encoder, Motortreiber, Controller und Software. Und dann mal die Regelungsroutine dazu schreiben. Ich hatte das beim Hand-Drehgelenk meines Archie gemacht - dort ist ein kleiner Getriebemotor mit Encoder eingebaut mit einer eigenständigen Steuerung. Angeschlossen wird das Ganze an einen üblichen Servoanschluss - mit den üblichen Vorgaben. Und bei so etwas kann man dann an den Reglertypen rumspielen - P-Regler, PI, PD und PID, kann die verschiedenen Parameter selbst bestimmen und den Effekt bei Änderungen sehen.
    Ciao sagt der JoeamBerg

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.674
    Blog-Einträge
    1
    Fazit: die Regelung ist dann so verstimmt, dass Schwingen auftritt.
    Danke für die Info!

    wenn Du mal einen eigenen Servo baust: Motor mit Encoder, Motortreiber, Controller und Software.
    Damit hatte ich mal angefangen. Wollte einen Stepper dafür nehmen. Aber wegen der nicht zu erreichenden Kraft (die ich mir vorstellte), bei einer gewissen Mindestgeschwindigkeit, aufgehört.



    MfG

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress