Society of Robots - Robot Forum

Electronics => Electronics => Topic started by: designbynumbers on March 15, 2016, 08:10:42 PM

Title: Can't get several different kinds of stepper motor to run over ~80 rpm
Post by: designbynumbers on March 15, 2016, 08:10:42 PM
Hello Robot Experts!

This is a bit of a long story, and I'll try to keep the level of detail appropriate, but I can say that this is all embarrassingly well documented and I am more than happy to provide more pictures, part numbers, video, etc. I'm a mathematician working on a little robot project for my calculus class; a robot that throws a small ball from a rotating arm. I built a working prototype from VEX parts (you can see it in action here)

https://www.youtube.com/watch?v=qGkNjDZgBNQ (https://www.youtube.com/watch?v=qGkNjDZgBNQ)

but VEX is quite expensive and a bit flaky mechanically, so I set out to build one from off the shelf parts with an Arduino for distribution to other schools.

I got a suggestion to use a stepper motor for the basic drive (this may be my mistake already), a rendering of the entire build is attached; basically the idea was to use the stepper to directly drive an arm about 35 cm long. I'd like to rotate the arm at about 150 rpm (max). I built a test rig to hold the motor and cut a test arm from MDF to evaluate various stepper motors.

I first tried use an Arduino Motor Shield and the Stepper library to drive the steppers. That didn't work at all; after some reading, I read the recommendation that a driver board is usually much better, and that plenty of people recommend the AccelStepper library instead of Stepper. (I'm running an Arduino MEGA b/c I needed extra pins to run a display, a rotary encoder, and a relay as well as the stepper.)

I was also very puzzled by why the coil voltages listed were so much lower than the voltage I needed to apply to actually get things to run, but I think I get it now that as long as current is limited, high supply voltage can charge the coils faster and help a stepper run quickly.

I bought a BigEasy driver board from SparkFun. I'm powering the BigEasy with a 24 vdc/1.33 amp power supply; I've also tried a 24 vdc/2.65 amp power supply. I'm running AccelStepper in DRIVER mode, and I've tried all the combinations of full stepping/half stepping/.../16x microstepping that I can think of. The steppers do run smoothly at low speeds, so I don't believe that I've simply wired them backwards (but could I be wrong?).

I've tried several different kinds of stepper motors now, and all of them start to get flaky (randomly stopping, shaking, and refusing to go faster) about 60-80 rpm (I'm measuring the speeds with a laser tach, so I'm pretty sure of them and can provide more detail about settings and speeds if it helps).

The first stepper I tried was a 125 oz/in 200 step/rev motor from SparkFun:

https://www.sparkfun.com/products/10847 (https://www.sparkfun.com/products/10847)

at 16x microstepping, I got up to 74.69 rpm at 4120 steps per second. After which, things started to get weird.
Shaking, stopping and starting, failing when I put any weight on the arm.

After some reading around, I read that steppers lose torque at high speeds and may be unable to drive their own shaft if you rotate them too fast. So I figured that perhaps 125 oz/in just wasn't enough power, and tried out two gigantic stepper motors, both from Trinamic (the QMot series), with 238 oz/in and 435 oz/in.

Interestingly, the results were about the same. I can get each of them up to about 70 rpm, after which things get weird.

I was really surprised that the very different torque ratings of these motors didn't change anything; just to test on the other end, I tried an Applied Motion stepper motor (it's a 6-lead motor, but one I got on a special clearance sale for $10 each; I think it's even less powerful than the SparkFun motor, but I don't have any really obvious way to test it). The results were just about the same. Works ok at slow speeds, I could only keep it running stably at a max of 181 steps per second.

I have several working theories at this point, but maybe they are all implausible:

1) The BigEasy can't put out enough steps/second to run the motors fast. I'm willing to try the Trinamic StepRocker controller, which is advertised as "matched to the QMot series steppers", but it will be a pain to interface it with the Arduino. It has an internal driver, which presumably can put out many more steps/sec and also can take voltages up to 70v (the BigEasy seems to top out at 35).

2) I read that underloaded steppers can act strangely, and I've cut parts for damper to add mass to the rotating arm in the hopes that it steadies the motion.

3) Steppers just can't run this fast, and I need to gear up the motors to spin the arm faster. I have parts coming in to try this, but I am really confused because I see listed torque/speed curves for these particular stepper motors with speeds seemingly in hundreds of rpm.

I feel like I've put the time into trying to figure this out for myself, but there's clearly something that I'm just missing here. Can anyone help?
Title: Re: Can't get several different kinds of stepper motor to run over ~80 rpm
Post by: bdeuell on March 15, 2016, 08:53:05 PM
it sounds like you have already worked through many challenges by yourself.

- you mention a rotary encoder, are you using this for closed loop control or the operator interface?

- when the motor stalls does it always stall on the upswing? is the arm balanced?

- have you adjusted the current limit on your stepper motor driver, if you are limiting the current of your larger stepper motor to the same value it may be the reason you did not see any improvement

- steppers can face some issues with natural frequencies so it is possible this is part of the problem but it wouldn't be my first guess



Title: Re: Can't get several different kinds of stepper motor to run over ~80 rpm
Post by: designbynumbers on March 15, 2016, 09:15:53 PM
Dear bdeuell,

Thank you for the quick and helpful advice!

