G29 doesn't work on Taz6 with just installed BLTouch

I have finally added a genuine BLTouch to the archim 2 TAZ 6 with aerostruder and while G28 works for basic probing, G29 doesn’t do anything. The printer makes a quick clak noise, displays OK on the console but doesn’t probe…

I double-checked the wiring and took out each connection separately, other things stopped working when I did this, so I’m sure it’s connected properly:
5v/grnd: bltouch wouldn’t light up, obviously no power
white/black z-min: g28 wouldn’t work, kept retracting/extending
washer pin: extend/retract wouldn’t work in menu

I installed a prebuilt Marlin_Oliveoil_TAZ6ArchimBLTouch_Angelfish_Aerostruder V37 and also because of patreon posts about autolevelling being broken V34, same result.

Unified Bed Leveling is disabled, I enabled it and tried to run it, but the left probing points would go off the bed so I stopped, it seemed like their version of G29 was actually working…

Any help? Not sure what I’m doing wrong…

@glebbb: When using BLTouch, DO uses UBL, which requires more than just a “G29”. I have no idea why they didn’t make it backwards compatible.

You need to replace “G29” with:

G29 P1 ; automatic probing
G29 P3 ; fill unpopulated points

Thanks for getting me on the right track, knowing DO is on UBL and watching this helped! There was a little more to it than than just adding the above, here’s what I had to do to finally get leveling to a point I’m happy with, this could help someone else pulling the trigger on BLtouch:

  1. Modify NOZZLE_TO_PROBE_OFFSET for exactly where I mounted the probe (measured with calipers)
  2. Changed MESH_INSET to 0 and set GRID_MAX_POINTS_X/Y to 10, otherwise it was probing too far from the edges and there weren’t enough data points @5x5 to properly account for my very warped bed:
    taz_bed_curve
  3. Enabled MULTIPLE_PROBING 2 to get more accuracy from fast/slow probing, while adjusting the speeds Z_PROBE_FEEDRATE_FAST/SLOW to 200/60.
  4. Modified the cura startup script, because some of it was no longer needed, it was also doing some stuff wrong (like waiting for nozzle to cool down before wiping, why? We should only have to wait for it to heat up!). It now also heat ups the nozzle as it does the 3-point scan etc and a few other optimizations. Feel free to take it from here (pasted below) and lemme know if someone has issues with it.
  5. On a fully heated up and ready-to-print machine ran G28; M420 S1; G29 P1; G29 P3; G29 S1; M500 from console to generate, populate missing points & save the detailed mesh.

Another option is to speed up BLTouch is described here and always re-generate the mesh, this might be better if you’re constantly changing beds etc.

Anyways, my printer is finally able to use the entire area, this was impossible before due to the warp, lifechanging lol!

new startup script:

