Hallo Einsteiger,
Normale Servos (ich denke du meinst Modellbau-Servos) können recht genau angesteuert werden, Problem sind hier aber die mehrstufigen Getriebe in den Servos. Aus diesem Grund haben die ein recht hohes Umkehrspiel was für einen Roboterarm der Killer für die Genauigkeit ist.
Richtige Servomotoren (es werden meistens AC-Varianten eingesetzt) werden mit entsprechenden Frequenzumrichter angesteuert, die dann auch die Auswertung der Geber/Resolver übernehmen. Jeder Hersteller bietet dir zu seinem Motor einen passenden Controller. Angesprochen wird dieser dann über ein entsprechende Schnittstellen wo dann nur noch z.B Sollwinkel, beschleunigungsrampe, Geschwindigkeit, ect. vorgegeben werden. Das ist in der Regel I/O_Signale, Profibus, Profinet, Canopen, Ethercat... Hersteller gibt es wie Sand am Meer, z.B. Siemens, Bosch, SEW, Parker...
Selbes Prinzip gilt für Getriebemotoren + Encoder, hier benötigst du ein Controller mit einem Interface für z.B. einen inkrementellen Geber. Das kann im einfachsten Fall auch ein Mikrocontroller sein wo du mit deiner eigenen Software zyklisch einen Eingang abfrägst.
Schneckengetriebe sind nur bedingt geeignet, Vorteil ist hier ganz klar das Thema Sebsthemmung (du musst ja verhindern, das wenn dein Roboter ausgeschaltet wird, das der in sich Zusammensinkt). Aber: Für eine Selbsthemmung benötigst du eine recht große Untersetzung. Ich würde mal sagen > 1:40. Hier hast du dann aber einen recht bescheidenen Wirkungsgrad von schätzungsweise 25%. Dein Motor muss also recht groß dimmernsioniert sein. Spielfrei gibts diese Getriebe sehr selten (diese sind dann recht teuer). Das Problem mit dem Zusammensacken hast du übrigens bei jeder Antriebsvariante mit zu kleiner Übersetzung. Hier bietet sich dann optional eine DC-Bremse mit 24 V an. Diese gibt es für Servomotoren, DC-Motoren und Schrittmotoren.
2mm Genauigkeit bei 45 cm Ausladung halte ich mit Schrittmotoren und Zahnriemen nicht für unrealistisch, sogar die 1mm kann man erreichen. Basis hierfür ist aber eine nahezu Spielfreie Mechanik. D.h. du musst darauf achten das sich keine Teile durchbiegen und auch die Lagerung der Drehgelenke nahezu spielfrei ist. Hier reden wir dann aber von gefrästen Teilen, Präzisionskugellager, ect...du kannst dir mal ausrechnen, wenn du bei einem gestreckten Arm von 45 cm auf eine Genauigkeit von 2mm!!! kommen willst, dan benötigst du ein Spiel von Antrieb UND Mechanik von der Drehachse 1 von kleiner 0,25 Grad. Das ist aber gerechnet ohne das Spiel von Achse 2-5. D.h. eigentlich muss das noch deutlich kleiner sein.
Bei Zahnriemen unbedingt welche mit HDT-Profilen verwenden, diese sind zwar am teuersten aber dafür auch am spielärmsten. Mit einer entsprechenden Spannung kann man die super verwenden.
Positionsrückmeldung: Diese ist sinnvoll zum Überwachen der Achsen und auch für die Steuerung. Wenn du z.B. 5 Positionen nach einander Abfahren willst, wenn gibts du den Befehl zum Anfahren der zweiten Position wenn du nicht weist wann dein Roboter an der ersten Postition angekommen ist? Vorteil hier sind die Schrittmotoren. Wenn du die Ansteuerungsroutine selbst schreibst, spricht Schritte vorgibst, dann weist du auch wann du am Zielpunkt angekommen bist.
Referenzierung: Du musst den Schrittmotoren ja Schritte vorgeben. Für deinen Roboterarm heist das bei der Inversen Kinematik (Vorgabe von kartesischen Koordinaten -> Umrechnung in Achswinkel des Roboters) eine Umrechnung schon Schritte in einen Achswinkel. Doch was ist hier dein Startwinkel? Wenn im stomlosen Zustand der Roboterarm bewegt wird stimmt deine gespeicherte Winkelstellung nicht mehr. D.h. in der Regel ist an jeder Achse ein Sensor (meist Induktiv) verbaut, auf den am Anfang drauf gefahren wird. -> Langsame Bewegung in eine Richtung, Schrittanzahl unbekannt. Wird der Sensor erreicht wird dein Zählerstand auf 0 Gesetz und du hast im Rahmen der Sensorgenauigkeit einen definierten Winkel. Von diesem aus kannst du dann Zählen bzw. Rechen. Gute Inkrementalgeber bieten noch einen Index-Impuls, der 1x pro Drehung kommt. Mit diesem kann man dann noch die Sensorgenauigkeit ausgleichen Kann. Spricht man fährt bis das Sensorsignal kommt, fährt dann zurück bis zum Nullimpuls und setzt dort erst den Zähler auf 0, denn dein Sensor löst ja auch immer an verschiedenen Stelle aus.
Es gibt einige fertige Softwars für Roboter, die sind aber recht teuer. Ich habe mein Programm über C++ und Konsolenfenster komplett selbst geschrieben.
Kleiner Tipp: Roboterarme sind eine serielle Kinematik. D.h von der Masenträgheit und dem Gewicht muss ausgehend von der Achse 5 immer die nachfolgende Achse sämtliches Antriebskomponenten mitbewegen. D.h. in der Regel baut man so einen Roboter ausgehend von der 5 Achse und arbeitet sich dann bis zur Achse 1 vor. Wie bereits von dir gesagt ist die Achse 1 noch unkritisch, da hier in der Regel nur eine Drehbewegung erfolgt. Am kritischsten ist sicherlich die Achse 2 des Roboterarms.
Antriebsmöglichkeit ist mit Schrittmotoren soweit ok. Es gibt genug Beispiele wo so etwas gut funktioniert.
Ein in meinen Augen gutes Beispiel:
http://www.youtube.com/watch?v=p6u5-...eature=related
Gruß
Lesezeichen