Dienstag, 22. Juli 2014

Ersatz für 624ZZ Lager

Beim zusammenbauen meines nächsten Druckers fehlten mir 4 Lager des Typs 624ZZ, die bei den Idlern verwendet werden um den Gurtzug umzuleiten.
Normalerweise kein Problem das über eBay zu kaufen, aber das ganze dauert einige Zeit und im lokalen Baumarkt gibt es keine Lager, also warum nicht schnell einen Ersatz drucken, der zumindest die Anfangszeit überleben soll, damit ich mit meinem Drucker weitermachen kann.

In OpenScad habe ich dann eine Zeichnung erstellt, welche die Dimensionen zweier 624ZZ Lager hat und an den Rändern noch eine kleine Führung besitzt.

Hier der Openscad Sourcecode
 
difference () {
union() {
cylinder(r=7, h=1);
cylinder(r=6.5, h=9);
translate([0, 0, 8]) {
cylinder(r=7, h=1);
}
}
cylinder(r=2.125, h=9);
}

Bei den Maßen habe ich schlussendlich etwas experimentiert, da mein Drucker nicht ganz so genau ausdrucken kann. Bei einer Druckdauer von ca. 3 Minuten ist ein wenig Trial and Error aber nicht ganz so schlimm.
Sieht dann in OpenScad so aus, das ganze dann im Menü Design -> Export as STL als STL File speicher, dann in Slic3r die STL Datei aufmachen und in Gcode umwandeln. Ich habe eine Schichtstärke von 0,4mm und eine Infill Dichte von 80% gewählt.
Ausgedruckt und eingebaut sieht das ganze dann so aus, ich habe es bei der Y- als auch bei der X-Achse auf der Idler Seite verwendet.
X-Achse Idler
Und hier die Y-Achse

Und hier im Vergleich der original X-Idler
Die Sourcen habe ich auf Thingiverse zur Verfügung gestellt, http://www.thingiverse.com/thing:403584

Montag, 21. Juli 2014

Neuer Drucker der Rahmen

Der Rahmen meines ersten Druckers ist aus Dibond Alu, einem Material das ich unmöglich im lokalen Bbaumarkt erhalte, darum habe ich mich entschlossen den Rahmen aus Holz zu fertigen. Als Basis habe ich einfach eine größere 3-schicht Platte mit einer Stärke von 28 mm verwendet. Sollte eingentlich stabil genug sein.
Als Plan verwende ich die Zeichnung von der RepRap Doku, hier der Link.
Prusa I3 Holz Rahmenteile
Am Bild ist die Bodenplatte für das Heatbed nicht mehr drauf, da ich die Y-Achse schon zusammengebaut habe. Das Ganze habe ich mit herkömmlichen Werkzeugen gemacht, also kein Laser oder CNC Zuschnitt. Eine Stichsäge und eine Kappsäge reichen vollkommen aus, danach noch etwas die Kanten schleifen und fertig.
Ich glaube die Zeichnung ist leider nicht ganz korrekt und einige Verbesserungen müssen noch gemacht werden:
  • Die Führungsstangen der Y-Achse müssen beim untersten Teil durch. Bei meinem bestehenden Drucker sind dazu Schlitze ausgeschnitten
  • Die Y-Achse muss mit der langen Quer Gewindestange am Rahmen befestigt werden, da fehlen noch die Löcher dazu.

Neuer Drucker Y-Achse

Ich habe nun damit begonnen, den zweiten Drucker mithilfe des ersten Drucker zu bauen. Die Plastikteile sind schon vorhanden, und vor einigen Tagen besorgte ich mir die benötigten Metallteile, damit ich die Achsen damit bestücken kann.
Ebenso den Rahmen habe ich aus Holz ausgeschnitten

Als kleine Änderung habe ich anstatt der sonst üblichen Vollmetallstanden Alurohre verwendet, weil mein lokaler Baumarkt ganz einfach keine Vollmetallstangen führt.
Natürlich sind die Alustangen nicht so stabil wie Edelstahl, aber das will ich probieren, falls es nicht klappen sollte muss ich sie ersetzen.
Y-Achse zusammengebaut

