Wer einen 3D Drucker hat, lernt schnell, dass der erste Layer entscheidend ist. Die erste Lage Kunststoff muss in passendem, minimalen Abstand auf das Hotbed aufgebracht werden. Deshalb muss man das Hotbed exakt über die Rändelschrauben passend zum Hotend einstellen. Das ist nervig und geht oft schief.
Es gibt eine Alternative: Autoleveling. Dabei misst der Drucker vor dem Start selbstständig die Position des Hotbeds mit einem Abstandssensor aus. Wenn man das einmal gut eingestellt hat, ist das Drucken fast schon plug&play. Und ein etwas schiefes Hotbed wird sogar automatisch kompensiert. Die Marlin Firmware kann schon alles, was dazu nötig ist. Man braucht eigentlich nur einen passenden Sensor. Es gibt verschiedene technische Ansätze für einen Abstandssensor. Induktive Abstandssensoren scheinen sich durchzusetzen, da diese einfach und robust funktionieren und keine weitere Mechanik / Servos benötigen. Diese Abstandssensoren funktionieren, wenn man eine Alu oder Stahlplatte als Druckplatte hat. Der Sensor reagiert auf Änderungen eines von ihm erzeugten magnetischen Wechselfelds durch eine sich nähernde Permeabilität. Die Reproduzierbarkeit ist erstaunlich hoch. Bei wiederholten Messungen sind die Abweichungen bei mir ca. 20 Mikrometer (siehe Ende des Beitrags).
Hier nun die Anleitung. Das Ganze geht von einem Geeetech IX3 Pro aus. Folgendes wird benötigt:
- Eine angepasste Firmware
- Einen Adapter zur Montage des Sensors an den Extruderschlitten –> selbst drucken
- Induktiver Abstandssensor
- männliche/weibliche Breadboard Kabel für den Anschluss
- es empfiehlt sich folgende Adapter –> https://blog.thesen.eu/3d-drucker-gt2560-board-stromversorgung-5v-12v-und-serielle-schnittstelle-rx-tx-nachruesten/
(es geht aber auch ohne den Adapter)
Ich habe folgenden Sensor über Amazon bestellt.
Im Prinzip sind diese induktiven Abstandssensoren alle ähnlich und vermutlich austauschbar. Wichtig ist, dass die nominale Distanz bei dem gewählten Sensor 8mm beträgt. Die nominale Distanz bezieht sich auf die Annäherung an ferromagnetische Materialien. Diese Distanz schrumpft bei einem Aluhotbed auf ca. 1/3 (genauer Wert hängt vom Sensor Design und dessen Wechselfeld ab). Deshalb rate ich nicht zu 4mm Sensoren. Die Detektionsdistanz wird dann zu klein. Der Sensor soll robust auslösen, bevor die Extruderdüse das Hotbed berührt und selbst ausreichend weit von Hotbed und gedrucktem Objekt entfernt bleiben.
Weiterhin ist die nominale Mindestspannung der Sensoren zu beachten. Ich konnte nur Sensoren mit einer Mindestspannung von 6V finden. Der o.g. Sensor arbeitet aber auch mit 5V hervorragend und erspart so eine Pegelwandlung für den Endstop Eingang.
Firmware anpassen:
Man muss einige Anpassungen in der Firmware vornehmen. Eine angepasste Firmware für den IX3 Pro steht hier zum Download bereit:
Marlin_AutoLeveling_IX3Pro
Die Änderungen habe ich Code mit // ST
markiert. Wenn ich die Zeit finde, werde ich die Änderungen im Einzelnen nochmal in einem eigenen Beitrag durchgehen.
Neben Autoleveling sind noch folgende Änderungen enthalten:
- Baudrate geändert auf 115200
- Maße des IX3 Pro eingetragen (hat Geeetech leider versäumt)
- Drehknopf Richtung herumgedreht (damit das endlich mal stimmt)
- Babysteps aktiviert (damit kann man während des Druckbetriebs die Extruderposition per Menü nachsteuern)
Man kann in der Firmware weiterhin das Abtastschema des Hotbeds wählen. Ich habe 9 Abtastpunkte genommen. Im Prinzip würden 3 Punkte langen, um eine Ebene zu erfassen. Für eine symmetrische Abtastung der Hotbed Ränder als auch eine ausreichende Messwiederholung scheinen mit die 9 Punkte die beste Wahl.
Adapter für die Sensor Montage:
Ich empfehle den Adapter in ABS auszudrucken, da er nahe zum Hotend montiert werden muss. Damit es stabil wird empfehle ich 100% Infill. Den Sensor-Halter dann von vorne ankleben, so dass sich ein rundes Montageloch für den Sensor ergibt. Dazu den Adapter mit der Aussparung neben dem Loch auf die freie Nase des Extruderschlittens setzen.
Hier die STL Datei dazu: InduSensHalter
Dabei den Halter (Drucker von vorne gesehen) nach rechts an den Anschlag schieben. Es entsteht ein rundes Loch für den Halter. Ich habe Stabilit Express genommen.
Den Sensor dann einschrauben. Der Sensor soll ca. 2.5mm Abstand in z-Richtung zwischen Düse und Sensoroberfläche haben. Das Sensorkabel mit den anderen Kabeln wegführen. Hier sind ein drei Fotos von meinem Drucker:
Anschluss an das GT2560 Board:
Auf dem Sensor steht etwas kryptisch drauf, welche Farbe welche Funktion hat.
Braun = VCC
Blau = GND
Schwarz = Sensorausgang
An die Sensorkabel weibliche Breadboard Stecker anlöten und die Lötstellen isolieren.
z-Stop umbauen:
Bisherigen Z-Stop Stecker vom GT2560 Board abziehen. Die Einstellschraube ganz nach oben drehen, damit sie aus dem Weg ist.
ACHTUNG: Die neue Firmware dreht das z-Stop Verhalten herum! – Das heißt, dass der ursprüngliche z-Stop Schalter nicht mehr richtig funktioniert.
Wenn Ihr das Kabel des alten z-Stops nicht mehr verwenden wollt, dann könnt Ihr auch das als Anschluss an den Sensor anlöten. Ein weiblicher Breadboard Stecker passt auch auf den Z-Stop Anschluss am Board. Den Signalausgang des Sensors mit dem OBEREN Pins des z-Stop Anschlusses verbinden.
Den Sensor mit 5V Spannung versorgen:
Bei dem oben referenzierten Sensor sind 5V Versorgungsspannung ausreichend. Der Signalpegel ist dann ohne Levelshifter direkt zum GT2560 Board kompatibel. Die Stromversorgungsanschlüsse kann man per Adapter auf einen Schrittmotortreiber-Steckplatz organisieren. Der Adapter is empfehlenswert, weil man darüber einige freie Pins zur Spannungsversorgung von weiteren Erweiterungen bekommt.
Bauanleitung für den Adapter
Es gibt aber auch eine direkte Lösung, wenn wenn der Adapter ansonsten nicht benötigt wird. Dazu Breadboardkabel mit männlichen Steckern an die Spannungsversorgung des Sensors anlöten. Diese steckt man dann in den Sockel für den unbelegten Schrittmotortreiber. Wenn man nach „A4988 pinout“ googlet, bekommst man die Anschlussbelegung. Es sind die beiden Pins unten rechts (VDD = +5v und GND).
Sensor testen & einmessen:
Drucker einschalten. Messer oder Metallspachtel o.ä. unter den Sensor halten. Es muss im Sensor rot leuchten.
Jetzt musst der Sensor eingemessen werden. Dazu löst man ein Autohome manuell per serieller Konsole mit „G28“ aus. Jetzt fährt der Extruder in die Mitte des Hotbeds und senkt sich ab, bis der Sensor auslöst. Jetzt „G92 Z10“ eingeben.
ACHTUNG: Der Drucker glaubt jetzt, dass noch 1cm Platz zum Hotbed besteht. Das ist natürlich NICHT der Fall!
Jetzt senken wir den Extruder in 0.1mm Schritten ab und kontrolliert mit Papier, wann es passt. Wenn das Papier unbeweglich wird, ist die z-Distanz gefunden: Es ist die Differenz von 10mm MINUS der akuellen z-Position Diese z-Distanz kann man in die Firmware eintragen (kein Zwang – s.u.). In der Firmware sind aktuell 2.6mm eingestellt. Dieser Wert ist bei Euch gegebenenfalls nicht richtig. Wenn die Werte nicht passen, fährt die Extruderdüse eventuell in das Hotbed.
Weiterhin kann man auch noch den x/y Offset ausmessen. Diese Werte müssen nicht auf den Millimeter passen. Bei einem IX3 Pro und dem oben angegebenen Adapter, sind diese Werte ausreichend genau:
#define X_PROBE_OFFSET_FROM_EXTRUDER 19
#define Y_PROBE_OFFSET_FROM_EXTRUDER -43
Ggf die richtigen Werte in der configuration.h eintragen.
Die neue Firmware mit der Arduino IDE auf das GT2560 Board übertragen.
Jetzt muss das Startscript in der Slicer Software angepasst werden. Statt nur G28 kommt jetzt:
G28
G29
Falls Ihr einen anderen z-Wert habt (z.B. 2.9mm) und dieser nicht in der Firmware steht, kann man per Startscript nachregeln. Damit erspart Ihr Euch auch, die Firmware immer zu ändern, wenn sich etwas am Extruder/Sensor ändert:
G28
G29
G92 Z2.9
Der Drucker fährt nun nach G28 den Extruder:
- 5mm nach oben (um den Sensor in jedem Fall aus dem Regelbereich herauszufahren)
- in die Mitte des Hotbeds
- senkt den Extruder ab, bis der Sensor auslöst
- setzt als neue z-Höhe den in der Firmware gesetzten Wert
Nach G29 fährt der Drucker dann in einem Gittermuster 9 Punkte auf dem Hotbed an und misst die Höhe. Diese Werte diesen dazu, eine eventuelle Schräglage des Hotbeds zu korrigieren. Falls im Starterscript per G92 ein anderer Wert gesetzt wird, ist das die neue z-Höhe. Danach beginnt der Druckprozess.
Wenn alles läuft, druckt Ihr jetzt mit Autoleveling.
Reproduzierbarkeit:
Hier habe ich noch aus dem seriellen Log das Ergebnis von zwei hintereinander ausgeführten G29 Kommandos (noch mit originalen und nicht so ganz geraden Stangen & Hotbed Aluplatte). Die Reproduzierbarkeit beträgt 20 Mikrometer. Das ist erstaunlich genau.
Send: G29
Recv: Bed x: 15.00 y: 15.00 z: 1.94
Recv: Bed x: 97.00 y: 15.00 z: 2.45
Recv: Bed x: 179.00 y: 15.00 z: 2.37
Recv: Bed x: 180.00 y: 87.00 z: 2.66
Recv: Bed x: 98.00 y: 87.00 z: 2.62
Recv: Bed x: 16.00 y: 87.00 z: 2.05
Recv: Bed x: 15.00 y: 159.00 z: 2.06
Recv: Bed x: 97.00 y: 159.00 z: 2.46
Recv: Bed x: 179.00 y: 159.00 z: 2.43
Recv: Eqn coefficients: a: 0.00 b: 0.00 d: 2.02
Recv: planeNormal x: -0.00 y: -0.00 z: 1.00
Recv: ok
Send: G29
Recv: Bed x: 15.00 y: 15.00 z: 1.93
Recv: Bed x: 97.00 y: 15.00 z: 2.44
Recv: Bed x: 179.00 y: 15.00 z: 2.38
Recv: Bed x: 180.00 y: 87.00 z: 2.66
Recv: Bed x: 98.00 y: 87.00 z: 2.61
Recv: Bed x: 16.00 y: 87.00 z: 2.04
Recv: Bed x: 15.00 y: 159.00 z: 2.08
Recv: Bed x: 97.00 y: 159.00 z: 2.48
Recv: Bed x: 179.00 y: 159.00 z: 2.45
Recv: Eqn coefficients: a: 0.00 b: 0.00 d: 2.00
Recv: planeNormal x: -0.00 y: -0.00 z: 1.00
Recv: ok
Viel Erfolg. Bei Problemen einfach fragen.
P.S.: Warum bei unter 5€ Kosten nicht alle Drucker vom Hersteller her mit Autoleveling ausgerüstet werden? – Offenbar sind die paar Euro zuviel.