Maslow Home Maslow Community Garden Newsletter

Holey Triangular Calibration


I don’t have very much experience with this. My best guess is there is a faulty, intermittent, connection between the Arduino and one of the motors. Re-establish the connection, via unplugging the motor/Arduino connections and re-connecting. Also, check the connection between the Arduino and the motor-controller. Make sure all the pins are in the right hole, and nothing is loose or shorted.


Must be it. Thx


Hi Jimr,
There is a little context here we might need: Did you modify your settings with values according to calibration outcome then observe this problem as a consequence?

If so, then I responded here:


Here are screenshots of the GUI layouts so-far. The intent is for there to be another button alongside the Triangular Calibration button, that will kick off this series of widgets which implements the Holey Six Point Calibration.

I broke the calibration into 3 steps. The first is the Machine Parameters widget, where the starting machine parameters are entered. The second is the Measurements widget, where the machine measurements are entered into the widget. The third is the Calibrate widget, where the calibration is actually executed and reported.

I wanted to put this in front of everyone, so that everyone who is interested can gain some familiarity. I would like feedback. However, it may not be reasonable to support all requests.

Machine Parameters Widget

Hopefully it is somewhat self explanatory.

  • The bottom picture is a place-holder for some guiding comments, how-to and informational text.
  • The left-most column are machine parameters that need to be correctly set, and affect the end result, but are not directly calibrated.
  • The middle column is machine parameters that are calibrated. These are the initial machine parameters.
  • The right column is a series of buttons
    • Pull from Firmware is going to populate all initial parameters by pulling them from Firmware values.
    • Next steps to the next widget, Measurements.
    • Quit quits the calibration altogether


This is where the measurements are entered

  • The left-top figure is a figure of the measurement pattern.
  • The left-bottom is an image, which is a placeholder which will contain some descriptive, how-to commentary.
  • The inputs labeled M1 through M12 are where the measurements are entered.
    • The labels will change colors as the measurements are entered. They will be green if the measurements are within 10% of the ideal length; they will be red otherwise. This is a validation service.
  • The button, Next, will step to the next widget in the calibration
  • The button, Quit, will exit out of Holey Calibration


This is where the actual calibration is run.

  • The big table on the top has the 12 measurements in the rows, and the columns are: Initial Measurement, Initial Error, Calibrated Distance, and Calibrated Error.
  • On the bottom-left, the Calibrate button executes the calibration.
  • The bottom table shows the initial Machine Parameters, in the left column, and the calibrated Machine Parameters in the right.
  • The “Push to Firmware” button will push the calibrated machine parameters back to the Firmware, replacing the need to copy-paste the results back into GC.
  • The Quit button will exit out of the Holey Calibration process

List of sources of error

@Joshua, I had a chance to load your firmware and run the SixHoleCalibration gcode file.

I have a couple of questions on input/editing the script.

On line 13 , I set cal.SP_chainOverSprocket=1 since my chain runs the sled in the top position. Is this correct?

Also, is it possible to enter the 12 measurements directly in MM, by simply changing or commenting out line 37: #Measurements=[Measurement*25.4 for Measurement in Measurements]?

My baseline
Distance Between Motors:

Motor Y Offset:

Left Chain Tolerance:

Right Chain Tolerance:

Rotational Radius:

Holey Cal results
Distance Between Motors:

Motor Y Offset:

Left Chain Tolerance:

Right Chain Tolerance:

Sadly, I did not get a chance to run anything else on the Maslow this weekend. Hopefully in the next few days I can generate some gcode and check results.

BTW, when I get time to cut should I use the original GC 1.25 or run the cuts with your version? I picked up a $10 sheet of OSB to test with so no big deal if something gets out of wack…

Menus are looking good, should make it easier t get more folks to try out

1 Like

The Holey Triangular Calibration is looking good!

1st image:
I see that you plan to support the Quad Kinematics?
I’m not too familiar with it but then in that case is it going to ask the Rotational Radius?
What will be the 8 default values before pulling the machine settings from Firmware?

Second Image:
M12 might not need a 10% tolerance… And it is better that way because there is no exact target value on that one… Am I wrong?

Image 3:
The big table might be a troubleshooting help and one might want to print it out to get support? Otherwise, later we might hide the big table to help rookies find it easy to use.
I think if the Calibrate button was sitting between the left and right column of the small table, it could make sense when the claibrate button actually fills up the empty (right) column. All value in this screeen would be read only / not editable. right?

What do you think?

1 Like

I believe so. I have to check this every time. When you set this to 1, your chains connect from the sled, up to the motors through the inside of the sprocket, and your excess chain hangs down to the side of the machine.

Yeah. I should comment this. Line 37 is a units-conversion from in to mm. If you comment it, you can enter the measurements as mm.

