Á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