@aceranic
I'm loading the PID values of the Nozzle and Bed, the Bedmeshing depending on Temperature and Bed Type on Print Start automatically.
It my seem like overkill but i prefer to automate as much as possible. My meshing seems consistent and varies just with Temperature. So ican mesh with higher resolution and start my prints faster.
I'm using Orca slicer to send Bed Temperature and Print temperature to my macro called PrintSetup that is poart of my start code
Start Code
M190 S{first_layer_bed_temperature[0]-5};
M104 S[nozzle_temperature_initial_layer] ; Wait initial layer temp
M109 S[nozzle_temperature_initial_layer] ; Wait for Bed Temp
M98 P"/macros/PrintSetup" B[bed_temperature] H[first_layer_temperature];
This Macro loads the coresponding Mesh for the defined Bedplate, and with the temperatures it also loads the right PId tune information. You can also define Offsets if your Probe has drift wiht different Temperature.
; 0=Bambulab Square BS
; 1=Textured Round TR
; 2=Smooth Round SR
var BED_Type = 0 ;define Bed plate Type
var BED_T = {param.B};
var EXT_T = {param.H};
var Probe_height = 0.36 ; determined wiht G30-S1 after manually leveling wiht paper
;Pinda Bed Levelsensor
M558 P5 C"^exp.e2stop" H2 F460 T9000 A3 K0
G31 P500 X0 Y-31 Z{var.Probe_height}
M106 P2 S30
M703
T0
if var.BED_T < 65
M307 H0 R0.383 K0.618:0.000 D1.11 E1.35 S1.00 B0 ;BED PID 58 !!
G31 Z{var.Probe_height + 0} ;Pinda - is higher, + is lower
G28 ;Home
G1 X0 Y0 Z5 F12000 ;move to Probe location
G30 ;Probe
if var.BED_Type = 0
G29 S1 P"BS60.csv"
elif var.BED_Type = 1
G29 S1 P"TR60.csv"
elif var.BED_Type = 2
G29 S1 P"SR60.csv"
elif var.BED_T < 75
M307 H0 R0.367 K0.732:0.000 D0.98 E1.35 S1.00 B0 ;PID 70°C
G31 Z{var.Probe_height + 0} ;Pinda - is higher, + is lower
G28 ;Home
G1 X0 Y0 Z5 F6000 ;move to Probe location
G30 ;Probe
if var.BED_Type = 0
G29 S1 P"BS70.csv"
elif var.BED_Type = 1
G29 S1 P"TR70.csv"
elif var.BED_Type = 2
G29 S1 P"SR70.csv"
elif var.BED_T < 85
M307 H0 R0.367 K0.732:0.000 D0.98 E1.35 S1.00 B0 ;PID 70°C make one for 80
G31 Z{var.Probe_height + 0} ;Pinda - is higher, + is lower
G28 ;Home
G1 X0 Y0 Z5 F12000 ;move to Probe location
G30 ;Probe
if var.BED_Type = 0
G29 S1 P"BS80.csv"
elif var.BED_Type = 1
G29 S1 P"TR80.csv"
elif var.BED_Type = 2
G29 S1 P"SR80.csv"
elif var.BED_T < 95
M307 H0 R0.333 K0.400:0.000 D0.87 E1.35 S1.00 B0 ;85°C
G31 Z{var.Probe_height + 0} ;Pinda - is higher, + is lower
G28 ;Home
G1 X0 Y0 Z5 F12000 ;move to Probe location
G30 ;Probe
if var.BED_Type = 0
G29 S1 P"BS90.csv"
elif var.BED_Type = 1
G29 S1 P"TR90.csv"
elif var.BED_Type = 2
G29 S1 P"SR90.csv"
elif var.BED_T < 105
M307 H0 R0.282 K0.306:0.000 D1.30 E1.35 S1.00 B0 ;110°C
G31 Z{var.Probe_height + 0} ;Pinda - is higher, + is lower
G28 ;Home
G1 X0 Y0 Z5 F12000 ;move to Probe location
G30 ;Probe
if var.BED_Type = 0
G29 S1 P"BS100.csv"
elif var.BED_Type = 1
G29 S1 P"TR100.csv"
elif var.BED_Type = 2
G29 S1 P"SR100.csv"
elif var.BED_T < 115
M307 H0 R0.282 K0.306:0.000 D1.30 E1.35 S1.00 B0 ;110°C
G31 Z{var.Probe_height + 0.038} ;Pinda - is higher, + is lower +0.038
G28 ;Home
G1 X0 Y0 Z5 F12000 ;move to Probe location
G30 ;Probe
if var.BED_Type = 0
G29 S1 P"BS110.csv"
elif var.BED_Type = 1
G29 S1 P"TR110.csv"
elif var.BED_Type = 2
G29 S1 P"SR110.csv"
elif var.BED_T < 125
M307 H0 R0.282 K0.306:0.000 D1.30 E1.35 S1.00 B0 ;110°C
G31 Z{var.Probe_height + 0.038} ;Pinda - is higher, + is lower +0.038
G28 ;Home
G1 X0 Y0 Z5 F12000 ;move to Probe location
G30 ;Probe
if var.BED_Type = 0
G29 S1 P"BS120.csv"
elif var.BED_Type = 1
G29 S1 P"TR120.csv"
elif var.BED_Type = 2
G29 S1 P"SR120.csv"
else
echo "Bed Temp Setting Out of Bounds"
if var.EXT_T < 195
M307 H1 R4.434 K0.887:0.000 D5.41 E1.35 S1.00 B0 V24.0 ;190°C NEW
echo "Print Temp Setting: ", var.EXT_T , "°C PID @190°C loaded"
if var.EXT_T < 205
M307 H1 R3.883 K0.339:0.000 D7.06 E1.35 S1.00 B0 V24.3
echo "Print Temp Setting: ", var.EXT_T , "°C PID @200°C loaded"
elif var.EXT_T < 225
M307 H1 R3.899 K1.407:0.000 D6.62 E1.35 S1.00 B0 V24.3 ;200°C
echo "Print Temp Setting: ", var.EXT_T , "°C PID @200°C loaded"
elif var.EXT_T < 235
M307 H1 R3.990 K2.754:0.000 D6.24 E1.35 S1.00 B0 V24.1;230°C NEW
echo "Print Temp Setting: ", var.EXT_T , "°C PID @230°C loaded"
elif var.EXT_T < 245
M307 H1 R4.538 K2.346:0.000 D4.59 E1.35 S1.00 B0 V23.8
echo "Print Temp Setting: ", var.EXT_T , "°C PID @240°C loaded"
elif var.EXT_T < 265
M307 H1 R3.978 K0.322:0.000 D5.90 E1.35 S1.00 B0 V23.9
echo "Print Temp Setting: ", var.EXT_T , "°C PID @250°C loaded"
elif var.EXT_T < 285
M307 H1 R4.047 K1.118:0.000 D5.47 E1.35 S1.00 B0 V24.3
echo "Print Temp Setting: ", var.EXT_T , "°C PID @270°C loaded"
elif var.EXT_T < 295
M307 H1 R4.308 K8.893:0.000 D5.01 E1.35 S1.00 B0 V24.3
echo "Print Temp Setting: ", var.EXT_T , "°C PID @280°C loaded"
else
echo "Print Temp Setting Out of Bounds"
Maybe you can adapt it your needs