If you're tired of the clicking noise of the probe this guide is written for you
First let's declare that I'm not responsible if you break your probe or ram your nozzle into the heatbed. I tried to write an universal guide with safety in mind but we all know s&@t happens sometimes. That's why I ask you to double check yourself if you want this feature. No typos.
It's pretty unsafe to move around with a deployed probe, or probe the heatbed with a probe not deployed.
READ THIS GUIDE CAREFULLY FIRST AND IF UNSURE DON'T DO IT!
This guide suggests that you have the following properly configured:
- BLTouch (works as it should without issues)
- Probe offset (obviously)
- Printer boundaries/Axis limits are set correctly (G1 X0 Y0 F3000 moves your nozzle over the corner of your heatbed, or that is your axis minima)
- Mesh grid (the probe only probes printable area, no obstruction between probe points)
If any of the above is untrue please fix before you go on with this guide.
The base of this feature lies on modular config.g. This means that some parts of the configuration are in separate files called by M98 in config.g (and anywhere else). In this way it's possible to store the probe settings in one place and reset to these settings with M98 after any modification.
In these separate files we can change the probe type from P9 to P5 and deploy the probe manually just before probing then retract and change it back afterwards.
First of all a config subfolder needed to be created in the System folder (sys) and a probe folder inside the config folder.
(You can name it anything, but you have to modify the code below accordingly.)
In /config/probe/ you have to create 4 files:
probe_config.g
probe_config_fast.g
probe_offset.g
mesh_grid.g
Now you have to copy your probe configuration from your config.g into these files as below:
============================================================
-
probe_offset.g : Here goes your probe offset G31 from your config.g so you have to copy that single line here. Later on if you need to modify offsets you have to do it in this file.
Copy your own offset, don't copy mine.
Grab a piece of paper/notepad and write/type down your X and Y offsets. You will need it later.
For example in my case:
G31 P1000 X68.9 Y -1.5 Z3.24
Probe_Offset_X= 68.9
Probe_Offset_Y= -1.5
============================================================
-
mesh_grid.g : Copy your M557 line here. Same as above, if you ever need to modify your default mesh grid you have to do it in this file.
Write down your grid's X and Y minimums on the paper/notepad.
For example:
M557 X22:198 Y30:190 P21:21
In this case:
Mesh_First_X= 22
Mesh_First_Y= 30
Use your own coordinates, don't copy this.
============================================================
- probe_config.g : Copy your M558 line here and make two new lines:
M98 P"config/probe/probe_offset.g
M98 P"config/probe/mesh_grid.g
This way probe_offset.g and mesh_grid.g will be called when you call probe_config.g. (Needed because probe type change zeroes probe offset.)
============================================================
-
probe_config_fast.g : Repeat what you did in probe_config.g but change the probe type from P9 to P5.
You might need to add 0.1 sec settle time (R0.1) if you have issues
============================================================
Now you have your default probe config (probe_config.g), which is a type 9 and your fast probe config (probe_config_fast.g) type 5.
Lets head to config.g and add your default probe config by adding the following line to your probe section:
M98 P"config/probe/probe_config.g"
The 3 lines of the old probe configuration have to be commented out(it can be deleted later if you got used to modular config).
I advise to put at least five " ; " just to make it visible because from now on if you want to modify your probe config you have to do it in the 4 files you created earlier.
Keep the line which defines your BLTouch Pin Servo!
Grab your paper and do a simple math with your probe offset and mesh grid minimas (this will help you to move your probe ower the first point before the probe pin gets deployed):
First_Point_X = Mesh_First_X - (Probe_Offset_X)
In my case:
First_Point_X = 22 - (68.9) = -46.9
First_Point_Y = Mesh_First_Y - (Probe_Offset_Y)
In my case:
First_Point_Y = 30 - (-1.5) = 31.5
You will need the values in the upcoming macro in a way like this:
G1 X-46.9 Y31.5 F9000
Again, don't use my values, calculate your own.
============================================================
Now head to your macro folder and create a file called Fast BLtouch Mesh.g (or whatever) and copy the following:
(don't forget to edit line 4 with your calculated positions, and check that "Raise and Return Z" commands suits your machine.)
G91 ;Relative positioning
G1 Z5 F1500 ;Raise Z 5mm
G90 ;Absolute positioning
G1 X-46.9 Y31.5 F9000 ;Here goes First_Point_X and First_Point_Y positions you calculated above
G91 ;Relative positioning
G1 Z-5 F1500 ;Return Z 5mm
G90 ;Absolute positioning
M98 P"config/probe/probe_config_fast.g" ;Call probe_config_fast.g module (Switch to Fast Probe Mode)
M98 P"deployprobe.g" ;Deploy the probe
G29 ;Probe the heatbed and generate heightmap
M98 P"retractprobe.g" ;Retract the probe
M98 P"config/probe/probe_config.g" ;Call probe_config_fast.g module (Switch to Default Probe Mode)
G91 ;Relative positioning
G1 Z5 F1500 ;Raise Z 5mm
G90 ;Absolute positioning
G1 X-9999 Y-9999 F9000 ;Go to Parking Position
G91 ;Relative positioning
G1 Z-5 F1500 ;Return Z 5mm
G90 ;Absolute positioning
You're ready to go. Do some tests with the mouse pointer over the Emergency Stop button just to be safe.
Also make sure the pin of the probe doesn't touch the heatbed while moving.
============================================================
============================================================
GCode References:
G31: Set or Report Current Probe status
M557: Set Z probe point or define probing grid
M558: Set Z probe type
M98: Call Macro/Subprogram
============================================================
============================================================
Even tough we can have Marlin's Fast BLTouch Probing feature on the Duet/RRF like this, it would be nice to have a new parameter for G29 and G30 that only retracts the probe after a probing sequence/move.
============================================================
============================================================