- SF800 Solar Speicher Tutorial         
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 Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.668
    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

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

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

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

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.668
    Ich hatte vor, eigene Servos für einen Roboterarm zu bauen. Kraft bis 12kg. Ich hatte die Vorstellung, einen Schrittmotor zu nehmen, weil der sehr genau gesteuert werden kann. Im Getriebe an geeigneter Stelle wollte ich einen Hall-Effekt-Sensor verbauen oder eine Lichtschranke, um so die genaue Position bestimmen zu können (evtl. Schrittverluste). Aber das ist vom Tisch, habe dann gesehen, dass es Servos in der Größenordnung Drehmoment gibt, die weitaus weniger Gewicht haben.
    Das war aber ein ganz anderes Thema bei mir.




    Mit dem Winkelmessen hat es sich erst einmal auch erledigt. Ich bin seit heute in der Lage, erste Bewegungsmuster durchzugehen, nachdem ich eine Menüsteuerung mit UDP-Paketen (auf nodeMCU) aufgebaut habe. Im weiteren Verlauf werden einzelne Bewegungsabschnitte zu komplexeren zusammengefasst. Auffallend dabei: es richtet sich nach dem Bewegungsspielraum, eines einzelnen Arms, des Roboters. Wegen der max. 180° Stellwinkel sind einige Segmente im Winkel vertikal gespiegelt. Was bei dem Einen bspw. 25° oben, sind also bei einem Andern 25° unten. Durch die Spiegelung verschieben sich auch Min- und Max-Punkte in der Freiheit der Bewegungen. Horizontal weiß ich noch nicht, komme ich später zu, wird aber ähnlich sein. Manchmal muss ich das Servohorn nochmal 180° drehen, wenn die Freiheit in der Bewegung, in eine Richtung nicht ausreicht.

    .....Klicke auf die Grafik für eine größere Ansicht