1) The rotary encoder is for the operator interface (basically, you're supposed to dial in the desired rpm, and later, the desired angle at which the arm will release the ball), it's not connected to the stepper.

2) The arm is balanced (the Inkscape file was exactly symmetrical, the actual part should be balanced to within lasercutting tolerances).   It doesn't seem to stall in any predictable position, but it does get rough at regular intervals. The whole assembly will shake -- smooth smooth BBB smooth smooth BBB is about how I can describe it (though I can post a sound file if you think it'll help). Eventually, the shaking part gets worse, and then the whole thing will just stop at that point.

3) I completely forgot about that little pot on the BigEasy! I attached a new arm with some additional mass (to see if it would run smoother), waited for stall, slowly raised the setting on the pot, the stepper started to move again... and blew the BigEasy completely, as far as I can tell. :P At least, the pwr LED is out, and it seems unresponsive.

Luckily, I have a spare, but I have to do a little soldering to get it in place. I'm kind of surprised that I blew the BigEasy with a 1.33 amp source (I thought it was rated for 2A?).

I am going to try to go back to the 238 oz/in stepper (reasoning that it might be less likely to blow the driver board) and the massy arm and will post again with the results.

All the best!



Title: Re: Can't get several different kinds of stepper motor to run over ~80 rpm
Post by: bdeuell on March 15, 2016, 09:39:27 PM
sorry i directed you to let the magic smoke out  :(

note the specs are:
2A/Phase Max
1.4-1.7A/Phase w/o Heatsink


when you describe the regular intervals at which it shakes are you referring to specific speeds?
unless you have problems with the arm itself shaking at natural frequencies i would move your additional mass to the support structure.
a video might go a long way for being able to diagnose these dynamic issues


Title: Re: Can't get several different kinds of stepper motor to run over ~80 rpm
Post by: designbynumbers on March 27, 2016, 06:39:38 PM
Hello again!

It took me a little while to get back to it, but today I swapped in my spare BigEasy driver and added a heatsink to the chip for good measure (using thermally conductive tape).

(http://www.jasoncantarella.com/downloads/bigeasy_with_heatsink.jpg)
(http://www.jasoncantarella.com/downloads/entire_setup.jpg)

and tried things again.

I made a couple of changes; first, I figured that perhaps the very powerful Trinamic stepper was drawing too much current from the board (or produced too much back EMF or something), so I went back to the SparkFun stepper

(http://www.jasoncantarella.com/downloads/stepper.jpg)

(Wantai 125 oz/in stepper, supposed to draw a max of 2.0A). I was still powering things with a 24 vdc wall-wart which is spec'd to product 1.33 amps
(I was worried about blowing the board again)

(http://www.jasoncantarella.com/downloads/wall-wart.jpg)

Then I built it into the overall rig and started stepping. What you see below is a frame built from 80/20 with a faceplate of 1/4" MDF which the stepper is bolted to. The stepper shaft is connected to an Actobotics hub, and that's connected to a disk of 1/4" ply with some rings of 1/4" MDF added to it to add mass. I'd say the whole thing weighs about 400g.

(http://www.jasoncantarella.com/downloads/test_rig.jpg)

The behavior is that it ran actually fairly nicely, with a little stutter, up to about 210 steps/second; I had to gently juice the pot on the board to get it to keep running smoothly. It got to about 210, hung up, and just quit. It seems the board produces no more steps. At first, I thought this was due to a wire coming loose (step B- had come loose). But when I reinserted the wire, still no more steps. The board seems to just be done. I was hoping to make a video to show the shaky rotation, but the thing quit before I got the chance to (I got about 90 seconds from powerup to stopped working).

FWIW, I'm wired (from the stepper)

Black -> A+
Green -> A
Blue -> B+
Red -> B

Yellow and white -> not connected, just kinda hanging there.

Now I'm really confused! Maybe the red wire coming loose blew the chip? Or maybe having so much inertia on the motor is ... (here my grasp of E&M as applied to steppers is failing me a little, but I could imagine some explanation like "the mass keeps spinning causing an induced current in the wire which is backwards from what the driver expects". Or something.)

I have some backup backup stepper drivers coming eventually. But where am I going wrong?

Hope all is well with you!
Title: Re: Can't get several different kinds of stepper motor to run over ~80 rpm
Post by: bdeuell on March 29, 2016, 08:11:03 PM

note the best way to cool this chip is through through the thermal pad on the bottom of the chip, but without making a new board the heatsink on the top is better than nothing, if you still have overheating a small fan can make a big difference.

if you are supplying the board with only a 1.33A wall wart but trying to draw 2A there is a chance you are undervolting the system. basically as you try and draw more than 1.33A the voltage will start to drop. the datasheet lists 8v min for the load supply voltage. i would recommend using a power supply capable of delivering the desired current and adding a fuse if you are concerned about something drawing too much current.

looking at your motor pinout i think you might need to flip the blue and red wires. the motor datasheet i pulled off sparkfun shows:
BLK A
GRN A-
RED B
BLU B-

i do not see the yellow and white wires listed on the datasheet but it is likely these are center taps to the windings so that the motor can be used as a unipolar stepper, this could be confirmed with a multimeter.

I have also heard connecting or disconnecting the motor while under power can fry these chips so that may have been the fatal blow to your chip. Im not sure of the exact reason why this can destroy the chip but a motor is also an inductor so if it is disconnected under power the energy needs to go somewhere this can create very high voltages. also there is current feedback through a sense resistor and connecting/disconnecting the motor may cause issues for the current regulation.