Ádám Novák wrote:
> Hi,
> 
> I am at the state of configuring our stepper driven milling machine and came
> across an interesting issue.
> 
> I set up all the parameters needed to drive an axis including backlash
> compensation. Most important values are as follows:
> SCALE = 1000
> BACKLASH = 0.004
> Then when I hook up a digital micrometer to the axis and start jogging 1 mm
> each time what I see is this:
> - running at reasonably high speeds the backlash comp works well and the
> maximum difference is +-0.001 microns.
> - however, when I switch to low speed (really low speed) the difference can
> grow up to +-0.010 microns.
> 
> Well, this made me think I should compensate the friction on the axis too.
> As I searched through the EMC2 manual I did not find anything. I looked at
> one of our other machines' manual (with Heidenhain control unit) which does
> have the possibility to compensate friction so I assume the problem itself
> is not unknown.
> 
> Does anyone have any kind of suggestion what to do in this case?
> 

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