HyperCube 3D – Z-Offset

Wo bekommt man den Z-Offset her und wie stellt ich den Offset ein ?

Der Abstand zwischen der Düse und dem Bett bei genullter Z-Achse ist der Z-Offset.

Vorbereitung

Drucker in Homeposition fahren. Mit dem Button „Home XYZ“ können alle drei Achsen gleichzeitig genullt werden. Um den Z-Offset herauszufinden reicht jedoch die Z-Achse.

Der Drucker wird nach dem „homeing“ selbstständig in eine definierte Position (in Marlin definiert) gefahren. Auch hier ist nur die Z-Achse von Bedeutung.

Achse zum Z-Offset fahren

Die Z-Achse so lange in Richtung Düse fahren bis gerade noch ein Stück Papier dazwischen passt / ganz leicht reibt. Gefahren wird über das Display im Menu „bewegen“.

Wurde die optimale Position gefunden, wird im Display oben rechts der Offset angezeigt. Im Bild Z:-1.48.

Achtung: Z+ vergrößert den Abstand zwischen der Düse und dem Bett !!!

Z-Offset speichern und verwenden


Im Terminal kann der Offset mit der Eingabe

M851 Z-1.48
M850 Werte im Eprom speichern

gespeichert werden.

HyperCube 3D – los gehts

Hier werde ich beschreiben wie ich mit dem Hypercube drucke.

Druckdatei vorbereiten

Dateien zum Drucken werden entweder mit OpenSCAD erstellt oder von z.B. www.thingiverse.com oder einer anderen Quelle geladen. Die Datei sollte im Format .stl sein.

Die Datei wird dann im Programm Repetier-Host geladen und weiter bearbeitet.
Repetier-Host -> Datei -> öffnen -> .stl-Datei auswählen

10mm Testwürfel

Die geladene Datei wird mit der CuraEngine geslicet, also in ein für den Drucker nutzbare Format übersetzt. Was an der CuraEngine alles eingestellt werden kann und wie diese funktioniert habe ich im Beitrag „3D-Drucker – CuraEngine“ beschrieben. Die mit dem Slicer erzeugte Datei wird nun auf einen USB-Stick gespeichert.

Drucker starten / einschalten

Der Drucker wird am verbauten (umgebauten) PC-Netzteil eingeschaltet. Als sobald das Startmenu erscheint, ist der Drucker startklar.

AutoBedLeveling – ABL

Das Menu zum Bedleveling ist vom Hauptmenu aus über den Button „Leveling“ oder „ABL“ erreichbar.

ABL – Menu

[Start] Startet das Leveling

[Z Offset] Offset von Düsenspitze zum BL-Touch in der Z-Achse einstellen

[BLTouch] BL-Tocuh bedienen

[Z Fade]

Der Offset zwischen Düse (Nozzle) und dem BL-Touch (Sensor) ist in der Marlin Firmware 2.0.x in der Configuration.h fest hinterlegt. Zum jetzigen Zeitpunkt war der Offset 1.95mm. Der Offset kann sich durch abreiten am Drucker verändern und sollte ab und zu überprüft und entsprechend angepasst werden.

 * Nozzle-to-Probe offsets { X, Y, Z }
...
#define NOZZLE_TO_PROBE_OFFSET { 28, 12, -1.95 }

drucken

OctoPrint

Ich habe hier noch einen Raspberry Pi 2 auf den ich OctoPi draufspielen will. Hierzu sind folgende Schritte erforderlich:

1.) OctoPi 0.17.0 von octoPrint.com runtergeladen
2.) SD-Karte mit 8GB mit SDFormatter formatiert
3.) Image von OctoPI mit Win32DiskImager auf SD-Karte übertragen
4.) Über die Frtitbox die IP vom PI herausgefunden: 192.168.1.127
5.) Mit Putty über SSH in den Raspberry Pi eingelogt
Benutzer: pi
Passwort: raspberry
6.) am Pi sudo raspi-config aufrufen. Hier können Änderungen am Raspi vorgenommen werden.
7.) aktuelle Paketlisten holen mit sudo apt-get update
8.) Pakete mit sudo apt-get upgrade upgraden
9.) den Pi mit sudo reboot -f neu starten
9.) OctoPi mit der IP oder mit http://octopi.local starten