Im Bild sieht man die Y-Achse des Prusa I3, dazu benötigt werden folgende Bauteile:
  • M8 Gewindestangen
  • M8 Alu Rohre (ein Sustitut fü die Edelstahlstangen)
  • M8 Muttern gleich eine Packung mit 100 Stück kaufen
  • M8 Beilagscheiben, gleich eine Packung mit 100 Stück kaufen
  • Plastikteile die ich selbst gedruckt habe
  • 1 * Nema 17 Motor
  • 3 * M3 x 10mm Schrauben für die Motor Befestigung
  • 1 * GT2 Pulley wird am Motor befestigt für den Gurtzug
  • 1 * GT2 Timing Belt ca. 50 cm
  • 4 * LM8UU Linearlager
Hier sieht man ganz gut die Eckverbindungen. Es ist etwas trickreich alles zusammenzubauen, und vorallem die Abstände einzuhalten. Sind die M8 Schrauben dann einigermaßen fixiert, dann ich der Rahmen aber stabil. Auf dem Bild sieht man auch ein Alu Rohr das recht lose zwischen den beiden langen Führungen liegt. Das ist habe ich mir als Schablone für den korrekten Abstand zwischen den den beiden langen Führungen gebaut, genau 16,2 cm soll dieser sein.
Die Alurohre werden wie am Bild ersichtlich mittels Kabelbindern fixiert.
y-bushing mit LM8UU Lager auf Alu Rohr
Hier sieht man auch die LM8UU Lager und die passenden Plastikteile die ebenfalls mit Kabelbindern fixiert werden.

Darauf aufgesetzt wird noch der Boden für das Heatbed, das ich aber dadurch, dass ich nur PLA drucken will nicht vorerst nicht anschließen werden.
Y-Asche samt Bodenplatte
Hier sieht man auch die fertig montierte Bodenplatte, die einfach aus Holz gemacht habe. Im Bild fehlt noch die Halterung für den Timing Belt under der Bodenplatte.

Donnerstag, 17. Juli 2014

Das neue Hotend - PEEK GF30

Ich habe auf eBay nach einem Lieferanten einer Hobbed Bolt gesucht, und bin dabei auf einen polnischen Hersteller für Hotends gestoßen der im Set mit zwei Hotends eine Hobbed Bolt gleich mitliefert. Der Preis des Hotends ist sehr günstig, die Beschreibung im Shop wirkt sehr professionell und umfangreich. Hier der Link. Also hab ich mir das ganze vor 4 Tagen bestellt.
Optionen die ich ausgewählt habe
  • Entry Hole = 1,75mm
  • PTFE Insulator Size = 16mm
  • Nozzle Exit Hole = 0,25mm
Hotend unboxed, M3 Muttern, eine Hobbed Bolt und Gewindestangen waren auch noch dabei.
Ich habe gleich das Set mit zwei Hotends bestellt, da es nur geringfügig teurer war und ich Versandkosten zahlen musste. Das Hotend ist assembliert und mach einen guten Eindruck. Die Nozzle und der Heizblock sind aus Messing der Rest aus PTFE. Der NTC und der Thermistor sind mit so etwas wie einem Harzkleber fest im Heizblock eingeklebt. Ob das Hotend gekühlt werden muss habe ich noch nicht rausgefunden, auf der Shopseite war davon nichts zu sehen.
Alle Leitungen sauber gemacht und verklebt.

Als nächstes habe ich versucht das Hotend auf den schon gedruckten Extruder zu bekommen.
Test mit dem frisch gedruckten Extruder


Das Hotend passt perfekt in die Öffnung, beim Kauf musste ich deshalb auch schon den Durchmesser für die Extruder Öffnung angeben, bei mir 16mm. Obwohl es auf diesem Bild recht lang aussieht ist das Ganze kürzer als mein E3D V5 all metal hotend (ca. 1 - 1,5 cm)
Das Hotend wird mit den beiden gebogenen M3 Gewindestangen am Extruder fixiert. Diese Art der Fixierung habe ich noch nie gesehen, scheint aber recht einfach und stabil zu sein.

Die gebogenen M3 Stangen sind noch etwas zu lang
Ob das ganze auch funktioniert versuche ich am Wochenende rauszufinden, das Ergebnis könnt ihr hier lesen. Stay tuned.

Der Replizierte Drucker

Mein Plan ist es mir mithilfe meines ersten 3D Druckers einen zweiten zu bauen, wobei ich bei den Kosten etwas günstiger sein möchte. Mein Plan ist derzeit wie folgt

  • Nema 17 Motoren gekauft über ebay
  • Arduino & RAMPS von ebay
  • Stepper Driver von ebay oder gleich im Set mit dem RAMPS
  • Endstops auch von eBay
  • Rahmen aus Holz, ich hab keinen Lasercutter also normale Holzarbeit
  • Metallteile vom lokalen Baumarkt
  • Hotend von eBay
  • Plastikteile selbst gedruckt aus PLA
  • Ich möchte mit dem Drucker PLA drucken, also verzichte ich auf das Heatbed 
  • Das Netzteil von einem alten Computer
