20 July 2010

X Y table skew compensation in EMC

Of course, the junkplotter features a slight X - Y table skew (what else would you expect with sloppy quick visual alignment and a hot glue gun...).

EMC2 has a great user-contributed component that deals with skew compensation. It can be found here: http://wiki.linuxcnc.org/emcinfo.pl?ContributedComponents. Download millkins.c, compile and install it as per the instructions in the page. Do not yet edit your .hal file ! 


You need to get your axis scaling values right first. Stepconf roughs up the job for you, especially if you know the specs of the components you work with. This is not always the case with junk recycled stuff...
So draw a "square", typically 100 units (mm) and its diagonals. Most probably it should be looking like the drawing (1). Check the side lengths. Do interpolation to refine your scaling values. relaunch axis, draw a square again, check side lengths, rinse, repeat until you are satisfied with the result. You should end up with some four-sided parallelepiped with equal sides: a rhombus (drawing 2).
Check the diagonal lengths now: if they have equal lengths, you are in luck, your rhombus happens to be a square: no problem, you can stop reading here.

If the diagonals are unequal, you have to calculate the compensation value. You may apply Pythagoras theorem since in a rhombus the diagonals intersect at a right angle, to determine the angles of the corners. At this point I found some use to the the Rhombus geometry calculator: just enter the diagonal lengths and you get the angle a and the side length. If the calculated side length is very similar to the side length you  measured, the calculated angle a must be right. The value of the parameter you need to enter in the .hal file is 1/tan(a), as briefly stated in http://alastair.d-silva.org/desktop-cnc-milling-machine.

Restart axis, draw another square with diagonals, check lengths. You should have now something like the drawing (3). That's all, folks!

No comments:

Post a Comment