3D Drucker Selbstbau Prusa I3

Nach langem wieder ein neues Projekt

Nach dem Pocket Laser Engraver musste was neues her. Dieses mal war es ein 3D-Drucker (um Teile für die CNC-Fräse zu erstellen).
Ausserdem find ich bewegliche Maschinen eh cool…
Aber ich wollte keinen fertigen Bausatz, sondern mir meinen eigenen zusammenstellen.
Den Rahmen (aus Holz) habe ich über FB erhalten
Schrauben, Muttern usw. von EBay
Stangenset gabs bei Amazon Warehouse als B-Ware für einen sehr kleinen Taler
Hotend, Heizbett und Trapezgewinde aus China
Netzteil ist ein umgebautes ATX-Netzteil aus dem Restelager
Arduino Mega hatte ich noch rum liegen
Ramps 1.4 mit A4988-Treibern auch aus Fernost
Pulleys und GT2-Riemen auch bei EBay

Als Firmware wird Repetier 0.92.9 benutzt, Konfiguration über den Onlinekonfigurator ist relativ unkompliziert und weitgehend selbsterklärend.

Da ich keinen PC ständig laufen lassen möchte wird als Druckerinterface die wirklich geniale Software Octoprint verwendet. Dieses läuft auf einem Raspberry Pi und ist in der Lage, den Drucker mit G-Code zu füttern, der vorher mit einem passenden Programm (Slicer) erstellt wurde. Zudem kann von jedem Rechner oder Tablet der Druckvorgang über die optionale Webcam (oder PI-Cam, diese ist noch besser) zu starten und beobachten.

octoprintZum Erstellen der Druckdateien gibt es zahlreiche Möglichkeiten, sowohl kostenlose wie zum Beispiel RepetierHost (der mehrere Slicer integriert hat und auch gleich direkt drucken könnte), Slic3r, Cura oder auch kostenpflichtige wie z.B. Simplify3D.
Ich benutze für den Prusa derzeit CURA in der 2.x Version, aber auch die 1.5.x funktionieren problemlos. CuraAuch RepetierHost verwende ich gerne.
Repetier
Alle Kunststoffteile wurden auf Thingiverse zusammengesucht,  dabei zeigte sich ein Problem von Open Source: es gibt unzählige Varianten, was zur Folge hatte das einiges nicht so passte wie ich es benötigte. Zudem gab es immer wieder Teile, die nicht meinen Vorstellungen von Haltbarkeit oder Features (z.B. Stabiler Endstop auf dem unteren Motor zum einstellen…) entsprachen. Letzlich hat aber alles soweit gepasst. Hier ein Bild wie er im Moment aussieht. Verkabelung ist noch provisorisch, da ich noch immer was zum Verbessern finde 🙂
20160504_203847
Was im Detail verändert wurde:
Z-Achse hat T8-Trapezspindeln bekommen, die oben gelagert sind
Hotend wurde mit Kühlfinnen bestückt
Kühler für Filament kühlt jetzt auch die Kühlfinnen mit
Filamentführung ergänzt
Y-Schlitten hat Lagerhalter erhalten
Stabiler Endschalter für die Z-Achse
Stabiler Enschalter für die X-Achse (noch nicht optimal)
Einstellbarer Endschalter unter dem Y-Schlitten (Hephestos-inspiriert)
Spanner der X-Achse drückt gegen die Wellen, so wird ein Verziehen der Spindeln verhindert
Kabel mit Sleeve ummantelt
Stabiler Pulley zum Spannen des Riemens der Y-Achse
Hotbed Aluplatte Schrauben versenkt (würde ich nicht mehr machen)
Federn zum einstellen des Hotbeds gegen Silikondämpfer ausgetauscht und Rändelmuttern verbaut zum exakten Einstellen
Netzteilhalter für ATX-Netzteil
RAMPS-Halterung mit 80mm Lüfter
3. Querstange ganz hinten stabilisiert die Stützstreben und hält ein Teil des Netzteilhalters

Was noch fehlt:
Kabelverlegung
Schleppkette (?)
X-Endstop anpassen (damit gewinne ich 2 cm Bauhöhe)
Octopi und Kamera ordentlich verbauen
Mindestlast (Halogenlampe) so verbauen, damit Druckbett beleuchtet wird

Drucken und Einstellen
Nachdem alles mechanisch und elektrisch verkabelt wurde müssen viele Sachen in der Firmware angepasst werden.
Wichtig sind erst mal die Werte, wie weit sich die Motoren drehen müssen um 1 mm zu überbrücken. Für GT2-Antrieb mit 20 Zähnen und 1/16 Microstepping ergeben sich für X und Y ein Wert von ca. 80 Steps /mm.
Für Z ergeben sich ca. 400 Steps /mm.
Extruder wurde auf 150 Steps / mm eingestellt (arbeite noch daran…)

Einstellen der Schrittmotortreiber:
Es handelt sich um China A4988 mit 0.1 Ohm Referenzwiderstand.
Formel zum berechnen der Refernzspannung (gemessen zwischen Masse und Poti-Schleifer)
Vref=Imax*0.7/8*Rsense
Wobei dabei die Motoren angeschaltet sein müssen (ohne +12V konnte ich die Spannungen nicht richtig einstellen!) Die 0.7 kommen von einer Empfehlung, etwas unter dem Strangstrom zu bleiben damit sowohl Treiber als auch Motor nicht überhitzen.
Ich konnte dabei bis 60mm/s als Geschwindigkeit keine Schrittverluste feststellen.

Spannen der Riemen:
Nach Gefühl so gespannt, das sie zwar stramm sind, aber nicht zu fest, ein tiefer Ton beim Zupfen daran sollte gut sein als „Augenmaß“. Bei der Y-Achse musste zudem auf parallelen Lauf der Riemen geachtet werden, damit der sich nicht hin und her bewegt, da er an der Umlenkrolle keine Führung besitzt.

Testdruck:
20160504_204101
Von links nach rechts sieht man die „Evolution“.
Was passiert bei zu hoher Geschwindigkeit? Auch darauf hab ich eine Antwort…
20160504_204318
Mittlerweile drucke ich damit stabil mit 60mm/s
20160504_204149

Problem mit der Kommunikation

Beim drucken ist mir ein Problem aufgefallen: Am Ende des Drucks meldete die Firmware immer wieder „missing line number“ und der Drucker war nur durch Trennen und erneutem Verbinden wieder erreichbar. Nach einigem Suchen habe ich herausgefunden das manche Befehle ohne Linenumber gesendet werden. Jedoch erwartet Repetier, sobald ein mal eine Linenumber gesendet wurde, immer eine Linenumber. Um dieses zu beheben muß im Quellcode der Firmware (also in der Arduino IDE) ein Teil des Codes geändert werden. Hier der Codeabschnitt, der gelöscht oder auskommentiert werden muß:

In der Datei gcode.cpp ab Zeile 244

} else if(lastLineNumber) { // once line number always line number!

if(Printer::debugErrors())

{

Com::printErrorFLN(PSTR(„Missing linenumber“));

}

requestResend();

return;

}
Der Teil prüft ob ein mal eine Zeilennummer mitgesendet wurde und wenn ja, wird immer eine erwartet. Fehlt sie  wird ein erneutes Senden der Zeile des GCode ausgelöst. Nach dem entfernen läuft nun alles so wie es soll. Zusätzlich wurde zur Ermittlung von Übertragungsfehlern die Berechnung einer Prüfsumme in Octoprint aktiviert.

Druckeinstellungen:

Ich nutze derzeit am liebsten CURA als Slicer. Damit dieser seine Arbeit auch so machen kann wie man es sich vorstellt gibt es zahlreiche Einstellungen. Die wichtigsten Punkte möchte ich hier wiedergeben.

img_1082

Hier sieht man ein Beispiel für Raft, Stützstruktur und das eigentliche Objekt.
Zur Verbesserung der Haftung auf dem Druckbett gibt es mehrere Varianten. Gebräuchlich sind Brim und Raft.
Brim fügt um das eigentliche Objekt einen Streifen in variabler Breite hinzu um so die Haftung zu verbessern.
Raft füht unter dem gesamten Objekt eine zusätzliche Schicht ein, auf der das eigentliche Objekt gedruckt werden soll. Dadurch wird es ermöglicht, ein leicht unebenes Bett auszugleichen. Dieser Raft wird genau wie der Brim nach dem Drucken entfernt.
Da 3D Drucker nicht in der Luft drucken können (naja… wenn man Spaghetti mag…) muß unter Freiflächen ab einem gewissen Winkel eine Stützstruktur gedruckt werden, die auch nach dem Drucken entfernt werden muß, je nach Einstellungen geht das mal mehr, mal weniger gut, da sich die Stützstruktur mit dem Objekt verbindet (was nicht gewollt ist). Hier hilft nur experimentieren.
Hier zum Vergleich ein mal nach dem Drucken und dann nach dem Enfernen des unnötigen Stützmaterials.

 

Gedruckt wurde mit 30mm/s und 0.4mm Düse mit 0.15mm Layerhöhe und 0.4mm Linienbreite bei 208° Düse und 72° Heizbett. 72° deshalb, da ich auf der Aluheizplatte noch eine Glasblatte aufliegen habe und die Temperaturdifferenz ca. 10 Grad beträgt.

Neues Upgrade:
Um die Glasplatte zu halten wurden die allseits bekannten Papierklammern benutzt. Da mir diese zu groß wurden habe ich diese ersetzt durch 19″ Schaltschrankmuttern. Zuerst die Mutter entfernt, dann die kleinen Nasen an der Seite abgebrochen. Zum Schluss noch leit zusammengebogen. Damit haben sie die richtige Spannung um die Glasplatte sicher zu halten und sind um Einiges schlanker.

Neues Upgrade 2:
Um auf der X-Achse noch ca. 1,5 cm Fahrweg zu gewinnen habe ich eine neue Halterung für die Umlenkrolle gedruckt. Diese drückt, genau wie meine bisherige auf die Stangen der X-Achse, jedoch ist der Pulley (Umlenkrolle) jetzt dort integriert, somit verlagert sich die Umlenkrolle von der Innenseite des X-Trägers auf die Aussenseite.

Neues Upgrade 3:

Aus dem Land der aufgehenden Sonne kam mein LCD-Controller. Hierfür habe ich auf die Schnelle zwei Halter gedruckt, um das Display auf den Rahmen zu stecken. Nach dem Anschluß musste die Firmware neu erstellt werden, um den Support für das Display zu aktivieren. Hierzu habe ich meine aktuelle Configuration.h bei Repetier hochgeladen und dort die Unterstützung vom Display aktiviert. Leider habe ich zuerst ein falsches ausgewählt. Der richtige Typ für das billige Chinadisplay ist: Smartcontroller from RepRapDiscount on a RAMPS or RUMBA board