Thoughts on Chain Sag Calculation

I have two theories as to why my chain sag correction factor is not precisely equal to my sled weight, which I estimate to be about 25 lbs.

Theory 1: We aren’t calculating chain sag correctly.

Theory 2: Chain sag adds a variable amount of length based upon the angle of the two chains, the lengths of the two chains, and the weight of the sled. Rotational radius subtracts a fixed amount of length whereas chain tolerance adds a variable amount of length based upon the length of the chain. I suspect that as rotational radius and chain tolerance values are adjusted, they may be compensating for a low chain sag (a reduction in error is an improvement, no matter where you get it). So maybe these values are “overcompensated” and then the chain sag gets “under-compensated” to even it out. If I don’t allow for rotational radius or chainsag to get adjusted, the chain sag correction lands at around 25 (lbs).

OK, this was really fast, but software was used to get the symbolic solutions.

This is a pretty-printed result

Here is the c-code output.
‘T_l = -(wsqrt(pow(x_l-x_t,2.0)+pow(y_l-y_t,2.0))(x_r-x_t))/(x_ly_r-x_ry_l-x_ly_t+x_ty_l+x_ry_t-x_ty_r);’
‘T_r = (wsqrt(pow(x_r-x_t,2.0)+pow(y_r-y_t,2.0))(x_l-x_t))/(x_ly_r-x_ry_l-x_ly_t+x_ty_l+x_ry_t-x_ty_r);’

It was done really quick, so there may be errors. I apologize that I didn’t use your original variable names.

My equation for force came from the spreadsheet… see here:

I copied and pasted the formula from excel to the python code and then did a search/replace to replace cells references with variable names. I think I got it right?

I did some math and it appears you get the same results…

we are not at all sure.

the spreadsheet calculations are simplified, they do not take into account the
wrapping of the chain around the sprockets.

Chain sag calculating the sled weight isn’t going to match the actual weight
because some of that weight is going to be supported by the frame (is your
reduction appropriate for a 15 degree vector correction?)

That’s a good point, but assuming simply trig, its a small reduction (sin75*25lbs=24.15lbs).

1 Like

I am thinking we should do two things. First, double-check the math. This could be as simple as checking a couple of points against the Excel file calculation. Second, we can check the sensitivity in the calibration. The calibration just might not have the resolution to separate this chain-sag from the other free variables. This a very small correction that could appear as noise within the calibration.

I analysed the chain sag and the current parobola approximation. see my analysis here and I conclude the parabola equation is good. And my catenary calculations needed successive approximation, which is coomputing intensive.
On my 11.5 ft wide top beam, I actually got around 1/64th of an inch on my maslowCNC with the parabola approximation, chain stretch (8.1m/m/N) and chain tension calculations among parameter improvements for gross results. Then a residual error correction grid for details.

2 Likes

I have implemented the full catenary equation, without the need for successive approximation. I considered using a parabola equation, but the catenary equation is not complicated, is not computationally burdensome, and it does not have 1/64 inch error. This is what the catenary equation is for. Here is my post on the calculation, Post 453 (Optical Calibration Demo and Three Hours Working on a Bug - #453 by Joshua).

Here is the equation I used for calculating chain tension, in pretty-print, along with the c-code implementation (Thoughts on Chain Sag Calculation - #62 by Joshua).

1 Like

That is great!
In my implementation, the chain sag changes the chain angle which changes the tangeant point around the sprocket thus the width of the catenary, and the horizontal sled position. So I recompute until it stabilizes.

Don’t you run into the same issue with the parabolic equation? I am guessing there is an assumption built-in that would produce the same need to iterate, that is just not as visible because the physical parameters are not as clear.

Actually, the catenary equation is an equilibrium equation where the horizontal tension is very low near the bottom corner. Trying go get closer to the corner, tension falls fast, catenary on the light side pulls more toward the center, the sled only moves part of the expected distance. So my implementation ends up iterating while the parabola equation gets a result in one simple equation.

Comparing the two (see List of Sources of errors) I could see they match close enough to me when the parabola equation is tuned. To go beyond the parametric solution, I use a correction matrix to clear the residual errors.