- Labornetzteil AliExpress         
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 Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.715
    .. 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

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

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


    MfG

  3. #3
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.715
    .. 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

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.677
    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 16:19 Uhr) Grund: Kuddelmuddel

  5. #5
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.715
    .. 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

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.677
    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

  7. #7
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.715
    .. Wollte einen Stepper dafür nehmen. Aber wegen der nicht zu erreichenden Kraft .. bei einer gewissen Mindestgeschwindigkeit, aufgehört ..
    Wieviel Kraft? Wieviel Geschwindigkeit?

    Bei Pololu (es gibts auch europäische Händler die das vertreiben, da spart man die fuffzig Dollar Porto) gibts recht kleine, kräftige Motoren mit Encoder. Einen aus dieser Baureihe hatte ich für archies Hand-Dreh genommen. Könnte so etwas (mit ner eigenen "Servo-Simulationssteuerung") reichen? Wenn die Power nicht reicht, dann gibts die Ø37-Getriebemotoren - die haben Encoder und Power, hab ich zwei für den Fahrantrieb vom archie. Meine Typen schaffen an die 60 W elektr. Leistung - pro Motor (12V, 5A).

    Ich verwende zunächst mal so was hier, da sieht man auch schon, wieviel ich probiert habe .. muss man trotzdem noch ein gutes Augenmaß ..
    Bei den Discountern gibts immer wieder Winkelmesser, elektronisch, Digitalanzeige für knapp fünfzehn Steine. Die zeigen auf 1/10° genau an mit gute Reproduzierbarkeit. Ich habe für genaue Messungen so was hier liegen (wenn ich nicht eletronisch-analog mit nem ausgebauten Servo-Poti messe) und bin zufrieden damit.
    Ciao sagt der JoeamBerg

Berechtigungen

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

LiFePO4 Speicher Test