OctoPi meldet sich mit dem SetupWizard. Erste Drucke konnten gut überwacht werden.


Hab mir nen Raspberry Pi 4 mit folgenden Komponenten bestellt.
1 x Raspberry Pi 4 Modell B mit 4GB RAM
1 x Raspberry Pi USB-C Netzteil 5,1V / 3,0A, EU, weiß mit einem USB Type C Stecker
1 x Raspberry Pi 4 Micro HDMI Kabel, weiss, 1,0m
1 x Schutzgehäuse für den Raspberry Pi 4
1 x 4 teiliges Kühlkörper Set für Raspberry Pi 4

HyperCube 3D – Steuerung

Als Mainboard für den HyperCube 3D wird das SKR 1.4 Turbo von BigTreeTech mit dem Display TFT24 eingesetzt. Hier werde ich meine Belegung sowie die Konfiguration dokumentieren.

Mainboard

Steckerbelegung SKR 1.4

Als Mainboard wird ein SKR1.4Turbo von BigTreeTech eingesetzt.
Firmware : Marlin 2.0.6.1

Spannungsversorgung
Die Spannungsversorgung mit 12V erfolgt über ein bereinigtes ATX-Netzteil. Der Anschluss Der Versorgungsspannung (12V und GND) erfolgt an den beiden Schraubklemmen DCIN. Der Jumper für die Auswahl der Versorgungsspannung (USB oder 12V) wird auf VCD (12V) zum mittleren PIN gesteckt. Somit wird das Board vom ATX-Netzteil versorgt. Für die ersten Einstellungen ist es jedoch ausreichend den Jumper auf USB zu stecken.

Schrittmotoren
Die Schrittmotore werden wie folgt gesteckt:
XM = X-Achse
YM = Y-Achse
ZAM = Z-Achse
E0M = Extruder

Heizungen
HB = HeatBed / Heizbett
HEO = Extruderheizung

Lüfter
FAN0 = Lüfter für Bauteilkühlung
HE1 = Lüfter für Extruderkühlung

Display
EXP1 = LCD 12864 EXP1
EXP2 = LCD 12864EXP2
oder
TFT = TFT24

Endschalter
X-STOP = MIN X-Achse
Y-STOP = MIN Y-Achse

BLTouch
BLTOUCH = BL-Touch Sensor

Temperaturfühler
TB = Heizbett
TH0 = Extruder

Display

Als Display wird ein TFT24 V1.1 von BigTreeTech eingesetzt. Zum Testen oder dauerhaft kann aber auch nur ein LCD12864 angeschlossen werden.

12864 LCD Modus
Die beiden Flachbandleitungen werden am Mainboard an den beiden Steckleisten LCD EXP1 und EXP2 aufgesteckt. Am Display gehen diese dann auf EXP1 und EXP2.

TouchScreen Modus
Das TFT24 wird über eine Falchbandleitung mit der Steckleiste TFT verbunden. Am TFT24 kann das LCD12864 simuliert werden.

Schrittmotortreiber

Als Schrittmotortreiber werden die TMC2208UART V3.0 eingesetzt. Diese haben grundsätzlich zwei Betriebsmodi – „step / dir – Mode“ und „UART – Mode“. Hier wird der UART-Mode beschrieben. Die Module selbst werden an anderer Stelle detailliert beschrieben.

Marlin Firmware

Die Beschreibung bezieht sich auf die Marlinversion 2.0.6.1.

Folgende Bibliotheken installieren // wird automatisch installiert:
<Servo> 1.0.0
<U8glib-HAL> 0.4.1
<TMCStepper> 0.7.1

Grundeinstellungen
Die Grundeinstellungen müssen für das Mainboard SKR 1.4 und SKR1.4 turbo immer gemacht werden.

