In der letzten Zeit beschäftige ich mich ein wenig mit Microcontrollern. Da meine Kenntnisse noch nicht sehr weit fortgeschritten sind, sind die folgenden Ausführungen als eine Art Lernbegleitung und weniger als Anleitung zu lesen.
In diversen Youtube-Videos sieht man, wie sich Personen aus Schrittmotoren und ein wenig Bauteilen einen eigenen Plotter bauen. Dies wollte ich auch schaffen, aber dafür so wenig Teile wie möglich kaufen. Ich sammelte also über die letzten Monate alle Drucker, Scanner und CD-Laufwerke, die ich beim Sperrmüll fand. Ich musst leider feststellen, dass je moderner die Geräte sind, je weniger Schrittmotoren werden verbaut. Bei Druckern werden die Druckköpfe mit einem normalen Motor mit einem Schlitten über eine Schiene gezogen. Dabei zählt eine Dreifach-Lichtschranke ganz enge Spalten. Ich konnte aber noch nicht nachvollziehen, wie das genau funktioniert.
Für meinen Plotter kombinierte ich nun die Schrittmotoren aus den Scannern mit den Schlitten aus den Druckern. Die war eine schwierige Arbeit. Das Zahnrad für den Antrieb des Zahnriemens musste auf Länge des Zahnriemens abgestimmt werden.
Beim unteren Teil habe ich einen Schlitten mit Doppelschiene gewählt. Auf dem Schlitten habe ich den Druckkopf weggesägt und eine Halterung für ein DIN-A4-Blatt mit Heißkleber aufgeklebt. Dieser kann nun mit dem Schrittmotor in Hochkant-Richtung bewegt werden.
Auch am oberen Schlitten habe ich die Halterung für den Druckkopf weggesägt und dort Hochkant die Führung des Lasers aus einem CD-Laufwerk verbaut. Dort kann man nun relativ schnell mit Klebeband einen Stift anbringen und über die Software auf die Ebene herunterfahren.
Ein größeres Problem bei der Benutzung von alten Drucker- und Scanner-Teilen ist die schlechte Dokumentation. Teilweise sind zwar wirklich kleine Aufkleber drauf, aber man findet im Netz keine Datenblätter dazu. Bei den von mir nun verwendeten Schrittmotoren konnte ich ähnliche Datenblätter finden und musste hoffen, dass die Angaben der Voltzahlen zu diesen Modellen passten. Die Aufgedruckte Ohmzahl stimmte immerhin mit der gemessenen überein.
Um sich in das Thema einzuarbeiten, kann ich wirklich das Video von HomoFaciens empfehlen. Dort wird jeder Modus einzeln durchgesprochen und auch die Funktionsweisen der Typen genau erklärt.
Mit Hilfe des Videos verstand ich die PIN-Belegung meiner ausgebauten Motoren und auch, dass mein gefundenes Datenblatt mit der Angabe unipolar nicht stimmen konnte. Ich wusste nun auch, dass ich zwei Motoren mit 5 V und einen mit 12 V betreiben sollte.
Für die Ansteuerung verwenden viele andere Leute direkte Hardware-Treiber für Schrittmotoren. Dies hatte ich leider nicht zur Hand und wählte dir mir vorliegenden H-Brücken (L298N). Ich verbaute drei Stück, die entsprechend zweimal mit 5 V und einmal mit 12 V gespeist werden.
Die Stromversorgung des Plotters regelte ich über ein 12-Volt-Netzteil. Dieses verband ich zusätzlich mit einem 5-Volt-Spannungsregler (L7805CL) um auch direkt einen 5-Volt Anschluss zu haben. Später merkte ich, dass dieser für zwei Schrittmotoren zu klein Dimensioniert ist. Der 5-Volt-Schrittmotor für den Schlitten hat 4 Ohm, also 0,8 Ampere. Mit Status LED und H-Bridge bleibt also von den definierten 1 Ampere nicht mehr viel für den zweiten Schrittmotor. Dann Problem resultierte darin, dass der Stift manchmal nicht angehoben werden konnte. Aber nur, wenn nach dem Start schon Spannung auf dem anderen Schrittmotor anlag. Ich löste dieses Problem durch Software: Während des Hoch- und Runterfahrens des Stiftes, sind die anderen Schrittmotoren stromlos. Für meinen Fall kein Problem, weil die Schlitten es nicht schaffen, die Übersetzung zu verstellen.
Ich hatte nun somit 12 Adern für die Ansteuerung der H-Bridge und einmal Masse (GND), um diese mit den Arduino zu verbinden. Der Strom für diesen kommt vom USB-Kabel. Nur der Masseanschluss muss mit dem 12V-Netzteil geteilt werden. In meinem Falle kommt ein Nachbau des Arduino-Nano zum Einsatz. Man könnte die Stromversorgung auch über den Spannungsregler gewährleisten, allerdings braucht der Arduino eh die Serielle Verbindung zum PC, um die Daten für den Plotter zu empfangen.
Mit dem Arduino-Beispiel für einen Schrittmotor (Stepper), konnte ich nun die Motoren einzeln zum Laufen bringen. Für die Plotter-Software nutzte ich dann aber vorhandenen Code von einem Instructables-Projekt. Dieser steht unter der GPLv3. Ich schrieb die Routinen für die Bewegungen Schlitten und des Stiftes mit Hilfe der Stepper-Bibliothek um. Mein Code ist auf Github zu finden.
Außerdem erweiterte ich die Menüführung um die Möglichkeit, den Stift auf der Druckplatte zu justieren. Man fährt den Stift langsam herunter und wenn er fest aufliegt, gibt man Bescheid. Der Plotter merkt sich die Höhe für den späteren Plottvorgang.
Nach einigen Versuchen tauschte ich die X- und Y-Achse, da die Bilder immer Spiegelverdreht raus kamen. Außerdem korrigierte ich mit einem Vorschub die Ungenauigkeit in dem 12V-Getriebe. Ich fand auch das Problem mit dem zu schwachen Spannungsregler und korrigierte das in der Software.
Um ein SVG in druckbaren G-Code zu verwandeln nutze ich derzeit das Inkscape-Plugin dafür. Dieses war unter Linux direkt mitinstalliert. Allerdings verstehe ich teilweise die Einstellungen noch nicht. Die Druckkopfweite wird dort (bisher) noch nicht beachtet.
Bei meinen Versuchen übertrug ich den G-Code direkt in den C-Code und kompilierte es direkt auf den Arduino. Die G-Code-Sender (z. B. Universal-G-Code-Sender) konnten mit dem selbst geschrieben Interpreter nichts anfangen und so musste ein eigener her. Mit nur wenigen Zeilen Ruby-Code konnte ich mir da Abhilfe schaffen. Dieses Skript ist zwar nicht komfortabel, aber für meine Versuche reichte es aus. Es liegt mit im Github-Projekt.
Schön wäre es, wenn ich das Projekt noch mit GRBL zum Laufen bekommen. Dies ist DIE Standard-Software für selbstgebaute Plotter und auch mit den gängigen G-Code-Sendern kompatibel. Allerdings ist dies um einiges komplexer als mein Code und für die Verwendung mit Hardware-Treibern geschrieben. Eventuell kann man hier nochmal was ersetzen und es somit trotzdem mit den H-Brücken zum Laufen bekommen. Derzeit reichen mein C- und Arduino-Kenntnisse dafür noch nicht aus.
1 thought on “Plotter aus alten Druckern, Scannern und CD-Laufwerken”