Begonnen hat es damit, dass ich letztes Jahr auf der Mini Maker Faire in Triest einen Prototypen eines Mini CNC Lasercutters gesehen habe, dessen XY-Achse aus der Mechanik und den Schrittmotoren von alten CD-Laufwerken gebaut wurde.

Nun hatte ich vor 2 Wochen hier selbst einige nicht mehr benötigte DVD-Laufwerke herumliegen und habe an einem langen Abend mit der Mechanik dieser Laufwerke und Unmengen von Heißkleber einen ersten Versuch in diese Richtung gestartet.

Der erste Versuch

Da hat sich aber sehr schnell herausgestellt, dass der Ansatz mit der X-Achse, die im rechten Winkel dazu am äußeren Ende auf der Y-Achse montiert wird, erhebliche Probleme verursacht. Durch die ungleichmäßige Gewichtsverteilung kam der Antriebsmechanismus der Y-Achse mit der vom Schrittmotor angetriebenen Spindel sehr schnell „ins Schleudern“ und die Druckergebnisse waren unvorhersehbar und mangelhaft.

Version 2.0

Version 2 des Mini CNC Plotters folgte einige Tage später und diese möchte ich euch hier vorstellen. Zuerst aber ein kleines Video des Plotters im Einsatz:

Benötigtes Material:

  • 2 alte CD/DVD-Laufwerke für die XY-Achsen. Diese Laufwerke lassen sich meisten relativ einfach zerlegen. Wir benötigen den Metallrahmen unterhalb des CD-Fachs inklusive des Schrittmotors, der die ca. 5 cm lange Spindel antreibt. Den Schlitten mit dem Schreib/Lesekopf am besten ganz lassen. Da kann man später mit Heißkleber das Druckbett oder die Stifthalterung draufkleben.
  • Optional: ein drittes Laufwerk für die Hebe/Senk-Funktion des Stifthalters und Modellbau Servo. Näheres dazu im obigen Video.
  • 1 x Arduino Uno oder besser. Insgesamt werden 9 Pins (davon 1 x PWM für den Servo) benötigt
  • 2 x L293D H-Bridge als Treiber für die Schrittmotoren. Ein Adafruit Motor Shield v2 geht natürlich auch, allerdings funktioniert meine Version der Plotter-Firmware für den Arduino dann (noch) nicht.
  •  Stromversorgung für die Schrittmotoren, 4 x 1,5V AA Batterien oder ein Steckernetzteil, das auf ca. 6V einstellbar ist.
  • Für den Aufbau des Rahmens reichen Holzleisten oder 2 Holzbrettchen, die im rechten Winkel aneinander geschraubt oder geleimt werden. Alternativ geht auch ein Metallrahmen oder ALU-Profile (z.B. Makerbeam). Die Metallteile aus den DVD-Laufwerken haben üblicherweise an den 4 Ecken Befestigungslöcher, mit denen man sie mit 5mm-Schrauben an den Holz- oder Metallträgern befestigen kann.
  • und dazu Schrauben, Kabel, eventuell ein paar Kabelklemmen und andere Kleinteile

Update: Die STL-Files für die beiden Teile des Stifthalters gibt es jetzt hier zum Download: http://www.thingiverse.com/thing:1067140

Den grundsätzlichen Aufbau der Hardware zeige ich im folgenden Video:

Bevor man die Mechanik samt Schrittmotoren im eigenen Projekt verbauen kann, müssen zuerst die eigenen Anschlüsse dran. Dazu kann man entweder das Flachkabel, auf dem die 4 Leitungen meistens deutlich zu sehen sind, mit einer Schere oder einem Skalpell der Länge nach durchschneiden und die Enden in kleine Lüsterklemmen stecken oder man lötet die eigenen Kabel direkt auf die 4 Lötpunkte am Schrittmotor.

Die zusammengehörende Anschlüsse am Schrittmotor sind üblicherweise 1 & 2 sowie 3 & 4.

Dann baut man am besten zuerst nur die Y-Ebene, also die Grundplatte. Dazu reicht links und rechts eine stärke Holzleiste (an diesen muss später die Halterung für die X-Achse im rechten Winkel dazu befestigt werden) und quer dazu 2 dünne Leisten, auf die die Mechanik aus dem Laufwerk geschraubt wird. Hier muss man nur aufpassen, dass der Lesekopf-Schlitten frei beweglich bleibt und nirgend streift.

Dann kann der Anschluss des Schrittmotors an die erste L293D H-Brücke erfolgen. Für die Schrittmotoren braucht man auch eine eigene Stromversorgung. 6V aus 4 AA-Zellen oder einem DC-Steckernetzteil reichen da aus.

Hier gibts 2 Youtube-Videos, in denen ich Funktionsweise , Pinbelegung und Anschluss einer H-Bridge beschreibe.

Teil 1: Funktionsweise und Pinbelegung
Teil 2: Anschluss an den Arduino und Schrittmotor

Wenn alles richtig verkabelt ist, dann sollten die folgenden Zeilen dem Schrittmotor schon eine Bewegung entlocken:

#include <Stepper.h>

// ca. Schritte pro Umdrehung
const int stepsPerRevolution = 20; 

// Schrittmotor initialisieren
// Y-Achse hängt an Pin 2,3,4,5 des Arduino
Stepper myStepperY(stepsPerRevolution, 2,3,4,5);

