Samstag, 18. Oktober 2014

Das unendliche Projekt

Warum gibt es 3D Drucker für 2000€ wenn man sich einen ähnlichen schon für 500€ selbst bauen kann?

Diese Frage hat mich in der letzten Zeit beschäftigt. Einerseits sind die offensichtlichen Punkte einen fertig montierten Drucker zu kaufen offensichtlich. Er muss nicht mehr zusammengebaut werden. Andererseits ist das auch eine Aufgabe, die ich persönlich als sehr faszinierend empfinde.

Nach einigen Wochen der regelmäßigen Benutzung meines Ormerod 1 Druckers kann ich allerdings die Kaufentscheidung für einen fertig montierten und in Betrieb genommenen Drucker verstehen. Die meiste Zeit ist mein Drucker nämlich nicht mit drucken beschäftigt. Es ist leider nicht möglich direkt nach dem Einschalten loszudrucken. Die Mechanismen, die den Druckkopf zum Druckbett referenzieren sollen sind leider (noch) nicht in der Lage an verschiedenen Tagen gleiche Ergebnisse zu liefern. Weiterhin muss ich nach jedem beendeten Druck den Drucker resetten und die Z-Achsen Referenzierung durchführen. Somit kann ich den Drucker leider nicht wie erhofft von einem entfernten Rechner mit Daten füttern, die er dann gedruckt hat, wenn ich nach Hause komme. Das ist im Moment das angestrebte Ziel.

Bis es soweit ist sind mir noch einige Dinge Aufgefallen, die eine Verbesserung verlangen:
  • Das Druckbett ist aus 3mm MDF und alles andere als Stabil. Einige Unfälle haben dazu geführt, dass die Ecken deutlich wegsacken. Noch sind sie leicht oberhalb der Y-Achse, wenn sie allerdings weiter absinken, wird das unweigerlich zum Crash am Ende der Achse führen. Hier muss also eine Stabilisierung eingebaut werden.
  • Die M5 Gewindestange der Z-Ache ist mittlerweile eine 10mm Trapezgewindespindel. Das hat zu einem sehr ruhigen Lauf der Z-Achse und wunderschönen Ergebnissen der Schichten geführt. Allerdings passt der Abstand der Achse noch nicht zur Spindel und so neigt sich die Spindel, je tiefer die Z-Achse steht. 
  • Der kapazitive Sensor der Z-Achse hat eine Reproduziergenauigkeit von 4% das sind bei den Einstellungen zur Zeit ca. 0,3mm und somit ausschlaggebend, ob ein Druck gelingt, oder von vornherein zum Scheitern verurteilt ist.
Allerdings hat sich in der letzten Zeit auch einiges Positive entwickelt. Ich habe den Drucker auf Vibrationsdämpfern stehen. Jetzt kann man sich in dem Raum auch wieder unterhalten, wenn der Drucker aktiv ist. Ich habe außerdem eine Rollenhalterung gedruckt, die die Filamentrolle für den Feeder bereit hält. Auch das funktioniert hervorragend.

Mittwoch, 1. Oktober 2014

Anschnallen und festhalten! 3D-Drucker in Hyperspeed

Die neuse Version des Ormerod Firmware Branches ermöglicht die Einstellung eines Geschwindigkeitsmultiplikators. Zusammen mit einem erhöten Motorstrom kann hier an der Druckgeschwindigkeit gedreht werden. Die Motoren des Ormerod sind für 1,4 A ausgelegt und die Treiber können bis zu 2 A treiben. Dabei ist darauf zu achten, dass die Treiber nur passiv ohne zusätzliche Heatsinks außer dem PCB gekühlt werden. Der obere Berecih der Motorströme sollte also möglichst gemieden werden. Ich habe aktuell die Achsenmotoren auf 1 A und den Extruder bei 800 mA gestellt und erreiche damit bei 300% Druckgeschwindigkeit zufriedenstellende Ergebnisse.
Der Geschwindigkeitsmultiplikator beeinflusst jede Geschwindigkeit des Druckers und kann somit von 0% bis ???% den Drucker auch mal an die Grenzen des Möglichen bringen. Die Bewegungen werden linear Skaliert, was für die Beschleunigungswerte ebenfalls eine skalierung bedeutet. Hierdurch werden im System neue Schwingungen eingebracht, die durch die ruckartigen Start- und Stopbewegungen entstehen. Neben dem erhöhten Geräuschpegel führen die Vibrationen auch zu mechanischen beeinträchtigung. Meine Druckbettbefestigung hat sich im hinteren Bereich gelöst, was dazu führte, das das Bett abgesunken und der Druck damit nach zwei Stunden 300% Druckgeschwindigkeit leider doch noch fehlgeschlagen ist.

