Saturday, September 13, 2014

GRBL Height Probing for PCBs

Hello and Welcome to my first post!

Not too long ago, I finally got my custom toolchain for creating and using height maps with GRBL to a working state.

This is the first and only program to use GRBLs new probing feature to level a PCB.

The basic concept is that your cnc machine measures the height differences across the surface, and uses that data to follow the shape of the surface exactly. A consistent depth is essential for milling Printed Circuit Boards.

Both the probing program and the program that applies that data to G-Code are written by myself are available for download: Google Drive.

Here you can see the very first attempt at milling a PCB, the CNC machine is a Shapeoko 2 with a Kress 800 Spindle. The bit is a 20° Engraving bit, but the tip already broke off, so it has about a 0.25 mm point.

A video of the process is available here (loud!):


  • Generate your G-Code (eg. with pcb-gcode for CadSoft Eagle)
  • Drag 'n' Drop G-Code onto HeightToGCode2.exe (zip/HeightToGCode2/bin/Debug)
  • Note Dimensions, close Program
  • Set Stepper Timeout to 255 in GRBL
  • Move Bit to your 0|0 location, z height is irrelevant
  • Open HeightProbe.exe (zip/HeightProbe/bin/Debug)
  • enter the Dimensions ( always include a bit of spare space)
  • enter the other settings (Output file is .csv)
  • MAKE SURE that you have the Probing feature enabled (GRBL 0.9g or higher) and that the Surface and the bit are connected to the Arduino (A5/SCL and Ground)
  • Hit Enter 3 times.
  • Wait for the Program to finish
  • Open HeightToGcode2 again
  • Drag 'n' Drop Gcode into window, hit enter
  • Drag 'n' Drop csv into window, hit enter
  • decide which other commands to keep
  • Use the resulting GCode File In Universal GCode Sender, your machine is already homed and the position is (0|0| safetyHeight), give GRBL that position via G92X0Y0Z[safety] before sending the file.
  • ...? Profit.
If I get enough feedback to motivate myself, I will make a video tutorial, which should clear things up.

The program can also just be used to create height maps, this is a 1 Euro coin, you can just make out spain in the top left hand corner:



  1. So, I've found exactly what I needed! I was completelly unable to mill a pcb on my cnc due to diferent heights. I thing you make a video it would be very usefull. Thanks for you really good work.

  2. What pins do you use for probing on Arduino?