I have a 3DTouch with my Ender 3 3D printer with the Creality 4.2.2 Board. It is running a custom build of Marlin 2.0.9.2. As I have been watching my prints, I noticed that the Z-axis lead screw does not turn at all as the print head traverses the bed.
With the 3DTouch and a mesh of the print bed, the Z-axis lead screw should very slightly turn to move the X-axis gantry up or down to compensate for deviations and irregularities in the print bed as the print head moves around.
I will add that these print head movements travel across a decent portion of the bed. My bed definitely is irregular, and so I would definitely expect the Z-axis screw to adjust the x-axis gantry appropriately.
Here is my start G-code in Cura:
; Ender 3 Custom Start G-code
M140 S{material_bed_temperature_layer_0} ; Set Heat Bed temperature
M190 S{material_bed_temperature_layer_0} ; Wait for Heat Bed temperature
M104 S160; start warming extruder to 160
G28 ; Home all axes
G29 ; Auto bed-level (BL-Touch)
G92 E0 ; Reset Extruder
M104 S{material_print_temperature_layer_0} ; Set Extruder temperature
G1 X0.1 Y20 Z0.3 F5000.0 ; Move to start position
M109 S{material_print_temperature_layer_0} ; Wait for Extruder temperature
; G1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed
G1 X0.1 Y200.0 Z0.3 F1500.0 E15 ; Draw the first line
G1 X0.4 Y200.0 Z0.3 F5000.0 ; Move to side a little
G1 X0.4 Y20 Z0.3 F1500.0 E30 ; Draw the second line
G92 E0 ; Reset Extruder
G1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed
; End of custom start GCode
Here are my Configuration.h
and Configuration_adv.h
files.
I wasn't able to paste my entire configuration file here, so I have provided it in the link above.
What have I done wrong?
To be more concise, here is a list of everything I changed in the default configuration file.
- I ensured
#define PDITEMP
is not commented so that I can do PID tuning of the nozzle. - Similar to #1, I ensured that
#define PIDTEMPBED
is not commented so that I can do PID tuning of the bed. - I commented
#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
since I will be using the 5-pin BLTouch port that is on my 4.2.2. board. - I uncommented
#define USE_PROBE_FOR_Z_HOMING
since I removed my z-axis endstop and want to use my 3DTouch as the Z endstop. - Uncommented
#define BLTOUCH
since the 3DTouch is a BLTouch clone. - Changed my x and y offsets in the setting
#define NOZZLE_TO_PROBE_OFFSET { -42, -8, 0 }
. I left the Z-offset 0, since I will be using the tuning tool to adjust that and observe the squish. For the X and Y, I measured the distance between my probe and the nozzle using a digital caliper. - I adjusted the probe margin from 10 to 15, since I have clips that previously would interfere with the 3DTouch. 15 should give more distance.
#define PROBING_MARGIN 15
- I enabled and set MULTIPLE_PROBING to 3. I'm paranoid about the current accuracy and am willing to see if that improves anything at the expense of a few additional minutes.
#define MULTIPLE_PROBING 3
. I think 2 should be fine for general use. - Uncommented
#define Z_MIN_PROBE_REPEATABILITY_TEST
. I want to test my 3DTouch and uncommenting allows the use ofM48
to test it. - Uncommented
#define PROBING_FANS_OFF
,#define PROBING_ESTEPPERS_OFF
,#define PROBING_STEPPERS_OFF
,#define DELAY_BEFORE_PROBING 200
. The documentation this may improve probing results. I'm all in. - Uncommented
#define NO_MOTION_BEFORE_HOMING
and#define HOME_AFTER_DEACTIVATE
. - Uncommented
#define AUTO_BED_LEVELING_BILINEAR
- Uncommented
#define RESTORE_LEVELING_AFTER_G28
. This is to ensure the mesh is applied even afterG28
, which disables the mesh otherwise. - Ensures that this setting was 10.
#define DEFAULT_LEVELING_FADE_HEIGHT 10.0
- I set the following:
#define GRID_MAX_POINTS_X 7
. Ensures a 7x7 mesh grid is created. This could be more or less. 49 points is an improvement over Creality's 9, although a bit much. Worthwhile in my case. - Uncommented
#define EXTRAPOLATE_BEYOND_GRID
. I was actually wondering if this was causing some of the inconsistent prints near the edge. - Uncommented
#define LCD_BED_LEVELING
. This is to unlock more options for ABL in the menu. - Uncommented
#define LEVEL_BED_CORNERS
. This should make moving between corners for manual leveling easier. - Uncommented
#define LEVEL_CORNERS_USE_PROBE
. This is to achieve exactly what I was doing withG30
in Pronterface. I changed to tolerance with#define LEVEL_CORNERS_PROBE_TOLERANCE 0.03
- Uncommented
#define Z_SAFE_HOMING
, which is important for the BLTouch. - Changed my PLA profile according to what I have determined to be best with
#define PREHEAT_1_TEMP_HOTEND 200
and#define PREHEAT_1_TEMP_BED 60
M420 S1
after theG29
to see if it has effect (G29
should enable the mesh...). I have had to add that in an older version of Marlin once. Everything else you describe seems correct. $\endgroup$