Beim SKR 1.4 – Board muss in der platformio.ini nach default_envs „mega2560“ gegen „LPC1768“ ersetzt werden. Dies gibt den Prozessortyp des verwendeten Boards an.
default_envs = mega2560 LPC1768

Beim SKR 1.4 turbo wird hier „LPC1769“ eingetragen.
default_envs = mega2560 LPC1769

In der Datei Marlin/Configuration.h werden in Zeile 107 mit
define SERIAL_PORT 0 -1
und in Zeile 113
//#define SERIAL_PORT_2 -1 0
die Kommunikationsschnittstellen eingestellt.

In Zeile 124 wird mit
#define BAUDRATE 250000 115200
die Kommunikationsgeschwindigkeit von 250000BAUD auf 115200Baud umgestellt.

Mit der Zeile 131 wird das verwendete Motherboard angegeben. Beim SKR1.4
#define MOTHERBOARD BOARD_RAMPS_14_EFB BOARD_BTT_SKR_V1_4
und beim SKR1.4Turbo
#define MOTHERBOARD BOARD_RAMPS_14_EFB BOARD_BTT_SKR_V1_4_TURBO
Die Informationen zu den verschiedenen Motherbords findet man in /src/core/boards.h.

Mit diesen Grundeinstellungen ist das Board grundsätzlich funktionsfähig. Um etwas zu sehen sollte jedoch ein Display angeschlossen und in Betrieb gesetzt werden.

Druckername und Display
Dem Drucker kann in Zeile 135 ein individueller Name gegeben werden.
//#define CUSTOM_MACHINE_NAME "3D Printer" "HyperCube"

Spracheinstellungen werden in Zeile 1696 vorgenommen. Voreingestellt ist „en“. Mit
#define LCD_LANGUAGE en de
wird auf deutsch umgestellt.

In Zeile 1989 wird durch
//#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
der „Full Graphic Smart Controller“ LCD 12864 aktiviert.

Der TouchScreen TFT 24 verlangt in seiner „config.ini“ an der „Configuration_adv.h“ folgende weitere Einstellungen:

In Zeile 3077 soll
//#define M115_GEOMETRY_REPORT
aktiviert werden.

in Zeile 3129 soll
//#define REPORT_FAN_CHANGE
aktiviert werden.

In Zeile 1911 soll
//#define EMERGENCY_PARSER
aktiviert werden.

In der config.ini des Displays können weitere interessante Einstellungen zum Display gemacht werden. Diese Einstellungen können mit einem Firmwareupdate vorgenommen werden. Hier können auch andere Icon-Sätze eingespielt werden. Die aktuelle FW gibt es bei github.com.

Erster Test
Ob das bisherige so weit funktioniert, soll nun getestet werden.
1. Display anschießen
2. Board auf USB-Spannungsversorgung umjumpern
3. Firmware mit VisualStudioCode erstellen
4. Die Datei .pio/build/LPC1768/firmware.bin wird auf die SD-Karte kopiert.
5. SD-Karte in das Board stecken
6. Board mit USB verbinden

Nun sollte kurz der Marlin-Startbildschirm kommen und danach „HyperCube bereit“

Temperaturfühler
Die Einstellungen für die Temperaturfühler werden ab Zeile 352 „Thermal Settings“ vorgenommen.

In Zeile 419 ist mit
#define TEMP_SENSOR_0 1
voreingestellt, dass am Board an der Steckleiste TH0 für den Extruder ein 100k Thermistor angeschlossen ist.

In Zeile 427 wird mit
#define TEMP_SENSOR_BED 0 1
eingestellt, dass am Board an der Steckleiste TB0 für das Heizbett ein 100k Thermistor angeschlossen ist.

Die Grenzbereiche der Temperaturen können ab Zeile 450 eingestellt werden. Diese Einstellungen bleiben vorerst so, werden aber bei den PID-Einstellungen noch mal behandelt.

