Stepper motor won’t turn once loaded

stepper motor

I can’t get a stepper motor to rotate a load that it should have enough torque to rotate. The load is a 3’ x 3’ x 2” table, with the stepper motor centered underneath. I have a 51204 thrust bearing between the motor and the table to reduce friction as much as possible. The table can be turned with a light touch, and when set in motion it continues to glide for some time before coming to a stop. I had a simple flange bushing machined which connects the motor shaft to the table. The motor shaft is secured using a set screw.

I’m using a 5V 1A DC power supply. I used the code and circuit from the MotorKnob example on the arduino website. I got a Texas Instruments SN754410NE dual H-bridge as instructed, since my motor is bi-polar. I modified the circuit to make it actually work (added one wire connecting the two +5V outside rails of the breadboard) and i successfully got the motor spinning ok by itself, and with the flange bushing attached. Everything seemed ok.

However, when i assemble the table, it does not behave as expected. I’ve fiddled with the setSpeed function: at 10RPM or less almost nothing happens, at 30-40 RPM it starts turning very slightly, then stops moving, then when the motor stops it sort of repositions itself and jiggles the table. Above 60RPM very little motion occurs. I’ve tried adding more steps (the motor is 1.8 degree, so 200 steps), but that has little effect either. I also tried setting it to step one at a time, with a delay between single steps, but this sometimes worked and sometimes did not. the motor gets the load moving, but then the load keeps moving, sometimes forward, sometimes as if the motor is trying to keep position. When it’s time for the next step, often the load is already spinning, which i wonder if is causing it to miss steps. This stepper motor can theoretically output 490mNm, Which should be more than enough to turn this table (estimated weight of 30lbs), but so far I haven’t been able to make it work with the standard stepper.h library. I’m aiming to eventually be able to turn ~500lbs on the table, and my math suggested that this motor should produce enough torque to rotate that weight 180 degrees in ~30 seconds (including allowing for friction of bearing). Any suggestions/hints/comments?

Stepper Motor: Trinamic Motion Control GmbH QSH4218-51-10-049
http://www.digikey.ca/product-detail/en/QSH4218-51-10-049/1460-1076-ND/4843427

Circuit & code from here:
https://www.arduino.cc/en/Tutorial/MotorKnob

I was reading up about how if the voltage profile for the stepper is not properly aligned for the particular motor, it may turn weakly (or not at all). Could that be what is happening here?

I’ve got an A4988 driver board now, I’ll try using it tomorrow, but i have a feeling my problems are in timing the motor control.

And lastly, if you had to design a system to rotate a table like this, would you go with a stepper motor? the rotation only has to be 90 degrees once every 24 hrs.

Thanks in advance!

Best Answer

Holy cow. That's a real load for a little motor like yours. The problem is not weight, but moment of inertia. If you're going to do this stuff, you need to figure out how to calculate this.

First, moment of inertia. For a disk of mass M and radius R, $$I_z = \frac{MR^2}{2} = \frac{(13.6 \text{ kg})({.43\text{m})^2}}{2} = 1.3$$ Since the nominal torque T of the stepper is .49 Nm, and 1/200th of a revolution is $$\Theta = \frac{2 \pi}{200} = .0314\text{ radians}$$ the nominal time for one step (starting from rest) is $$t= \sqrt{\frac{2\alpha}{\Theta}} = \sqrt{\frac{2T}{\Theta I_z}} = \sqrt{\frac{2\times .49}{.0314 \times 1.3}} = 4.9 \text{ seconds}$$ So your problem is that you're trying to step way too fast. Even manual stepping is, as you've discovered, unreliable. Your table is not terribly massive, although 30 lbs is more than you think, it's the large radius that giving you problems.

For this application, I'd recommend either a much beefier stepper, or a reduction mechanism to increase the torque at the table. Try putting a simple bearing at the axis, and use the stepper to drive the edge of the table (I'm assuming it's a circular table) using something like a 1" diameter rubber wheel - the smaller the better. This will give you a 30-fold increase in torque, with a starting step time of the order of 1 step/sec. You'll be able to ramp up the speed as the table rotates faster, so your total time will be less than 200 seconds for a revolution. But also keep in mind that you'll need a deceleration profile which matches the acceleration profile. The stepper will have exactly the same problems stopping the table that it had starting it.

EDIT - Oh yes, and your final load is not going to help. If it at all approximates a cylinder of the table diameter, since final mass is about 16 time the table mass, your step time will have to increase by a factor of 4.