Auto-Leveling für den Anet A6

Leveln macht einfach keinen Spaß. Auch wenn es durch die Silikonpuffer deutlich seltener geworden ist, wollte ich das Leveln wenn möglichst ganz vermeiden. Ich hatte mir schon vor ein paar Wochen einen kapazitiven Sensor  (er detektiert im Gegensatz zum induktiven Sensor auch Glas) bestellt und ihn mit dieser Halterung (18mm) montiert. (Dafür waren wegen der Schleppkette ein paar Modifikationen nötig, mit denen ich aber noch nicht zufrieden bin – deshalb gibt es auch noch kein modifiziertes Thing auf Thingiverse.) Für die passende Firmware und die Verdrahtung war erst jetzt Zeit.

(… 2 Monate später…) Nach endlosen Versuchen stellte sich heraus, dass der Sensor kaputt geliefert wurde… Grmpf! Nunja, jetzt ist der neue da und jetzt ist endlich wieder Zeit!

Hardware

Glücklicherweise funktioniert der Sensor auch mit 5V, sodass er direkt an das Mainboard an den Z-Schalter-Anschluss angeklemmt werden kann (ohne Spannungsteiler und Diode!). Hierfür habe ich mir den entsprechenden Stecker nachgekauft, da nun drei statt nur zwei Leitungen angeschlossen werden und ich eine saubere Lösung wollte. Dank der langen Recherche (wegen des defekten Sensors) habe ich eine Möglichkeit gefunden, wie der Z-Endstop als Backup erhalten bleiben kann.

(Wieder Pech gehabt!) Leider haben bei mir die 5V nicht ausgereicht, um bei einem genügend großen Schaltabstand zu messen, so dass ich auf die 12V-Verdrahtung (dann mit 1N4148-Diode) ausgewichen bin:

Nicht wundern, das schwarze Kabel muss tatsächlich rechts in den Stecker (wenn der USB-Anschluss des Mainboards oben ist 😉 ), weil das nicht als Masse aus dem Sensor kommt, sondern als Signalleitung. Masse ist blau.

Die 12V habe ich direkt vor einem der Mosfets abgegriffen, man kann natürlich auch direkt ans Netzteil gehen. Bevor das schwarze Kabel aus dem Sensor ins Mainboard geht, muss eine 1N4148-Diode mit dem schwarzen Strich Richtung Sensor dazwischen geschaltet werden.

Wenn bei eurem Sensor der Schaltabstand bei 5V groß genug ist, dann kommt das braune Kabel einfach auf den mittleren Anschluss der Z-Endstop-Buchse (da kommen die +5V raus). Die Variante für den Z-Stop als Backuplösung habe ich aus diesem Artikel.

Ich habe mich letztlich für eine Mischung aus 12V und Endstop-Backup entschieden, wie sie in diesem Artikel aufgezeichnet ist (die Macher von chinadrucker.de können schönere Schaltbilder als ich 🙂 ). Allerdings musste ich statt den dort aufgezeichneten äußeren Anschlüssen einen äußeren und den mittleren nehmen (C und NO). Mein Sensor ist nämlich normal offen (NO), was bedeutet, dass der Endstop-Schalter ebenfalls so angeschlossen sein muss (wo die passenden Anschlüsse am Schalter sind, kann natürlich je nach Revision des A6 oder A8 anders sein).

Nun bringt ihr den Sensor so an, dass er höher als die Nozzle sitzt (klar, sonst würde er über den Druck schleifen. Die Größe von Abstand 3 im Schaubild ist völlig irrelevant, es muss nur etwas Platz da sein.) und tief genug, dass er auslöst, (deutlich) bevor die Nozzle euer Hotbed berührt. Bei meinem Sensor war das leider wenig mehr als 1mm, aber probiert es einfach aus. Dabei solltet ihr schauen, dass ihr die kleine Schraube für den Schaltabstand (1) nicht außer Acht lasst. Probiert einfach ein bisschen in 0,1mm-Schritten rum, dass ihr da einen guten Mittelweg findet. Der Abstand zwischen Nozzle und Bed (2) bei Schaltabstand zum Sensor (wie im Schaubild) ist dann auch das Z-Offset (2) , das ihr entweder in die Configuration.h eintragt oder (mMn wesentlich einfacher) per Terminal (Pronterface UI in Cura 15.04 oder Octoprint) der Firmware mitteilt.

