<p>My firmware actually was working just fine, in terms of probing with <code>G29</code> before a print and then the Z-axis would adjust during the print.</p>
<p>The way I tested this was by putting an object underneath my probe at only a few of the probing locations at the start of the print <code>G29</code>.</p>
<p>The purpose of this was to simulate very significant deviations in the bed.</p>
<p>Then, when the print was printing its first layer, I would observe the Z-axis and the nozzle, and the printer did definitely make a very obvious motion near the probing points where I put the object underneath the probe.</p>
<p>Looks like when I am printing, it just doesn't seem to make any adjustments at all. I would expect it to make adjustments during the print since my bed is not perfectly level, but I guess it's how things are.</p>
<p>The purpose of this post was to evaluate whether or not my firmware was correctly interfacing with the BLTouch and applying the mesh to my print, and it seems like it is. The question of why it isn't making more noticeable adjustments for my print bed during normal printing is another question.</p>

CC BY-SA 4.0
2022-01-08T17:14:09.000Z
One full turn of the lead screw is a whole 8mm of movement, so to correct for fractions of the layer height (something on the order of 0.05 mm) in the bed, you're looking at turning the lead screw about 2˚. That's going to be hard to see. Even full layer Z motion is hard to see, IMO.
R.. GitHub STOP HELPING ICE
CC BY-SA 4.0
2022-01-08T18:55:30.633Z
I fully agree. Thanks for mentioning that. It's just that my first layer is still uneven. I have some places where there is more squish and less squish. It prints pretty much the same way as without a 3DTouch, which is why I was questioning whether or not it even works. I have been disappointed with this method of ABL. It hasn't done anything for me. And my bed has been manually adjusted to be quite level. But imperfections are not corrected in my case
geekgeek4
CC BY-SA 4.0
2022-01-08T18:57:12.490Z
I should also mention that I tested my 3DTouch with M48, and the accuracy is within BLTouch specifications.
geekgeek4
CC BY-SA 4.0
2022-01-08T05:52:28.407Z
2022-01-08T14:05:36.260Z
2022-01-08T14:05:36.260Z
geekgeek4
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>Here is my start G-code in Cura:</p>
<pre><code>; 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
</code></pre>
<p><a href="https://we.tl/t-gyToFW4YqJ" rel="nofollow noreferrer">Here</a> are my <code>Configuration.h</code> and <code>Configuration_adv.h</code> files.</p>
<p>I wasn't able to paste my entire configuration file here, so I have provided it in the link above.</p>
<p>What have I done wrong?</p>
<p>To be more concise, here is a list of everything I changed in the default configuration file.</p>
<ol>
<li>I ensured <code>#define PDITEMP</code> is not commented so that I can do PID tuning of the nozzle.</li>
<li>Similar to #1, I ensured that <code>#define PIDTEMPBED</code> is not commented so that I can do PID tuning of the bed.</li>
<li>I commented <code>#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN</code> since I will be using the 5-pin BLTouch port that is on my 4.2.2. board.</li>
<li>I uncommented <code>#define USE_PROBE_FOR_Z_HOMING</code> since I removed my z-axis endstop and want to use my 3DTouch as the Z endstop.</li>
<li>Uncommented <code>#define BLTOUCH</code> since the 3DTouch is a BLTouch clone.</li>
<li>Changed my x and y offsets in the setting <code>#define NOZZLE_TO_PROBE_OFFSET { -42, -8, 0 }</code>. 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.</li>
<li>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. <code>#define PROBING_MARGIN 15</code></li>
<li>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. <code>#define MULTIPLE_PROBING 3</code>. I think 2 should be fine for general use.</li>
<li>Uncommented <code>#define Z_MIN_PROBE_REPEATABILITY_TEST</code>. I want to test my 3DTouch and uncommenting allows the use of <code>M48</code> to test it.</li>
<li>Uncommented <code>#define PROBING_FANS_OFF</code>, <code>#define PROBING_ESTEPPERS_OFF</code>, <code>#define PROBING_STEPPERS_OFF</code>, <code>#define DELAY_BEFORE_PROBING 200</code>. The documentation this may improve probing results. I'm all in.</li>
<li>Uncommented <code>#define NO_MOTION_BEFORE_HOMING</code> and <code>#define HOME_AFTER_DEACTIVATE</code>.</li>
<li>Uncommented <code>#define AUTO_BED_LEVELING_BILINEAR</code></li>
<li>Uncommented <code>#define RESTORE_LEVELING_AFTER_G28</code>. This is to ensure the mesh is applied even after <code>G28</code>, which disables the mesh otherwise.</li>
<li>Ensures that this setting was 10. <code>#define DEFAULT_LEVELING_FADE_HEIGHT 10.0</code></li>
<li>I set the following: <code>#define GRID_MAX_POINTS_X 7</code>. 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.</li>
<li>Uncommented <code>#define EXTRAPOLATE_BEYOND_GRID</code>. I was actually wondering if this was causing some of the inconsistent prints near the edge.</li>
<li>Uncommented <code>#define LCD_BED_LEVELING</code>. This is to unlock more options for ABL in the menu.</li>
<li>Uncommented <code>#define LEVEL_BED_CORNERS</code>. This should make moving between corners for manual leveling easier.</li>
<li>Uncommented <code>#define LEVEL_CORNERS_USE_PROBE</code>. This is to achieve exactly what I was doing with <code>G30</code> in Pronterface. I changed to tolerance with <code>#define LEVEL_CORNERS_PROBE_TOLERANCE 0.03</code></li>
<li>Uncommented <code>#define Z_SAFE_HOMING</code>, which is important for the BLTouch.</li>
<li>Changed my PLA profile according to what I have determined to be best with <code>#define PREHEAT_1_TEMP_HOTEND 200</code> and <code>#define PREHEAT_1_TEMP_BED 60</code></li>
</ol>