Ich werde jeden Schritt dokumentieren, sodass es auch für Leser möglich ist da ganze leicht nachzuvollziehen.



Dienstag, 15. Juli 2014

Kann man sich einen 3D Drucker selbst bauen?

Als ich begonnen habe mich mit dem Thema zu beschäftigen war ich der Meinung, dass ich mir meinen ersten 3D Drucker quasi aus dem Nichts, also mit Einzelteilen die man im Elektroschrott findet und einigen, aber wenigen gekauften Teilen selbst zusammen bauen kann. Theoretisch ist das durchaus machber, aber praktisch muss man sich eingestehen, dass es für Personen ohne 3D Drucker Knowhow wohl ein aussichtsloses Unterfangen darstellt.

Also wenn ihr noch keinen 3D Drucker habt, bzw. einen benutzt habt, wird das eine harte Nuß.

Aber kurz meine Geschichte zu dem Thema:

Mein Initialzünder für die Idee war ein Artikel der den Bau eines eigenen Laser Engravers aus den Innereien eines DVD-Writers beschrieb. Das Setup bestand aus einem Rapsberry PI den ich schon hatte und einer Steuerungssoftware in Python das ich ganz gut kenne. Dann gings los:

  • Was sind Schrittmotoren?
  • Was ist GPIO am Raspberry PI?
  • Wie kann man Schrittmotoren ansteuern?
  • Was ist Gcode?
  • Wie steuert man einen Laser an?
  • Und wo war nochmal der Lötkolben, den ich am Ende meiner HTL Karriere irgendwo hingepackt hatte?
Den Fragen bin ich anfangs nachgegangen, und habe gleichzeitig meine Elektronik Werkstatt aufgefüllt mit den diversen Dingen die man immer brauchen kann.
  • Breadboard
  • Lötstation
  • Wiederstände, Kondensatoren, Transistoren, Mosfets ...
  • Netzteile 
  • ...
Der Laserengraver hat dann auch eingiermaßen funktioniert, und ich nahm mir vor einen 3D Drucker selbst zu bauen. Vorest war der Plan die benötigten Komponenten großteils aus dem Elektronikschrott zu besorgen, aber leider findet man in modernen Druckern keine Schrittmotoren mehr.
Den Rest, der mir damals bekannt war besorgte ich über ebay z.B. Nema 17 Motoren.

Den Plan die Steuerung mit einem Raspberrypi zu realisieren musste ich aufgeben, weil:
  • Linux kein Realtime OS ist
  • Raspberry GPIO für ein 16-fach Microstepping für 4 Achsen zu langsam ist
  • PWM am Raspberry nur in Software geht
  • Python einen zu hohen Interpreter Overhead hat
  • der Raspberrypi zu wenige GPIO Ausgänge hat
  • und weil ein Microcontroller dafür einfach predestiniert ist
Ich musste an dieser Stelle eingestehen, dass ein Arduino, der im Vergleich zum Raspberrypi wie ein Taschenrechner ausgestattet ist, für diese Aufgabe viel besser geeignet ist. Weiters gibt es auf dieser Basis schon so viele Erfahrungen und auch fertige Firmwares, dass es fast so wäre das Rad neu zu erfinden.

Irgendwann Anfangs dieses Jahres entshied ich mich dann auch den vollkommenen Do-It-Yourself Ansatz aufzugeben und einen Bausatz über ebay zu bestellen.

Der Bausatz ist jetzt in Betrieb und funktioniert, und jetzt, mit dem ganzen Wissen und einem funktionierenden 3D Drucker vor mir würde ich die initiale Frage so beantworten:
  • Man kann einen 3D Drucker billiger realisieren als der Bausatz den ich gekauft habe
  • Es ist möglich einige Teile des 3D Druckers selbst zu produzieren (Plastikteile, Rahmen aus Holz)
  • Metall muss gekauft werden (Schrauben, Muttern, Gewindestangen, Führungsstangen, etc.)
  • Einige Dinge sollten gekauft, werden weil man sich einfach viel Arbeit spart, und der Preis sehr gering ist (RAMPS 1.4 assembled, Endstops, assembled)
  • Elektronik muss gekauft werden (Arduino Mega)
  • Hotend muss gekauft werden
  • ein ATX Netzteil vom Elektronikschrott kann als Netzteil dienen
  • Motortreiber müssen gekauft werden (gibts meist im Set mit RAMPS 1.4)
  • Eine Elektronikgrundausstattung sollte man haben
  • Elektronikschrott Schrittmotoren haben meist eine geringere Auflösung als die Standard Nema 17 Motoren, und oft ist es schwierig diese Motoren einzubauen.