void setup() {
 // Geschwindigkeit setzen
 myStepperY.setSpeed(100);

 // 20 Schritte (der Schlitten sollte sich in Richtung des Motors bewegen)
 myStepperY.step(20);
 delay(100);
 
}

void loop() {
 // Leer 
}
Code-Sprache: Arduino (arduino)

Falls sich später herausstellt, dass eine Achse sich in die falsche Richtung bewegt, so kann das durch Vertauschen eines Kabelpaares vom Schrittmotor zur H-Bridge behoben werden.

Den gleich Aufbau samt Schrittmotor macht man dann auch für die X-Achse und mit diesem Testsketch:

#include <Stepper.h>

// ca. Schritte pro Umdrehung
const int stepsPerRevolution = 20; 

// Schrittmotor initialisieren
// X-Achse hängt an Pin 8,9,10,11 des Arduino
Stepper myStepperX(stepsPerRevolution, 8,9,10,11); 

void setup() {
 // Geschwindigkeit setzen
 myStepperX.setSpeed(100);

 // 20 Schritte (der Schlitten sollte sich in Richtung des Motors bewegen)
 myStepperX.step(20);
 delay(100);
 
}

void loop() {
 // Leer 
}
Code-Sprache: Arduino (arduino)

Bevor man die beiden Achsen aneinander montiert muss man darauf achten, dass sich das Druckbett der Y-Achse dann auch wirklich unter der Position des Stifthalters befindet und man den Druckbereich voll ausnutzen kann. Erst dann den horizontalen und den vertikalen Teil des Rahmen zusammenschrauben oder kleben.

Wenn auch der 2. Schrittmotor richtig verkabelt ist, dann am besten beide Schlitten in die Mitte ziehen, eventuell schon einen Stift montieren und folgenden Sketch auf den Arduino übertragen:

#include <Stepper.h>

// ca. Schritte pro Umdrehung
const int stepsPerRevolution = 20; 

// Schrittmotor initialisieren
// Y-Achse hängt an Pin 2,3,4,5 des Arduino
// X-Achse hängt an Pin 8,9,10,11 des Arduino
Stepper myStepperY(stepsPerRevolution, 2,3,4,5);
Stepper myStepperX(stepsPerRevolution, 8,9,10,11); 

void setup() {
 // Geschwindigkeit setzen
 myStepperY.setSpeed(100);
 myStepperX.setSpeed(100);

 // 60 Schritte nach rechts
 myStepperX.step(60);
 delay(100);

 // 60 Schritte nach hinten
 myStepperY.step(60);
 delay(100);
 
}

void loop() {
 // Leer 
}
Code-Sprache: Arduino (arduino)

Damit sollten der (gedachte) Stift eine Linie etwa 1 cm nach rechts hinten ziehen. D.h. die Schlitten auf beiden Achsen bewegen sich etwa 1 cm in Richtung des Schrittmotors. Bewegt sich ein Schlitten in die falsche Richtung, dann jeweils die Kabel eines Kabelpaares vom Schrittmotor zur H-Brücke vertauschen. Das sollte die Bewegungsrichtung der Achse ändern.

Hinweis: Die Schlitten des DVD-Laufwerks können nur dann mit der Hand einfach bewegt werden, wenn der Arduino bzw. die H-Brücken nicht mit Strom versorgt werden. Also vor dem Zurückschieben der beiden Achsen den Arduino aus- und dann wieder einstecken.

Wenn die Laufrichtung der Schrittmotoren stimmt, dann sollte links vorne auf dem Druckbett der Punkt (0,0) des Koordinatensystems sein. Von diesem Punkt weg nach rechts (X-Achse) und nach hinten (Y-Achse) haben wir jeweils ca. 250 Schritte der Motoren bzw. 40-50mm als Zeichenfläche zur Verfügung.

Dieses Skript sollte den Druckkopf vom Nullpunkt links vorne (0,0) ca. 40mm nach rechts und nach hinten bewegen.

#include <Stepper.h>

// ca. Schritte pro Umdrehung
const int stepsPerRevolution = 20; 

// Schrittmotor initialisieren
// Y-Achse hängt an Pin 2,3,4,5 des Arduino
// X-Achse hängt an Pin 8,9,10,11 des Arduino
Stepper myStepperY(stepsPerRevolution, 2,3,4,5);
Stepper myStepperX(stepsPerRevolution, 8,9,10,11); 

void setup() {
 // Geschwindigkeit setzen
 myStepperY.setSpeed(100);
 myStepperX.setSpeed(100);

 // 60 Schritte nach rechts
 myStepperX.step(250);
 delay(100);

 // 60 Schritte nach hinten
 myStepperY.step(250);
 delay(100);
 
}

void loop() {
 // Leer 
}
Code-Sprache: Arduino (arduino)

Keine Angst, falls der Schlitten eines der Enden der Antriebsspindel erreicht. Die Aufhängung des Schlittens am Linearantrieb ist so gelöst, dass dieser in dem Fall einfach leer dreht (allerdings mit einem beleidigtem Rattern), ohne dass es zur Beschädigung der Mechanik kommt.

Die Software – erste Schritte

Mit den bisherigen Schritten haben wir gezeigt, dass die Mechanik der beiden Achsen funktioniert. Wenn wir jetzt noch provisorisch einen Stift an der X-Achse befestigen, dann möchten wir natürlich nicht nur kleine Muster oder Linien zeichnen, sondern ganze Bilder.

