Hi,
I’ve tried editing the code to enable bilinear levelling myself - I have a Aldi Balco printer, board version 5.1.
I don’t have BLTouch or a mark2. I use a manual deploy probe, attached to PA3 (ZMAX). It’s just a button thing that sits on the nozzle for probing so the nozzle activates the button, and I remove it once finished.
I’ve done this on ADVi3++ version 3 following some guide I found, and that went okay (although I’m not sure it ever actually benefitted, but that’s a seperate issue).
I’ve tried again on version 4.0.6, but things have changed since the version 3 guide, so I’ve tried my best.
The probe is triggered, the grid is measured, I can see the mesh generated, so generally is working fine, but Z_CLEARANCE_BETWEEN_PROBES doesn’t seem to be kicking in, unless I’m misunderstanding what it should do.
On version 3, sending G29 to start levelling, Z-axis would lower, do the first probe, raise, do slower second probe, then raise to give clearance, then move to the next position, lower, probe, raise, slower probe, raise, move, repeat.
On version 4, it moves to the first point, does the initial lower to probe, then raises, does the second slower probe in the same position, then moves to the next position without raising for clearance, and then raises, lowers to do first probe, raises, does the second slower probe, then moves to the next position without raising for clearance, and repeat…
I’ve tried reading through the code to fix it, but I can’t find where I need to fix it.
I think this is everything I’ve changed to get it probing:
In Configuration.h:
Defined these:
// @advi3++: No more used by BLTouch probe (advi3++ v4). Also not used by Mark II
#define USE_ZMAX_PLUG
#define Z_MIN_PROBE_ENDSTOP
Commented out the if/endif, to ensure it defines FIX_MOUNTED_PROBE
// @advi3++: Mark II probe is fix
//#ifdef ADVi3PP_MARK2
#define FIX_MOUNTED_PROBE
//#endif
Changed to 15 to avoid clashing with bed screws:
// Certain types of probes need to stay away from edges
#define MIN_PROBE_EDGE 15
Amended these to make sure I could see a difference, and during probing there was definitely a difference, other than my z_clearance_between_probes not working:
#define Z_CLEARANCE_DEPLOY_PROBE 10 // Z Clearance for Deploy/Stow
#define Z_CLEARANCE_BETWEEN_PROBES 20 // Z Clearance between probe points
#define Z_CLEARANCE_MULTI_PROBE 20 // Z Clearance between multiple probes
#define Z_AFTER_PROBING 10 // Z position after probing is done
Commented out stuff to ensure bilinear is defined:
//#ifdef ADVi3PP_PROBE
//#define AUTO_BED_LEVELING_3POINT
//#define AUTO_BED_LEVELING_LINEAR
// @advi3++: Use bilinear leveling (mesh)
#define AUTO_BED_LEVELING_BILINEAR
//#define AUTO_BED_LEVELING_UBL
//#define MESH_BED_LEVELING
//#endif
I don’t think it’s relevant but I’ve also changed GRID_MAX_POINTS_X but I have the issue when settings it to 3, 5 and 7.
In advi3pp_defines.h:
Ensure ADVi3PP_PROBE is defined:
//#if defined(ADVi3PP_BLTOUCH) || defined(ADVi3PP_BLTOUCH3) || defined(ADVi3PP_MARK2)
#define ADVi3PP_PROBE
//#endif
In pins_I3_PLUS.H:
I did both the below because just one or the other resulted in errors about one or the other not being defined:
#define Z_MAX_PIN 25 // PA3 / AD3
#define Z_MIN_PROBE_PIN 25 // PA3 / AD3
I think that’s everything… Have I missed something I need to change? Does Z_CLEARANCE_BETWEEN_PROBES rely on one of the other probe definitions (such as ADVi3PP_BLTOUCH or ADVi3PP_MARK2)?