I am trying to get a high accuracy and not so extremely high resolution motor to work.
It's a step motor with 200 steps/rev and the motor driver can compute up to 400x microstepping. We have an high accuracy optical encoder with 4700000 lines per revolution (in reality there are 23600 physical lines, but 200x interpolation by the interface). And there is a 1:360 gearbox.
edit: The encoder is mounted at the actuator side, BEHIND the gearbox etc.
Our primary goal is to have an high overall accuracy better than 1 m°. The resolution is not as important as the accuracy. So there can be positions which are only discretely reachable (depending on the motor and microsteps).
In this setting let \$N\$ be the factor of microstepping and \$M\$ a prescaler (divider) for the encoder which can be set in the motor driver. There is NO multiplier.
The encoder resolution then is \$\frac{360°\cdot M}{23600\cdot 200}\approx {76}\cdot{M} µ°\$. while the resolution of the motor with gear is \$\frac{360°}{360 \cdot 200 \cdot N}=\frac{5}{N}\mathrm{m}°.\$ There is no way so far that the resolutions match i.e. $$\frac{360°\cdot M}{23600\cdot 200}=\frac{360°}{360 \cdot 200 \cdot N}\Leftrightarrow M\cdot N=\frac{23600}{360}\approx65.55556.$$ I can't choose any combination from M and N (both integer) to reach the 65.56, do you guys agree? The only way is to buy another encoder with a different line count, eg 18000 lines/rev?
I have a few questions about the whole thing:
- If I could choose: Which resolution should be higher? Encoder or motor?
- Is the fact I can't match the resolutions a problem regarding the accuracy or not? So shall we buy another encoder or not?
- I can only reach positions which are multiples of \$\frac{5}{N}\$ millidegree, correct?
- What if I want to control the motor with an PID control which is embedded in the motor driver, can there occur problems? Because I won't reach any arbitrary position 100% accurate if 2. is right.
- Even if my set position is a multiple of \$\frac{5}{N}m°\$ there is no guarantee, that the STABLE (ie a position where the holding torque is high) electrical position matches my encoder position because of a) non linearity effects in the microstepping, b) misalignment of the encoder and c) effects made by the gearbox (c is an edit, sorry forget to mention it). A PID control could possibly not come to rest since the integral part sums and at any time the motor makes one "step" in the "right" direction. But then there is a error with opposite sign. So it oscillates the whole time, even if the position is a multiple of \$\frac{5}{N}m°\$. How to deal with that problem?
- (this question is optional for my task but is interesting) Is there a way to set any arbitrary position with a step motor? I've read that stepping motors are nothing else than synchronous motors with a high number of poles, right? So a vector control could be appropriate, is that right?
Thank you very much!
edit:
From your two answers I see, that I possibly didn't say clear enough what the problems are ;-)
Question 6) really is optional. We need accurate positions, but not arbitrary positions. But I've read (unfortunately I can't remember where), that stepping motors in closed loop can behave like synchronous motors. Because they simply are synchronous motors with high pole number and more holding torque.
The main question here is how to choose the resolution of the encoder and the motor. Maybe we want to buy a new encoder and so I could get one with something else than 23600 lines to match the resolutions. But this is an effort that we can save if there is no advantage.
Does the encoder increase the accuracy in a microstep setup? I don't think so, because there is no "continous" control, only stepping. But the steps are not 100% precise due to nonlinearity etc?
I'm just wondering if this setup is so special? I know steppers are used open loop frequently, but a global motor and mechanical tools manufactor offered the closed loop system as it would be standard. It must be used there outside, almost every motor driver has an encoder input. So I thought I'd be a simple question :)
edit number 2:
Just to clarify: I don't want to throw money away, I'm just trying to make the existing systems (5 or 6 workstations with 2 motors and encoders for calibration tasks of sensors) a bit better.
I didn't buy the first version of the system since I'm new here. Nowerdays I'd maybe go with servos to be more flexible, but they are more expensive. The encoder is only used to ensure the endposition (in microsteps) is reached more or less. As a improvement I wanted to enable the embedded PID control to deal with velocity and load changes during a movement. But it seems as if driving the system with a PID controller is not the best idea, because there always will be some oscillation because the resolutions don't match?
The systems are accurate enough at the moment. It's more a question about how to improve the system in matters of speed and reliability. And for me personal to understand the things better.
Now the point regarding throwing away money: We will buy another system soon. To ensure compatibility we stay with the same components (this time, next time this could change because of my "research"). But there is the possiblity to choose another encoder resolution. This does not mean it's better - moreover it's worse, but still accurate enough. The main benefit I can think of is that the resolutions match. Either 1:1 or 1:2 (encoder is more accurate). I'm trying to find out, if this really is a benefit or not.