Software

Glücklicherweise liegt dem oben erwähnten Sensorhalter schon eine passende Konfigurationsdatei für die Firmware bei, was mir viel rumprobieren erspart hat. Die gilt übrigens auch für diesen Sensorhalter, der direkt eine Schleppkette dabei hat.

Um das Autolevelling nutzen zu können, braucht der A6 ein Upgrade auf SkyNet3D oder Marlin. Eine gute Anleitung für die Installation von SkyNet3D findet ihr bei den Plastikjunkies (deshalb erspare ich euch eine weitere Version von mir), allerdings ist dort eine ältere Version zum Download verlinkt. Die Installation der neueren Versionen wie auch die von Marlin sollte analog dazu laufen.

Als nächstes gilt es unbedingt zu beachten, dass ab jetzt das Homing/“Home all“ etwas anders läuft als vorher. Statt alle Endstops abzufahren, werden nur X und Y angefahren und dann der Druckkopf in die Mitte (zumindest ungefähr) des Druckbereichs gefahren und nähert sich langsam dem Bett, bis der Sensor auslöst. Es ist also extrem wichtig, dass euer Sensor funktioniert (also vorher schon mal getestet wurde). Ansonsten habt ihr minimal Zeit um beim Schieflaufen noch schnell die Reset-Taste zu drücken, bevor es eure Nozzle oder euer euer Heatbed zerstört!

Damit Cura (oder welchen Slicer ihr auch immer benutzt) das Autobedlevelling auch macht, müsst ihr dort wo in eurem Start-GCode (in Cura bei den Drucker-Einstellungen) das normale Autohome steht (in der Regel einfach G28 oder G28 X0 Y0 und G28 Z0 wie bei mir) stattdessen G28 und in die nächste Zeile G29 eintragen

Nun ging es bei mir mit der englischen Anleitung von SkyNet3D weiter – und das ohne Probleme und großes Nachdenken. Wer kein Englisch versteht, oder meine Kommentare lesen möchte:

Bevor es los geht, müsst ihr eine Möglichkeit haben, euren A6 oder A8 per Terminal zu steuern. Die gebräuchlichen Wege sind Pronterface UI in Cura 15.04* (neuere Versionen von Cura haben diese Möglichkeit nicht mehr!) oder Octoprint. Alle folgenden orangen Befehle gebt ihr ins Terminal ein.

Im Kreis der Button, der Pronterface aufruft (aber erst bei einer geladenen stl-Datei erscheint). Der Pfeil zeigt auf die Eingabezeile des Terminals. Links im Kasten der Start-GCode fürs Autolevelling. Achtet darauf, dass der Drucker wirklich verbunden ist („Operational“ und Temperaturanzeige in der Statusleiste), eventuell müsst ihr in den Druckereinstellungen den COM-Port extra auswählen und die Baudrate auf 115200 stellen.

Zuerst das Hotbed und die Nozzle auf normale Drucktemperatur bringen (wichtig, weil das Leveln in Zukunft im aufgeheizten Zustand geschieht und sich die Bauteile unter Hitze ausdehnen). Währenddessen könnt ihr schon mal ein eventuelles Z-Offset zurück auf Null setzen. (Für alle nachfolgenden Befehle gilt übrigens: Groß- und Kleinschreibung beachten!) M851 Z0 und das dann in den Speicher schreiben: M500. Darauf folgt mit G28 ein Homing, was nun wie schon erwähnt in der Mitte des Druckbetts endet (zumindest für den Sensor). Damit die Nozzle in die Mitte kommt gebt G1 X110 Y110 ein (es sei denn ihr habt euer Druckbett in der Größe modifiziert. Dann errechnet dessen Mitte…).

