PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Prototyp Servogelenk



Netzman
11.02.2009, 17:59
Hallo,

http://simon.jimenez.at/mat_servo/images/DSC_0332.jpg

Weil ich einmal die OpenServos antesten wollte, einen schönen Getriebemotor herumliegen hatte und evaluieren wollte, inwiefern sich soetwas als Gelenk für Roboter-Arme/Beine eignet, habe ich einen Prototypen konstruiert.

Wie gesagt basiert das ganze auf dem OpenServo-Projekt ( www.openservo.org ), lediglich der Leistungsteil ist anders, um größere Motoren (< 4A) betreiben zu können.
Das Ding kann den Strom, die Temperatur, Motorgeneratorspannung zur Geschwindigkeitsmessung erfassen, wird über den I²C Bus gesteuert (in diesem Fall über einen USB-I²C Adapter, ebenfalls von openservo.org) und kann vordefinierte Spline-Bewegungskurven abfahren.

Und weils wirklich ein Prototyp ist, hat das noch eine Federung spendiert bekommen, funktioniert soweit wie erwartet (Motor regelt schön den Federweg aus), ob das in der Praxis einen Vorteil bringt muss ich noch herausfinden.

Die kleine huckepack-montierte Lochrasterschaltung ist ein "Adjustable Low-Side Current Shunt Voltage Amplifier" ( o_O ) den ich im Layout noch nicht vorgesehen hatte.. Weiters hatte ich noch versucht, statt des Potentiometers einen Magnetwinkelencoder von Austria Microsystems einzusetzen (AS5045), habe damit aber noch keine zufriedenstellenden Ergebnisse bekommen, ich glaub der Magnet ist einfach zu stark...

Die Kraft, die das Gelenk bei 12V Betriebsspannung leistet, habe ich ganz simpel mit einer Küchenwaage gemessen und bin dabei auf etwa 690Ncm gekommen, also durchaus ordentlich.

Zu guter Letzt noch ein paar bilder:
http://simon.jimenez.at/mat_servo/

und ein Video:
http://www.vimeo.com/3136240

Vielleicht kann ja jemand etwas damit anfangen, über Fragen und Feedback würde ich mich freuen :)

Andree-HB
11.02.2009, 18:39
Das ist ein tolles Projekt, schon für das eigentliche "Servo" fand ich das schon klasse - dies nun für große Leistungen umzubauen finde ich sehr gut. Auch Dein Versuchsaufbau ist toll aufgebaut !

Daumen hoch !

oberallgeier
11.02.2009, 18:58
Von dem Selbstbau-"Servo" bin ich ja begeistert, toll! Und eine beeindruckend weiche, schwingungsfreie Dynamik. Sehr schön.


... Kraft ... bei 12V Betriebsspannung ... 690Ncm ...*grübelgrübelgrübel* Die Kraft rechnen wir in Newton, das Moment in Ncm - also vermute ich, dass Du die gemessene Kraft gleich in das Moment umgerechnet hast. Wenn ich mich beim Maßnehmen an dem 10Zentstück orientiere, komme ich auf etwa 10 mm Zahnradius (gemessen an der geschätzten Mitte der Kegelzähne) bei dem Kegelgetriebe. Sprich: Du hast also rund 690 N Radiallast an dem Motor (geschätzt ø 32 mm) in ca. 25 mm Abstand vom Lager der Abtriebswelle. Ist das nicht etwas viel? Na ja, für ein Studienobjekt geht es vermutlich.


... Getriebemotor herumliegen hatte ...... und er lag sowieso rum.

Viel Erfolg mit dem schönen Teil

Netzman
12.02.2009, 04:31
oberallgeier, du hast natürlich recht, richtig müsste der satz lauten: "Die Kraft, die das Gelenk bei 12V Betriebsspannung leistet, habe ich ganz simpel mit einer Küchenwaage gemessen und bin dabei umgerechnet auf ein Drehmoment von etwa 690Ncm gekommen, ..." ;)

Bei der Größeneinschätzung vom Motor liegst du ebenfalls völlig richtig, die Zahnräder haben allerdings einen Durchmesser von ~23mm, ist aber schwer zu sagen an welchem Punkt der Kraftschluss stattfindet, wegen der Schrägverzahnung.

