OK, following up on this. I have to say I am still confused by the options. Yes, I have solved the problem but what I read in the documentation does not square-up with what I have seen happening.
First, how did I fix it?
I modified my startup script to include this before every single print job:
M561 ; Clear any bed transform
G28 ; Home machine
G29 ; Probe the bed and enable compensation
G29 S1 ; Enable mesh compensation
This does exactly as the comments say. The machine changed from being unpredictable and not putting down a good first layer to reliably putting down an excellent first layer every single time.
What was I doing before? I was:
- Manually turning on bed heating
- Allowing the printbed to warm-up and stabilize (5 to 10 minutes)
- Manually turning on the nozzleater
- Allowing it to stabilize
- Cleaning the tip from any ooze
- Homing all axis
- Using a feeler gauge to ensure the tip was 0.1 to 0.2 mm from the bed surface
- Clean the print surface
- Clicking the "Auto Bed Compensation" button
- Waiting for results
- Then I would launch the print job
The above produced inconsistent results and it was hard to get a good first layer.
I then changed my startup code to what's shown below and the printer went from having nothing but problems to being as reliable as can be. I also eliminated all the busywork as it became unnecessary to do all of that stuff. Today I simply run clean the print surface and launch the job. No problems. To be clear, I don't click on the "Auto Bed Compensation" button any more. It seems to be useless, at least for this purpose.
I am trying to understand how it is that these changes made such a massive difference. In addition to this I am trying to understand why this many has seemingly equivalent options.
The easiest question is:
What's the difference between "Auto Bed Compensation" and "Run Mesh Grid Compensation"?
The next question would be:
What's the difference between "Disable Bed Compensation" and "Disable Mesh Grid Compensation"?
And yet another:
What's the difference between "Show Probed Points" and "Show Mesh Grid Heightmap"?
Are the height maps generated by G32 and G29 the same? Why would you disable one vs. the other then?
My current thinking is that the "Auto Bed Compensation" button seems to go through the motions of measuring the bed and that's where it stops. It does not seem to actually enable the compensation.
Going by the documentation and UI, "Auto Bed Compensation" runs G32 and "Run Mesh Grid Compensation" runs G29.
Despite what the documentation says, G29 by itself, does seem to enable bed compensation. I had to insert a G29 S1 in my startup code. In fact, my machine is only probing ONCE, despite having a G29 followed by a G29 S1.
G32, again, per the docs, is supposed to load "bed.g". My "bed.g" has this in it:
; called to perform automatic bed compensation via G32
; generated by RepRapFirmware Configuration Tool v2 on Wed Aug 14 2019 16:30:15 GMT-0700 (Pacific Daylight Time)
M561 ; clear any bed transform
G28 ; home all axes
G29 ; probe the bed and enable compensation
Which is confusing, because it G32 documentation says:
It probes the bed at 3 or more pre-defined points (see M557) and updates transformation matrix for bed levelling compensation.
The firmware executes macro file bed.g if present instead of using the M557 coordinates.
So...G32 doesn't actually run because I have a "bed.g" file that was generated when I used the RepRap Firmware Configuration Tool to setup the machine?
In other words, do both "Auto Bed Compensation" and "Run Mesh Grid Compensation" run G29, resulting in compensation actually not being enabled?
I would love to understand what's going on. As I said, I fixed it by no longer using this menu and resorting to the addition of a G29/G29 S1 probing cycle at the start of every print. Still, it would be great to understand.