Meinen nächsten 3D Drucker habe ich vor nach diesen Ansätzen zu bauen, dazu dann mehr in diesem Blog. Also die zweite Antwort auf die eingehende Frage

Man kann sich einen 3D Drucker selbst bauen, wenn man sich mit der Thematik schon beschäftigt hat und auch einen 3D Drucker schon einmal benutzt hat und man muss ca. 300€ investieren um die benötigten Teile, die man nicht selbst herstellen kann, einzukaufen.

Die Plastikteile für den nächsten Drucker sind schon gedruckt, auch Nema 17 Motoren, die Stepper Treiber usw. habe ich schon

Montag, 14. Juli 2014

Hotend PID Autotuning

Um eine definierte Termperatur am Hotend zu erhalten gibt es in Marlin zwei Methon. Die Simplere, BANG-BANG genannt begnügt sich damit das Hotend einfach einzuschalten, wenn die Temperatur unter der definierten liegt und auszuschalten wenn sie darüber ist.
Die zweite Methode benutzt PWM um die Temperatur so konstant wie möglich zu halten. Damit diese Methode funktioniert benötigt die Firmware drei Werte, Kp, Ki und Kd. Glücklicherweise verfügt Marlin über eine Methode um diese Werte automatisch zu erhalten.

M303 E0 S200 C8 

Dieser Befehl für das PID autotune programm aus, definiert den ersten Extruder (E0),eine Solltemperatur von 200 °C, und 8 Cycles rund um die Temperatur. Als Ausgabe erhält man von der Firmware die drei genannten Werte, die man in die Firmware (Configuration.h) oder als eigenen Gcode Header einbauen kann. Meine Werte habe ich in Slic3r als custom start gcode eingebaut.

M301 P25.38 I1.40 D115.19 ; set PID for extruder

Acceleration und Jerk

Zwei Einstellungen der Firmware beeinflussen das Verhalten des 3D Druckers erheblich, und die möchte ich jetzt etwas genauer analysieren.

Acceleration

Wenn man Beschleunigung nicht berücksichtigt, dann erzeugt das Slicer Programm einfach GCode der quasi von 0-100 in 0 sekunden beschleunigen müsste. Das ganze läßt sich zwar in Software leicht realisieren, aber wenn es um physikalische Bewegungen geht, wie etwa die Steuerung eines Schrittmotors ist das eigentlich nicht möglich. Der Schrittmotor, bzw. die ganze Achse hat nun einmal eine gewisse Trägheit die eine unedliche Beschleuinigung verhindert.
Zu diesem Zweck gibt es folgende Parameter in der Marlin Firmware, die unbedingt geändert werden müssen, da sie in der Default Einstellung viel zu hoch sind:

#define DEFAULT_MAX_ACCELERATION      {180,180,10,200}    // X, Y, Z, E maximum start speed for...
#define DEFAULT_ACCELERATION          60    // X, Y, Z and E max acceleration in mm/s^2 for printing moves
#define DEFAULT_RETRACT_ACCELERATION  60   // X, Y, Z and E max acceleration in mm/s^2 for retracts

DEFAULT_ACCELERATION definiert die Standardbeschleunigung und  DEFAULT_MAX_ACCELERATION die obere Grenze.
Bei einer Suche im Internet habe ich auch User gefunden welche die Werte noch wesentlich niedriger angesetzt haben.
Sind die Werte zu hoch, so kann es durchaus sein, dass der Motor Schritte ausläßt und deshalb Fehler im Druck passieren, sind die Werte zu niedrig, so beeinträchtigt das die Druckgeschwindigkeit. Es bleibt also durchaus Raum für Trial and Error.
Will man die obigen Werte als GCODE dann sind folgende M-Codes zu verwenden

M201 X180 Y180 Z10 E200 # DEFAULT_MAX_ACCELERATION
M204 S60 T60 # DEFAULT_ACCELERATION and DEFAULT_RETRACT_ACCELERATION