Das stimmt, das ist etwas viel für die Lager, die Zahnräder halten aber bombenfest auf den Wellen (dank eingepresster, mit Bandschleifer zurechtgedrehter Messinghülsen und Epoxydkleber) und auf dem Motor sitzt vorne ein massives 3-stufiges Planetengetriebe komplett aus Stahl, entweder 2 oder ein breites Kugellager an der Welle (soweit ich das erkennen konnte), verpackt in einem Getriebegehäuse, das böse hart ist. Habe mir dabei einen HSS Bohrer zerfressen (beim aufbohren eines Loches von 2,5 auf 3mm bei einer Tiefe von 2mm). Und bis jetzt ist mir das Vehikel noch nicht um die Ohren geflogen, es scheint also zu halten :)
Die Zahnräder waren auch nicht meine erste Wahl (eigentlich erst die 4. oder 5.), wollte aber für ein Unikat nichts im Internet bestellen, mit den Bearbeitungsgebühren, Versand etc...
Habe hier die Einzelhändler abgeklappert und bin schließlich beim Conrad in der Modellbauabteilung auf diese gestoßen.
Mein Freihand-Selbstbau hat auch erfreulicherweise recht wenig Spiel, ca. 1cm am Ende des 27,5cm langen Arms.

Zur Dynamik: Läuft recht stabil und flüssig mit einem PD-Regler. Man kann aber recht gemütlich die Regelparameter (P, I, D, Deadband) live beeinflussen, man könnte da sicher noch ein bisschen was rausholen.

Werde noch Austria Microsystems kontaktieren wegen dem Magnetencoder, der stellt nämlich eine interessante Alternative zu den Potis dar... und AMS ist ja bei mir fast um die Ecke :)

oberallgeier
12.02.2009, 09:01
Hi Netzman,

na ja, das mit dem Ausdruck ist ja verständlich für den, der weiß, worum es geht. Wollte einfach drauf hinweisen (bin halt pingelig).


... Zahnräder haben allerdings einen Durchmesser von ~23mm ...
... etwa 10 mm Zahnradius ...Ok, das ist ein ziemlich ungücklicher (sprich: total falscher) Ausdruck. Aber da passt ja mein geschätzter Radius (= Kraftangriffspunkt) von 10 mm. (Ich hatte den in der Mitte der Zahnlänge angenommen - weil ich Fluchtungsfehler bzw. Achsversatz erstmal ausgeschlossen/vernachlässigt hatte). Und - soweit ich das sehe - ist das keine Schrägverzahnung, sondern eine gerade Kegelverzahnung. Ich bezweifle, daß im Consumermarkt jemand für ein Kegelrad eine Schrägverzahnung bezahlt. Trotzdem finde ich die Zahnräder ziemlich gut: woher? quanto costo?

Egal - Du hast ja die maximale Kraft gemessen. Die wird vor allem im Testbetrieb wohl eher selten auftreten. Ist sicher trotzdem gut, die von Dir sowieso gemessenen Betriebsgrenzen, aber auch die Folgerungen davon, irgendwo im Hinterkopf zu haben.