;TAZ 6 with Aerosturder & BLTouch, optimized
M73 P0 ; clear GLCD progress bar
M75 ; start GLCD timer
M107 ; disable fans
M420 S0 ; disable leveling matrix
G90 ; absolute positioning
M82 ; set extruder to absolute mode
G92 E0 ; set extruder position to 0
M140 S{material_bed_temperature_layer_0} ; start bed heating up
M104 S{material_wipe_temperature} ; start heating up extruder
M117 Homing… ; progress indicator message on LCD
G28 ; home XYZ
G1 X-15 Y100 F3000 ; move above wiper pad
M109 S{material_wipe_temperature} ; wait for extruder to reach wiping temp
M117 Wiping… ; progress indicator message on LCD
G1 E-15 F100 ; retract filament
G1 Z1 ; push nozzle into wiper
G1 X-17 Y95 F1000 ; slow wipe
G1 X-17 Y90 F1000 ; slow wipe
G1 X-17 Y85 F1000 ; slow wipe
G1 X-15 Y90 F1000 ; slow wipe
G1 X-17 Y80 F1000 ; slow wipe
G1 X-15 Y95 F1000 ; slow wipe
G1 X-17 Y75 F2000 ; fast wipe
G1 X-15 Y65 F2000 ; fast wipe
G1 X-17 Y70 F2000 ; fast wipe
G1 X-15 Y60 F2000 ; fast wipe
G1 X-17 Y55 F2000 ; fast wipe
G1 X-15 Y50 F2000 ; fast wipe
G1 X-17 Y40 F2000 ; fast wipe
G1 X-15 Y45 F2000 ; fast wipe
G1 X-17 Y35 F2000 ; fast wipe
G1 X-15 Y40 F2000 ; fast wipe
G1 X-17 Y70 F2000 ; fast wipe
G1 X-15 Y30 Z2 F2000 ; fast wipe
G1 X-17 Y35 F2000 ; fast wipe
G1 X-15 Y25 F2000 ; fast wipe
G1 X-17 Y30 F2000 ; fast wipe
G1 X-15 Y25 Z1.5 F1000 ; slow wipe
G1 X-17 Y23 F1000 ; slow wipe
G1 Z10 ; raise extruder
M104 S{material_print_temperature_layer_0} ; start heating up extruder
G29 A ; activate UBL in case it was turned off
G29 L1 ; load your mesh (assumed it’s stored in slot 1)
M204 S100 ; set probing acceleration
G29 J ; do a quick 3-point plane level
M420 S1 ; enable leveling matrix
M425 Z ; use measured Z backlash for compensation
M425 Z F0 ; turn off measured Z backlash compensation. (if activated in the quality settings, this command will automatically be ignored)
M204 S500 ; restore standard acceleration
G1 X0 Y0 Z10 F5000 ; move to parking spot to wait to print
M400 ; wait for moves to finish
M117 Heating… ; progress indicator message on LCD
M109 R{material_print_temperature_layer_0} ; wait for extruder to reach printing temp
M190 R{material_bed_temperature_layer_0} ; wait for bed to reach printing temp
G1 Z2 E0 F75 ; prime tiny bit of filament into the nozzle
M117 Printing… ; progress indicator message on LCD

Thanks for this, I’m about to add a BL Touch to my Taz 6 and Aerostruder, this will be a great help. How did you mount the BL Touch?

I used the bracket from this thingiverse post and mounted it to the Aerostruder as so, though I’m not sure you should do it because now that I’m doing more testing something’s still off. First of all it was holding the BLTouch off vertical, I had to trim a bit of the toolhead off to get it to be proper, but even with this fix I’m not getting consistent z homing with G28, made exponentially worse by reboot/reflash… It’s very strange, the z-offset keeps changing, it’s .530, then .650, now it’s .150 and the previous .530 I compiled in was just destroying the first layer lol… this is not only enough to fail the paper test but to fail printing! Huge variation in numbers too, very weird.

My M48 tests aren’t too bad now though:
< [02:38:50] Mean: -0.014575 Min: -0.017 Max: -0.012 Range: 0.005
< [02:38:50] Standard Deviation: 0.001769 (excellent)

to

< [02:30:21] Mean: -0.010025 Min: -0.018 Max: 0.003 Range: 0.021
< [02:30:21] Standard Deviation: 0.006663 (ok)

What I discovered is that the BLTouch is highly sensitive to bed/chamber temperature, so anything off the normal and it measures different from expectations and the first layer is thrown off, failed a bunch of prints. Still trying to figure out a stable setup, really don’t want to have to manually figure out the z-offset before every print :frowning:

@marciot do you know if the constantly changing proper z-offset after G28/reboot/reflash is normal? Do I have a broken BLTouch (seems unlikely given the low sigma on M48) or am I doing something stupid? I make sure to be at 100c bedtemp always.

edit: yeah, keep testing and it keeps changing, i’m at a loss… is it the power cycle causing things to move? is it the fan blowing on the sensor? is it bubbles under my pei sheet? this is bugging me so much I’m going to bed :rofl:

edit2: binding in z axis? the z on an M48 keeps increasing with every probe!

