3D Drucker

Dieser Artikel sammelt Tips und Links zum Betrieb unseres 3d-Druckers

Überblick

3D-Drucker nach dem Schichtaufschmelzprinzip, wie der Vorliegende, benutzen, eine erhitzbare Düse (Noozle genannt) um verschiedene Plastiksorten, die als Bänder auf Rollen(das sogenannte Filament) hergestellt werden, aufzuschmelzen und an der richtigen Stelle wieder abkühlen/erstarren zu lassen. Die üblichen Schmelztemperaturen liegen dabei zwichen 180° und 700°C je nach Filamentsorte. Üblicherweise wird im Amateurbereich PLA, PETG aber auch ABS eingesetzt. Hier liegen die Temperaturen bei PLA zwischen 180° und 210°, die für PETG Zwischen 230° und 250° und die für ABS Zwischen 240° und 280° Celsius

Für die Mechanik, die für die Bewegung des Druckkopfs benötigt wird, gibt es verschiedenste Bauformen, die mehr oder weniger Vor- sowie Nachteile haben. Der Aufwand, der für die Quallität der Mechanik betrieben werden kann, definiert natürlich die Quallität des Druckguts und natürlich auch den Anschaffungspreis.

Ebenfalls gibt es verschiedene Druckersteuerungen mit ebenfalls unterschiedlichen Geschwindig- und Genauigketen. Hohe Druckgeschwindigkeit bedeutet zwar, dass das Druckgut schneller verfügbar ist, geht aber zu Lasten der Druckqualität, so dass es zu Fehlern, die nachträglich bearbeitet werden müssen, kommen kann. Hier gilt es also einen entsprechenden Kompromis zu finden. Die Druckersteuerung versteht den bei Frässmaschinen üblichen G-Code. Um ein im Computer erzeugtes 3D-Modell auf einem solchen Drucker ausgeben zu können, müssen diese Modelle in G-Code umgewandelt werden. Das Problem dabei ist, dass die üblichen 3D-CAD-Programme nicht dafür ausgelegt sind, da sie für anderen Aufgaben geschrieben wurden. Hierbei gibt es natürlich auch verschiedene Konzepte. So kann ein 3D-Modell volumensbasiert oder oberflächenbasiert sein. Beide können durch Konvertierung in G-Code umgewandelt werden, wobei sich allerdings die Volumenmodelle und damit das STL-Format durchgesetzt hat. Unter http://www.reprap.org/wiki/Useful_Software_Packages findet sich eine Sammlung geeigneter Programme.

Der G-Code selbst besteht aus einfachsten Steuerbefehlen für die Achsen und den Extruder und ist schon allein von seiner Geschichte her sehr Minimalistisch, da die Maschnen für die er entwickelt wurde noch aus Zeiten stammen in der Entwicklung von Mikrokontroller noch am Anfang stand. Jede Achse stellt also eine eindimensionale Bewegung mit zwei Richtungen dar, die von einem Schrittmotor ausgeführt wird. Diesem muss dann natürlich gesagt werden wie lange er mit welcher Geschindigkeit ein welche Richtung laufen soll. Da ein Motor „dumm“ ist und man ihm nicht einfach so sagen kann: Fahre einen Kreis! muss früher wie heute jeder Schritt vorausberechnet und dann übertragen werden. Eine gerade Linie ist sehr einfach zu programmieren, da man nur einem Achsenmotor sagen muss, wieviele Schritte er machen muss. Natürlich muss man dem Extrudermotor ebenfalls mitteilen wieviel Filament er durchschieben soll, was aber eigentlich die selbe Information darstellt. Eine zweidimensonale Bewegung, wie z.B. ein Kreis ist schon komplizierter, da trigometrische Funktonen wie Sinus und Kosinus bemüht werden müssen. Ein weiterer schwieriger Punkt für diese Drucker sind überhängenden Strukturen, da das Plastik nicht sofort aushärtet und bei langen Übergängen „durchzuhängen“ droht. Dies kann durch das Einfügen leicht zu entfernende Stützstrukturen in Grenzen gut behoben werden, bedarf aber einiges an Konstruktionsaufwand, der aber mittlerweile in den G-Code-Generatoren abgelegt worden ist.