Name:	Img_1215.jpg
Hits:	7
Größe:	11,0 KB
ID:	34154

    Winkel benötige ich bis jetzt nicht, sondern die Bewegungen der Armsegmente richten sich nach bestimmten (zu erlernenden) Punkten/Stellungen, die sich in der Pulslänge für den jeweiligen Servo ausdrücken - Winkel hin oder her. Armsegmente lassen sich über die Zeit in Pulslängenschritten synchronisieren, so dass sie zeitgleich oder versetzt einen bestimmten Punkt erreichen. Im Grunde brauche ich also nichts weiter, als die Pulslänge, keine Winkelumrechnungen und die Genauigkeit eines Servos spielt hierfür auch keine sehr gewichtige Rolle. Nur eine Mindestauflösung im Stellwinkel sollte schon sein, dass der Servo nicht zu große Sprünge macht (diese 3 bis 5 Werte, in der Pulslängenänderung, wo eben keine Reaktion erfolgt). Bei dem Servo, der den längsten Hebel zu bedienen hat, wird es schon recht holprig, in den Bewegungen. Je kürzer der Hebel am Servo, desto gleichmäßiger die Bewegungen. Manchmal lässt sich das durch Gegenbewegungen ausgleichen.





    Wusste noch gar nicht, dass es elekt. Winkelmesser gibt - Kann man mal sehen.! Habe lange Zeit gar keine mehr benutzt.



    MfG
    Geändert von Moppi (08.05.2019 um 07:16 Uhr) Grund: besser verständlich

  6. #6
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.708
    .. eigene Servos für einen Roboterarm zu bauen. Kraft bis 12kg .. die Vorstellung, einen Schrittmotor .. weil der sehr genau gesteuert werden kann ..
    Hmm. Mal Anmerkungen.

    Mit 12 kg meinst Du sicherlich zwölf "Kilogrammzentimeter" - eine Dimensionsangabe die obsolet, nicht wirklich sinnig aber leider gebräuchlich ist. Meistens meint man dann eine "Kraft" in Kilogramm die an einem Hebel von 1 (!) Zentimeter angreift. Hier im Forum wurde schon ellenlang und teils heftig-oberlehrer-dünkelhaft über diese Angabeform seitenweise geschrieben. Die "Kraft" Kilogramm ist total veraltet - die meinte vor etlichen Jahrzehnten eine Kraft die von der Masse eines (unbewegten) Kilogramms in Meereshöhe der Erde auf die Unterlage ausgeübt wird. Und nach gesetzlich geltenden Größen ist auch der Zentimeter keine "offizielle" Längeneinheit - Meter ist da angesagt. Das führt manchmal zu Potenzen, mit der weniger geübte Menschen (im "Altdenken" geblieben) sich unwohl fühlen - und die "zulässigen" Angaben wie Terra oder Femto sind auch nicht geläufig. So - Ende des dünkelhaften Rumlaberns.

    Deine 12 kg dürften 12 kgcm sein, die man normgerecht heute als ungefähr 1,2 Nm (ganz genau 1,177 Newton Meter) bezeichen sollte - die Kraft von 1,2 N auf einen Meter Hebellänge - oder 120 N auf 1 Zentimeter Hebel. 1,2 Newton auf einen Hebelarm von einem Meter - das ist schon ne satte Anforderung. Meine Servos Typ 1501 MG schaffen bei guter Reproduzierbarkeit und einem Preis von unter 20 EuroFlocken laut DAtenblatt bei 4,8 V 1,521 Nm und bei 6V 1,668 Nm.

    .. Winkel benötige ich bis jetzt nicht, sondern die Bewegungen der Armsegmente richten sich nach bestimmten (zu erlernenden) Punkten/Stellungen, die sich in der Pulslänge für den jeweiligen Servo ausdrücken - Winkel hin oder her ..
    Na ja. Ich stelle fest, dass die Wiederholgenauigkeit 1) von Servos wirklich nicht perfekt ist, dass die VOrwärts-Rückwärtspositionierung 2) nicht deckungsgleich ist und so fort. Aber vermutlich machst Du ein Teaching 3) und da ist Dein Vorgehen ok.

    Schon wieder viel zu viel Buchstaben :-/

    1) Die gleiche Stelle wiederholt anfahren aus unterschiedlichen Stellungen, in wiederholten Testzyklen mit "Kaltstart" usf.
    2) Zwei Servos fahren bei gegensätzlicher Drehrichtung mit exakt gleicher Pulslängendifferenz NICHT den gleichen Winkel
    3) Teachen - Roboterarme fahren bestimmbare Positionen an und die Steuerung merkt sich die Winkelstellung der verschiedenen Aktoren für diese Stellung
    Ciao sagt der JoeamBerg

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.668
    Mit 12 kg meinst Du sicherlich zwölf "Kilogrammzentimeter"
    Ja, ist eigentlich richtig.

    Hier im Forum wurde schon ellenlang und teils heftig-oberlehrer-dünkelhaft über diese Angabeform seitenweise geschrieben.
    Muss mich erst etwas dran gewöhnen, hatte ich nie in Verwendung, lerne also noch dazu Wird schon, dauert etwas.

    Zwei Servos fahren bei gegensätzlicher Drehrichtung mit exakt gleicher Pulslängendifferenz NICHT den gleichen Winkel
    Erklär noch mal bitte, wie / was Du genau meinst.

    Teachen - Roboterarme fahren bestimmbare Positionen an und die Steuerung merkt sich die Winkelstellung der verschiedenen Aktoren für diese Stellung
    Nur noch mal so, denke das hast Du schon verstanden:
    Da der Servo eh nur die Pulslänge für die Position interpretiert oder umrechnet, beschränke ich mich gleich auf Pulslängen und lasse die Umrechnung über Winkel weg.





    MfG
    Geändert von Moppi (08.05.2019 um 11:15 Uhr)

Berechtigungen

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

Labornetzteil AliExpress