Maslow Home Maslow Community Garden Newsletter

Simplified Chain Length Measurements for Calibration

Situation: before calibration begins, we need an accurate measurement of the current chain lengths in order to achieve good calibration results. It is especially important that both chains are extended the same length.

Problem: the current “extend chains” is tedious and prone to wrapping, snapping, etc.

Proposal: in Makerverse, I’ve been working on an approach involving a cotter pin.

I will update this post to reflect the progress of the steps.

Step 1

With the sled off, insert the cotter pin into the chains.

cotter pin

Ensure that the chains are of the same length. The best way to do this is to pull taut the chains using the motors with the cotter pin still in place, such that the cotter pin is in the center of the top beam.

top beam

Measuring each chain while it is slack is also fine. Just be certain they’re the same length to as high a degree of precision as you can manage.

Step 2

Jog the motors along the Y axis (NEVER the X axis!!) until the pin can hit the exact top middle of the stock. Exert strong downward pressure on the pin. Be certain it is perfectly straight.

cotter target

Step 3

  • Mark the chains. This will be the “reset chains” point.
  • Do not move the motors again until validation is complete.
  • Attach the sled to the chains.

Step 4


  • Makerverse calculated that the chain length should be 1968.146 (at the cotter pin point) based upon my motorOffsetY and distBetweenMotors.
  • By plugging that chain length into a normal kinematics calculation for my sled, Makerverse says that once I attach my sled it should be at Y=302.8mm
  • Once attached, the bit (end-mill) on the sled was measured to be located at Y=302.9mm.


  • The sled is centered on the X axis and all signs point that the chain lengths are correct for Y pos.
  • The entire process was quite fast; most of the time was spent simply attaching the sled.

// cc @orob @madgrizzle @Bob_Craig

1 Like

Not sure at this point what a “Maslow” is, but the Arduino Mega firmware stores encoder steps in the eeprom, not chain lengths. So the accuracy of the chain length is roughly 53.5mm/8113.73 = 0.0078mm.

Indeed, but the Grbl setting for origChainLength is rounded to the whole MM, IIRC.

That is correct, but that setting was then used to extend the chains to that exact location. So it didn’t really matter if the setting only permitted integer mm increments.

I guess my point is, if you are this to justify the assumption that .5mm error in chain lengths is acceptable, you might be mistaken.

My simulations suggest that any chain error results in a generally equivalent error on the work surface. Of course the error is not consistent across the work surface. So .5mm is probably fine, that is more precise than anyone expects to get on the machine. But it does set the minimum floor for the machine error. I have only done simulations, so I can’t say how all of the additional errors present in the model and the machine are affected by this.

That’s a good point. The precision of the machine is what’s relevant, here. That said, I do believe that as long as the chains were the same length, calibration should be able to account for the rest of the variance. 1mm in chain length will not account for more than 2mm of error in terms of actual position, which IME can be easily compensated by calibration.

Looked at a different way, I’m willing to bet that when people placed their chains on sprockets for “measuring out chains,” there was at LEAST 1mm variance in how they were placed.

With this procedure, it seems my sled would be over top of my workspace. I have no chance to mount my sled there. What am i missing?

I thought so too at first. But that’s not the case. I connected my sled without moving the chains from the 3rd pic, where the cotter pin is set. However my yPos was measured to be about 300mm when I connected the sled — only halfway from center to top of stock. The reason is the rotation radius of the disk the chains attach to. In effect, attaching the sled extends the length of the chains by adding this rotation disk radius. So the actual sled mount point is about 12 inches below where the two chains meet with the cotter pin.

IIRC, you have a giant rotation radius, so the effect will be even more pronounced.

1 Like

Still i need a ladder for this :slight_smile: Will check it out. Thanks.

1 Like

I’ll be building a little bit of UI for it in Makerverse. You could follow these instructions as they are, but you wouldn’t be able to manually validate like I did at the end. It’ll still work, just nice to have the validation and UI to make it easy. New UI should only take a couple hours tomorrow morning tho.

1 Like

Out of curiosity… has anybody tried simply counting the chain links? It seems like it could be a very accurate (and consistent!) way to measure chains assuming the following:

  • manufacturing of chains is consistent
  • sprocket is at “noon position”
  • chain is attached to rotation disk with the cotter pin in a consistent position (so that the position of the link coming out of the attachment point is consistent)

It does seem a little tedious, but I just tried it and it’s at least pretty fast. So I’m curious if there’s something I’m missing.

@krkeegan @madgrizzle ?

Yup, I believe we did that in the beginning. It works ok. It is a lot of counting and it is easy to lose your place which is why I think the automatic system was added.

But yes, if you can accurately set the sprocket at 12 oclock (which is a requirement anyways) and you can accurately count, you can get the same results. This is basically what madgrizzle’s marking the chain trick is doing.

My only hunch is that like 1 in 10 people will miscount. It is really tedious work. Maybe count and measure to confirm?

1 Like

The beauty is that if you miscount only on one chain or miscount both chains different ways (i.e., add a link to one and subtract a link from another), it will be shifted left or right of the vertical center line, which should able to be readily determined. So it minimizes the chance of an error… still should mark the link sitting on the top tooth for future resets.

I think the best goal for now is a system that can validate. I think if we can confirm that the three variables (motor dist, motor height, chain length) are all within “reasonable bounds” before allowing the user to move on to the next step, a lot of errors will be prevented.

Yeah – exactly this sort of thing. That’s what I’m trying to do with the cotter pin in this post. My sense is that it’s actually pretty easy to be sure that (1) the pin is at top center of stock (2) the chains are the same length. And this quick process buys the user a useful mark on the frame they can be 100% certain is at (0, 24") between the motors.

What I don’t like is then making the sprockets go to “noon.” I like this cotter pin measurement system a lot, if only I had an easy way to accurately mark the chains without moving the motors and thus changing that spot…

edit what if the user simply marks the chain link AND the the sprocket? I mean, you could make an arrow with the gear tooth pointing into a marked chain link. Pretty simple, just one more dab of paint :stuck_out_tongue:

I think your original edit (that you erased) was a real good idea (jog up and down until you get a tooth to align vertical). You can know that you did it all correctly if both sprockets have a tooth vertical at the same time.

Fair point. We know it is necessarily true that there is some point along the X=0 (y axis) that both teeth will be vertical. I suppose this is also convenient in the sense that the user gets to choose where their “home” (reset chains) position is. You might prefer it to be lower, for example. Not that you should need to reset chains very often…

And if you find that you wonder off the x=0 line while jogging up and down, then you had messed up somewhere with getting the chains to be perfectly centered. I think having this check is also a benefit.

Actually, this is a really interesting point. If I build this correctly, this is an opportunity to do an even better sanity check on the measured values. With the cotter pin, we have an original chain length & measured location. When the user shuttles the sled into their home position, then we ask them to measure the sled’s location. Now we have two entirely independent measurements of location, with chain lengths, by the time the user has pressed the Home button. I think that should be sufficient to do a very good sanity check on those measured values…

1 Like

Not sure I completely understand what you two are proposing. But this sounds pretty good. Except, users may see some slight wandering off the x=0 line if the motors are not perfectly level, or if the x=0 line that they draw on the work surface is not perfectly vertical.

I think what he’s saying is that this serves as a warning sign that something is wrong. Calibration can account for a few mm of drift, but if the Y jogging is wandering left and right, the user should be told to revisit their frame build.