OpenSCAD ist ein Beispiel für ein volumenbasiertes 3D-CAD-Programm. Hierbei wird über eine scriptähnliche Sprache ein Volumenmodell „programmiert“. Wem der Programmieraufwand zu lästig ist, kann mit Blender einfach ein Modell zusammenklicken, sei aber gewarnt, dass Blender ebenfalls eine steile Lernkurve hat. Natürlich gibt es auch andere Produkte aus dem einen oder anderen Lager, die hier aber erst einmal nicht Erwähnung fnden sollen. Die auf diese Weise als STL-Datei gespeicherte Form muss nun noch in G-Code umgewandelt werden. Dies kann z. B. Slic3r tun. Slic3r - ist ein Programm, dass aus einer STL-Datei unter Verwendung von druckerspezifischen Einstellungen, wie Füllparameter, Filamenteinstellungen und Geschwindigikeitswerten den druckerabhängigen G-Code erzeugt und dabei sich auch um ggf. benötigte Stützstruckturen, Aufwärm- und Abkühlphasen sowie Auslassungen kümmert.

Hardware

Das vorliegende Modell unseres 3D-Druckers ist ein Prototyp nach Mendel. Er ist mit enem Heizbett, das nur extern in der Temperatur geregelt werden kann ausgestattet. Wir verwenden eine 0,3mm Noozle mit der wir von PLA über PETG bis ABS verschiedne Plastiken drucken können. Die Noozle ist für Filamentstärken von 1,75mm ausgelegt. (Bilddokumentation wird nachgeliefert)

Der Drucker besitzt zwei Netzteile, eines für die Steuerung und die Motoren, das andere für die Heizung des Tisches. Die Datenkommunikation mit einem Desktopcomputer oder einem Raspberry Pi läuft über USB. Über den Pi ist der Drucker auch über das Intranet erreichbar. Auf dem Computer meldet sich der Drucker als serielle Schnittstelle (FTDI, 115kBit benutzen).

Je nachdem ob man den Drucker über einen Computer oder den Pi betreiben will, so muss natürlich die Stromversorgung des Druckers, eingeschaltet werden. Dies geschieht über das nebenstehende Computernetzteil. Selbstverständlch benötigen der Pi oder der Rechner ebenfalls Strom, der über eine Verteilersteckdose mit Schalter beret gestellt wird. Je nachdem ob der Pi oder der Rechner verwendet werden sollen muss darauf geachtet werden, wo das USB-Kabel der Druckersteuerung eingesteckt ist. Für den Netzwerkbetrieb ist es natürlich sinnvoller, den Pi zu bevorzugen und dies als Standardkonfiguration zu betrachten. Die Rechnergestützt Variante sollte als Backup betrachtet werden oder in dem Fall benutzt werden, wenn der G-Code erst noch erzeugt werden muss. Natürlich ist es auch möglich den Rechner fürs Slicen zu verwenden und von dort aus auf den Pi hochzuladen.

Linux

Mittlerweile verfügen wir über zwei Möglichkeiten den Drucker zu verwenden:

  • OctoPrint über einen Raspberry Pi, Druckeranschluss über USB
  • Pronterface oder Skeinforge und Druckeranschluss über USB

Über OctoPrint und durch den Pi ist der Drucker über das Netzwerk verügbar.

OctoPrint

Erklärung des Web-Guis

Ruft man octopi.warpzone im Browser auf, erscheint folgende Startseite: Sollte kein Drucker verbunden sein, muss man die Verbindung unter dem Reiter Connection noch herstellen. (Durch Klicken auf Verbinden.)

Das Web-Gui ist wie folgt aufgebaut: Im linken Drittel gibt es drei Gruppenboxen:

  • Verbindung
  • Status
  • Dateien

Während eine Verbndungzum Drucker besteht, ist die Gruppenbox „Verbindung“ automatisch minimiert. Benötigt man sie, weil man z.B. die Verbindung erneuern oder gar unterbrechen will, kann sich einfach durch einen Mausklick geöffnet werden. Hier kann der Verbindunsport, die DAteiübertragungsrate sowie das Druckerprofil eingegeben werden.