Dazu benötigen wir ein Vektor-Grafikprogramm, welches die Zeichnung als GCODE ausgeben kann. Dieses GCODE-File enthält einfach Anweisungen für den Plotter in dieser Form:

M300 S30.00 (Senke Stift)
G1 X10.00 Y10.00 F2500.00 (Fahre zu Punkt X:10mm, Y:10mm)
G1 X20.00 Y10.00 F2500.00 (Fahre weiter zu Punkt X:20mm, Y:10mm)
M300 S50.00 (Hebe Stift)Code-Sprache: CSS (css)

Die Datei mit diesen Kommandos senden wir dann mit dem Programm gctrl.pde für Processing zeilenweise an den Arduino. Dazu ist eine aktuelle Version von Processing auf eurem PC erforderlich, die man hier downloaden kann. Die Processing-IDE gleicht der Arduino Software, da solltet ihr euch also gleich zuhause fühlen.

Nun brauchen wir am Arduino noch ein Programm, das die Anweisungen entgegen nimmt und in die benötigten Bewegungen der beiden Achsen (und optional des Servos am Stifthalter) umrechnet.

Da ich keine geeignete Software gefunden habe (grbl, die naheliegendste Lösung, hat mit meinem Setup mit den L293D H-Bridges nicht funktioniert), habe ich die Firmware des TinyCNC-Projektes an meinen Mini CNC Plotter angepasst.

Hier findet ihr die Mini CNC Plotter – Arduino Firmware auf github oder als ZIP-Datei. Entweder das Github Repository ins Arduino Verzeichnis clonen oder nach dem Entpacken des ZIP-Files das „-master“ aus dem Verzeichnisnamen löschen und das Verzeichnis in den Ordner mit den Arduino Sketches kopieren (meist im Dokumenten-Verzeichnis).

Die Firmware benötigt nur die Servo- und die Stepper Library, die beide Teil der Arduino Standardinstallation sind. Der Sketch sollte sich problemlos builden und auf den Arduino übertragen lassen.

Sobald das erledigt, ladet das Programm gctrl.pde für Processing herunter und startet es in Processing. Es erscheint dieses Fenster:

Bildschirmfoto 2015-02-04 um 21.13.44

Mit der Taste „p“ kann man den seriellen Port auswählen, der für die Kommunikation mit dem Arduino verwendet werden soll. Das ist der selbe Port wie in der Arduino IDE. Wenn man ihn einmal richtig gewählt hat, lässt er sich auch im Quellcode des Skripts fix einstellen.

Der einzige sonst noch unterstützte Befehl derzeit ist „g“ – stream a g-code file. Wählt im Dialog die ebenfalls im ZIP-File der Firmware enthaltene Datei owl.gcode aus. Diese habe ich für eine Arbeitsfläche von 40x40mm vorbereitet. Die Datei wird dann vom gctrl.pde zeilenweise zum Arduino geschickt.

Der Plotter sollte sich sofort in Bewegung setzen und damit beginnen die Grafik zu zeichnen. In der Processing-Console (unterhalb des Programmcodes) sieht man die Befehle, die Processing an den Arduino schickt und die Rückmeldung des Arduino. Im Normalfall sollte nach jedem gesendeten Befehl ein „ok“ zurückkommen und damit die Sendung der nächsten Zeile auslösen.

Bildschirmfoto 2015-02-04 um 21.26.33

Die Befehle zum Senken und Heben des Stifthalters sind bereits enthalten. Wenn kein Servo dranhängt, macht das aber auch nichts, der Arduino merkt nichts davon. Andere GCODE-Befehle, die die einfache Firmware nicht versteht, werden einfach ignoriert und mit einem „ok“ quittiert.

Eigene GCODE-Files aus Vektorgrafiken erstellen – MakerBot Unicorn für Inkscape

GCODE Files aus eigenen Vektorgrafiken oder Bildern erstelle ich mit Inkscape. Möglich ist das mit anderen Programmen sicher auch, ich freue mich über Hinweise!

Inkscape ist ein freies Illustrationsprogramm, das für viele Plattformen hier zum Download bereit steht. Zusätzlich benötigt man das MakerBot Unicorn Plugin, mit dem man einen Pfad als GCODE abspeichern kann.

