Hi everyone,
first post here, but been a Mach3 user for some time now. Great software, by the way!
I had noticed that my parts tended to lose precision the more complex they were, but I couldn't tell exactly where the problem was until a few days ago. It seems that I am missing steps somewhere, but it's a very particular way of missing them.
Let me explain the test I have been running for a few days.
My setup is using a CNC kit like this:
http://www.wantmotor.com/ProductsView.asp?id=272&pid=88. It uses a breakout board connected to the PC parallel port and to the drivers.
I have setup Mach3 and the drivers to use 1600 steps per mm (for this test, more on this later), and the kernel pulse speed is set at 75KHz.
I setup a micrometer on the tool measuring displacement on the X axis and set it to 0. In Mach3, I also zero all axes. Then I run this program, that moves X to 10mm and back to 0 a hundred times:
F2000
G90
M98 P0002 L100 (CALL SUB PROGRAM O0002 100 TIMES)
M30
O0002 (SUB PROGRAM)
G01 X10
G01 X0
M99
%
I have run the tests with motion mode set to CV and exact stop. Both have the same results so this is apparently not related.
If everything is fine (let's not count backlash yet, more on this later), at the end of the program the tool should be again at 0 in the micrometer.
My result is that the micrometer shows a displacement of 0.63mm.
I hear you saying backlash!! But wait! looks like too much for backlash. So... if I run the loop 50 times instead of 100, I get pretty much half the error: 0.31mm. Looks like the error is proportional to the number of times the operation is repeated which would rule out backlash. Let's dig a bit more.
Now I change the microstepping, from 1600 to 400 steps/mm in the drivers and Mach3 motor config. (4x less steps, so every step produces 4x more mm). Measured error is now 2.52mm: exactly 4 times larger.
Change the microstepping again, this time 6400 steps/mm (4x more steps, now every step produces 4x less mm). Error now is 0.16mm, approximately 4 times less than before.
I'm starting to suspect here that whatever is happening, I am missing steps at some point. And it seems that the number of steps is proportional to the number of G01 operations, but not to the number of pulses needed to move the motors those 10mm.
So, how many steps are being lost, actually? Let's see:
1600 steps/mm * 0,63 mm = 1008 steps
6400 steps/mm * 0,16 mm = 1024 steps
400 steps/mm * 2,52mm = 1008 steps
The test is running 100 times, back and forth, so it's changing direction 200 times, this is about 5 steps missed every time direction changes, but independent of the total steps involved in the overall motor movement.
Acceleration could be an issue, so when changing direction, the motors could miss steps... so I tried feedrate 200 instead of 2000: no change (except it takes 10 times longer...)
I wanted to rule out mechanical components affecting here, so I made a quick test wiring an arduino with GRBL 0.9i to my drivers and run the same program (actually I rolled out the loop, since GRBL doesn't support G98): the result is exactly as expected: the micrometer reads 0 at the end of the test. Basically it rules out electronic/mechanical problems and leaves the ball on the PC side running Mach3.
I'm out of ideas now, I have tried every setting I could think of in the Mach3 configuration, but I'm stuck.
Do you have any advice, guys?
Thanks!
David