Die Temperaturen werden nun, wenn eine neue Firmware erstellt wurde, im Display angezeigt. Mit einem entsprechenden Terminalprogramm z.B. Pronterface können mit M105 die aktuellen Temperaturen abgefragt werden. Auch sollte das Terminal die Temperaturen automatisch anzeigen.

Endschalter / Endstop
Hier werden die Endschalter für die X- und Y-Achse konfiguriert. Für die Z-Achse wird später ein BL-Touch verwendet. Die Einstellungen hierzu werden ab Zeile 620 „Endstop Settings“ vorgenommen.

Mit M119 kann der Status der Endschalter im Terminal abgefragt werden.

An den Endschaltern musste ich auf der Schalterseite +5V(rot) und GND (schwarz) tauschen. Offensichtlich sind die Schalter falsch eingelötet.

3D- / BL Touch
Die Einstellungen für die Z-Probe werden hauptsächlich ab Zeile 836 „Z Probe Options“ eingestellt.

Durch aktivieren der Zeile 909 wird mitgeteilt das ein Sensor vorhanden ist. Marlin ist es egal ob ein 3D-, BL_Touch oder sonst ein Clone angeschlossen ist.
//#define BLTOUCH

In Zeile 996 muss der Offset des Sensors zur Düse (Nozzle) angegeben werden. Da der Sensor bei mir rechts von der Düse montiert ist, ist der Offset positiv
#define NOZZLE_TO_PROBE_OFFSET { 10 28, 10 12, 0 }

Weitere Werte werden in den folgenden Zeilen geändert:
Zeile 1159//#define MIN_SOFTWARE_ENDSTOP_Z
Zeile 669 #define Z_MIN_PROBE_ENDSTOP_INVERTING false true
Zeile 852 //#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
Zeile 855 #define USE_PROBE_FOR_Z_HOMING
Zeile 1120 #define Z_HOMING_HEIGHT  4 
Zeile 1123 #define Z_AFTER_HOMING  10 

Ab Zeile 1204 „Bed Leveling“ werden die eigentlichen Einstellungen zum ABL gemacht.

Durch aktivieren der Zeile 1244 wird die Levelingmethode „BILINEAR“ ausgewählt.
//#define AUTO_BED_LEVELING_BILINEAR

Damit die ABL-Daten nach einem Homing automatisch wieder hergestellt werden, kann die Zeile 1252 aktiviert werden.
//#define RESTORE_LEVELING_AFTER_G28

Die Anzahl der Levelingpunkte wird hier mit 3 x 3 Punkten
#define GRID_MAX_POINTS_X 3  
#define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X

festgelegt.

In Zeile 1395 wird noch das Z-Safe-homing aktiviert
//#define Z_SAFE_HOMING

Der Sensor kann mit folgenden Befehlen im Terminal getestet werden:
M280 P0 S10 = Pin ausfahren
M280 P0 S90 = Pin einfahren
M280 P0 S120 = Selbsttest starten
M280 P0 S160 = Alarm zurücksetzen (wenn er blinkt)

G28 = homing starten
G29 = autoleveling (ABL) starten
M851 Z… = Offset speichern
M850 = Werte im EEProm speichern

M420 V1 = Abrufen und anzeigen der Mesh-Daten

Netzteil anklemmen
Wichtig: Da ab jetzt größere Verbraucher dazu kommen muss ab jetzt auf die Versorgung vom Netzteil umgestellt werden.

Der Jumper für die Auswahl der Versorgungsspannung (USB oder 12V) wird auf VCD (12V) zum mittleren PIN gesteckt. Somit wird das Board vom ATX-Netzteil versorgt.

Lüfter
Der Extruderlüfter wird an HE1 angeklemmt. Damit der Lüfter automatisch ab einer Temperatur von 50 Grad am Hotend einschaltet, wird in der Configuration.adv in Zeile 451 der entsprechende Anschluss bekannt gemacht.
#define E0_AUTO_FAN_PIN -1 FAN1_ PIN
Die Geschwindigkeit mit der der Lüfter laufen soll wird in Zeile 464 eingestellt.
#define EXTRUDER_AUTO_FAN_SPEED 255 150 // 255 == full speed

