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?
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.
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.
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.
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)