Die M-Codes können übrigens auf http://reprap.org/wiki/G-code#M201_-_Set_max_printing_acceleration nachgelesen werden.

Jerk

Jerk ist der maximale Geschwindigkeitsunterschied, der ohne Beschleunigung ausgeführt werden kann. Wenn JERK zum Beispiel 20.00 mm/s wäre und eine Geschwindigkeitsänderung von 0-20 mm/s benötigt wird, dann kann dies ohne Beschleunigung ausgeführt werden.

// The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously)
#define DEFAULT_XYJERK                20.0    // (mm/sec)
#define DEFAULT_ZJERK                 0.4     // (mm/sec)
#define DEFAULT_EJERK                 5.0    // (mm/sec)

Wie üblich ist die Z-Achse die Trägste und kann nicht so schnell bewegt werden, der Extruder ist ebenso unabhängig einstellbar.
Der Begriff JERK kommt aus den GRBL Wurzeln von Merlin.
Bei mir sind diese Werte (noch) default.

Montag, 7. Juli 2014

Der 3D Print Software Stack

Was ich zu Beginn meiner 3D Druck Karriere noch nicht wußte, war welche Software Produkte man in welcher Abfolge für das Erzeugen eines Drucks benötigt. Hier nochmal eine grobe Übersicht, welche Schritte und welche Produkte notwendig sind.

Ich beschränke mich hier ausschließlich auf OpenSource Software.

Zeichnen

Grundlegend für einen 3D Drucke ist eine CAD Zeichnung, die man in einem x-beliebigen 3D CAD Programm erstellen kann.
Einige Beispiele sind:
Es gibt sicher noch etliche Programm die 3D Modelle erzeugen können, alle sollten aber zumindest die Möglichkeit haben eine Zeichnung im STL Format zu exportieren.
Die nicht CAD geübten sollten sich auf Thingiverse umschauen und fertige Zeichnungen suchen.

Slicen

Die vorhandene CAD Zeichnung im STL Format, kann noch nicht als Eingabe für den 3D Drucker gebraucht werden, da sie keinen Schichtenaufbau beschreibt. Die Aufgabe des Slicers besteht nun darin aus einem in der Zeichnung definierten Volumen einzelne Schichten zu extrahieren, und jede Schicht in GCODE zu übersetzen, der direkt als Eingabe für die Firmware verwendet werden kann.
Die gängigsten Programm sind
Als Ausgabe erhalten wir vom Slicer eine GCODE Datei. Wer sich dafür interessiert, sollte die Datei einfach mal mit einem Editor aufmachen. Die einzelnen Befehle beschreiben direkt die Bewegungen der einzelnen Achsen (X, Y, Z) und der Extruder (E) in Millimetern. Zusätzlich gibt es noch eine Fülle an M-Codes die spezielle Funktionen des Druckers, wie z.B. das Heatbed ausfzuheizen, auslösen.

Hostsoftware

Die Hostsoftware dient dazu die Gcode Befehle meist über eine virtuelle serielle Schnittstelle an die Firmware auf dem Controller zu senden. Diese Software verfügt meist aber auch noch über eine grafische Darstellung und Kontrollmöglichkeiten um die Motoren und den Extruder auch ohne GCODE zu steuern. Das ist wichtig um z.B. das Heatbed zu kalibrieren, oder einen Filament Stau zu beheben indem man einfach den Extruder einige Millimeter rückwärts fahren läßt.
Die Vertreter die ich kenne
Es wäre aber durchaus machbar einfach die bestehende GCODE Datei an die Serielle Schnittstelle zu schicken.


Firmware

Die Firmware ist am Microcontroller installiert und kommuniziert über die serielle Schnittstelle mit der Hostsoftware. Primäre Aufgabe der Firmware ist die Steuerung der 5 Motoren(X, Y, 2*Z, Extruder), des Hotends, des Heatbed, der Überwachung der Endstops und die Temperaturüberwachung.

Aus den empfangenen GCODES erzeugt die Firmware STEP + DIRECTION Impulse für die Stepper Motor Treiber, die Umrechnung ist nicht ganz trivial und der Interessierte sollte sich mal auf der GRBL Seite schlau machen.
Die gängigste Firmware bei REPRAP basierten Druckern ist wohl Marlin.

Wie man die Firmware auf den Arduino Controller bekommt beschreibe ich in einem anderen Artikel, das ist als Voraussetzung auch nur einmal zu erledigen und reicht dann für viele Drucke.

E3D V5 Coldend wird zu warm - Filament Stau

