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=qGkNjDZgBNQbut 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/10847at 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?