I recommend using the Firmware and GC from Holey Calibration fork. Last time I checked, there were no updates to the main GC fork that would cause you to want to use that version. The only difference is the Holey Calibration GC has kinematics calculations that are consistent with kinematics calculations in the Holey Calibration Firmware. This alignment is important to achieving the desired accuracy.


No. There is no plan to support Quad Kinematics. It might just issue an error if it is set to true.

You are right. This tolerance should be ignored for M12.

I agree. It is a busy widget. For myself, I think the information is useful, but it might be confusing. There is not any descriptive text on that widget, so it could be confusing.

I like the idea.


@Joshua, this is awesome. Is the python scripting still necessary or does the GUI handle that on the back end? I want to implement this on Saturday (I only have 3 hrs/wk, on Saturday, for Maslow). Please let me know where to find the latest files. Is this all I need:


1 Like

Yes. Currently, the scripts are still necessary.

There is a post on this topic, waay back. It is back on post 176. The instructions should be up-to-date.

There is currently some additional information/questions answered.

  • Be careful setting all the machine parameters in
  • Before you run the test-cut
    • You will need to weigh your sled, and have it entered as the chainSagCorrection variable
    • All your machine parameters should be set in GC.
    • Disconnect and reconnect the Arduino to ensure all the settings update.
  • For Chain Over Sprocket, 0 means it the chain extends from the outside of the motors, to the sled. 1 means the chain extends from the inside to the sled.
1 Like

Thanks! I didn’t know you had to disconnect the arduino to get settings to take; I thought they were live. That could explain some things!


I created a simple file in makercam with an 18" circle with a 12" square in the center.e
with my original calibration settings and then with the new holeyCalibration figures.

The old settings with 1.25 firmware and GC:
The circle was 17 7/8" wide and about 18 1/32" tall.
The square was also under 1/16" in width and over a 1/16" in ht.

The Holey firmware and GC with new calibration numbers from the script.:
The circle was spot on 18" in height and 17 15/16" wide.
The Square looked bang on a true 12 square!

So definitely an improvement, and the best I have seen on my machine to date.

Thanks again


I wonder why the circle was off on width, and the square was not. Could you comment about where on the board the two were cut?


Jamtek, can you also give a quick description of your machine: frame type (top bar?), size (width and height above work piece), angle, sled weight, linkage type?


The cuts where made side by side in the center of the board, the 1.25 firmware on the left and holeyCal on the right . The tops of the circle were about 10 in down from the top of the board. I plan on re-measuring and re-running script again with metric tape measure, and make sure I did not make a goof.

1 Like

@WoodCutter4, I started with Bar’s bolt on frame when I got my kit last year. But after top beam split under one of the motors, I went with a 10 ft superstrut top beam, with a vertical motor offset of 619mm. I have pictures in this post. Up against the wall Frame
The frame is at 15 degree angle, waste board is 3/4 MDF, sled weight is 24.5 lbs.using the ring linkage in a top feed chain configuration.

I hope that helps, cheers.

1 Like

I am trying to create the GUI for Holey Calibration. I am trying to implement the “Pull Machine Parameters from Firmware” part. This is the button, when clicked, requests the machine parameters from the Firmware, and populates them in the GUI. I am searching for how to do this. I believe I will be able figure it out, but I am hoping others will have this information at-hand, and be able to provide it more easily. The parameters are:

  • Distance Between Motors
  • Motor Y Offset
  • Left Chain Tolerance
  • Right Chain Tolerance
  • Quad Kinematics or Triangular Kinematics
  • Chain Over Sprocket vs. Under Sprocket
  • Sled Weight/Chain-Sag Correction
  • Triangular Rotational Radius

The other pieces of this are, how to execute the request, and how the data is stored in GC. These questions primarily relate to the structure of the code. This is a very open-ended question, so I understand it may be difficult to answer. I appreciate any advice/suggestions you can provide.


1 Like

PSA for holey testers: must use python v2.7.
The latest versions available online are not compatible with any GC.

@Joshua Totally my fault for not reading more about GC and python compatibility. Adding that note to the instructions would save newbies like me some time. :slight_smile:

1 Like

@Joshua, I made a tweak to my top beam by adding a shim under the left most support to square things up and and re-ran your HoleyCal NC file with your firmware and GC. This time I laid the board down on a table to take the measurements with my tape measure and machinist ruler and plugged them into your script.

I am happy to report that the cuts improved to under 1/32" of error if any on my square and circle test cut! (2.6 KB)
I know feel ready to take on some projects with everything dialed in, thanks again.:grinning:


That’s awesome! Gives me hope… Although now I’m feeling like I need to start over and make a new frame :disappointed: