rjlittlefield wrote:mawyatt wrote:without micro steps missed
Mike, can you clarify your concern with "micro steps missed"?
I think it's clear what missing a full step means. That's when you think the motor is on tooth N when it's really on N-1, for example because it stalled out with not enough torque or trying to step it too fast.
On the other hand, microsteps are really just part of the command protocol of the controller. They don't have a digital presence on the mechanical side.
I certainly see how things could get messed up if say you tell the controller to change from 1/16 to 1/4 mode when it's not in a state that can be reached in 1/4 mode, or if you somehow managed to change its mode at the very same time you were commanding it to step. Either of those could result in the controller being internally in a state different from what the rest of the system imagines.
But I can't tell whether that's your concern, or something else that I haven't thought of.
Can you clarify?
--Rik
Rik,
Sure. Some of this is for others since I know you have a good knowledge of stepper motors and controllers having written the useful Zerene interface for the nice Stackshot rail system.
First almost all stepper based systems are open loop without feedback, so position is "assumed" not verified. Missing full steps is common with some controller & motors, especially if the acceleration and inertia is high. This can be prevented by proper motor size and details and carefully controlled acceleration and velocity profiles. Motor internal details become important here with static magnetic fields and the field created by the winding coil current.
The motor has an internal electrical time constant, which is the inductance times the resistance (L*R), the exciting current follows a classic exponential profile (exp^t/tau) relationship when under voltage control, and generally needs to have at least 4 constants to reach final value (exp^-4 ~ 2%). Since the coil induced magnetic field is directly proportional to the coil current, short pulses of current where the current can't get close to final value will also reduce the induced magnetic field and eventually not allow the rotor to step to the new position, thus a missed step. What happens on the outside of the motor also influences the ability to make a step, high friction and/or inertial being examples.
A simple example of some of these principles can be experienced by just running a motor without anything attached to the rotor. As you increase the step rate the motor speeds up and eventually you reach an electrical step rate where the coil current can't create enough magnetic field to "pull" the rotor to the next step, so the rotor moves forward some then flips back to the original position and the process repeats and the rotor doesn't actually take another step, so appears to be "locked". Now if you reduce the step rate slightly the motor will still remain "locked", even though you can get the motor to operate at this reduced step rate if you slowly approach from a much lower step rate. Why, because the rotor has inertia and this allows the rotor to "jump" to the new step as it's already heading in that direction, but without this inertia the rotor must accelerate and make the step from standstill which is obviously more difficult than when already "running" in the right direction. This explains some of the weird behavior of stepper motors in various setups and control schemes we've experienced.
Some of the newer controllers allow the motor operation from a much higher voltage, as example the motor I mentioned is a 2.4V motor with 1 ohm resistance, 2.4 Amp coil current. I'm operating the motor with 12V which would normally burn up the motor, controller or power supply because of excessive current (5amps!!). What's happening here is the controller is pulsing the motor coils using a Pulse Width Modulation (PWM) concept that is faster than the motor time constant, so the coil current doesn't achieve final value. However, the average coil current can still achieve the desired level the motor requires because a higher voltage is used to "force" the coil current, abet during a shorter interval, which in effect creates a current controlled concept rather than voltage controlled (remember the discussions long ago on the advantages of current control over voltage control!). Since motors are fundamentally a current (magnetic field is current induced, not voltage) device this control scheme is more desirable. The beauty of this technique is twofold, first the higher supply voltage allows a higher initial torque vs. time and potentially better motor performance, and second the clever use of the H bridge to allow this coil current to return to the supply during the "discharge" time period (rather than waste it) dramatically reduces the overall system power consumption.
The PWM technique along with the H bridge also allows the coil currents to be controlled in such a way that fractional amounts of average coil current and direction can be controlled. By controlling the relative coil current levels and direction partial steps can be achieved but at reduced holding torque. Much info is available online, here's couple sites for more details.
https://www.orientalmotor.com/stepper-m ... rview.html
https://www.youtube.com/watch?v=Ew6eVGnj7r0
Since the motor position is only inferred by the number of, direction and type of pulses to the coil windings it's possible for the system to misrepresent the motor position. Counters are generally employed to count the number of pulses, these can be hardware or software. The popular IC stepper motor driver chips don't employ any internal counting capability (although some recent types do), so the motor position algorithms must rely on other means. Depending on how the counter is configured and how the counts are acquired and used it's possible for the system to compute a position that is based upon the total number of counts which could include missed steps, either full or micro steps. For example the step controller directs the driver to make a step, but the driver doesn't recognize the step command until it's finished with some other task (changing direction, or micro-step mode, or motor current control and so on), and when it's ready to execute the step another step comes in, so only one step is performed but two were issued. If the counter didn't recognize this missed step the count would be off by 1 step. There are many reasons why a step could be missed or not achieved by the motor, from mechanical hardware (motor/system resonances, intermittent torque, load dynamics, changing speed, acceleration, direction), to the controller computer interface, glitches, and even design bugs in the controller/driver system.
The folks in digital communications deal with these bit errors all the time and use various techniques from simple CRC to complex Viterbi/R-S encoding, but the stepper motors have no way to verify the right code has been performed without some sort of feedback since Forward Error Correction doesn't seem possible in this application.
Hope this helps,
Best,
Research is like a treasure hunt, you don't know where to look or what you'll find!
~Mike