I know stepper motors are usually operated in open-loop systems. I'm curious to why they aren't usually part of closed-loop systems? Also why aren't PID control methods commonly used with stepper motors?
3\$\begingroup\$ What would be the benefit of using a stepper with closed-loop/PID? \$\endgroup\$– brhansApr 15, 2018 at 18:25
5\$\begingroup\$ You ABSOLUTELY can use a stepper in closed-loop. Picture a stepper motor design that points a photodetector at a moving point light source. \$\endgroup\$– Scott SeidmanApr 15, 2018 at 23:11
1\$\begingroup\$ you can have closed-loop, though I am not sure if PID is suited for it. For example you can do backchannel analysis to detect missed steps with steppers: for example, look at TMC2130 stepper drivers datasheets for applications. \$\endgroup\$– Florian CastellaneApr 16, 2018 at 13:11
1\$\begingroup\$ I believe, often step motors are used without feedback (open loop) because the designer is lazy. A good designer is lazy, not doing more than necessary. If no feedback is needed, the keep it open loop. (Being lazy is one way of keeping costs down). \$\endgroup\$– ghellquistApr 16, 2018 at 18:34
The main point of a stepper motor is that you get discrete steps. However, the cost is larger size and lower efficiency than a continuous motor of the same torque. Stepper motors also have a low upper speed.
The advantage of discrete steps can outweigh the various disadvantages when the system can be controlled open loop. If you're going to provide feedback and close the loop anyway, then the stepper motors gives you the worst of both worlds. You might as well use a position encoder with feedback, or a motor with position feedback (like some brushless DC with Hall sensors).
As Dmitry pointed out in a comment, a control loop around something that can only be adjusted in discrete steps can very easily lead to oscillation. The system will continually dither between the two steps adjacent to the exact answer if there is any undamped I response. When the discrete steps are mechanical, that can cause higher power drain, wear on the parts, and undesirable user experience.
3\$\begingroup\$ Additionally, PID controllers with a large I factor will oscillate endlessly between two adjacent positions of a stepper. \$\endgroup\$ Apr 16, 2018 at 11:32
1\$\begingroup\$ @Dmitry: Good point. I've added that to the answer. \$\endgroup\$ Apr 16, 2018 at 12:52
This is not actually particularly rare. In industrial systems, stepper motors with encoder feedback are relatively common. And for hobbyists, there is e.g. the Mechaduino project.
There are several benefits to using feedback with stepper motors:
- Does not lose position when overloaded.
- Can handle higher torque loads, because the feedback keeps magnetic force optimally aligned. In open-loop stepper control, the maximum torque magnetic alignment would be when the rotor is 1 step behind the magnetic field. But if the rotor falls more than 1 step behind, the torque starts decreasing and it quickly falls 4 steps behind and loses steps.
- Motor runs cooler because the feedback adjusts control current depending on load.
The only drawback compared to open-loop stepper systems is the price. However, the real competitor is closed-loop BLDC motors, which have advantages over closed-loop steppers:
- BLDC motors need only 3 push-pull driver channels, whereas steppers need 4.
- BLDC motors can usually handle a wider speed range, though this depends entirely on the design choices in the motor.
- BLDC motors have less cogging, so they can achieve better position control.
This is the reason why in industrial projects BLDC motors are getting more and more common in closed-loop systems. But for hobbyist, stepper motors with high torque can often be cheaper than BLDCs with similar torque, and it is also mechanically an easy upgrade from normal stepper motor.
1\$\begingroup\$ @jpaugh Mechaduino is a stepper motor + closed-loop control, which does make it a servo motor. But the motor used is identical to the stepper motors that are used without feedback. \$\endgroup\$– jpaDec 11, 2018 at 13:45
Provided you don't miss a step, a stepper motor should give you a deterministic movement. You can run it N steps forwards and N steps backwards and it will be in the same place. This is because the steps are discrete.
Problems arise if it jams or you try to drive it too fast. Many systems have a simple means of resetting to a known state through a limit switch. e.g. floppy disk drives have a "track 0" sensor; on insertion the computer will drive the head backwards and forwards until it finds track 0.
\$\begingroup\$ Another source of error could be overshoots; e.g. if slowing down / stopping a load with (relatively) high inertia. \$\endgroup\$ Apr 16, 2018 at 14:22
I've worked with systems that achieved extremely precise rotational positions and rates by microstepping stepper motors that then drove a worm gear unidirectionally. The key to that system is a linear encoder wrapped round the rotating part, which gives you you closed loop. This was positioning a diffraction grating in a spectrometer.
Some motorised microscope stages also use a linear encoder close to the specimen. In this application the load or its leverage may change by enough that the mechanism deforms or its backlash changes, meaning that counting steps from a reference switch no longer gives an accurate position. This may or may not be used ion a closed-loop configuration (i.e. we may just want to display the position to sub-micron precision, or we may want to move the sample in such steps)