... stabil und flüssig mit einem PD-Regler ... kann ... P, I, D, Deadband ...Ich war bei (m)einem kleinen Projektchen zur Regelu ngstechnik (wieder einmal) verblüfft darüber, was ein Integer-PD-Regler (https://www.roboternetz.de/phpBB2/viewtopic.php?p=388755#388755) kann (etwa eine Bildschirmseite runterscrollen). Und trotz der unterschiedlichen Motoren, Zeitkonstanten im Gesamtsystem 8 bzw. 12 ms, und gleicher Parameter in den beiden getrennten Routinen - habe ich einen sauberen Gleichlauf (https://www.roboternetz.de/phpBB2/viewtopic.php?p=390196#390196)=> Geradlauf bei gleicher Sollwertvorgabe.


... noch Austria Microsystems kontaktieren wegen dem Magnetencoder ... ist ja bei mir fast um die Ecke ...Ich bin ja ein fürchterlicher Verfechter der Drehzahlerfassung an der Motorwelle (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=344432#344432) (obwohl dabei das Getriebespiel nicht erfasst wird). Ohne Drehrichtungsumkehr ist das einfach das Genaueste, wenn Übersetzung oder Encoderauflösung entsprechend ausgelegt ist.

Viel Erfolg und Spass weiterhin

Netzman
12.02.2009, 15:43
Die Zahnräder haben eine leichte Palloid-Schrägverzahnung, ist auf diesem Foto einigermaßen erkennbar.
http://simon.jimenez.at/mat_servo/images/DSC_0347.jpg

Wie erwähnt, bin ich schließlich in der Modellbauabteilung vom Conrad darauf gestoßen (müsste dieses hier sein: http://www.conrad.at/goto.php?artikel=233330 ), Preis 20€ für das Paar.

Wie du gesagt hast, die Positionserfassung an der Motorwelle berücksichtigt nicht das Spiel, was sich meiner Meinung nach negativ auf das Regelverhalten auswirken würde.
Und da das Getriebe direkt am Motor angeflanscht ist, hat sich diese Frage bei mir gar nicht gestellt :)

oberallgeier
12.02.2009, 17:29
Hi,

Die Zahnräder haben eine leichte Palloid-Schrägverzahnung ...Mmmmmmm . . . daran hätte ich denken können. Modellbaudifferential oder so, nicht wahr? Sieht wirklich gut aus - der Preis ist ja wohl auch eher gehobene Klasse, oder?

Meine Regelung an so einem unter5Euro-Billigservo hat den Encoder aber an der Motorwelle - nach dem Antriebsritzel kommen fünf Räder. Noch dazu: Kunststoffzahnräder sind etwas elastisch. Aber ich glaube nicht, daß jemand vorher schon einen Encoder in so einem kleinen Servogetriebe untergebracht hatte.

..........................http://oberallgeier.ob.funpic.de/klein-DSC_1246-ausschnitt-zaehnezahl.jpg


... Und da das Getriebe direkt am Motor angeflanscht ist ...Ach je, das ist ein schlechtes Argument (für mich) - weil ich da garnix dagegen sagen kann *gggg*.

Netzman
13.02.2009, 21:24
Ja, das dürfte irgendein Modellverbrennermotorersatzteil (tolles Wort!) sein, bin beim Durchgehen der Gänge darauf gestoßen. Ist aber ein wirklich hochqualitatives Fabrikat, sowohl vom Material als auch von der Verarbeitung her. Wenn ich das Gelenk allerdings in Serie fertige, werde ich auf eine billigere (und besser passende) Alternative ausweichen.

Bei der Openservo V3 Hardware (die ich umgesetzt habe), wird die Motordrehzahl elektronisch erfasst, im Schaltplan kannst du den Spannungsteiler und die Analogschalter, die einen A/D Eingang füttern, gut sehen. Soweit ich das gelesen habe, wird es auch ausgewertet und fließt in die Bewegungsberechnung mit ein.


Meine Regelung an so einem unter5Euro-Billigservo hat den Encoder aber an der Motorwelle - nach dem Antriebsritzel kommen fünf Räder.Du misst also optisch an der 4. Getriebestufe, also nicht direkt am Motor? Oder interpretiere ich das Bild falsch?

Inwieweit setzt du die Messdaten in eine Bewegung um?

oberallgeier
13.02.2009, 22:38
Hi,


... Modellverbrennermotorersatzteil ... beim Durchgehen ... darauf gestoßen ...Wieder mal ein Nachteil meines Hinterwäldlerwohnsitzes, dass ich nicht so schnell zum Groß-C komme. Und online . . . aber so etwas ist (noch) nicht meine Baugrösse.


... Du misst also optisch an der 4. Getriebestufe, also nicht direkt am Motor? Oder interpretiere ich das Bild falsch? ...Der Encoder sitzt direkt auf der Motorwelle, auf dem Antriebsritzel - siehe Bild. Dieser Link (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=344432#344432) steht übrigens oben schon mal *gggg*.

.....................http://oberallgeier.ob.funpic.de/GLS-einbau_1445.jpg (https://www.roboternetz.de/phpBB2/viewtopic.php?t=40507)

Sag jetzt blos nicht, das sei kein Encoder *ggggg*. Immerhin bekomme ich 1500 Hz bei voller Drehzahl (sprich: etwas unterhalb der Minutenlebensdauerdrehzahl).

Na ja, was macht man mit den Informationen? Ich regle ich (nein, der Controller regelt) die zwei Motoren (http://oberallgeier.ob.funpic.de/fahrschemel.jpg) in meiner elementar-autonomen Coladose auf den Sollwert. Wie gesagt - damit fährt mein R2D03 (http://www.youtube.com/watch?v=sRNSIBpK8sQ) s..gut geradeaus (Links siehe gestern, 12. Feb. 10:01 Uhr). Ach ja, und natürlich messe ich auch hin und wieder die gefahrene Strecke um Kurven oder so zu fahren.

Netzman
14.02.2009, 02:25
Sorry den Link hatte ich wohl übersehen :) Was mich auf dem Bild irritiert hat, war das eine mit Edding (?) angemalte Zahnrad.
Also du regelst die Geschwindigkeit damit, nicht die Position. Das ist natürlcih ein Encoder :) allerdings ein relativer, der für Positionierungsaufgaben eher weniger geeignet ist als ein Absolutgeber am Ende der Getriebestrecke.
In dieser Größe ist das schon eine lustige Angelegenheit :)

mfg

oberallgeier
14.02.2009, 07:54
... Was ... irritiert hat, war das eine mit Edding (?) angemalte Zahnrad ...Ach weißt Du, das war so ein erster Versuch mit weniger Aufwand - sprich: Photoreflektor statt Gabellichtschranke - zum gewünschten Ergebnis zu kommen. Leider sind viele schwarze Farben für das bei Lichtschranken und Photoreflektoren übliche IR keinesfalls schwarz. (Dafür hatte ich bei/mit meinem WALL R einen weißen, aber bei 950 nm ziemlich dunklen Wandanstrich hier im Haus gefunden).


... regelst die Geschwindigkeit damit, nicht die Position ...Na ja, wer braucht schon bei so einem Gefährt ne Positionsregelung? Ich kenne im Industriebereich unzählige Positionieraufgaben die von Incrementalgebern mit entsprechender Software-Auswertung erledigt werden. Immerhin bekomme ich so ziemlich prächtige Turns (und Kurven) hin. Ein kleiner Turn geht bei mir, nachdem ich die Geschwindigkeit vorgegeben habe, z.B. so:

while ( 1 )
{
if ( Iencdr0 >= 1068) break;
}
Andererseits ist mir klar, dass Dein Projekt eine Positonieraufgabe hat/ist und Du daher x (oder φ) statt dx/dt (oder dφ/dt) regelst.


... In dieser Größe ist das schon eine lustige Angelegenheit ...Da ich mich im Industriebereich eher mit dem zig-Tonnenbereich beschäftige (habe aber auch im Bereich von Nanoabmessungen meine Verdienste), finde ich es im Hobbybereich bei den Tabletops lustiger. Deswegen gehts bei meinen Encodern auch kleiner, schau mal hier (https://www.roboternetz.de/phpBB2/viewtopic.php?p=415959#415959). Hier ist die Abtriebswelle des Getriebes 3 mm, die Encoderscheibe sitzt auf einem ø1mm-Wellchen; diesmal aus Platzgründen auf der zweiten Getriebestufe.

oberallgeier
08.11.2009, 16:50
Hallo Netzmann,

Dein Arm ist ja recht schön und die Bewegung ist glatt.

Frage: Ein Servo wird auf Position geregelt - und das im 50-Hz-Takt. Wäre es gerade in Deinem Fall nicht besser, wenn Du statt eine Servo-Ersatzelektronik zu bauen (so schön ich das OpenServo-Projekt auch finde) gleich mit den Sollwerten des Motors vom Controller über einen Motortreiber den Motor direkt steuerst bzw. regelst? Welchen Vorteil bietet diese Servo-Philosophie? Immerhin könntest Du mit einer speziellen Lösung den Motor viel öfters als mit lumpigen 50 Hz regeln - und damit könnte die Bewegung glatter ( ? ? ? ) werden. Irre ich mich?

Netzman
08.11.2009, 23:08
Der 50Hz-Regelungs-Takt tritt nur bei den analogen Servos auf, abgeleitet vom Servo-PWM-Signal. Digitalservos regeln schneller nach und haben somit u.a. mehr Kraft.
Das Openservo-Projekt ist ja auch "nur" ein erweiterter Digitalservo, der als Input entweder dieses PWM-Signal verarbeiten oder auch per I²C angesteuert werden kann. Soweit ich noch weiß ist in der Firmware ein 10mS-Intervall programmiert - ist aber alles Open Source :)
Zusätzlich kann man über die I²C Schnittstelle noch ein paar Betriebsparameter (Ist-Position, Stromverbrauch, Temperatur, ...) abfragen und die PID-Parameter live verändern.

mfg