CC BY-SA 4.0
2022-01-04T12:00:13.830Z
It should not be necessary but try a `M420 S1` after the `G29` 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.
0scar
CC BY-SA 4.0
2022-01-05T06:36:45.210Z
Thanks, I will try that. I'm quite certain that it is with the Firmware, since Creality's pre-built firmware for the BLTouch does work with G29 and the above start g-code. The problem only occurs with my firmware
geekgeek4
<creality-ender-3><marlin><bed-leveling><z-axis><3dtouch>
Z-axis lead screw not turning to adjust height when using auto leveling?
geekgeek4
# Z-axis lead screw not turning to adjust height when using auto leveling?

(Asked by: username_0 on 2022-01-04)

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](https://we.tl/t-gyToFW4YqJ) 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.

1. I ensured `#define PDITEMP` is not commented so that I can do PID tuning of the nozzle.
2. Similar to #1, I ensured that `#define PIDTEMPBED` is not commented so that I can do PID tuning of the bed.
3. 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.
4. 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.
5. Uncommented `#define BLTOUCH` since the 3DTouch is a BLTouch clone.
6. 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.
7. 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`
8. 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.
9. Uncommented `#define Z_MIN_PROBE_REPEATABILITY_TEST`. I want to test my 3DTouch and uncommenting allows the use of `M48` to test it.
10. 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.
11. Uncommented `#define NO_MOTION_BEFORE_HOMING` and `#define HOME_AFTER_DEACTIVATE`.
12. Uncommented `#define AUTO_BED_LEVELING_BILINEAR`
13. Uncommented `#define RESTORE_LEVELING_AFTER_G28`. This is to ensure the mesh is applied even after `G28`, which disables the mesh otherwise.
14. Ensures that this setting was 10. `#define DEFAULT_LEVELING_FADE_HEIGHT 10.0`
15. 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.
16. Uncommented `#define EXTRAPOLATE_BEYOND_GRID`. I was actually wondering if this was causing some of the inconsistent prints near the edge.
17. Uncommented `#define LCD_BED_LEVELING`. This is to unlock more options for ABL in the menu.
18. Uncommented `#define LEVEL_BED_CORNERS`. This should make moving between corners for manual leveling easier.
19. Uncommented `#define LEVEL_CORNERS_USE_PROBE`. This is to achieve exactly what I was doing with `G30` in Pronterface. I changed to tolerance with `#define LEVEL_CORNERS_PROBE_TOLERANCE 0.03`
20. Uncommented `#define Z_SAFE_HOMING`, which is important for the BLTouch.
21. 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`

**Tags:** creality-ender-3, marlin, bed-leveling, z-axis, 3dtouch

> **Comments:**
> **username_1**: It should not be necessary but try a `M420 S1` after the `G29` 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.  
> **username_0**: Thanks, I will try that. I'm quite certain that it is with the Firmware, since Creality's pre-built firmware for the BLTouch does work with G29 and the above start g-code. The problem only occurs with my firmware  

---

## 1 answers

### Answer by username_0 on 2022-01-08. Score: 0 | Accepted answer

My firmware actually was working just fine, in terms of probing with `G29` before a print and then the Z-axis would adjust during the print.

The way I tested this was by putting an object underneath my probe at only a few of the probing locations at the start of the print `G29`.

The purpose of this was to simulate very significant deviations in the bed.

Then, when the print was printing its first layer, I would observe the Z-axis and the nozzle, and the printer did definitely make a very obvious motion near the probing points where I put the object underneath the probe.

Looks like when I am printing, it just doesn't seem to make any adjustments at all. I would expect it to make adjustments during the print since my bed is not perfectly level, but I guess it's how things are.

The purpose of this post was to evaluate whether or not my firmware was correctly interfacing with the BLTouch and applying the mesh to my print, and it seems like it is. The question of why it isn't making more noticeable adjustments for my print bed during normal printing is another question.

> **Comments:**
> **username_2**: One full turn of the lead screw is a whole 8mm of movement, so to correct for fractions of the layer height (something on the order of 0.05 mm) in the bed, you're looking at turning the lead screw about 2˚. That's going to be hard to see. Even full layer Z motion is hard to see, IMO.  
> **username_0**: I fully agree. Thanks for mentioning that. It's just that my first layer is still uneven. I have some places where there is more squish and less squish. It prints pretty much the same way as without a 3DTouch, which is why I was questioning whether or not it even works. I have been disappointed with this method of ABL. It hasn't done anything for me. And my bed has been manually adjusted to be quite level. But imperfections are not corrected in my case  
> **username_0**: I should also mention that I tested my 3DTouch with M48, and the accuracy is within BLTouch specifications.  

---

