A simple plan

One of the things I did not like about a new printer was that the belt that moved the carriage was not laying parallel to the axis of motion (left) but at an angle, as shown in the picture below (right):


Such a belt path is not right as for each inch of motion in the axis a slightly different amount of belt is moved (the hypotenuse of a triangle instead of its long side). Most of the time, the angle is so small the difference is tiny. That is why the arrangement works and printers are printing even though they have this ugly hack.

The problem is worse when the carriage is close to any of the two ends, as then one of the angles is not so small and that creates a bigger error. But the question is: how big the error can be?

Well, it took me a good part of a weekend to figure that out, among other things because wxMaxima does not like to calculate the intersection of two circles easily.

So the first thing I needed was to model the anomalous belt path in a geometric model I could calculate and graph.


The total length would be the sum of five legs. The one of the top, of fixed length (L), plus each one of the two arcs (in red) on the pulleys, that would depend on the angle of each angled belt attaches to each pulley, plus each one of the two arms of the V-shaped bottom of the belt. Let us remember the belt is always going to be tangent to pulleys, and when the carriage is far away from a pulley the angle is almost horizontal (or zero), but it is significative when the carriage is close to the pulley.

I modeled the distance from of the [zero-width] carriage with the variable t. And I measure the distance h, as the separation from the carriage linear guide from its natural location. For a given carriage position, the belt distances would correspond to one leg of (t) distance from the origin, located on the left-hand pulley center, and the other of a distance (L-t).

The main problem was, that in order to calculate the proper angle of the tangent belt to the pulley, I needed to know where the tangent point was, but I could not calculate that easily. What I did was to place a circle centered at the point where the carriage was (t, R+h) and with a diameter equal to the leg of the belt from here to the tangent point on the pulley. (I could easily calculate the distance from the point to the tangent point in the pulley without knowing that point by using the Pythagorean theorem, as the distance is perpendicular to the radius, and the distance from the origin to the carriage location can be measured too).

Then, calculating the intersection of the two circles, we will know where the tangent point is. We only need to know the x component of the point, and with that, we can calculate the length of the long side of the triangle in the image above, and knowing the hypotenuse and the long side we can get the angle, that happens to be the same as the one between the radius at the tangent point and -y axis.

Finally, we can calculate the arc of belt on each pulley, so:
distance(t)=arc(t)+arc(L-t)+leg(t)+leg(L-t)+L

And this is the final result, using the parameters of the printer I was studying. It can be seen the belt length changes a bit of 2 mm along the 400 mm carriage length.


In case you are curious, this is the expression I have got for the total length of the belt at location x=t: 
R*acos((sqrt(2*h*R+(L-t)^2+h^2)*(R^2+h*R)-(L-t)*R^2)/(sqrt(2*h*R+(L-t)^2+h^2)*(R^2+2*h*R+(L-t)^2+h^2)))+R*acos((sqrt(2*h*R+t^2+h^2)*(R^2+h*R)-t*R^2)/(sqrt(2*h*R+t^2+h^2)*(R^2+2*h*R+t^2+h^2)))+(sqrt(2*h*R+(L-t)^2+h^2)*(R^2+h*R)-(L-t)*R^2)/(R^2+2*h*R+(L-t)^2+h^2)+(sqrt(2*h*R+t^2+h^2)*(R^2+h*R)-t*R^2)/(R^2+2*h*R+t^2+h^2)+2*L

An interesting question is to model how the positioning error is distributed along the axis. But that may require another weekend ;-)

I eventually fixed my printer's belt with these parts I designed and added.

Comments

Maleah said…
I m so glad to visit this blog.This blog is really so amazing.Thanks for sharing with us.
Curios_guy said…
Your blog is soo much interesting to visit because it makes us learn something new!

Popular posts from this blog

VFD control with Arduino using RS485 link

How to get sinusoidal s-curve for a stepper motor

Stepper motor step signal timing calculation