Ich bin einem Problem auf der Spur, das mich die letzten Tage beschäftigte. Immer wenn ich mehrere Stücke oder ein einzelnes großen Stück drucken wollte, quittierte mein Drucker den Dienst, kein Plastik kam mehr aus dem Hotend.
Nach einigen Recherchen habe ich einen Verdächtigen:
Das Coldend meines Hotends

Hotend, hatte ich ja schon einmal gehört, aber was zu Geier ist denn das Coldend.

Das E3D V5 Hotend besteht aus einem Teil der heiß sein soll, da an dieser Stelle das Filament geschmolzen und durch die Nozzle gedrückt werden soll. Hier soll die eingestellt Temperatur erreicht werden, bei PLA ist das bei mir so ca. zwischen 195 und 215 Grad Celsius.
Der Zuleitungskanal, in dem das Filament transportiert wird, soll aber keineswegs heiß werden, da sonst das FIlament nicht mehr so gut vom Extruder transportiert werden kann, deshalb hat das E3D V5 auch oberhalb des kubischen Heizblocks den runden Kühlkörper mit einem Lüfter drauf.

Ein Hotend besteht also aus zwei Bereichen, einem kalten und einem warmen und am besten sollte das thermisch getrennt sein, was natürlich nicht ohne Aufwand geht. Beim E3D gibt es keine thermische Isolierung sondern eine aktive Kühlung mit einem Lüfter.
Wichtig ist dabei, dass die Kühlung knapp oberhalb der Nozzle beginnt.

Da der miteglieferte Fan Mount und das Groove Mount Plate bei mir nicht passten, bzw. wackelten habe ich es gegen eine Modell von Thingiverse getauscht, und bin mit der Stabilität durchaus zufrieden.
Was mir jetzt aber bei meinem Hotend Stau Problem erst auffällt, ist dass die Kühlung bei dem Design weiter oben anfängt.

In einem Forum von E3D habe ich gelesen, dass der Kühlkörper nie so heiß werden darf, dass man ihn nicht mehr mit der Hand anfassen kann, bei mir nach längerem Druck definitiv nicht der Fall.
Meine temporäre Lösung ist im Augenblick ein 100cm Lüfter der dem Kühlkörper von hinten ordentlich Luft zukommen läßt.

 Aus dem Forum habe ich auch noch die gängigsten Gründe für einen Filament Stau:
  • Temperatur ist zu niedrig, das Filament ist nicht flüssig genug
  • Das Coldend und der Transportkanal werden zu heiß, das Filament verflüssigt sich zu früh und kommt nicht bis zur Düse
  • Der Extruder ist zu fest eingestellt, sodass das Filament verformt wird, und deshalb im Transportkanal eine zu hohe Reibung verursacht.
  • Der Extruder ist zu locker eingestellt, sodass das Filament nicht mit genügend Kraft weiter transportiert wird
  • Der Motor wird mit zuwenig Leistung versorgt, sodass er nicht genügend Kraft hat das Filament durch das Hotend zu pressen. Man kann dies am Stepper Driver regulieren, ich habe meinen Driver auf 0.50V eingestellt.
  • Die Filament Qualität ist zu schlecht, insbesondere der Durchmessers und die Form des Filaments sollten konstant bleiben.
  • Die Druckgeschwindigkeit ist zu hoch und/oder die Temperatur ist zu niedrig. Je höher die Geschwingikeit, desto heißer muss das Hotend sein um das Plastik schnell genug zu erhitzen.
Ich starte einen größeren Druckjob, der lt. Pronterface 1:36:00 dauern wird. Wenn meine Kühlung nicht ausreicht, so sollte der Druck nach ca. 30-40 Minuten ins Leere.

Samstag, 5. Juli 2014

Prusa I3 Achatz Edition Slic3r Einstellungen

Hier zur Dokumentation meine Slic3r Einstellungen wie ich sie derzeit verwende, und einigermaßen zufrieden bin.

