Als 'Scribble Art' oder 'Kritzelkunst' wird eine Maltechnik bezeichnet, bei der Zeichnungen aus unregelmäßigen, oft schnellen und freien Strichen geschaffen werden. Typischerweise wirken die Werke zunächst wie zufällige Kritzeleien, doch durch Variation in Linienführung, Dichte und Bewegung entsteht ein erkennbares Motiv wie z.B. ein Portrait.
Die Software Drawing Bot kann Fotos in Vektorgrafiken und Plotter‑Art umwandeln, und unterstützt auch in der freien Version viele anpassbare Stile. Nachdem ich mit dem Online-Tool Photoroom den Hintergrund eines Bildes entfernt habe, habe ich die Voreinstellungen für den 'Pencil Sketch' Stil meinen Vorstellungen anpasst. Eine ausführliche Dokumentation aller Möglichkeiten findet sich hier.
Der exportierte
gcode soll mit einer
CNC Graviermaschine gezeichnet werden.

Dafür habe ich einen Einsatz für die Spindelhalterung der Maschine gedruckt.
Dieser Einsatz kann z.B. einen
Stabilo Fineliner der Stärke 0,4 mm aufnehmen, aber leider verlaufen die gezeichneten Linien auf normalem Druckerpapier. Auf Fotopapier ist das Ergebnis deutlich besser.
Für kleines Fotopapier müssen die Einstellungen der 'Drawing Area' auf 10,2 cm x 15,2 cm geändert werden.
Größere Formate lassen sich mit einem sogenannten Vertikalplotter drucken. Sie bestehen i.d.R. aus einem vertikal aufgestellten Rahmen und einer Gondel, in die der Stift geklemmt ist. Die Gondel wiederum hängt an zwei Seilen oder
Zahnriemen, die durch Schrittmotoren bewegt werden. Die Zahnriemen werden mit Hilfe von Gewichten stramm gehalten. Ich habe hierfür zwei kleine
Actimel Becher mit Estrichbeton ausgegossen, und mit Haken versehen.
Mit dieser Anordnung kann der Stift alle Punkte der Zeichenebene erreichen. Die Position des Stiftes kann aus den Umdrehungen der Motoren berechnet werden.
Die beiden Seillängen seien \(L_1\) (links) und \(L_2\) (rechts) , und \(D\) die Distanz zwischen den Motoren. Nehmen wir an, dass der linke Motor bei \((0,0)\) sitzt, der rechte Motor bei \((D,0)\), und der Stift bei \((x,y)\) sitzt.
Dann gilt:
\[L_1 = \sqrt{x^2 + y^2}\]
\[L_2 = \sqrt{(D - x)^2 + y^2}\]
Gesucht sind nun \(x\) und \(y\). Wir lösen das Gleichungssystem, und versuchen \(y\) zu eliminieren. Es gilt:
\[L_1^2 - x^2 = L_2^2 - (D - x)^2\]
Ausmultipliziert und nach \(x\) aufgelöst ergibt sich:
\[x = \frac{L_1^2 - L_2^2 + D^2}{2D}\]
Für \(y\) ergibt sich entsprechend:
\[y = \sqrt{L_1^2 - x^2}\]
Wenn jede Rolle einen Radius \(r\) hat und sich um \(N_\text{L}\) bzw. \(N_\text{R}\) Umdrehungen gedreht hat, dann ist die abgewickelte Seillänge:
\[L_1 = L_{1,0} - 2\pi r\,N_\text{L}\]
\[L_2 = L_{2,0} - 2\pi r\,N_\text{R}\]
\(L_{1,0}\) und \(L_{2,0}\) sind dabei die Ausgangslängen der Seile bei der Home-Position des Stiftes.
Das Programm
vplotter macht diese Berechnungen, und ist auf einem
Raspberry Zero 2 gut lauffähig. Die Anschlussbelegung des Raspberry ist unten zu sehen.
Als Steppermotoren kommen zwei
NEMA 17 Schrittmotoren zum Einsatz. Sie besitzen einen Vollschrittwinkel von 1.8°, eine Stromaufnahme von 1.5A pro Phase und ein Haltemoment von 0.38Nm. Als Treiber kommen je ein A4988
Schrittmotor-Treiber-Modul mit Kühlkörper zum Einsatz. Die Schrittauflösung kann durch Setzen der 'Microstepresolution' auf der Treiberplatine von 200 pro voller Umdrehung auf z.B. 1600 erhöht werden ('step of eight'). Das Bild unten zeigt die Anschlussbelegung der Motortreiberschaltung.
Dabei sind 1A und 1B die Anschlüsse für die erste Spule des Motors, 2A und 2B die für die zweite. Die Stromaufnahme habe ich mit dem kleinen Poti auf den boards auf ca. 1A begrenzt. Eine genaue Anleitung findet sich
hier.
Die Befestigungen die Steppermotoren und die Umlenkrollen, sowie die Gondel für den Stift, habe ich aus PLA gedruckt. Die Gondel findet sich
hier im Thingiverse
Um die 12V Versorgungsspannung für die Schrittmotoren zu erzeugen, habe ich eine kleine
USB-C-PD-Triggerschaltung für Netzteile, die das
USB Power Delivery Protokoll unterstützen, verbaut. Die gewünschte Spannung lässt sich mit
DIP Schaltern einstellen. Zur Spannungsstabilisierung sind zusätzlich zwei 10µF Kondensatoren verbaut.
Im Bild unten ist im Hintergrund auch der auf die Gondel geklebte
9G Micro Servo Motor zu sehen, der den Stift hebt bzw. senkt. Das PWM Signal ist über einen 1k Ohm Widerstand mit dem Servomotor verbunden.

Die gesamte Elektronik ist mit Abstandshaltern auf die Rückseite der MDF-Platte geschraubt, die die Zeichenebene bildet.
Nachdem die Hardware soweit fertig gestellt ist, habe ich zunächst versucht, einen Smiley zu plotten. Das online tool
ncviewer zeigt den gcode an, und kann ihn simulieren.
Der Aufruf von vplotter für die Datei test.ngc erfolgt mit
sudo vplotter --x0=190 --y0=-230 --baselength=687 --z_up=7 --z_down=11 --steps=33 < test.ngc
Die Befehlszeilen‑Argumente haben dabei die folgenden Bedeutungen:
-- x0: Horizontale Entfernung vom linken Schrittmotor bis zum Nullpunkt der Zeichenfläche in mm.
-- y0: Vertikale Entfernung vom linken Schrittmotor bis zum Nullpunkt der Zeichenfläche in mm.
-- baselength: Abstand zwischen den beiden Schrittmotoren in mm.
-- z_up: Wert für den Servomotor, um den Stift anzuheben (1 – 100).
-- z_down: Wert für den Servomotor, um den Stift zu senken (1 – 100).
-- steps: Anzahl der Schritte, um die Schnur um 1 mm zu bewegen. Hier:
\[\text{steps} = \frac{1600}{\text{Umfang der Riemenscheibe}}\]
Das erste Ergebnis ist durchaus vielversprechend.
Anschließend habe ich versucht ein größeres Bild zu plotten. Ich habe dazu eine Malbuchvorlage mit
Drawing Bot bearbeitet. Das Bild unten zeigt die Vorschau im
ncviewer.
und während des Zeichenvorgangs. Zu erkennen sind des weiteren zusätzliche Gewichte, die ich an der Gondel angebracht habe, um sie zu stabilisieren.
Damit liefert der Plotter recht schöne Ergebnisse, wie ich finde.
Viel Spaß beim selber basteln und plotten...
Keine Kommentare:
Kommentar veröffentlichen