For an application discussed in another thread, I'm using a Nema 23 stepper motor with a TB6600 driver. It has a high torque rating, but, a times, my physical setup pulls back too hard and 'offsets' the motor.
Is there a way to know if the stepper went into overtorque? Of course, when it happens, I do see/hear it. But I need to automatize this detection as my experiment must run for days.
The stepper is attached to an arm (which makes a thick rope vibrate). The motion of the stepper is rather violent and needs to be so.
As far as I understood, unlike servos, steppers are unaware of their position. When the stepper goes in overtorque, if it was aware of its position like a servo, it would be an easy job to see it, but here the stepper is just shifted in another angle 'without it realizing'.
I thought of using shock detectors but their sensitivity was arbitrary, and the arm in my setup already moves quite violently. Any ideas, hardware, or, even better, software, would be greatly appreciated!
When a stepper motor gets overloaded, mechanicly, is stops, it "stalls" and the rest of the movement is lost.
Normal design is to use steppers stronger than the maximum load. If the design is supposed to handle overloads servos are thinkable. They will use max force and fight the obstacle. I see a risc of overheating that motor if the situation last long enough.
If You can, design the environment can't overload the stepper. Using an "end of move" switch is what I can Think about. Using torque measuring equippment looks like rather advanced.
The harder the motor has to push, the more current it takes. The motor driver heatsink(s) will get warmer, so will the motor. Use a temperature sensor and watch for change?
@GoForSmoke
During a run, pulling a heavy load I guess You are right but if the stepper has ran into a stall, loosing "some" steps and then stops because of pulsetrain has ended, I doubt Your suggestion will help.
Once the stepper is stallied the torqe drops down to nothing. Current consumption then? I can't say.
I find that topic interesting as I'm facing a similar "problem" with the stepper I use on my barndoor. When the stepper moves the upper branch back to default position I have to stop the stepper manually in order to prevent the upper branch from hitting the lower branch and thereby damaging either the stepper or the gear. I'm thinking about a photoelectric sensor to tell the stepper to stop. Only question is how to put this into practice. Shouldn't be too difficult though
The TMC2208 stepper driver can detect stall and tell you about it, but probably not how many steps it missed. Check the data sheet for details.
There is an Arduino library for the UART interface of that chip; didn't try it myself as the library alone is bigger (12-13k or so) than an ATtiny84's flash memory (8k).
step1:
I find that topic interesting as I'm facing a similar "problem" with the stepper I use on my barndoor. When the stepper moves the upper branch back to default position I have to stop the stepper manually in order to prevent the upper branch from hitting the lower branch and thereby damaging either the stepper or the gear. I'm thinking about a photoelectric sensor to tell the stepper to stop. Only question is how to put this into practice. Shouldn't be too difficult though
Cheers
Any type of switch or sensor that can detect the door position would work. Same type of logic that is used for a limit switch or home position switch would work, step the motor in single steps, checking after each to see if the switch has closed (or opened, depending on switch wiring).
As for the original question, a rotary encoder on the output shaft would work. There isn't the usual problem of excess current or overheating when a stepper stalls, in fact a stepper that is holding position is in a stalled state, although stepper drivers often reduce the current when not actively stepping.