======Remote Plotter====== **Atzen:** Tomke P. Matthias W. Sander W. Paul H. =====Idee===== Unsere Idee war es ein Arm mit zwei Gelenken zu bauen, welcher oben an einer Tafel befestigt werden kann und menschliche Zeichnungen von einem Computer/Tablett bekommt und diese auf der Tafel selbstständig nachzeichnet. =====Aufbau===== Der Arduino soll durch die Steppermotoren die Winkel der Arme kontrollieren. Auf einem Computer nimmt ein Programm Zeichnungen eines Menschen an und konvertiert diese in eine Ansammlung von Punkten in einem Koordinatensystem. Der Arduino soll dann die Anweisung über geraden zwischen den Punkten zu zeichnen Ausführen, indem er die Koordinaten in Winkel seiner Arme umrechnet und die Motoren dementsprechend bewegt. Der Plotter soll einen Kopf haben, in welchen mit Servomotoren verschiedene Tolls ausgewählt werden können zb. Stift, Leer, Radierer und zukünftig verschiedene Farben. ====Elektronik==== ===Steckplatiene=== {{:mechatronik:sose24:schaltplan_steckplatine.png?500|}}\\ ===Pin Tabelle=== ^ Motor ^ Funktion ^ Arduino ^ | Haupt | Direction | 2 | | ::: | Step | 3 | | Neben | INS1 | 9 | | ::: | INS2| 10 | | ::: | INS3| 11 | | ::: | INS4| 12 | =====Software===== Die Software besteht aus zwei Komponenten; dem Teil der auf dem Computer bzw. Laptop läuft (Frontend) und dem Teil, der auf dem Aduino läuft (Backend). (Der gesamte Code ist unten im Reiter "Code" nochmal zu finden) ===Frontend=== Unser [[https://github.com/POWERPAVEL05/ML-ZRobo/blob/main/frontend.py| Frontend-Skript]] stellt eine Nutzeroberfache bereit, auf welcher ein User auf einer Zeichenfläche mit der Maus oder Touchscreen zeichnen kann. Die Zeichnung wird durch Punkte repräsentiert, welche über den SerialPort an den Arduino zur Verarbeitung gesendet werden. ===Backend=== Das Backend ist in zwei Klassen unterteilt ==Axies== [[https://github.com/POWERPAVEL05/ML-ZRobo/blob/main/Axies.hpp|Axies]] ist eine Abstraktion für Bewegung auf einem XY-Grid. Im falle des Arms werden die XY-Koordiaten in Winkel umgerechnet, und an die beiden Motoren gesendet, um eine Position zu erreichen. ==Gantry== [[https://github.com/POWERPAVEL05/ML-ZRobo/blob/main/Gantry.hpp|Ganrty]] stellt den Kopf des Plotters dar, es können mit Servos verschiedene Tools ausgewählt werden eg. Stift, Farben, Radierer, Keins. (In der Hardware ist der Gantry noch nicht implementiert :AUGENROLL: ) ==Main== Im [[https://github.com/POWERPAVEL05/ML-ZRobo/blob/main/main.cpp|Main]] Source wird der Roboter mit seinen Maßen initialisiert. Anschließend welches das Programm zum Read-Loop, in welchem aus dem Serial Befehle gelesen werden und vom Roboter ausgeführt werden. ====Mechanik==== ===Aufbau=== {{ :mechatronik:sose24:rp_skizze_mt.png?700 }}\\ Unsere Idee ist es, zwei Motoren mit einem Arm zu verbinden. Dabei sitzt das eine Ende es Armes auf dem ersten Motor und der zweite Motor befindet sich im anderen Ende des Armes. Ein zweiter Arm wird mit dem zweiten Motor verbunden um einen Stift zu halten. Somit lassen sich durch die zwei "Gelenke" (Motoren) alle Punkte im Bereich der Arme erreichen. Daher ist es möglich mit dieser simplen Konstruktion ein Bild zu malen.\\ ===Modelle=== ==Erster Versuch== FIXME {{ :mechatronik:sose24:rp_proto0.jpg?200 }}\\ mussten wir leider verwerfen, da die ersten Motoren nicht so funktioniert haben wie gedacht ==Erster Arm== Auf der Oberseite des Arms befindet sich eine Vertiefung für den Motor, welcher den zweiten Arm hält.\\ {{:mechatronik:sose24:rp_ersterarm_0.png?240|Arm1 Oberseite}} Um den Arm zu halten, befindet sich eine weitere Vertiefung in Form eines Zahnrads in welcher der Aufsatz der ersten Motorachse passt.\\ {{:mechatronik:sose24:rp_ersterarm_1.png?200|Arm1 Unterseite}} **Anmerkung:** Unser finales Model für Arm 1 ist nicht perfekt, denn die zwei dünnen Wände an der Motorhalterung mussten wir wegfeilen, damit der Motor richtig sitzt. Außerdem musste noch etwas Platz ,für die Kabel des Motors, freigebohrt werden.\\ {{:mechatronik:sose24:mt_robo_bohren.jpg?200|bohrspass}} ==Zweiter Arm== Auf der linken Seite ist das Loch für den Stift, in das eine Schraube gedreht werden kann, um den Stift zu fixieren. Auf der rechten Seite ist das Loch für die Motorachse. \\ {{:mechatronik:sose24:rp_zweiter_arm.png?200|Arm2}} {{:mechatronik:sose24:mt_robo_stift.jpg?200|Magischer Stift}} =====Erfahrung===== ====3D-Druck==== Da fast jeder von uns nicht viel Erfahrung mit dem Entwerfen und Drucken von Bauteilen hatte, gingen es anfangs schleppend voran. An das CAD-Programm als auch die Kunst des 3D-Drucken mussten wir uns langsam aber sicher heranwagen. Schon für unseren ersten Prototypen hatten wir viele Test-Drucke in Auftrag gegeben und viel gewartet, wie man in der Abbildung sehen kann. Dieses Problem verfolgte uns bis zu den Test-Drucks vor unserem finalen Druck und hat uns ein bisschen mehr Zeit gekostet, als nötig war.\\ {{ :mechatronik:sose24:rp_testdruck.jpg?200 }}\\ **Tipp:** Lieber eine Test-Platte drucken mit vielen Formen, als viele separate kleinflächige Platten drucken, um schneller zu Erkenntnissen zu kommen.\\ Manchmal wollte der 3D-Drucker aber einfach nicht so wie wir es wollten, also war es Zeit für eine Kalibrierung.\\ **Tipp:** Martin scheut sich nicht davor euch eine kleine aber feine Einführung in die wundersame Welt der 3D-Druckerkalibrierung zu geben, falls ihr ähnliche Probleme wie auf dem folgendem Bild habt.\\ {{ :mechatronik:sose24:rp_fehldruck.jpg?200 }} =====Schritte für die Zukunft===== * Robo zum malen bringen :( * Der Hauptmotor scheint kaputt, muss ersetzt werden * Plotter Kopf mit Stift muss implementiert werden * fester Halterung für Papier/Fläche und Roboter * Bessere Halterung, die nicht von Gummibändern gehalten werden muss * Mobil- und oder Webapp zum Malen wäre etwas Feines * Support für verschiedene Farben im Werkzeugsatz =====Links===== * [https://github.com/POWERPAVEL05/ML-ZRobo github] * [https://wiki.freecad.org/ Für coole FreeCADer(Dokumentation FreeCAD)] * [https://docs.python.org/3/library/tkinter.html Tkinter Dokumentation] =====Code===== [[Mechatronik:SoSe24:Remote-Plotter:Code]]