z-Calibration, Live-z adjustment

The PINDA probe is relevant in auto mesh bed leveling process before the print start and it is quite temperature sensitive. Depending on the position of the PINDA probe while preheating it will deliver different results for the auto mesh bed leveling. Two consecutive prints may, therefore, need different z-heights and the necessity to adjust Live-z between the prints.

Here I will describe a way to get around this with a consistent set-up and a best practice to start a print. The best strategy is to move the PINDA away from the heat bed while preheating. The PINDA should not be left cold since it will heat up during the auto mesh bed leveling and the deviations of the measurements between the first and the last point are quite big. A good average is to preheat the nozzle a bit but not too much to avoid oozing of the filament.

Once the bed is heated we will heat the nozzle as well, start the auto mesh bed leveling and finally the print.

How to implement this in Simplify3D? We will use a start script that is added to  each gcode for a part. We need some g-codes and to understand the way how Simplify3d generates the gcode.

The first executed lines of gcode are:

 G90: Set to Absolute Positioning
 M83: Set extruder to relative mode
 M106 S0: Set Fan Speed to Zero

which makes send and is fine for us. Then Simplify3d would set the temperatures according to the setting for the first layer:

 M140 S100; Set bed temperature to 100°C
 M190 S100; wait for bed temperature
 M104 S230 T0; Set nozzle temperature to 100°C
 M109 S230 T0 wait for nozzle temperature

This is done even before executing ANY line from gcode from the starting script. So this undermines our strategy. Luckily there is a around this. We need to tell Simplify3d that we will take of the temperatures on out on by using the variables [bed1_temperature] and [extruder0_temperature]. Once we use them Simplify will only add the first three lines from above.

Now it is straight forward to write a starting script:

 G28 W ; home all without mesh bed level
 G0 X60 Y-3 Z80; move extruder above bed to keep PINDA cool, keep extruder in front for cleaning
 M104 S160 ; set extruder temp to 160C, preheat nozzle
 M109 S160 ; wait for extruder temp

 M140 S[bed1_temperature] ; set bed temp for temperature of the first layer
 M190 S[bed1_temperature] ; wait for bed temp

 M104 S[extruder0_temperature] ; set extruder temp for temperature of the first layer
 M109 S[extruder0_temperature] ; wait for extruder temp
 G80 ; mesh bed levelling, including homing all 3axis

 G1 Y-3.0 F1000.0 ; go outside print area
 G1 X60.0 E9.0 F1000.0 ; intro line
 G1 X100.0 E12.5 F1000.0 ; intro line

Use this script to handle the heating process and don’t use any preheating from the printer or remote control, unless you made sure the PINDA is away from the bed.

Add any other custom codes you use so far for fine tuning the bed levelling, set jerk values etc. to the gcode above-

The pictures show where to insert the gcode into Simplify3d and how a typical heating process now looks like.

Hope that’s useful for some.