Jetzt kommt der etwas aufwändigere Teil: Wie oben schon erklärt, gilt es jetzt das Z-Offset herauszufinden. Dazu fahrt ihr jetzt vorsichtig in 0,1mm-Schritten die Nozzle so dicht an euer Heatbed, dass dazwischen nur noch ein Stück Papier passt (in der Anleitung von SkyNet3D wird von A4-Papier gesprochen, der sonst übliche Kassenbon geht bestimmt auch. Wenn ihr mehr Sicherheit für den Anfang möchtet nehmt das normale Papier 😉 ). Kratzt die Nozzle auf dem Papier, sagt ihr dem Drucker mit G92 Z0, dass dies der neue Nullpunkt ist. Dann fahrt ihr mit G30 X110 Y110 noch einmal das Bett mit dem Sensor an und ihr bekommt nun das Z-Offset angezeigt. Im Terminal in der vorletzten Zeile sollte etwas stehen wie:

< Bed X: 110.00 Y: 110.00 Z: 3.27

Tada! Der rote Wert ist euer (positiver!) Z-Offset-Wert. Diesen tragt ihr nun (mit Minus!) mit M851 Z-3.27 (natürlich muss da dann euer Wert stehen) in die Firmware ein und speichert es mit einem M500. Wenn alles gut gegangen ist, meldet SkyNet3D „echo:Settings Stored (381 bytes)“ und mit viel Glück seid ihr fertig.

Nun kommt die Phase des Testens, und des Ausprobierens, um euer ungefähr gemessenes Z-Offset weiter zu verbessern. Also: Z-Offset einstellen, drucken, messen (oder gucken und fühlen) und wiederholen.

*Ladet euch hier die Version 15.04.6 herunter, richtet euren Drucker wie gewohnt ein. Unter Einstellungen > Druck-Fenster findet ihr die Option Pronterface UI (möglicherweise erst, wenn ihr den Drucker per USB angeschlossen habt). Ladet eine stl-Datei und Klickt auf Drucken mit USB.

5 Antworten auf „Auto-Leveling für den Anet A6

Add yours

  1. Gibt es den M851 in Marlin 1.1.7 nicht mehr? Keine Reaktion bei dem Befehl. Ich kann außerdem nicht ins Minus fahren. Mein Sensor schaltet ca. 4mm oberhalb des Beds ab. Z wird dort null gesetzt und weiter runter kann ich nicht.

    Like

    1. Ich weiß es nicht, warum M851 bei dir nicht funktioniert – aber ich habe ich nicht das Changelog durchgesehen, weil bei mir noch SkyNet3D läuft (noch keine Zeit für ein Update). Wenn ich mich richtig erinnere, gibt das Terminal auch nichts danach zurück, nur dann nach dem M500. Es gibt noch eine andere Methode das Z-Offset zu setzen, und zwar vor der Firmware-Installation in der configuration.h: https://chinadrucker.de/2017/anet-a8-3d-drucker-auto-leveling/#Schritt_4_neue_Firmware_aufspielen_Skynet

      Like

    1. Leider keine Ahnung, weil ich die Daten von dem Ding nicht vor Augen habe, aber wenn du nicht sonst irgendwo die richtige Spannung abgreifen kannst, könnte ein StepDown-Adapter helfen (so ein Ding baut mir die 12V vom Standard-Anet-Board/Netzteil auf 5V für einen Raspberry Pi um.

      Like

Hinterlasse einen Kommentar

Erstelle kostenlos eine Website oder ein Blog auf WordPress.com.

Nach oben ↑