Der Lüfter für die Bauteilkühlung wird an +FAN0 aufgesteckt. Weitere Einstellungen sind nicht nötig.

M106 = Lüftergeschwindigkeit setzen
M106 [I<Index>] [P<Lüfterindex>] [S<Geschwindigkeit>] [T<secondary>]
I<Index>
P<Lüfterindex>
S<Geschwindigkeit> 0-255
T<secondary>

… aktive Kühlung am Extruder …

Heizbett und Extruder
Bettgröße
Temperaturen
Siehe hierzu auch bei den Temperaturfühlern.
Die minimale und maximale Extrusionstemeratur kann ab Zeile 574 eingestellt werden.
M302 = …
M104 = Setze Hotendtemperatur
M104 [B<temp>] [F<flag>] [I<index>] [S<Temperatur>] [T<index>]

PID Regelung
configuration.h
486 // #define PID_AUTOTUNE_MENU 
526 // #define PIDTEMPBED

Antriebe / Schrittmotore
Um was für eine Art / Verfahren sich bei dem Drucker handelt wird ab Zeile 605 bekannt gemacht. Der CoreXY wird in Zeile 613 aktiviert.
//#define COREXY

An den Schrittmotortreibern TMC2208 V3 UART muss nichts mehr umgelötet werden.
Die Treiber für den „Extruder“ und die Achsen „X“, „Y“ und „Z“ werden ab Zeile 687 bekannt gemacht.
//#define X_DRIVER_TYPE  A4988 TMC2208
//#define Y_DRIVER_TYPE  A4988 TMC2208
//#define Z_DRIVER_TYPE  A4988 TMC2208
...
//#define E0_DRIVER_TYPE A4988 TMC2208

Weitere Einstellungen werden in der PDF zum TMC2208 beschrieben …

Configuration.h
750 #define DEFAULT_AXIS_STEPS_PER_UNIT   { 80, 80, 4000 400, 500 100}
757 #define DEFAULT_MAX_FEEDRATE          { 300, 300, 5 15, 25 }
770 #define DEFAULT_MAX_ACCELERATION      { 3000 1000, 3000 1000, 100 1000, 10000 5000 }
Hier gibt es auch weitere Werte zum einstellen

Die Bettgröße / Bauraumgröße kann ab Zeile 1133 angegeben werden.

Die Drehrichtungen der Schrittmotoren kann ab Zeile 1098 angepasst werden.
#define INVERT_X_DIR true
#define INVERT_Y_DIR true
#define INVERT_Z_DIR true


Ab Zeile 1105 kann die Förderrichtung der Extruder bestimmt werden
#define INVERT_E0_DIR false true

Configuration_adv.h
Ab Zeile 2208 können die über UART mit den Schrittmotortreibern vorgegebenen Werte eingestellt werden. Insbesondere für jede Achse
Motorstrom in mA
Motorstrom beim sensorlosen Homing in mA
Microsteps 0…256
RSENSE ???
CHAI_POS ???


2455 //#define MONITOR_DRIVER_STATUS aktiviert
M906 – Set or get motor current in milliamps using axis codes X, Y, Z, E. Report values if no axis codes given.
M911 – Report stepper driver overtemperature pre-warn condition.
M912 – Clear stepper driver overtemperature pre-warn condition flag.
M122 – Report driver parameters (Requires TMC_DEBUG)

Configuration_adv.h
2550 //#define TMC_DEBUG aktiviert
Muss laut github-Diskusion seit Marlin 2.0.6. nicht mehr zwingend umgestellt werden. Wenn umgestellt ist gibt der G-Code M122 jedoch mehr Infos aus.

3D-Drucker – CuraEngine

Hier möchte ich festhalten welche Einstellungen was bewirken.

Beschrieben wird die Version der CuraEngine die in Repetier-Host V2.1.6 enthalten ist.

Geschwindigkeit und Qualität

Geschwindigkeit

Qualität
Default-Qualität