# generated by Slic3r 1.1.5 on Sat Jul  5 15:11:58 2014
avoid_crossing_perimeters = 1
bottom_solid_layers = 3
bridge_acceleration = 0
bridge_flow_ratio = 1
bridge_speed = 60
brim_width = 0
complete_objects = 0
default_acceleration = 0
dont_support_bridges = 1
external_perimeter_speed = 70%
external_perimeters_first = 0
extra_perimeters = 1
extruder_clearance_height = 20
extruder_clearance_radius = 20
extrusion_width = 0
fill_angle = 45
fill_density = 20%
fill_pattern = honeycomb
first_layer_acceleration = 0
first_layer_extrusion_width = 200%
first_layer_height = 90%
first_layer_speed = 30%
gap_fill_speed = 20
gcode_comments = 0
infill_acceleration = 0
infill_every_layers = 1
infill_extruder = 1
infill_extrusion_width = 0
infill_first = 0
infill_only_where_needed = 1
infill_speed = 60
interface_shells = 0
layer_height = 0.4
min_skirt_length = 0
notes =
only_retract_when_crossing_perimeters = 1
ooze_prevention = 0
output_filename_format = [input_filename_base].gcode
overhangs = 1
perimeter_acceleration = 0
perimeter_extruder = 1
perimeter_extrusion_width = 0
perimeter_speed = 30
perimeters = 2
post_process =
raft_layers = 0
resolution = 0.1
seam_position = aligned
skirt_distance = 6
skirt_height = 1
skirts = 1
small_perimeter_speed = 80%
solid_fill_pattern = rectilinear
solid_infill_below_area = 70
solid_infill_every_layers = 0
solid_infill_extrusion_width = 0
solid_infill_speed = 100%
spiral_vase = 0
standby_temperature_delta = -5
support_material = 0
support_material_angle = 0
support_material_enforce_layers = 0
support_material_extruder = 1
support_material_extrusion_width = 0
support_material_interface_extruder = 1
support_material_interface_layers = 3
support_material_interface_spacing = 0
support_material_interface_speed = 100%
support_material_pattern = honeycomb
support_material_spacing = 2.5
support_material_speed = 60
support_material_threshold = 0
thin_walls = 1
threads = 2
top_infill_extrusion_width = 0
top_solid_infill_speed = 80%
top_solid_layers = 3
travel_speed = 80

Im Augenblick habe ich nur mehr ein Problem:
Bei größeren, bzw. längeren Ausdrucken verstopft mir die Düse nach ca. 40 min, aber auch das werde ich noch rausfinden.

Wie genau sind 3D Ausdrucke

Nachdem ich nun mit meinem 3D Drucker die ersten Hürden genommen habe, möchte ich herausfinden, wie genau ein Ausdruck ist, d.h. die Diemensionen zur Zeichnung vergleichen.Ich habe dazu ein Kalibrierungsobjekt aus Thingieverse verwedent, das ihr hier finden könnt: http://www.thingiverse.com/thing:382453
Ich versuche hier gar nicht zu erklären, wie man kalibrieren muss, es geht mir diesmal nur um eine Feststellung.


Bottom : 29.96 x 29.88
Top: 29.95 x 30.12
Height: 29.58
Thickness : 5.08 - 5.2

Alle Angaben sind in mm.
Mit Ergebnis bin ich einstweilen sehr zufrieden, ich halte mal PI x Daumen fest, dass der Drucker +/- 0.2mm Toleranz besitzt.

Es wäre interessant ob andere User diese Toleranz akzeptieren, oder ihren Drucker noch weiter kalibrieren.

Fehler: Ausdruck seitenverkehr

Endlich habe ich meinen Drucker soweit, dass Ausdrucke in einer annehmbaren Qualität gedruckt werden, und ich beginne als erstes eingie Teile meines Druckers nachzudrucken, damit ich Ersatzteile habe, doch als ich das erste Zahnrad ausdrucke, stimmt was nicht
Das rechte Zahnrad entspricht dem original, aber das linke ist Seitenverkehrt, aber warum. Zuerst dachte ich an eine Einstellung in Slic3r oder Protnerface, die fälschlicherweise aktiviert habe, wäre ja kein Wunder bei dem Trial and Error Spiel das ich bis jetzt gemacht habe.
Die Software ist nicht schuld, es war die Hardware. Ich habe meinen Achatz mangels besserem Wissens falcsh aufgebaut und den Y-Motor hinten angebracht, vorne befindet sich der Endstop. Als ich den Drucker in Betrieb genommen habe, stellte ich Marlin einfach so ein, dass sich der Drucker richtig bewegt, und das Homing funktioniert. Bei den ersten Ausdrucken bemerkte ich auch noch nicht, dass sie spiegelverkehrt waren, es handelte sich auch keist um symmetrische Bauteile.
Hier ein Bild meines Prusa I3 Achatz Edition.
Wie man am Bild sieht, befindet sich der Y-Motor hinten, der Endstop vorne.
Da ich die Kabelführung nicht neu machen wollte, habe ich kurzerhand die Einstellung in Marlin folgendermaßen geändert.

