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