Lessons learned:
  • Schraubensicherungslack für Schraube-Mutter alle Verbindungen verwenden
  • Vibrationsdämpfer für den Drucker herstellen
  • Druckgeschwindigkeit im G-Code Generator festlegen und nicht manuell alles beschleunigen
  • Z-Achse ist das ausbremsende Element
  • Große Druckaufträge dauern auch mit 300% Geschwindigkeit sehr lange.
Zum Schluss: Verfahrgesräusche bei 300%

Sonntag, 28. September 2014

3D Drucker Augen zu und kapazitiv testen

Im Rahmen einer kleinen Umbauaktion des Druckers habe ich auch den optischen Sensor gegen einen kapazitiven Nährungesschalter getauscht. Das ging nicht so leicht wie erwartet. Der optische Näherungsschalter wird zum Einstellen der X- und Z-Achse verwendet. Diese Konfiguration kann mit einem kapazitiven Sensor nicht durchgeführt werden, da der Sensor wesentlich größer ist als die kleine Platine des optischen Sensors.
Druckkopf mit vorläufig angebrachtem kapazitiven Sensor zur Druckbettbestimmung
Im Hintergrund der Abbildung kann man den neuen Endschalter der X-Achse erkennen. Der wird, wie der Endschalter der Y-Achse am Duet Board an den Pins neben dem Z-Motor. Dabei wird der Schalter wie der Y-Endschalter angeschlossen. Die LED auf dem Duet Board soll nun leuchten, wenn der Endschalter nicht betätigt wird. Die Löcher zur Montage des Tasters sind im X-Achstenträger schon vorhanden und müssen nicht neu angebracht werden.

Der schwierigste Teil ist es den Endtaster jetzt als Quelle für den Nullpunkt zu etablieren. Dazu muss die Firmware geändert werden. Dank 3D-ES gibt es aber ein script, mit dem man sich das git Repository von dc42 herunterladen kann. Dort muss in der Auswahl allerdings der dev tree und nicht der duet tree aus.

   - git clone -b duet ${FW_REPO}/${FIRMWARE} ${FIRMWARE}
   + git clone -b dev ${FW_REPO}/${FIRMWARE} ${FIRMWARE}

Nachdem das Repository heruntergeladen wurde kann mit 

   ./make.sh && ./make.sh install

Der Code kompiliert und installiert werden. Die zu ändernden Werte befinden sich in der Datei "Platform.h" bei Zeile 120

   - #define Z_PROBE_AXES {true, false, true}
   + #define Z_PROBE_AXES {false, false, true}

Damit wird der Firmware gesagt, dass nur noch die Z-Achse mit Hilfe des Z-Sensors genullt werden soll. Alle anderen Achsen haben eigene Endstops.

Bei der Einstellung des Z-Nullpunkts kann wie in der Anleitung beschrieben vorgegangen werden, nur dass man jetzt einen definierten Schaltpunkt hat und daher der Wert keine Rolle spielt. Ich habe mich langsam an den Nullpunkt herangetastet und dann 1,5mm nach oben gefahren. Der Schaltpunkt des Sensors habe ich dann so eingestellt, dass er gerade an diesem Punkt schaltet. Dann den Punkt noch einmal angefahren und der neue Wert für M31 stand fest.

   M31 Z1.66 P600

Wobei der Wert bei P wie oben schon beschrieben relativ egal ist, da der Sensor einen Schaltpunkt hat ab dem er dann von 0V auf einen festen Wert springt. Dieser Wert ist meistens die Betriebsspannung des Sensors. In unserem Fall ist das aber ehr hinderlich, da der Sensor mit 12V betrieben werden muss. Also ein Spannugnsteiler zwischen Signal und Masse, sodass ein ca. 3V starkes Signal am ADC Eingang anliegt. Den Sensor, wie den Taster für die X-Achse, als einfacher Enschalter zu verwenden scheitert, da der Sensor auf Versorgungsspannung schaltet und nicht auf GND, wie es von den Endschaltern getan ist. Hier kann man eventuell noch etwas verbessern.

Alle Änderungen in der Firmware des Ormerod werden in meinem github Repository eingespielt und stehen zur Verwendung zur Vefügung.