Die Status-Gruppenbox teilt u.a. mit, was der Drucker gerate tut, welche Datei gerade gedruckt wird, ob die Zeitlupe verwendet wird, wieviel Filament gerade verwendet wird (in Länge und Volumen), die geschätzte Gesamtdruckzeit, die bisher vergangene Druckzeit, die Restdruckzeit und die Dateigröße.

In der Datei-Gruppenbox, in der linken Spalte ganz unten, wird ermöglicht G-Code Datei hochzuladen, geladenen Datei vorzuhalten oder sie ggf auch wieder zu Löschen. Dies hat den Vorteil, dass nicht ständig dieselben Dateien übertragen werden müssen. Die Dateien werden auf der SD-Karte des Pi's gespeichert.

Die rechten 2/3 des Web-Gui's sind mit einer Reiterbox belegt. Sie enthält die Reiter Temperatur, Steuerung, G-Code Betrachter, Terminal und Zeitlupe.

Unter dem Reiter Temperatur findet man mitlaufendes Diagramm in dem die aktuell gemessene Temperatur der Noozle angezeigt wird. Auch die Temperatur des Betts kann darüber verfolgt werden, falls diese Informaton verfügbar ist. Direkt unter dem Diagram gibt es die Möglichkeit die Temperatur der Noozle und des Betts durch Eingaben zu steuern. Hierzu kann man vordefinierte Temperaturen abrufen, dann setzen oder einfach enen Temperaturwert eingeben. Der Reiter Steuerung gibt die Möglichkeit den Druckkopf zu positionieren, sowie den Filamenttransport auszulösen. Ebenfalls können auch die Motoren und Lüter über diesen Reiter ausgeschaltet werden. Eine prozentuale Geschwindigkeitssteuerung ist über Schieberegler möglich.

Der Reiter G-Code Betrachter zeigt während des Drucks die akutelle Druckschicht sowie die Bewegung des Druckkopfs an, also genau das was aktuell gerade passiert. Die Erfahrung hat gezeigt, dass dies bis zu 3h synchron ist, wenn man den Pi in Ruhe lässt, sonst beginnt die Anzeige hinter dem aktuellen Geschehen hinterher zu laufen. Dies passiert zwar jenseits der 3h größer werdend eh, aber bis zu 3h bleibt de Abweichung hinreichend gering. Fahrwege sind grün dargestellt während für das aufgetragenen Filament schwarz verwendet wird. Der horizontale Schieberegler ist auch gleich ein Fortschrittsbalken der aktuellen Ebene und läuft somit mit.Der Schieberegler zur Rechten ist auch gleich der Fortschrittsbalken für die Z-Achse und läuft ebenfalls mit, so dass an ihm auch die aktuelle Ebenen abgelesen werden kann. Die Anzeige ist mit dem Mausrad zoombar. Unterhalb der Drucktopologie werden Informationen angezeigt, einmal über das Gesamtmodel und einmal über die aktuelle Ebene. Hier gibt es auch noch die Möglichkeit Einstellungen für die Betrachtung vorzunehmen. Falls die Anzeige sich nicht mehr synchron zum aktuellen Druckgeschehen verhält kann dies hierüber wieder eingestellt werden. Allerdings kann man sich über die Einstellmöglichketen auch Vor oder Rückschau ansehen.

Im Reiter Termnal werden fortlaufend die gesendeten G-Code Kommandos angezeigt, wenn ein Durckjob läuft. Eine Eingabezeile ermöglcht es auch manuell G-Code eingeben zu können.

Der Zeitlupenreiter hält eine Vorschau ind Zeitlupe vor. Es können dafür hier auch die nötigen Einstellungen gemacht werden.

Links oben in der Titelleiste sind noch zwei Menüpunkte, Einstellungen und System vorhanden. Unter dem Menüpunkt Einstellungen können noch einmal die selben Druckerparameter verändert werden wie unter den Verbindungseinstellungen. Zusätzlich dazu sind wetere Features aber Einstellungen zu OctoPrint als Printserver oder aber auch die Softwareupdatemöglichkeiten abrufbar.

