Atzen: Tomke P. Matthias W. Sander W. Paul H.
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.
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.
Motor | Funktion | Arduino |
---|---|---|
Haupt | Direction | 2 |
Step | 3 | |
Neben | INS1 | 9 |
INS2 | 10 | |
INS3 | 11 | |
INS4 | 12 |
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)
Unser 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.
Das Backend ist in zwei Klassen unterteilt
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.
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: )
Im 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.
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.
Auf der Oberseite des Arms befindet sich eine Vertiefung für den Motor, welcher den zweiten Arm hält.
Um den Arm zu halten, befindet sich eine weitere Vertiefung in Form eines Zahnrads in welcher der Aufsatz der ersten Motorachse passt.
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.
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.
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.
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.