Der Grundaufbau des Vertikalplotters steht soweit, siehe Teil 1 dieses Artikels, jetzt fehlt noch die Software. Hier geht’s wieder zu Sandy Noble, diesmal in sein Repository auf Github. Dort findet sich unter https://github.com/euphy/polargraphcontroller/releases/latest die jeweils aktuelle Version der Software und der zugehörigen Firmware für den Arduino Mikrocontroller als ZIP.

Im Ordner /arduino-source befindet sich der Sourcecode für den Arduino. Sollten beim Kompilieren Fehler wegen fehlender Libraries auftreten, so finden sich diese auch im ZIP oder bei den jeweiligen Anbietern.

Wer noch gar keine Arduino-Erfahrung hat, der findet bei Google oder auf arduino.cc genügend Informationen dazu. Sehr empfehlen kann ich auch das Arduino Starter Kit, das im beiliegenden (englischsprachigen) Buch die Erstinstallation der Arduino-Software sehr gut beschreibt und auch gleich erste einfache Projekte mitliefert.

Auf meinen Arduino Uno R3 konnte ich den Polargraph-Sketch ohne weitere Änderungen aufspielen. Wenn ihr statt des Adafruit Motor Shield V2 die V1 verwendet, so lässt sich das im Sketch konfigurieren. Anpassungen für andere Schrittmotortreiber gibt es im Polargraph-Forum, da habe ich aber bisher nichts ausprobiert.

Ist der Arduino Sketch erstmal auf den Mikrocontroller übertragen, so dient der Arduino jetzt als Server, der auf Befehle vom PC wartet und diese in Bewegungen der Schrittmotoren oder des Servo umsetzt. Die Befehle kommen dabei in Form von G-Code Anweisungen. G-Code ist ein sehr einfaches Set von Anweisungen („Gehe zu Position X, Y“), das zur Steuerung von Maschinen aller Art mit mehreren Achsen (CNC-Fräse, 3D-Drucker, Lasercutterm, Plotter etc.) verwendet wird. Mehr Informationen dazu hat wie immer Wikipedia.

Am PC dient as Programm polargraphcontroller als Steuerzentrale für den Plotter. polargraphcontroller ist in der leicht verständlichen Programmiersprache Processing geschrieben und liegt für eigene Modifikationen im Quellcode vor. Im ZIP-File sind aber vorkompilierte Versionen für die Plattformen Windows, Linux und OS X enthalten, man kann also sofort loslegen.

Nach dem ersten Start muss man erst einmal in den Punkt setup gehen und dort die Parameter der Schrittmotoren, der Zahnräder und der Zeichenfläche hinterlegen. Damit weiss die Software, wie die Zahnräder und damit die Länge der beiden Perlenschnüre gesteuert werden müssen, um gezielt einen Punkt auf der Zeichenfläche ansteuern zu können.

Polargraph Software Konfiguration SetupIn der blauen Leiste links sieht man verschiedene Einstellmöglichkeiten, unter anderem:

  • mm per rev: Der Umfang des Zahnrades, über das die Perlenkette läuft, als mm pro Umdrehung
  • steps per rev: Die Schrittanzahl des Motors und darunter ein Mutiplikationsfaktor. Beide Werte sind mir nicht ganz klar (vor allem der step multiplier) und habe ich durch Versuch und Irrtum ermittelt
  • machine width: Der innere Abstand der beiden Zahnräder voneinander, d.h. die maximale Zeichenfläche
  • page width, page pos x etc.: Die Größe und Position des Papiers auf der Zeichenfläche
  • home pos: Die Position des „Home Points“, dort muss sich der Stift am Anfang befinden. Sollte möglichst exakt eingehalten werden, die Genauigkeit aller Berechnungen hängt wesentlich davon ab.
  • pen tip size: Die verwendete Stiftdicke, vor allem wichtig bei der Umwandlung von Bitmap-Bildern in Linienzüge, beeinflusst den Farbdeckungsgrad des Ergebnisses
  • pen up/down position: Position des Servos in Grad zum Anheben und Absenken des Stifts
  • motor max speed, acceleration: Maximale Geschwindigkeit und Beschleunigung der Schrittmotoren. Langsamer = schöneres Druckbild, schärfere Ecken
  • serial port: Serieller Port, an dem der Arduino hängt

Verschiedene dieser Konfigurationen können jederzeit gespeichert und wieder importiert werden.

Nach den Grundeinstellungen kann man auf der Seite input manuell erste Bewegungen auslösen.

polargraph-app-draw-vectorsÜber set home teilt man dem Programm mit, dass sich der Stift an der Home-Position befindet. Die Motoren werden dann gelockt, halten also diese Position (lassen sich aber mit der Hand weiterhin bewegen, die Feinpositionierung kann man also leicht nach dem Homing durchführen). Mit move direct kann man auf einen Punkt auf der Zeichenfläche klicken und das Programm übergibt dem Arduino die Anweisung, diese Position anzusteuern. Sofort beginnen die Schrittmotoren zu arbeiten und man sieht sofort, ob Richtung und zurückgelegte Entfernung passen. Wenn das nicht der Fall ist oder die Motoren die Kette über das Ziel hinausbewegen, so ist das kein Problem. Man kann die Perlenketten jederzeit von den Zahnrädern abheben und die Motoren drehen damit leer.