Au dem nunfolgenden letzten Screenshot wird beispielhaft einaml eine Komplette Hitzekurve aber auch noch die Möglichkeiten, die Unter dem Menüpunkt System zur Verfügung stehen dargestellt. Wenn üblicherweise alles gut Verlief sollte der Graph ähnlich wie abgedruckt aussehen.Auch die Cool-Down-Phase der Noozle ist gut zu erkennen.

Wie benutzt man OctoPrint?

Die Benutzung ist denkbar einfach. Hierzu muss nur die z.B. mit Slic3r erstellte G-Code-Datei entweder über Slic3r, welcher einen eingebauten Uplink für Octoprint enthält oder manuell hochgeladen und dann mit einem Mausklick auf Print gestartet werden. Die ist also die einfachste Möglichkeit etwas zu Drucken, vorrausgesetzt der Drucker ist justiert.

Für den Fall das man ihn erst justieren muss, sei hier auf den Punkt „Justierung des Druckers mit OctoPrint“ an anderer Stelle verwiesen.

Pronterface

„Pronterface“ und „Skeinforge“ scheinen unter Linux, wenn der Drucker per USB direkt an einem Rechner und nicht über einen Pi angeschlossen ist, die Tools der Wahl zu sein. Pronterface ist eine interaktive Oberfläche mit der man direkt Befehle an den Drucker schicken oder Modelle Drucken kann. Das in Pronterface integrierte Skeinforge kann aus Volumenmodellen G-Code (die Fahrbefehle für die Maschine) erzeugen.

Installation

Im ReprapWiki gibt es eine Installationsanleitung für Ubuntu die fast funktioniert.

1. Benötigte Bibliotheken installieren:

 sudo apt-get install python python-serial python-wxgtk2.8 python-tk git-core

2. Pronterface/Skeinforge installieren:

#! /bin/bash
PRTDIR="$HOME/wz/3dprinter"         # <<<< Anpassen!!
PRINTRUNDIR="$PRTDIR/Printrun"
SKEINFORGEDIR="$PRINTRUNDIR/skeinforge"
cd $PRTDIR
echo "Removing existing Printrun directory..."
rm -rf $PRINTRUNDIR
echo "Cloning Printrun..."
git clone https://github.com/kliment/Printrun.git
echo "Grabbing skeinforge..."
wget -P /tmp http://fabmetheus.crsndoo.com/files/41_reprap_python_beanshell.zip
echo "Unzipping skeinforge into Printrun directory..."
mkdir -p $SKEINFORGEDIR
unzip -d $SKEINFORGEDIR /tmp/41_reprap_python_beanshell.zip
echo "Symlinking skeinforge inside Printrun directory..."
ln -s $SKEINFORGEDIR/* $PRINTRUNDIR/
echo "Cleaning up temporary installation files..."
rm -rf /tmp/41_reprap_python_beanshell.zip

Pronterface und besonders Skeinforge haben zahlreiche Einstellungen, die in Dotfiles im Home-Ordner des Benutzers abgelegt werden ( .pronsolerc / .skeinforge ). Hier steckt die entscheidende Konfiguration von Druckgeschwindigkeit, Filamentvorschub etc. Wenn wir einen guten Satz von Einstellungen haben, werden die Dateien verfügbar gemacht.

Windows

Hier schreibe jemand der sich berufen fühlt.

Tunning

Wir haben den Drucker mal auf 4-Fache Geschwindigkeit getestet, das Ergebnis kann sich sehen lassen, man sieht den Unterschied aber leider schon. Für Teile, die nicht hübsch aussehen müssen, geht es aber allemal. Bei 2-Facher Geschwindigkeit hat der Drucker übrigens absolut sauber gedruckt.

Hier ein Video vom Druck: http://youtu.be/JP7KQRk8zeA

Und die Einstellungen in Slic3r:

(ist noch in Bearbeitung)

Um Wände und Böden mit festem Zudsammenhalt und ohne Lücken zu bekommen. Funktioniert mit Extrusion Multiplier 1,0 und 1,1. Andere wurden nicht getestet.

Boden/Decke horizontal

1 Lage: ⇐0,70mm

2 Lagen: 0,75mm

3 Lagen: 1,15mm

4 Lagen: 1,50mm

Wand vertikal

vielfache von 0,32mm

Löcher zum Schrauben durchstecken (kein Gewinde)

M3 = 3,8mm

M4 = 5mm