-#define INVERT_X_DIR true    // for Mendel set to false, for Orca set to true
+#define INVERT_X_DIR false    // for Mendel set to false, for Orca set to true
 #define INVERT_Y_DIR false    // for Mendel set to true, for Orca set to false
-#define INVERT_Z_DIR true     // for Mendel set to false, for Orca set to true
+#define INVERT_Z_DIR false     // for Mendel set to false, for Orca set to true
 #define INVERT_E0_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
 #define INVERT_E1_DIR false    // for direct drive extruder v9 set to true, for geared extruder set to false
 #define INVERT_E2_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
@@ -318,7 +318,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
 // ENDSTOP SETTINGS:
 // Sets direction of endstops when homing; 1=MAX, -1=MIN
 #define X_HOME_DIR -1
-#define Y_HOME_DIR -1
+#define Y_HOME_DIR 1
 #define Z_HOME_DIR -1

Ich habe also einfach eingestellt, dass Y nicht invertiert ist.

Fehler: Ausdrucke sind zu nieder

Jetzt habe ich meinen Drucker soweit kalibriert, sodass eigentlich alles passen sollte, aber bei dem Versuch ein kleines Zahnrad zu drucken, habe ich immer das Problem, dass das Stück einfach zu klein rauskommt, irgendwie gequetscht.Zusätzlich macht mein Drucker beim Start eines Ausrucks komische Geräusche, die wahrscheinlich dadurch verursacht werden, dass die Z Achse zu schnell bewegt wird.
Wie beides zusammenhängt werde ich gleich noch erklären hier zuerst mal ein Bild von einem Zahnrad wie es nicht sein sollte.
Gestaucht, wäre wohl der richtige Ausdruck, aber warum.
Nach langem stöbern bin ich dann doch auf des Rätsels Lösung gekommen.

Da ich Merlin selbst installiert habe und damit auch die Basiskonfiguration verwendet, spricht die Firmware die Motoren mit einer zu hohen Bsschleunigung an, insbesondere die Z-Achse die beim Achatz bei weitem nicht dieses Tempo mithalten kann. Ich denke auch alle anderen 3D Drucker hätten mit diesen Werten ein Problem.

Hier der Diff zur Originalkonfiguration

+#define DEFAULT_AXIS_STEPS_PER_UNIT   {80, 80, 3970.588235294, 602.898453333}  // default steps per unit for Ultimaker
+#define DEFAULT_MAX_FEEDRATE          {300, 300, 3, 25}    // (mm/sec)
+#define DEFAULT_MAX_ACCELERATION      {1000,1000,5,10000}    // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older v

-#define DEFAULT_AXIS_STEPS_PER_UNIT   {78.7402,78.7402,200.0*8/3,760*1.1}  // default steps per unit for Ultimaker
-#define DEFAULT_MAX_FEEDRATE          {500, 500, 5, 25}    // (mm/sec)
-#define DEFAULT_MAX_ACCELERATION      {9000,9000,100,10000}    // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older
-
-#define DEFAULT_ACCELERATION          3000    // X, Y, Z and E max acceleration in mm/s^2 for printing moves
-#define DEFAULT_RETRACT_ACCELERATION  3000   // X, Y, Z and E max acceleration in mm/s^2 for retracts
+#define DEFAULT_ACCELERATION          500    // X, Y, Z and E max acceleration in mm/s^2 for printing moves
+#define DEFAULT_RETRACT_ACCELERATION  500   // X, Y, Z and E max acceleration in mm/s^2 for retracts


Insbesondere die DEFAULT_MAX_ACCELERATION muss drastisch verringert werden, damit alles klappt. Eigentlich hat mein 3D Drucker nicht das Werkstück gestaucht, sondern eigentlich nur Steps verloren, weil das Tempo nicht umgesetzt werden konnte.
Und als netter Nebeneffekt verschwand damit auch das komische Geräusch beim starten eines Druckes. Slic3r baut bei jedem Start standardmäßig eine Z +5 Bewegung ein, die bei dem Tempo einfach nicht richtig umgesetzt werden konnte.

So schaut meine Werkstücke nun aus:
Auch sie Maße passen jetzt +/- 0.2 mm, damit bin ich vorerst zufrieden.
Wer jetzt genau hinsieht, erkennt auch gleich noch ein zweites Problem, das ich gelöst habe, aber dazu mehr im nächsten Artikel.