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.