< [05:03:20] 1 of 10: z: 0.000 Mean: 0.000250 Sigma: 0.000000 Min: 0.000 Max: 0.000 Range: 0.000
< [05:03:32] 2 of 10: z: 0.005 Mean: 0.002687 Sigma: 0.002438 Min: 0.000 Max: 0.005 Range: 0.005
< [05:03:44] 3 of 10: z: 0.008 Mean: 0.004416 Sigma: 0.003153 Min: 0.000 Max: 0.008 Range: 0.008
< [05:03:56] 4 of 10: z: 0.017 Mean: 0.007594 Sigma: 0.006143 Min: 0.000 Max: 0.017 Range: 0.017
< [05:04:11] 5 of 10: z: 0.019 Mean: 0.009900 Sigma: 0.007174 Min: 0.000 Max: 0.019 Range: 0.019
< [05:04:23] 6 of 10: z: 0.024 Mean: 0.012271 Sigma: 0.008426 Min: 0.000 Max: 0.024 Range: 0.024
< [05:04:35] 7 of 10: z: 0.021 Mean: 0.013589 Sigma: 0.008443 Min: 0.000 Max: 0.024 Range: 0.024
< [05:04:47] 8 of 10: z: 0.022 Mean: 0.014640 Sigma: 0.008373 Min: 0.000 Max: 0.024 Range: 0.024
< [05:05:01] 9 of 10: z: 0.033 Mean: 0.016708 Sigma: 0.009824 Min: 0.000 Max: 0.033 Range: 0.033
< [05:05:13] 10 of 10: z: 0.029 Mean: 0.017962 Sigma: 0.010051 Min: 0.000 Max: 0.033 Range: 0.033
< [05:05:15] Finished!
< [05:05:15] Mean: 0.017962 Min: 0.000 Max: 0.033 Range: 0.033
< [05:05:15] Standard Deviation: 0.010051

@glebbb: We use the BLTouch on the SynDaver Axi and we don’t see very much variance in Z offset. Everything seems to work well.

A few suggestions: Set your Z-offset first, then run the G29. Also check to see that there isn’t any rocking motion on the toolhead. Since the probe is mounted off axis, it can be affected by any mounting flex on the toolhead. Good luck!

Just an update in case other people are doing this so as to not discourage them with my above angry rants :rofl:

I resquared the frame, made sure the x-gantry is perfectly level, made some blood sacrifices to FSM and tightened everything tightenable… oh and put 2 additional bolts through the extruder/toolhead so it stopped rocking. That last part is likely what helped the most and I’m now able to get consistent z-offset even across reboots and cooldowns. The fact that LulzBot thought one small bolt holding them together was enough is still mindboggling to me lol…Thanks, Marcio!

Still don’t have perfect first layers across the whole surface, more experiments to come, but it’s noticeably better than before and I can definitely start prints and walk away without worrying about caked filament interfering with probing!

Final update in case anyone ever finds this through google or something:

  1. The changing z-offset was due not only to LulZbot’s terrible 1-bolt toolhead mounting mechanism which was fixed with 2 more bolts, but also due to the bed heating up the BLTouch mount, once I waited till the bed reached stable temperature and always parked the head in a consistent spot beforehand, it stopped varying.

  2. UBL/BLTouch were not sufficient to properly correct for a bad, saddle shaped underlying bed. When tightening the nuts, it warped the glass in a noticeable way as per above mesh. I replaced the aluminum machined part with a new, much flatter one from LulzBot (it’s not available on their site but support sold me one after an email: PP-FP0146 for $120) and made sure to tighten the nuts in a way as to not warp the glass. This made everything quite flat and then UBL made it print practically perfect. As an experiment I tested turning off UBL and it wasn’t quite flat enough to print across the whole surface, so apparently software correction is a necessity.

  3. G29 J is not working for me, on the front right it probed when reaching the endstop, but in the code somewhere it thinks it got to a point further right, this causes the plane level to be off. This might have something to do with the fact that I made the mesh inset 0, stopped using J, it’s optional anyway. Might experiment with using J2 as it doesn’t go as far right as J or J3 do.

  4. Rebuilt the entire Y assembly with new exact parts, used the jigs to make sure everything is aligned perfectly. Not sure if that helped, but it was time anyway. Changed the y motor mount to this part from the pro so I could make the belt tighter without the stepper making horrendous noises and hopefully less y layer shift which I occasionally saw.

@glebbb: Thank you for the writeup!

@glebbb I have been considering installing a BL Touch. Where did you plug in your BL Touch to the Archim board?

The 2 pin connector goes into your Z-min endstop replacing what’s in there.
The 3 pin must be plugged into +5v (red), gnd (brown) and pin 20 (orange)… at least I think it’s pin 20, look at this guide: Drunken Octopus Wiring Guide

Don’t remember which power pins I used, but if you look around the schematics there’s a few.