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.

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. NEMA 17 Schrittmotor
1 Stk. Extruderzahnrad, Länge 12mm, Durchmesser 8mm, Bohrung 5mm
1 Stk. Kugellager F623ZZ
2 Stk. Schraube M5 x 10mm
2 Stk. Hammermutter M5 T-Slot
4 Stk. Schraube M3 x 10mm
2 Stk. Schraube M3 x 20mm
2 Stk. Mutter M3

gedruckte Teile
1 Stk. Bowden_Motor_v1.1
1 Stk. Bowden_Idler
1 Stk. 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

3D Drucker – Extruder einstellen

Der Extruder sollte ja die exakte Menge an Material fördern. Wie wird es gemacht.

Da an meinem FranzisMender der Extruder vom Hotend getrennt ist (Long Distanz) beschreibe ich hier die Version wie ich die Fördermenge am Extruder einstelle.

Formel für die Berechnung:
SollLänge / IstLänge * eingestellte Schritte = neue Schritte

Werkzeug und Hilfsmittel

Teflonschlauch (Kann auch der vorhandene verwendet werden)

Scharfer Seitenschneider / Elektronikseitenschneider
Digitale Schieblehre

Vorbereitung

Eingestellte Schritte ermitteln:
In der Marlin-Firmware ist in der configuration.h bei
#define DEFAULT_AXIS_STEPS_PER_UNIT (40, 40, 400, 92.75);
an vierter Stelle der aktuelle Wert für den Extruder in steps/mm eingetragen (bei mir 92.75) Dieser Wert wird für die spätere Neuberechnung benötigt.

SollLänge festlegen:
Für die zu fördernde Sollmenge lege ich 100mm fest.

IstLänge ermitteln:
Düse bei PLA auf ca. 200°C aufheizen
Teflonschlauch und Filament aus dem Kühlkörper vom HotEnd ziehen,
Filament vorne am Teflonschlauch mit einem Schafen Seitenschneider bündig abschneiden,
100mm Filament fördern (G92 E0 und dann G1 E100),
gefördertes Filament messen (97mm).

Neue Schritte berechnen:
Bei 92,75 Steps/mm wurden 97mm gefördert, gewollt sind aber 100mm also

92,75 Steps/mm / 97 mm * 100 mm = 95,62 Steps / mm

Somit ergibt sich für NeueSchritte der Wert 95,62 Steps/mm. Dieser Wert wird nun in Marlin bei

#define DEFAULT_AXIS_STEPS_PER_UNIT (40, 40, 400, 95.62);

eingetragen.

Z-Achse mit zwei Treiber

DualDriver

Da das Drehmoment meiner Z-Achsen recht schwach ist, habe ich die Achsen auf zwei Treiber verteilt

Der linke Schrittmotor (Z-links) ist nach wie vor auf der RAMPS 1.4 auf dem dafür vorgesehenen Platz (Z). Der rechte Schrittmotor (Z-rechts) wurde auf den zweiter Extruder (E1) umgesteckt.

Anpassungen Marlin

Auto bed leveling

Ich habe vor meinen 3D-Drucke mit einem „Auto bedleveling – Sensor“ nachzurüsten.

was wird benötigt

Ich habe im Internet folgendes bestellt:
3D-Touch von Geeetech.com
(ein bl-Touch wäre auch möglich gewesen)

Weiter habe ich die aktuelle Version von Marlin heruntergeladen:
Marlin-2.0.6

Drucker umbauen / Sensor befestigen

Die Halterung habe ich aus Holz hergestellt. Hier habe ich versucht den Sensor so auszurichten das er auf der Flucht zur Nozzle in der X-Achse ist. Der Abstand zur Düsenmitte beträgt 37mm:

Der 3D-Touch ersetzt den Endschalter für die Z-Achse-min.
Schwarze Ader = GND (-)
Weiße Ader = S (Signal an PIN 18)
Siehe auch 3D Drucker – Endschalter

Der Servo wird an Servo 1 angeschlossen (linke Steckleiste)
Orange Ader = Signal (an PIN 11)
Rote Ader = +
Braune Ader = GND (-)

5V am Servoausgang herstellen:
Jumper zwischen VCC und 5V stecken dann liegt am +-Pin Spannung an.

Spezifikationen und Infos zum 3D-Touch

Specifications:
Voltage: 5V
Current: 15mA
Max. Current: 300mA
Cable length: 150mm
Net Weight: 10g
Shipping weight: 25g

Operate condition
3DTouch can be operated in the following condition.
One I/O for control (PWM or Software PWM)
One I/O for Z min (Z Probe)
GND and +5V power

Wiring
3-pin: Brown (-, GND), Red (+5V), Orange (control signal)
2-pin: Black (-, GND), White (Z min)

Einrichten in der Firmeware

Versatz zur Düse
X = 37mm
Y = 0mm
Z = 0mm (3,..mm)

G-Code

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
G29 = autoleveling
M851 Z… = Offset speichern
M850 = Werte im EEProm speichern