[Update 02.04.2015: Derzeit scheint das Unicorn Plugin nicht kompatibel mit der aktuellen Inkscape-Version zu sein. Alternativ könnt ihr entweder eine ältere Inkscape-Version (mit 0.48.5 funktioniert es noch) installieren oder ein anderes Plug-in verwenden, z.B. die Laser Engraver Extension http://www.instructables.com/id/Pocket-laser-engraver/step7/Getting-the-software-ready/ (Vielen Dank an Andreas K.!)]

Zur Installation des Plugins auf den verschiedenen Betriebssysteme das ZIP-File zuerst entpacken. Der Inhalt des ZIPs gehört dann

unter Windows nach: C:\Programme\Inkscape\share\extension s\
(falls Inkscape dort installiert wurde)

unter Linux nach: „/usr/share/inkscape/extensions“ oder  ~/.config/inkscape/extensions/

unter Mac OS X: „/Programme/Inkscape. app/Contents/Resources/extensions“ oder nach ~/.config/inkscape/extensions/
Für Variante 1 im Finder auf Programme/Inkscape.app rechtsklicken und „Paket öffnen“ auswählen. Variante 2 am besten im Finder bei „Gehe zum Ordner“ eintragen.

inkscape-screen-1

Dann Inkscape neu starten. Wenn alles passt, sollte unter „Speichern unter“ der Dateityp „*.gcode – MakerBot Unicorn G-Code“ auftauchen.

Ich hatte etwas Probleme mit dem Koordinatensystem des Unicorn-Exports, welcher den Nullpunkt in die Mitte der Zeichenfläche setzt. Nach etwas Herumprobieren habe ich es so gelöst, dass ich im Inkscape einfach eine Zeichenfläche von 80 x 80mm eingestellt und nur den rechten oberen Quadranten verwendet habe (siehe Grafik).

Nach dem Export kann man das .gcode-File in einem Texteditor öffnen. Es sollten in den G1 Anweisungen keine negativen Werte und keine Werte über 40.00 vorkommen.

Wie geht es weiter?

Was dem Plotter derzeit vor allem fehlt sind Endstops an den beiden Achsen. In der aktuellen Version müssen die beiden Achsen manuell auf den Punkt (0,0) – ein Punkt links vorne am Druckbett – geschoben werden. Da möchte ich noch 2 Schalter oder ähnliches einbauen, die vom Schlitten ausgelöst werden und dem Arduino ein Signal geben, sobald der Nullpunkt erreicht ist.

Ideal wäre anstatt der eigenen Mini-Firmware auch die Verwendung von grbl. grbl ist ein Open Source G-Code Parser zur Steuerung von 3-Achsen-Maschinen wie z.B. CNC Fräsen oder 3D-Drucker, der am Arduino läuft. Mit bestimmten Motortreibern für die Schrittmotoren ist die Verwendung von grbl nicht allzu kompliziert, mit den L293D H-Brücken habe ich das allerdings noch nicht hingekriegt bzw. bisher keine passenden grbl-Variante gefunden.

Nach dem Mini Plotter würde sich als Folgeprojekt ein Plotter aus der Mechanik zweier Tintenstrahldrucker anbieten. Diese sind ähnlich anzusteuern und würden eine deutlich größere Arbeitsfläche bieten.

Wenn ihr Info zu dem Thema habt oder selbst einen DIY Plotter oder eine CNC Fräse gebaut habt, bitte immer her mit euren Informationen und Erfahrungen!

71 thoughts on “Projekt: Mini CNC Plotter aus alten CD/DVD-Laufwerken

  • 6. Februar 2015 at 11:10
    Permalink

    Hallo und vielen dank für dieses Totorial. Ich habe schon so lange auf eine Lösung gewartet, G-code dateien an eine H-Brücken Motorsteuerun zu senden.

    Echt Klasse von dir und mache weiter so. Deine anderen Tutorials waren mir auch oft eine kleine Hilfe bei anderen Projekten.

    LG
    Heiko

    Reply
  • Pingback: Planung für 2015 – eure Meinung ist gefragt! | Makerblog.at

  • 19. Februar 2015 at 18:59
    Permalink

    Gibt es einen Schaltplan um beide Steppmotoren mit L293D und Arduino UNO zu verkabeln ??

    Viele Dank

    Reply
  • 26. Februar 2015 at 21:53
    Permalink

    huhu
    habe mini plotter bis gerade beide laufwerke am laufen ,servo natürlich auch .baue morgen alles in einem gerüst mit stift.soweit hatt alles geklappt.bin auf nächstes projetkt gespannt von dir.
    ps am schrittmotor mini plotter könte man mit einer lichtschranke die possitionen abfragen.
    oder mit readkontakt.
    alles gute bis bald.
    norbert

    Reply
  • 28. Februar 2015 at 0:25
    Permalink

    hallo,
    bin fast fertig,servo ansteuerung fehlt noch.
    video ist anbei.
    mich würde der 3 d plotter interesieren.
    wie baue ich den.
    wiele grüße .norbert

    Reply
  • 16. März 2015 at 13:28
    Permalink

    Erst einmal vielen Dank für dieses tolle Tutorial.
    Ich hab das ganze gleich einmal mit Erfolg nachgebaut ;)
    Jetzt scheitere ich nur beim Erstellen eigener Vector-Grafiken in Incscape mit dem Unicorn-Plugin. Beim Umwandeln in eine G-Code-Datei, wird mir immer nur ein Fehler ausgegeben :( Die Schrift in meiner Testdatei habe ich immer in einen Pfad umgewandelt… Hattest du derartige Probleme? Irgendwelche Tips für mich? ;)
    Vielen Dank!

    Reply
  • 26. April 2015 at 18:09
    Permalink

    Hi, stehen die .stl Dateien der gedruckten Teile irgendwo zu Verfügung ?

    Danke, JB

    Reply
    • 26. April 2015 at 21:07
      Permalink

      Ich hab die Teile nicht veröffentlicht, da sich die Mechaniken der verschiedenen Laufwerke stark voneinander unterscheiden. Ich kann dir die Teile (und die Sketchup-Files) aber gerne mailen, wenn du mal reinschauen willst?
      lg, Adi

      Reply
      • 8. Juni 2015 at 18:46
        Permalink

        Oh Ja, wen du mal Zeit und Lust hast die mir auch zu Mailen wäre das echt nett.

        Danke im vor raus

        Reply
      • 7. September 2015 at 17:57
        Permalink

        Hallo,

        vielen Dank für diese sehr schöne Anleitung. Vor allem die detaillierte Darstellung der Stiftmechanik hat mir und meinen Söhnen gut gefallen.
        Könnten wir bitte die Druck- und Sketchupdateien bekommen? Das Sketchupen fällt uns noch sehr schwer und es wäre uns sicher eine Hilfe. Und wer weis, etl haben wir ja Glück mit der Kompatibilität.

        Unseren neuen Drucker haben wir bis jetzt mit fertigen Vorlagen oder Tinkercad-Dateien gefüttert.

        Viele Grüße aus dem hohen Norden (M/V)

        Thomas und Steffen und Erik

        Reply
  • 11. Mai 2015 at 16:05
    Permalink

    Hallo,

    könntest du mir auch bitte die STL Dateien mailen, die Stifthalterung interessiert mich, kann ich ja auf meine Stiftdicke anpassen.

    Danke schön!

    Gruß Alex

    Reply
  • 7. August 2015 at 13:17
    Permalink

    Help me!!! Errors file gctr.de
    „The function „showInputDialog ()“ expects parameters like: “ showInputDialog( component, Object, String, int, icon, object, object)“
    Line 31

    Reply
    • 23. August 2015 at 11:58
      Permalink

      Try to change this to:

      String result = (String) JOptionPane.showInputDialog(frame,
      „Select the serial port that corresponds to your Arduino board.“,
      „Select serial port“,
      JOptionPane.QUESTION_MESSAGE,
      null,
      Serial.list(),
      0);

      Reply
  • 8. August 2015 at 16:30
    Permalink

    bekomm bei processing leider nur ne fehlermeldung: „The function „showInputDialog()“ expects parameters like: „showInputDialog(Component, Object, String, int, Icon, Object[], Object)“ gctrl 31″
    wenn ich gctrl starten will..

    Reply
    • 2. März 2016 at 20:18
      Permalink

      Vielen lieben Dank für diese SUPER ANLEITUNG!

      Ich habe hier in den Kommentaren einige Probleme erlesen können.
      Beispielsweise dieser:
      Help me!!! Errors file gctr.de
      „The function „showInputDialog ()“ expects parameters like: “ showInputDialog( component, Object, String, int, icon, object, object)“
      Line 31

      Processing 3.0.2 brachte mir ebenfalls diesen Fehler.
      Processing 2.2.1 wie es im Tutorial verwendet wird klappt dahingegen auf anhieb!

      Reply
  • 18. August 2015 at 1:38
    Permalink

    hiiii
    thanks for this project .
    but !!!!
    how to run Gctrl ??
    i’m waiting for your answer …..

    Reply
  • 22. August 2015 at 19:51
    Permalink

    Hello! Thank you for this great tutorial!
    I have made it and I have already printed the „owl“ (gcode image).
    I want your help on how to use the inkscape program to print my images.
    Thank you for your time!

    Reply
  • 26. August 2015 at 16:26
    Permalink

    Thank you Michalis ;

    do you give me code of arduino to use motor shield ??

    pllz

    Reply
  • 27. August 2015 at 0:13
    Permalink

    Hi ; thanx for all this but how to change code Arduino to use Motor Shield ??

    Reply
  • 27. August 2015 at 10:20
    Permalink

    „$ Display Grlb Setting“ has no effect. Using how. please

    Reply
  • 27. August 2015 at 16:36
    Permalink

    Hello ;how to change the code of Arduino to use MOTOR SHIELD L293D

    Reply
  • 28. August 2015 at 5:45
    Permalink

    CODE G-code is M03; S30 M300 M05 is not; S50 M300 should not be servo control. And in the following line of code appears gcode M30
    (Example: M03
    G1F600.000000
    G01 X97.6073 Y102.6626F600.000000)
    If I replace the M30 and M05 and M300 to M300 S30 S50 and delete the line (G01 X97.6073 G1F600.000000 Y102.6626F600.000000) after M03, it will be back to normal.
    Lost time please help me repair.
    Inkscape 0.48.5

    Reply
  • 4. September 2015 at 11:06
    Permalink

    „Ich hatte etwas Probleme mit dem Koordinatensystem des Unicorn-Exports, welcher den Nullpunkt in die Mitte der Zeichenfläche setzt. Nach etwas Herumprobieren habe ich es so gelöst, dass ich im Inkscape einfach eine Zeichenfläche von 80 x 80mm eingestellt und nur den rechten oberen Quadranten verwendet habe (siehe Grafik).

    Nach dem Export kann man das .gcode-File in einem Texteditor öffnen. Es sollten in den G1 Anweisungen keine negativen Werte und keine Werte über 40.00 vorkommen.“

    Hat jemand dieses Problem noch nicht gelöst. Können Dateien bearbeiten Unicorn.py

    Reply
  • 22. September 2015 at 17:24
    Permalink

    Guten Tag,
    ich bedanke mich für diesen interessanten Beitrag. Für neue Schulungsprojekte sucht unsere Firma CNC Maschinen. Während unserer Recherche sind wir auf diese CNC Fräsen aufmerksam geworden https://www.isel.com/germany/de/flatcom-serie-xl-4533.html . Jeder Bericht oder Rat ist uns wichtig. Wir wären Ihnen sehr dankbar, wenn Sie etwas über diese Maschinen berichten bzw. Alternativen nennen könnten.
    Mit freundlichen Grüßen

    Reply
  • 27. September 2015 at 12:53
    Permalink

    Hallo Adi,
    klasse Tutorial, vielen Dank dafür 8-)
    Habs grad nachgebaut und schlieslich auch den gcode zum Laufen bekommen.
    Jetzt noch ein paar Endschalter einbauen, damit sich die Plattform am Anfang automatisch zentriert, dann werd ichs vielleicht auch bei YouTube reinstellen…8-))

    Also, vielleicht sieht man sich.
    viele Grüße, Ole

    Reply
  • 5. Oktober 2015 at 15:43
    Permalink

    Hallo,

    wäte es möglich die *.stl Dateien für die Stifthalterung zu bekommen, das wäre Super!! Vielen Dank

    Reply
    • 5. Oktober 2015 at 15:51
      Permalink

      Hallo Rene,
      ich hab dir die beiden Files eben per Mail geschickt.
      lg, Adi

      Reply
  • 11. Oktober 2015 at 15:28
    Permalink

    Hallo…Erstmal danke für die Super Seite und für die vernünftige Erklärung .
    Habe eine frage wie funktioniert so was habe mir ein Display gekauft und möchte an meine mini CNC anschließen und das der Ausgeführte g-code angezeigt wird…Das ist ein Link mit beispiel video damit du weist was ich meine.
    https://www.youtube.com/watch?v=b21IZJAgekY
    Danke in Voraus

    Mfg Daniel M.

    Reply
  • Pingback: CD/DVD Drive Mini CNC Plotter – Rebuilds und Verbesserungen | Makerblog.at

  • 15. Oktober 2015 at 13:12
    Permalink

    Vielen Dank für die Stifthalterung auf thingiverse!

    Reply
  • 14. Februar 2016 at 13:14
    Permalink

    Hallo, vielen Dank für die super Anleitung, habe die Minicncmaschine nachgebaut. Da ich bereits ein Adafruit Motorshield V2 hatte musste ich eine andere Firmware benutzen. Ich bin auf http://learn.marginallyclever.com/index.php/GcodeCNCDemo gestossen und nach einigen Anpassungen hat das auch gut funktioniert. Leider fehlt in dieser Firmware der M300 Befehl für den Stiftservo, leider hab ich es bis jetzt noch nicht geschafft den Befehl zu integrieren… aber ich arbeite daran. Falls jemand weiss wie man das hinkriegt bin ich für Tips offen :)

    Reply
  • 18. Februar 2016 at 13:58
    Permalink

    Hallo.
    Ich habe die Schrittmotoren nach Anleitung mit den H-Brücken (L293D) verkabelt und nutze eine 6Volt Spannungsquelle. Das Problem ist, dass die L293D ICs auf Dauer relativ heiß werden. Ist das normal oder hatte jemand schon ähnliche Probleme gehabt?
    Notfalls würde ich kleine Kühlkörper nutzen..
    Danke im voraus.

    Reply
  • 29. Februar 2016 at 21:12
    Permalink

    Hallo zusammen,

    erstmal danke für die tolle Anleitung. Ich finde sie wirklich sehr gelungen und man kann dieses Projekt auch relativ einfach umsetzen.

    Nun zu meinem Problem:
    – Wenn ich den g-code über Processing streame läuft dort alles richtig durch, doch an meinem Plotter bewegt sich nur die y-Achse, die x-Achse bleibt stehen.
    – Wenn ich die y-Koordinaten aus dem g-code rauslösche bewegt sich die x-Achse.

    Kann mir da vielleicht jemand weiterhelfen?

    Danke schon mal im voraus.

    Gruß Lukas

    Reply
  • 1. März 2016 at 15:50
    Permalink

    Hallo Adi,

    wie ich gesehen habe musst du die Kommentare ja erst freischalten, dass brauchst du bei meinen zwei nicht tun, denn mein Problem hat sich geklärt.

    Ich dachte die 5V aus dem USB-Kabel werden die Servos schon versorgen – denkst de :) war wohl nix. Ich hab die Servos jetzt an 6V gehängt, jetzt geht’s.

    Danke für deine Mühe.

    Gruß Lukas

    Reply
    • 1. März 2016 at 15:52
      Permalink

      Hallo Lukas,

      ich freu mich zwar über Kommentare, wenn sich die dari angesprochenen Probleme aber fast von selbst lösen, dann freut mich das noch mehr :)

      lg, Adi

      Reply
  • 1. März 2016 at 21:23
    Permalink

    hallo,. ich habe bei folgendem probleme,.

    Da ich keine geeignete Software gefunden habe (grbl, die naheliegendste Lösung, hat mit meinem Setup mit den L293D H-Bridges nicht funktioniert), habe ich die Firmware des TinyCNC-Projektes an meinen Mini CNC Plotter angepasst.

    Hier findet ihr die Mini CNC Plotter – Arduino Firmware auf github oder als ZIP-Datei. Entweder das Github Repository ins Arduino Verzeichnis clonen oder nach dem Entpacken des ZIP-Files das „-master“ aus dem Verzeichnisnamen löschen und das Verzeichnis in den Ordner mit den Arduino Sketches kopieren (meist im Dokumenten-Verzeichnis).

    Die Firmware benötigt nur die Servo- und die Stepper Library, die beide Teil der Arduino Standardinstallation sind. Der Sketch sollte sich problemlos builden und auf den Arduino übertragen lassen.

    ich habe alles nötige runter geladen, verstehe das aber nicht mit den arduino sketches und der servo/ stepper lib. .

    kann mir da jemand weiter helfen ?

    danke im vorraus

    mfg dom

    Reply
  • 7. März 2016 at 12:22
    Permalink

    ich habe jetzt soweit alles zu gange,. aber wenn ich als makerbot unicorn gcode speichern will kommt die fehlermeldung:

    – Traceback (most recent call last):

    File „unicorn.py“, line 23, in

    from unicorn.context import GCodeContext

    File „C:\Program Files\Inkscape0.48.5\share\extensions\unicorn.py“, line 23, in

    from unicorn.context import GCodeContext

    ImportError: No module named context

    Reply
    • 13. März 2016 at 13:54
      Permalink

      Das gleiche Problem habe ich auch.

      Reply
    • 17. Januar 2017 at 19:51
      Permalink

      Hallo Dominic,
      was war die loezung, habe diese woche erst die software gedownload.
      Und habe die gleiche Meldung.
      mvg Peter aus Holland

      Reply
  • 11. März 2016 at 3:35
    Permalink

    wie kann man das Mini CNC Plotter Programm so umändern, dass das Adafruit Motor Shield verwendet werden kann. Also das mit den fetten drei ICs. Bin da leider noch absoluter Neuling und wäre für Unterstützung dankbar.

    Reply
  • 19. Mai 2016 at 14:38
    Permalink

    Gibt es eine genaue Anleitung für das Bauen des Plotters?
    Ich habe nähmlich das Problem, dass ich nicht weiß wie ich vorgehen muss.
    Bitte um Hilfe :)

    Reply
  • 29. Mai 2016 at 0:52
    Permalink

    Hello and thank you for sharing. I have a problem with the Y motor movement (just this one ) when it changes direction and before the next move, it jumps around a millimeter towards the new direction. So if I draw 5 parallel lines and return to the y coordinate of origin for each line: they are shifted slightly each time. Do you know where the problem come from ? thank you for your help.

    Reply
  • 24. September 2016 at 8:46
    Permalink

    hi, how are you? a have some problems to make mini CNC CD Rom, i need help:
    ERRORS
    Arduino: 1.6.11 (Windows 10), Placa:“Arduino/Genuino Uno“
    C:\Users\Fábio\Desktop\mini_cnc_plotter_firmware-master (1)\mini_cnc_plotter_firmware-master\mini_cnc_plotter_firmware\mini_cnc_plotter_firmware.ino: In function ‚void loop()‘:
    mini_cnc_plotter_firmware:136: error: ‚processIncomingLine‘ was not declared in this scope
    C:\Users\Fábio\Desktop\mini_cnc_plotter_firmware-master (1)\mini_cnc_plotter_firmware-master\mini_cnc_plotter_firmware\mini_cnc_plotter_firmware.ino: In function ‚void processIncomingLine(char*, int)‘:
    mini_cnc_plotter_firmware:199: error: ‚penUp‘ was not declared in this scope
    mini_cnc_plotter_firmware:202: error: ‚penDown‘ was not declared in this scope
    mini_cnc_plotter_firmware:229: error: ‚drawLine‘ was not declared in this scope
    exit status 1
    ‚processIncomingLine‘ was not declared in this scope
    Este relatório teria mais informações com
    „Mostrar a saida detalhada durante a compilação“
    opção pode ser ativada em „Arquivo -> Preferências“

    Reply
    • 27. September 2016 at 13:36
      Permalink

      Hi Fabio,
      very strange. I will update to Arduino IDE 1.6.11 and test this today.
      Regards,
      Adi

      Reply
    • 27. September 2016 at 13:40
      Permalink

      I just made a new install of Arduino 1.6.12, opened the sketch directly from Github and it built/compiled without any errors. Please download the project from github again and try to open and compile the file again.
      Thanks,
      Adi

      Reply
  • 29. Oktober 2016 at 10:15
    Permalink

    Hallo :)
    ich habe dieses Projekt genauso nachgebaut wie du nur ich habe folgendes Problem:
    Wenn ich die Beiden Motoren einzeln über ein einzelnes Sketch ansteuere dann laufen beide (auch richtige Richtung usw.) nur wenn ich versuche etwas zu „Drucken“ dann läuft NUR die X-Achse und der Servo aber bei der Y-Achse nichts. Weiß jemand woran das liegen könnte? Ob ich noch etwas umstellen muss usw?
    Bitte schnelle Hilfe :)

    Lg Mario

    Reply
    • 31. Oktober 2016 at 12:09
      Permalink

      Hallo Mario, ein anderer Maker hatte vor kurzem ein ähnliches Problem und da lag es dann an der Stromversorgung der beiden Schrittmotoren, die im Vollbetrieb nicht ausreichte. Wie schaut es da bei dir aus?
      lg, Adi

      Reply
      • 6. März 2018 at 22:47
        Permalink

        Hallo Adi,

        Ich habe das selbe Problem wie Mario. Ein Motor (x) läuft und der Servo. Der andere Motor (y) allerdings nicht.

        Denke nicht das es an der Stromversorgung liegt, da ich eine 9v und 3.6 v Stromversorgung dran habe.

        Reply
  • 18. August 2017 at 8:28
    Permalink

    Can the speed of the cnc be increased with the stepper motor(somehow)? If yes, can you please explain?

    PS Sry i DOn’t know German

    Reply
  • 29. November 2017 at 20:17
    Permalink

    Hi,
    ne kleine Frage:
    Ich habe das Gctrl runtergeladen und das Prozessing auch. Habe gestartet und es ging nicht. in zeile 31 gab es den Fehler an. und zwar: String result = (String) JOptionPane.showInputDialog(This,

    Hab das this durch „frame“ ersetzt. geht jetzt. aber warum?
    bzw. wurde das programm die hardware zum laufen bekommen?

    Reply
    • 30. November 2017 at 0:00
      Permalink

      Entweder Processing Version 2.2.1 runterladen (auch auf processing.org verfügbar), oder im Processing Sketch die fehlerhafte Zeilen ändern in:

      String result = (String) JOptionPane.showInputDialog(frame,
      „Select the serial port that corresponds to your Arduino board.“,
      „Select serial port“,
      JOptionPane.QUESTION_MESSAGE,
      null,
      Serial.list(),
      0);

      lg & viel Spaß!
      Adi

      Reply
      • 3. Dezember 2017 at 20:48
        Permalink

        hi das habe ich gemacht von der seite geht alles. jetzt wollte ich heute alles verkabeln und endlich mal starten. Aber es rührt siich gar nichts. der servo nicht, die schrittmotoren nicht. Es geht aber eig alles da ich es schon getestet habe. könnte es an der verkabelung der schrittmotoren liegen?

        Reply
        • 4. Dezember 2017 at 16:18
          Permalink

          Hi MG, mit getestet meinst du, dass du die Schrittmotoren einzeln schon verkabelt und getestet hast? Wenn sich gar nichts tut, dann ist die Fehlersuche schwierig. Am besten erstmal nur einen Schrittmotor verkabeln und mit den Testsketches hier auf der Seite checken. Dann den 2. Motor dazu und wiederholen. Wenn es mit den Testsketches läuft, bei der Ansteuerung via gctrl aber nicht, dann ist es vielleicht ein Kommunikationsproblem. Kriegst du im gctrl eine Bestätigung, dass die Kommunikation mit dem Plotter klappt? lg, Adi

          Reply
  • 12. Dezember 2017 at 10:17
    Permalink

    Hallo zusammen,

    mit einer Schülergruppe haben wir drei Plotter zusammengebaut und dabei schöne Aluprofile verwendet. Als externe Stromversorgung haben Labornetzteile angeschlossen, um die Spannung ggf. etwas erhöhen zu können. Leider fahren die Motoren nur ein Stück, bzw. bei zwei anderen Plottern nur, nachdem sie Anschubhilfe mit dem Finger bekommen haben.
    Die Verkabelung wurde mehrfach getestet, die l293 wurden getauscht und wir haben andere Laufwerke angelötet. Leider ohne Erfolg. Als Sketch haben wir den von maker.at und von instructables getestet. Langsam macht sich Frust breit. Hat jemand eine Idee, was da falsch läuft?
    Für einen Hilfevorschlag wären wir sehr sehr dankbar!

    Viele Grüße

    Marc

    Reply
    • 18. Dezember 2017 at 14:40
      Permalink

      Hallo Marc, habt ihr die Schrittmotoren einzeln getestet? Funktionieren sie einzeln mit dem ersten Testskript (weiter oben)? Hört sich ja doch nach einem Problem mit der Stromversorgung an, auch wenn das mit dem Labornetzteil eher ungewöhnlich wäre. Die GNDs von Arduino und Motorstromversorgung sind auch verbunden (das vergesse ich nämlich immer)? lg, Adi

      Reply
  • 16. Dezember 2017 at 7:35
    Permalink

    Servus Adi,
    Ich habe mich nach 35 Jahren wieder meiner Jugendleidenschaft der Elektronik zugewand und bin dabei auf deinen Blog gestoßenen. Ich muß sagen deine Erläuterungen haben mir sehr geholfen. Ich habe den Miniplotter nachgebaut, und er druckt Eulen. Ein tolles Erfolgserlebnis dank deiner Seite.
    Danke dafür.

    lg Karl aus Bayern

    Reply
    • 18. Dezember 2017 at 14:43
      Permalink

      Hallo Karl, wenn du ein Foto oder Video von deinem Projekt hast, dann schick mir bitte was, damit ich das auf der Seite mit den Rebuilds veröffentlichen kann. lg, Adi

      Reply
  • 18. September 2018 at 14:59
    Permalink

    Hi,
    Awesome project and excellent tutorial. I managed to put together one using scrap DVD drives and is working well. But I am not able to change the speed of stepper motors. It plots in the same speed even if I change the the ’setspeed‘ to 0. Could you please help me out?
    Best Regards,

    Reply
  • 19. Mai 2019 at 20:33
    Permalink

    Hallo,

    ich habe den Plotter nachgebaut, ich habe nur das Problem, dass wenn ich den Motor ansteuern, er nur brummt, ich habe schon einen anderen versucht, was mache ich falsch?

    Ich verwende zum ansteuern einen Arduino Uno und ein Motor Treiber L293D

    Gruß Stefan

    Reply
  • 7. Oktober 2022 at 6:08
    Permalink

    Bei mir ruckeln die Schrittmotoren bei niedriger Geschwindigkeit stark. Ein Motor etwas stärker als der ander. Erhöhe ich die Geschwindigkeit in processing gibt sich das Problem, allerdings vermute ich, dass ich bei der hohe Geschwindigkeit dann keine vernünftige Linie mehr zeichnen kann. Gibt es eine Möglichkeit das zu beheben.

    Reply

Schreibe einen Kommentar zu jack Antworten abbrechen

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.