Assuming a 200-step stepper motor is perfect, the potential accuracy is good, at least for this application.
A 200 step motor (base movement 1.8°), turns 0.1125° when micro-stepped x16, but this is divided down by the rotary table’s worm.
My HV6 clone has a 90:1 worm, meaning that the rotary table turns 0.00125° per micro-step. As the table can only be positioned within 0.00125°, this number sets the table’s best possible physical performance. The error in millimetres is determined by how far away from the rotary table’s axis the cut is taken, growing larger with diameter. Thus, if my HV6 turns a 150mm (6″) diameter object through the 90:1 worm’s minimum angle, then the new position on a 75mm radius job differs by only 0.0016mm.
These promising figures are almost certainly better than an HV6 can achieve. One has to ask awkward questions about how accurately made the rotary table’s gear and worm are made, how good the bearing is, and how accurately the bearing is positioned X,Y and Z on the table’s axis.
There’s also the possibility that a digital system might accumulate errors when calculating the number of steps needed to turn a mathematically uncooperative angle. What does that mean? In a 200x16x90 system, the effective gear ratio is 288000:1, meaning that any angle that factors into that will have zero error. Have to think about how big and how common awkward errors are: might be small and rare. Nonetheless, it’s worth reducing such errors by compensating for them when calculating the number of steps needed to make the next move.
Martin suggests calculating each move separately, and others mention Bresenham. Bresenham is famous for two algorithms much used in computer graphics to draw lines and circles. Given two X,Y co-ordinate positions on a 640×340 computer screen, what pixels need to be lit up to draw the least kinky line between the two endpoints. Not difficult when computer has fast floating point and trig functions, but these were almost unknown when Bresenham tackled the problem. His algorithm does the sums super-efficiently with integer arithmetic. There’s a close relationship between pixels on a screen represented by integer coordinates and CNC movements, but although there are plenty of examples of Bresenham doing computer graphics, I’ve not found an example of Bresenham being used to drive a machine tool.
To my surprise my own Arduino rotary table code just does the basic calculation. Unexpected, because I’m sure I took advice from Duncan Webster, who provided a suitable algorithm, that I implemented and tested. Where’s it gone? Arrgh!!!!
Dave