Guten Morgen liebe µC Gemeinde, ich habe ein "kleines" Projekt in der Planung. Es geht im Grunde um einen mehrachsigen (Max 6 Achsen) Roboterarm. Die Kinematik wird selbst konstruiert und mithilfe von CNC-Maschinen und 3D-Druckern (alles vorhanden) hergestellt... Als antriebe für die Achsen (Gelenke oder Drehachsen)sollen DC Büsten Servomotoren mit integriertem Encoder ABZ (2Bit Graycode Signal) zum Einsatz kommen. Diese Motoren sind in verschiedenen Größen vorhanden. Die Antriebe sollen mit 24 bis 48 V versorget. Strom Dauerbetrieb Max 1 A. Peak Max 4 A. Einige Motoren haben 500 p/r (500 Pulse Pro Umdrehung) Theoretisch auch eine Auflösung von 2000 Counts/U möglich. Drehzahlen sind noch nicht festgelegt. Aber um einfach mal eine Zahl zu nennen sagen wir mal Max 10000 U/min. Das Projekt soll natürlich nicht von heute auf Morgen entstehen da bis der Roboterarm läuft, vieles entwickelt werden muss. Die Hauptentwicklung bezieht sich zunächst nur auf die Auswertung des Encoders und Regelung des Motors. Später wird der Motor z.B. eine Position als Sollwert bekommen und soll diese Position dann anfahren. Folgende Schritte sind für die Fertigstellung der ersten Meilensteine geplant. 1. Auswertung des Encoders 2. Regelung des Motors (µC, Motortreiber Endstufen) 3. Verheiraten von Punkt 1 mit Punkt 2 4. Parallel wird die Kinematik entwickelt Das sind die ersten Meilensteine. Später geht es in Richtung Ansteuerung aller Achsen (eventuell mit Raspberry Pi) und einer Roboter Software... Zur Regelung der einzelnen Achsen ist jeweils ein Atmega328P mit 16MHz geplant. Dh. jede Achse bekommt einen eigenen separaten Regler. Mit diesen µC habe ich DC Motoren schon per PWM angesteuert. Nur noch nie mit Feedback und richtige Regelung. Zum Thema Encoder Auswertung habe ich mich hier (https://www.mikrocontroller.net/articles/Drehgeber) auch schon eingelesen und einige Beispiel Codes mir angeschaut. Zugegeben habe nicht den gesamten Code verstanden aber das Grundprinzip ist verstanden. Thema Regelung kommt mir denke ich Regelungstechnik ausm Studium zugute... Bevor ich mit den oben genannten Punkten überhaupt richtig starte, wollte ich das Projekt hier erst mal vorstellen und euch um Rat im Bezug auf Punkt 1 bis 3 bitten. Macht es Sinn einen eigenen kleinen Regler zu entwickeln der auch einen Encoder auswerten kann? (Haupt Grund Kostengünstiger?) Gibt es alternativ einen Fertigen kleinen Regler für DC Bürstenmotoren mit Encoder in dieser Leistungsklasse (keine Hallsensoren)? Würde der 328P mit 16MHz die Auswertung und Regelung schaffen oder müsste da ein Größerer µC her? Kennt jemand ähnliche Projekte wo jemand so einen Regler entwickelt hat? Über eure Tipps, Kritik, Verbessrungen und Anregungen würde ich mich Sehr freuen. Ich bedanke mich schon mal im Voraus. LG Digit-22
Servus, dein kleines Projekt kann schnell mehrere Jahre verschlucken. Du wirst ganz schnell viele Probleme kriegen, die momentan noch nicht zu riechen sind. Die Regelung ist eigentlich das kleinste Problem. Da kannst du nach Lageregelung mal googeln. Ein PID Regler würde auch funktionieren... Das größte Problem ist eingentlich das Getriebespiel. Wobei ich deine Güteanforderung nicht kenne. Schon 1° Getriebespiel (Planetengetriebe) macht bei einen Hebel von 10cm... Spielfreie Getriebe sind sehr teuer. Ich würde vielleicht einen großen µC nehmen, der alles regelt. Linux CNC kannst du auch nehmen: https://www.youtube.com/watch?v=m3lWKGQuQoc mfg
Hallo aSma, danke für deine Tipps. Ja das KLEIN sollte ein bissel ironisch sein ;-). Ich möchte das Projekt stück für Stück aufbauen und mich auch nur Stückweise mit den Problemen beschäftigen. Das Getriebe ist ein großes Thema. Da gebe ich die vollkommen Recht. Habe aber da einen Entwickler Kollege der seit knapp 20 Jahren nichts anderes macht als Getriebe zu entwickeln. Ich werden wenn es soweit ist den Kollegen dies bezüglich anfunken. Mein erstes Ziel ist wie oben schon beschrieben erst mal die Lageregelung. (Werde auch nach Lageregelung googlen ;-)). Ich nutze Linux CNC seit ca. 10 Jahren für meine CNC Maschinen... Habe aber nicht daran gedacht das man eventuell auch Roboter mit ansteuern könnte. Danke für den Tipp. Über weitere Tipps würde ich mich sehr freuen. LG Digit-22
:
Bearbeitet durch User
Digit-22 N. schrieb: > Über weitere Tipps würde ich mich sehr freuen. Da muss du schon mehr an Infos rausrücken. Ein paar Skizzen, bewegte Massen, Einsatzgebiet... Sonst müssest du konkrete Fragen stellen, falls du nicht weiter kommst.
Hej also wie schon oben erwähnt wird die Kinematik noch entwickelt. Somit gibt es noch keine Daten wie Masse, Trägheit... Das Fertige System soll zunächst als eine Vorentwicklung dienen. Dh. dieses System wird ein Funktionsmodell und soll die Funktion eines Roboterarmes darstellen. Vielleicht ein paar Zuckerwürfel durch die Gegend schieben... Aber einen Schritt nach dem anderen. Ich Beschäftige mich als aller erst mit den Antrieben bzw. Die Regelung der Antriebe. Dazu habe ich doch meine Fragen oben gestellt. Vielleicht hätte ich oben nicht gleich über das gesamte Projekt schreiben sollen sondern nur über die Regelung der Servomotoren... Nicht das es noch Verwirrung gibt. LG Digit-22
:
Bearbeitet durch User
Hallo "Digit-22 N.", > Macht es Sinn einen eigenen kleinen Regler zu entwickeln der auch einen > Encoder auswerten kann? (Haupt Grund Kostengünstiger?) Kostengünster als was? Fertig kaufen? > Gibt es alternativ einen Fertigen kleinen Regler für DC Bürstenmotoren > mit Encoder in dieser Leistungsklasse (keine Hallsensoren)? Ja, natürlich. Diverse, z.B. von Maxon. Oder von miControl mit CANopen-Schnittstelle: http://www.mechapro.de/mcDSA.html Mit freundlichen Grüßen Thorsten Ostermann
Hallo Thorsten Ostermann, ja günstiger als Fertigprodukte. Wenn wir z.B. von 6 Achsen (Endstadium) aus gehen und so ein fertiger Regler (mcDSA-E60) 161 Euro Kostet (einziger Preis den ich auf die schnelle finden konnte) sind wir ganz schnell bei fast 1000 Euro nur für Regler die einen DC Motor ansteuern. Für ein Privatprojekt (Funktionsmodell) ziemlich teuer. Das sind ja schon Industrie Produkte.(Bitte Korrektur falls die Annahme falsch ist)... Ein Controller und eine Endstufe ist denke ich mal günstiger. Natürlich darf man die Entwicklungszeit nicht mit einrechnen. Denn das ist Spaß an der Freude und die Leidenschaft neues zu lernen. Sonst würde sich das natürlich nicht rentieren. Ich möchte natürlich nicht nur einen Regler entwickeln sondern auch das ganze besser verstehen. Die Theorie ist eine Sache und die Praxis eine Andere... Aber das soll alles nicht abwertend sein. Ich bedanke mich natürlich vielmals für die Anregung. LG Digit-22
:
Bearbeitet durch User
Servus, wenn du die Position-/Lageregelung selber programmieren willst, dann brauchst nur ein kleinen Aufbauversuch: -Motor mit Encoder/Poti festspannen -eine Masse, z.B. als Stab, an die Welle befestigen. Zum Regler auslegen muss man die Streckenkoeffitienten bestimmen. -Impulsantwort oder besser noch -Sinussprung (Bodediagramm) -Mathematische Herleitung Dann kannst du heuristische Einstellverfahren nutzen und dir in Simulink/Xcos Sprungantworten schauen. Wichtig ist auch, dass nicht nur der Sollsprung untersucht wird, sondern auch die Rampensprungfunktion nicht außer acht lassen. Später soll der Arm ja nicht wie ein zuckender Legasteniker aussehen, sondern eine bestimmte Trajektorie, wie Rampe, S-Kurve, usw. wären schon schön. Weiterhin kann man den erstandenen Regler mithilfe des C-Codegeneartors in deinen Controller reinschmeisen. Leider kann es bei Matlab etwas ineffektiver Code sein... Mittels einer Schnittstelle wie: UART. Kann du auch den Regler in "Echtzeit" verändern... Man kann den Regler auch selbst erstellen. Wenn du die Z-Transformation drauf hast oder du googelst nach PID Regler, dann kriegst du es auch hin. Ich will jetzt keine Prosa schreiben. Als Literatur empfehle ich: -Aström -Lutz Wendt Ich kenne da noch ein paar Bücher aber, dann wirst du ja in 10 Jahren noch nicht fertig.
Auf basis dieser habe ich meine entwickelt: http://elm-chan.org/works/smc/report_e.html http://www.uhu-servo.de/ Gruß JB
Guten Morgen @aSma >wenn du die Position-/Lageregelung selber programmieren willst, dann >brauchst nur ein kleinen Aufbauversuch: >-Motor mit Encoder/Poti festspannen >-eine Masse, z.B. als Stab, an die Welle befestigen. Es sind mehrere Servomotoren mit Encoder (ABZ) vorhanden. Den Aufbau mit einer Masse ist kein Problem. >Zum Regler auslegen muss man die Streckenkoeffitienten bestimmen. >-Impulsantwort oder besser noch >-Sinussprung (Bodediagramm) >-Mathematische Herleitung Da kram ich mal meine Studiumsunterlagen wieder raus ;-). >Dann kannst du heuristische Einstellverfahren nutzen und dir in >Simulink/Xcos Sprungantworten schauen. Wichtig ist auch, dass nicht nur >der Sollsprung untersucht wird, sondern auch die Rampensprungfunktion >nicht außer acht lassen. Später soll der Arm ja nicht wie ein zuckender >Legasteniker aussehen, sondern eine bestimmte Trajektorie, wie Rampe, >S-Kurve, usw. wären schon schön. >Weiterhin kann man den erstandenen Regler mithilfe des C-Codegeneartors >in deinen Controller reinschmeisen. Leider kann es bei Matlab etwas >ineffektiver Code sein... Mathlab und Simulink ist ne gute Idee. Wusste garnicht das Matlab C-Code generieren kann. >Man kann den Regler auch selbst erstellen. Wenn du die Z-Transformation >drauf hast oder du googelst nach PID Regler, dann kriegst du es auch >hin. Ein PID Regler war auch mein ursprünglicher Gedanke. Hätte ich oben erwähnen sollen. Sorry mein Fehler. Die Z-Transformation ist mir nicht bekannt. Kenn nur die Fourier- und Laplace-Transformation... Danke für die ausführliche Erklärung. Das hilft mir schon mal weiter. @ JB >Auf basis dieser habe ich meine entwickelt: >http://elm-chan.org/works/smc/report_e.html >http://www.uhu-servo.de/ Sehr Interessant. Besonders der Uhu. Allerdings ohne Quellcode ist der Lerneffekt sehr gering. Die elm-chan Seite werde ich mal genauer studieren... Danke für die Links. LG Digit-22
Hallo Ich könnte noch dass Projekt von Andreas Hoelldorfer aufführen https://hackaday.io/project/3800-3d-printable-robot-arm Er macht die Winkelerfassung mit den AS5045B http://ams.com/eng/Products/Magnetic-Position-Sensors/Angle-Position-On-Axis/AS5045B vieleicht passt davon was Gruss Bernd
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.