Bed leveling for pcb milling?

@Mika, @Melanchrom, @Tone, @Edwin, @parachvte
I’m pleased to announce that I have successfully leveled my Carving platform/Wasteboard.
Can you please implement Manual Bed leveling for CNC in the next firmware?

First, my CNC bed was 0.65mm lower at the back than the front, actually lower than the middle since the front and middle had the same offsets/measurements. I could not do a proper CNC engraving on acrylic. (same problem as milling on a PCB board)

Following is my process;

  1. I followed the process explained by @Tone in How to do a larger than 3 x 3 matrix level
  2. I didn’t do all the steps since there is no probe on the CNC.
  3. I checked the M503 values and confirmed that M420 was S0 (leveling OFF)
  4. With the CNC module connected to the cable (to ensure I’m in CNC mode) but not to the X-Axes mounting, I mounted my Digital Dial Indicator (DDI).
  5. I measured a 3x3 grid, the same as in the 3D printing module (some X and Y offsets different since my DDI is mounted at a different position than the nozzle and probe on the 3D Printing module)
  6. My measurement results were (remember the DDI measures how far the spindle is lifted);
  • At I0J0 1.2 (Left Front)
  • At I1J0 1.23 (Centre Front)
  • At I2J0 1.25 (Right Front)
  • At I0J1 1.12 (Left Middle)
  • At I1J1 1.19 (Centre Middle)
  • At I2J1 1.17 (Right Middle)
  • At I0J2 0.6 (Left Back)
  • At I1J2 0.66 (Centre Back)
  • At I2J2 0.72 (Right Back)
  1. I recalculated from my current M503 values for M421 and then send the offset/adjustment values with M421 commands to recalculate my mesh to;
  • M421 I0J0 Q1.2
  • M421 I1J0 Q1.23
  • M421 I2J0 Q1.25
  • M421 I0J1 Q1.12
  • M421 I1J1 Q1.19
  • M421 I2J1 Q1.17
  • M421 I0J2 Q0.6
  • M421 I1J2 Q0.66
  • M421 I2J2 Q0.72
  1. With my new mesh, I activate the Bed Leveling with M420 S1 and measured at the same positions (with Z 1.00mm lower - my DDI cannot measure negative). This time my DDI measurement results were;
  • At I0J0 0.96
  • At I1J0 0.98
  • At I2J0 0.96
  • At I0J1 1.02
  • At I1J1 1.05
  • At I2J1 0.99
  • At I0J2 1.05
  • At I1J2 1.05
  • At I2J2 0.99

Now this is not a perfect 0.00 leveling, but I was able to go from the 0.65mm maximum difference to a maximum of 0.09mm.

Thus, for @Mika, how to implement manual CNC until it is implemented in the firmware and without a DDI?

  1. Same as manual leveling in 3D Printing by using a touchpaper.
  2. Set M420 S0 - Leveling off
  3. With CNC module and a round drill bit, determine the centre X,Y position.
  4. Move to the 3x3 mesh X,Y positions (137mm apart on X and 152mm on Y around the Centre position). You can use G42 commands (G42I0J0 F6000) but the CNC axis and 3D nozzle is not at the same positions.
  5. On each position, move the Z down to do a paper touch test and jot down the Z values.
  6. Using the Z values, calculate the offsets you want and send the correct M421 codes to adjust the mesh.
  7. Use M500 to save the mesh to EEPROM

Note: Remember that for the current firmware, G28 will switch off bed leveling, and thus, you will have to include M420 S1 in your GCode after a G28 to use Bed Leveling.

9 Likes