Gewählte Qualitätseinstellung
Name
Layerhöhe [mm]
Höhe erster Layer [mm]
Extrusionsbreite erste Lage [%]

Strukturen

Füllung

Hüllendicke [mm]
Boden-/Deckendicke [mm]
Überlappung der Füllung [%]
Füllmuster
Dichte Decke
Dichter Boden

Stützstruktur

Skirt und Brim

Skirt = Umrandung

Der Skirt dient dazu, den Filamentfluss vor dem eigentlichen Druck etwas in Fahrt zu bringen. Manche Drucker benötigen direkt nach dem Start erst mal ne kurze Zeit um ausrechend Filament zu fördern.



Anzahl der Skirt-Linien die um das Druckobjekt gezogen werden
Skirt-Distanz in [mm] der Skirt-Linien zum Druckobjekt
Minimale Skirt-Länge in [mm]

Damit eine Umrandung überhaupt geslicet wird, muss in den Qualitätseinstellungen die Höhe des ersten Layers (z.B. 0.0101mm) größer wie die Hälfte der Layerhöhe (z.B. 0.2mm) sein.

Brim = Rand

Es wird einfach ein Rand mit einer wählbaren Anzahl zusätzlicher Linien um das Druckobjekt herum gelegt.

Brim-Breite [mm]

Raft

Extrusion

G-Codes

Erweitert

HyperCube 3D – Extruder

Extruderbau nach Tech2C

Material

Kaufteile

1 Stk.Schrittmotor NEMA17
1 Stk.Extruderzahnrad / Rändelrad
Länge 12mm, Durchmesser 8mm, Bohrung 5mm
1 Stk.Flanschkugellager F623ZZ
2 Stk.Schnellkupplung PTFE 1,75
2 Stk.Schraube M5 x 10mm
2 Stk.Hammermutter M5 T-Slot
2 Stk.Schraube M3 x 10mm
2 Stk.Schraube M3 x 20mm
1 Stk.Schraube M3 x 16mm
1 Stk.Schraube M3 x 8mm mit Sechskantkopf
1 Stk.Mutter M3
1 Stk.Stoppmutter M3

gedruckte Teile

Bowden_Motor_v1.1
Bowden_Idler
Bowden_Knob

HyperCube 3D – Z-Achse

HyperCube 3D – Z-Achse mit 8mm Wellen

In meinem bisherigen Aufbau sind noch die 8mm Linearwellen für die Z-Achse verbaut. Tech2C hat hier aus Gründen der besseren Stabilität mittlerweile 12mm Wellen verbaut.

Erforderliches Material

Kaufteile
2 Stk. Linearwelle 12mm
2 Stk. Linearlager LM12LUU
xx Stk. Schraube M3x20mm
xx Stk. Mutter M3
xx Stk. Schraube (Befestigung an Aluprofil)
xx Stk. Hammermutter M …

Gedruckte Teile
2 Stk. Z_Carriage_v1.1
4 Stk. Z_Carriage_clamp_v1.1
4 Stk. Z_Shaft_Clamp_v1.2
1 Stk. Z_EndStop_v1.2
1 Stk. Z_EndStop_Adjust_v1.1

Zusammenbau

HyperCube 3D – X Achse

X-Achse am HyperCube

Meine Schlitten auf der X-Achse läuft recht schlecht. Deshalb werde ich die X-Achse auf Stahlwellen 8mm umbauen.

Vermutung weshalb der Schlitten schlecht läuft:
Die Druckteile, vor allem der Schlitten aus meinem Mendel sind zu ungenau.

Material

Kaufteile
8 Stk. Schraube M3x20mm
4 Stk. Mutter M3
4 Stk. Stopmutter M3
16 Stk. U-Scheibe für M3
8 Stk. Kugellager F623ZZ mit Flansch 3x10x4mm
2 Stk. Linearlager LM8UU
2 Stk. Linearwelle Linearführung 8 mm x 330 mm

Gedruckte Teile
2 x XY-Joiner für 8mm Linearwelle
1 x X-Carriage (Wagen)

Zusammenbau