Wenn Bewegungsrichtung und Entfernungen des Stifts ungefähr stimmen, kann man mit set area und set frame to area den maximalen Zeichenbereich des Stifts innerhalb der Papierfläche festlegen. Bildbereiche, die außerhalb dieses Rahmens liegen, werden nicht gezeichnet. Dann kann man entweder ein Pixelbild (JPG, PNG) laden und in mit verschiedenen Algorithmen in einen Linienzug umrechnen oder direkt eine SVG-Vektordatei importieren. In beiden Varianten gibt es verschiedene Einstellmöglichkeiten für Größe und Position des Bildes. Mit einem Klick auf render pixels oder draw vectors werden die C-Code Anweisungen erstellt, die dann am rechten Fensterrand angezeigt werden. Die Befehle landen in einer Warteschlange, die jederzeit pausiert und wieder gestartet werden kann. Man kann die Warteschlange vor dem Senden an den Plotter auch exportieren und z.B. in einem Texteditor manuell nachbearbeiten. In meiner aktuellen Version war das notwendig, weil die Befehle zum Heben und Senken des Stifts über den Servo nicht immer korrekt ausgegeben wurden und ich diese vor dem Ausdruck per Suchen/Ersetzen korrigiert habe.

Auch hier empfehle ich einen Blick in das Instructables-Projekt von Sandy Noble. Da sind die wichtigsten Programmschritte ganz gut erklärt.

Damit sollte der Vertical Plotter schonmal erste Ergebnisse liefern. Wie man mit zusätzlicher Software wie StippleGen die Möglichkeiten des Plotters noch weiter ausschöpfen kann, das zeige ich in einem eigenen Artikel.

 

11 thoughts on “Vertikalplotter im Selbstbau – Teil 2 – Software und Workflow

  • Pingback: Vertikalplotter im Selbstbau – Teil 1 – Polargraph, Kritzler, Makelangelo und Co. | Makerblog.at

  • 17. Mai 2015 at 13:05
    Permalink

    tolles Teil bei so einer Superguten Beschreibung ist das sogar für einen Laien wie ich es einer bin zu realisieren. Von der reinen Technik her läuft das System schon und auch wie hier in der Beschreibung erwähnt auch mit dem Adafruit V1 Motorshield ohne Modifikationen.

    Reply
    • 18. Mai 2015 at 7:44
      Permalink

      Schick bitte ein Foto oder einen Video-Link, sobald du das erste Mal erfolgreich plottest! :)

      Reply
  • 22. Dezember 2015 at 22:29
    Permalink

    Ich habe ein Problem. Die vorkompilierte Versionen des Polargraphcontoler für Win startet nicht.
    Woran kann das liegen?

    Reply
    • 22. Dezember 2015 at 23:00
      Permalink

      Hi Björn, das ist schwer zu sagen. Sandy Noble macht bei einem Update des Polargraphcontroller gerne mal was kaputt. Ich hab hier leider derzeit keinen Win-PC auf dem ich den aktuellen Release testen könnte. Hast du schon im Polargraph-Forum geschaut, ob jemand aktuell ein ähnliches Problem hat? Vielleicht kann ich morgen in der Firma testen, ob die Exe da startet.

      Reply
    • 4. Januar 2016 at 21:00
      Permalink

      Hallo Björn,
      meinst du die polargraphcontroller.exe die du entzippt hast? Da passiert auch nichts wenn du die öffnest. Hast du diese Schritte durchgeführt?

      – Install Processing 2.2.1 (From https://processing.org/download/?processing)
      – Run Processing, find where your sketchbook folder is: (File->Preferences, sketchbook location).
      – Install libaries: Unzip the code bundle, and copy the contents of the processing-source/Processing
      libraries into sketchbook/libraries.
      – Install project: In the code bundle, copy the whole processing-source/polargraphcontroller folder into .
      – Restart Processing, and open the controller with File->Sketchbook->polargraphcontroller.
      – Run: When some files have opened up and you can see some code, hit the play button in the toolbar (or use Ctrl-R) and you should see the controller spring into live.

      Reply
      • 22. Februar 2017 at 18:54
        Permalink

        Hallo,
        habe das gleiche Problem, habe die Processing 3.3 und bekomme die Meldung „the size of the sketch could not be terminatet“

        Reply
  • 17. Februar 2016 at 13:04
    Permalink

    Hallo ich habe absulutte Probleme mit dem Polagrahp Kontrolle Das Programm findet den Arduino nicht .Ich kann den Anschluss eingeben doch kommt immer in Roter schrift das der Arduino nicht angeschlossen ist können sie mir ein Tipp geben
    Gruß Alex

    Reply
  • 15. Mai 2016 at 13:47
    Permalink

    Hallo,
    ich möchte auch gerne Den Vertikal-Plotter bauen.
    Ich besitze das ADAFRUIT_MOTORSHIELD_V1, ein Servo , ein Arduino Mega und ein Nema17.
    Ich wollte testen, ob der Schrittmotor mit dem Befehl „move direct“ sich dreht.( bevor ich einen zweiten kaufe)
    In der Arduino-Id habe ich nur ein gestellt, dass ich den Arduino Mega besitze.( Libraries aktiviert)
    Nun habe ich alles Ordnungsgemäß angeschlossen.
    Danach habe ich in der Polograph-Software Den Port ausgewählt.
    Als das geschehen ist habe ich Meere male versucht mit dem Befehl „move direct“ den Schrittmotor anzusteuern.
    Nichts ist passiert?
    Woran kann das liegen?
    Muss ich noch etwas an der Arduino-ID ändern?
    Über eine schnelle Antwort freue ich mich sehr.

    Reply
  • 7. Juni 2017 at 17:39
    Permalink

    Großartiges Tutorial! Besten Dank ;-P
    Seit gestern ist mein Whiteboard jetzt deutlich futuristischer Unterwegs :-D
    Die Druckteile habe ich aufbauend auf deiner Idee modelliert ^^
    Ich hab’s auf Thingiverse als Remix gelistet für die Referenz.

    Beste Grüße
    Michi

    Reply

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Time limit is exhausted. Please reload the CAPTCHA.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.