Hi,

Thank you guys for all the replies and please, excuse me for all the
mistakes I have made in my e-mail, I know how annoying these thing can be.

Corrections to John:
1. You are right, I am using stepper system with metric units on EMC2.
2. I did make some mistakes (and I must have created a big confusion in
readre's minds) regarding mm and microns. Sorry for that too! But, your
guesses are right, John: I am using a scale of 1000
counts per mm and microns meant mm.
3. Microstepping: I do use microstepping (10 for a full step) and thread
pitch is 5 mm.

Your reasoning about how this thing happens makes sense to me on its
practical side too. Now, as I sat down in front of our machine and tried to
imagine what really happens I think I there is no way to solve this problem.
If I used servos though with a loop I do see the possibility to compensate
friction just like Jeff and Ken suggested but that would be a lot of work
again and as time rules we stick with this "stepper error".

One more thing: +-0,001 mm was also an overkill as I see now. Yesterday when
I did the measurements I placed the micrometer at one point of one axis and
was playing with the BACKLASH value until I got this result. I did not make
any other measurements though at other points of the axis which was wrong
and made me think I have a really precise system. As I did more measurements
today I realized that if I have a backlash value at one point of the certain
axis and move along a few steps or more I will have different results. Just
like John wrote.

So, thanks for replies again, I will not even try to compensate friction at
this stage :-))

Regards,
Adam Novak

I think both prior replies (Jeff and Ken) are thinking servo, but you
say you have a stepper machine.

You didn't supply enough information to really understand, but I'm going
to take some educated guesses (and ask you to fill in the blanks).

"SCALE=1000" = does that mean 1000 steps per inch, or 1000 steps per mm?
You later mention jogging 1mm, and measuring things in microns, so I
assume you are doing things in metric.

But your microns numbers make absolutely no sense.  If you have 1000
steps per mm, then one step = 1/1000 of a mm, which is one micron.  Your
machine will not be able to move in steps any smaller than that.  But
you wrote "the maximum difference is +-0.001 microns".

For an idea of how impossible that is, a 100mm long steel object (say a
leadscrew) will change length by 1.3 microns for a 1 degree C change in
temperature.  To measure that object to 0.001 micron, you would need to
control the temperature to 0.001 degrees C.

I suspect you mean you measured accurate to +/- 0.001mm, not micron, but
there is NOTHING I hate more than guessing what someone means during a
technical discussion.

That said, I'm going to assume that 1) you are using a scale of 1000
counts per mm, and 2) when you say micron, you actually mean mm.  Please
either confirm these guesses, or correct them.

The next question is are you using microstepping or not.  I'm going to
guess not - here is why:  Most steppers are 200 full steps per
revolution.  To have 1000 full steps per mm, you'd need to have 5 motor
revs per mm.  That means either a 0.2mm thread pitch (~125 threads per
inch) or a large pulley ratio between motor and screw.  But if you are
doing 10 microsteps per fullstep, then you get 2000 microsteps per
revolution, and a 2mm pitch screw gives you 1000 microsteps per mm.

The reason microstepping matters is that a stepper motor isn't capable
of positioning to microstep accuracy in the presence of static friction.
This is NOT something that software can correct, at least not easily or
accurately.

I'm not sure how well I can explain WHY this happens, but here goes:

A stepper motor has a magnet on the rotor, and a magnetic field produced
by the coils.  The drive positions the magnetic field, and the rotor
tries to line up with it.  The action of the magnetic field is like a
spring.  If the rotor is far out of alignment (like a full step), it is
like a very streched spring.  The force bringing it back into alighment
is strong.  If the rotor is only a little bit out of alignment, the
"spring" is barely stretched, and there is very little force.  (This
analogy can be taken farther - if you get more than two steps out of
alignment, the spring "breaks", and the motor will stall or at least
lose steps.)

When you are moving fairly fast, the ways of the machine have a chance
to build up an oil film - the table is actually floating with minimal or
no metal-to-metal contact.  When you stop, that film lasts long enough
that even a small force can bring the table to the proper position.

When you are moving slowly, you don't get an oil film - the table is
sliding on the ways with metal-to-metal contact and much more friction.
More friction requires more force, which means the "spring" in the motor
is stretched more - the rotor may be lagging several microsteps behind
the magnetic field.

In theory, you could probably calculate a correction factor as a
function of speed, and add that to the position command.  But without
some kind of feedback, it will be very difficult and inconsistent.
Things like the amount of oil, and even the temperature of the oil, will
change the results.

Stepper based systems can almost always be accurate to one full step.
Accuracy to within a few microsteps is harder, and requires very low
friction screws and ways.  Accuracy to a single microstep is just about
impossible.

If you really need extreme accuracy, you should probably be using
servos, but before you go that far, keep in mind the other accuracy
limiting factors.  A 300mm long steel screw will change length by nearly
4 microns for a 1 degree C change in temperature.  Unless you have a
temperature controlled room, 1 micron accuracy in the motors won't do
much good.

Regards,

John Kasunich
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users

Reply via email to