I am working on a Collegiate project where we need to run 1 (preferably multiple) Stepper motors with a high degree of accuracy and speed. We are developing an Earthquake Simulation Table using NEMA 23/34 Stepper Motors.
So far we have been trying to use the Big Easy Driver, but have had no luck getting even remotely useful motion out of it, so we are looking at other options.
Here is what we need:
It cannot be a 'Shield' - it Must be low-pin count Serial Communication, leaving the majority of the Arduino Pins free for use by other systems, as we will be running many more systems alongside this.
Resolution: 8x Microstepping or Higher (1600+ Steps/Revolution)
Speed: Maximum Available from Motor, exceeding or meeting 180 RPM / 4800 Steps/second at 8x Microstepping
Accel: Currently Unknown, but we are working the math, and figure that it would max at about 6g forces.
Torque: At least 80% of what is available from the motor
Holding Power: At least 80% of what is available from Motor. Motor must be fully controllable, stop on a dime, and switch direction, with no Deceleration unless specified by systems program.
One product we are looking at is the SparkFun AutoDriver. We like this kit because it has it's own on-board processing, reducing load on the Uno R3, such that we only have to 'tell' the driver what to do and it does it for us. Because it is black box however, we are concerned if there will be undesirable accelerations in the device due to firmware.
We are seeking options for other Stepper Drivers however. What have you all used that you are pleased with? Unfortunately, we are under an extreme time crunch before our prototype deadline, and we are trying to make a decision within 48 hours. We have very high performance needs, obviously, akin to the performance that Arduino-based 3D-Printers need out of their Stepper Motor Drivers.
No one can help you, because you have not given us the voltage and current specifications for your stepper motors.
Is that SparkFun AutoDriver what you need? 3A, 8 to 45V driving voltage? Then it looks like you've already found what you need, as it is SPI interface.
How fast you can accelerate the system is going to have more to do with the stepper's torque and the amount of mass it must accelerate.
Oh, and 3D printers only require wimpy performance. Most use stepper motors that are only about 30oz-in. But the mechanics are very light, and they aren't pushing against anything but inertia and very little friction.
As we specified NEMA23/34 Stepper Motors, they will use a minimum of 12V, but offer highest Torque/Speed at higher Voltage and Current Ratings. As such, more of each is better. Power supply will more than likely be 24-30V, 2A.
3D printers may be very light, but they must be /very/ accurate - which is again, what we need. Accuracy costs processing power, which is why we used that analogy.
We're looking for recommendations of drivers /besides/ what we have found already, ultimately. While the AutoDriver /looks/ good on paper, what have people had luck with in High Torque, Speed, and Accuracy systems?
As you are probably aware, the first two digits of the NEMA specification are the size of the mounting faceplate. It seems premature to tell us what voltage and current you think the power supply should provide, when you haven't finished working out the torque and power requirements for the motor, or even how many motors will ultimately be required.
If you want a lot of speed and power, I suggest using DC brushless motors, with a servo feedback system. What is going onto this earthquake simulator? A small object? A person? A room simulator?
Stepper motors are accurate, as long as you never overload them and cause them to stall or slip. Otherwise, drive it 100 steps, it moves 1/2 turn regardless of it being a 500mA or a 5A stepper.
As pointed out, NEMA is merely a physical size designator. There are lots of 5V NEMA 23 out there. I've seen NEMA 23 that are 1200 oz-in, and I have a couple of NEMA 34 that, despite the larger size, are only 135 oz-in.
You will have to figure out, based on mass and acceleration, how much torque you are going to need before anything else can be worked out.
In all of the NEMA23/34 size motors we've come across, I've yet to see one rated for less than 12V, I've also yet to see an arduino compatible driver rated for over 45V. The only <12V Steppers I've seen are the tiny ones from Pololu/SparkFun/AdaFruit.
Our motion surface will be .25m^2 in area, driven in a single axis via a 4-Bar Crank Slider. Maximum possible displacement will be +/- .1m (Thus, a .1m crank shaft on the 4-Bar system). The maximum allowable mass including the mass of moving parts attached to the crank is 15kg. While actual earthquakes have a PGA (Peak Ground Acceleration) that can approach 3g, this isn't particularly possible on a small tabletop machine without ripping the device apart. We will probably use a maximum 1:30 scale for our machine, using a maximum of .1g of Acceleration, but would like to have a moderate factor of safety in there, if we can afford it. Accounting for .15g would be ideal, though we are currently not sure if it is possible when running Motors in excess of 180RPM speeds to maintain Position & Acceleration accuracy. We are using a steel track with linear bearings, with a friction coefficient equal to or less than ?=.01
With Torque being max when the crank is perpendicular to the axis of motion, the maximum Force due to Friction and Acceleration would be roughly .075 (? with 2 Rails) + 22.07 (Acc) =~ 22.15 N. With a .1m Crankshaft, this is 2.215 N-m, or ultimately, ~22.6kg-cm.
This has led us to This Motor, however we have begun development with a much smaller motor, to get the basics of Stepper Motion and Control down first.
Thanks for providing some of the design details! Note: the linked motor would be rated at 8.6 V and requires a 4 amp (minimum) power supply to achieve maximum torque.
jremington:
Thanks for providing some of the design details! Note: the linked motor would be rated at 8.6 V and requires a 4 amp (minimum) power supply to achieve maximum torque.
I realize how you got to the 8.6V - (4.3 Ohm resistance x 2 Amps), but how did you determine the minimum current supply of 4A? Did you just do a straight x2 multiplier?
I'm curious about a bit of the Electrical Engineering behind this. I'm a Mechanical Engineering student, so this is my first foray into Mechatronics systems whatsoever.
I'm surprised that the voltage is so low - what does Voltage 'do' for a Stepper Motor, then? (As opposed to say, a standard 2.2VDC LED?). I assumed Voltage would have to be 'high' (at least compared to 3.3/5V Microcircuitry). My current understanding is that Voltage controls speed whilst Current controls Torque, which I now believe to be false.
How is maximum speed 'achieved' if not controlled by voltage? (Or is speed current-dependent?)
Is it common for Stepper Motors to use this little voltage?
I'm under the impression that I can use one 'unified' power supply for this then, IE, 12V 4A powersupply, hooked up to the Arduino and the Motor. (Our Arduino is 7-15V tolerant, and from what I understand, it only draws the current that it 'needs', so the 4A shouldn't matter if it only needs 100 mA)
The AutoDriver is rated for 8-45V - what does this mean for us when the Motor uses 8.6V? That's awfully close to the lower limit of that particular driver. If we were to change motors, and our new motor was 7.8V, does that imply we could no longer use a driver such as this?
Any other driver recommendations out there for this type of heavy duty use?
Here are some thoughts, not in any particular order. Hope this helps! For much more info than you ever wanted to know about steppers, consult Jones on Stepping Motors
The 4 amps comes from the fact that to get the maximum (holding) torque out of the motor, both windings need to be energized at their maximum current.
Heat is generated by the winding current, so motor manufacturers rate motors by the maximum steady state winding current that the motor can tolerate. Normally a typical temperature rise at maximum current (or maximum operating temperature) is given in the data sheet so that you can judge whether the motor is overheating. Some motors can operate effectively and be too hot to touch. The voltage "rating" is just the voltage that produces that current, considering the winding resistance. There are lots of big, heavy duty steppers that are rated at 2 or 3 volts. That in itself doesn't mean much, because these motors are intended for use with much higher voltages and switching motor drivers.
Voltage does control speed, because the inductance of the motor winding controls how fast the current rises. The relevant equation is: coil voltage VL = L di/dt where di/dt is the rate of change of coil current. To turn than around, di/dt = VL/L, so to get the maximum rate of current increase when initiating a step, you want to impress a high voltage across the coil terminals. Once you've reached the maximum allowed current, you limit the coil current. That is the function of a switching stepper motor driver.
You probably do want a power supply that can provide 20 to 40 volts at 4 amps, to get the most out of that motor, but the driver has to handle the maximum current without overheating. There aren't many choices in the hobby outlets that can do that, so you may have to buy an industrial motor driver.
It is always a good idea to have the computer/microcontroller powered by a completely separate power supply than the motor. This would be especially true for a fairly high power setup like yours. But of course, all grounds have to be connected!
All that said, steppers are probably not the best choice for your particular application. You should consider brushless DC motors too.
jremington:
You should consider brushless DC motors too.
How could we possibly get such fine control of Displacement, Velocity, and Acceleration out of a DC Motor? Wouldn't that require incredibly precise accelerometers providing feedback dozens, if not hundreds of times per second? Our ultimate goal is to reproduce a historical Earthquake to scale, meaning that the motion, PGV, PGA, and moments have to be identical to scale. I'm not sure how you get that type of control out of a DC motor without using a system that requires significantly more processing power than Arduino can provide (and at the same time, significantly increasing cost)
Ultimately though, that's still beside the topic of this thread - we've yet to see any Stepper Driver Recommendations at all(Reading through your website, jremington). We've seen them implemented in many many projects, but it appears that nobody really 'pushes' their systems to hardware limits enough to recommend them. Unfortunately, we have neither the time, manpower, nor budget money to buy 12 different drivers and test them. (Heck, we haven't even been able to get the Big Easy Driver to work. Won't go over .5 Hz at constant speed, at all. Driver Creator says it is a Arduino problem, but we find that suspect)
Also, SparkFun has recently provided us with this website, explaining a bit more about Stepper Voltage.
The Arduino forum seems mostly oriented toward hobbyists and you are on the edge of industrial-type applications. The page you linked for the motor of choice featured some some pretty cheap industrial motor drivers in the sidebar, at up to 5 amps/channel. Any of those rated for well over 2 amps/channel should work (i.e. you don't want to test the driver limits).
A shaft encoder, combined with a feedback loop and appropriate driver, is all you need to control shaft angular position, angular velocity and angular acceleration of any motor. Many, if not most, industrial robots use DC motors because they are higher power, easier to control and motion is smoother than with stepper motors. As an example of an inexpensive, high power DC motor controller, you might look into the JRK motor controller at Pololu. https://www.pololu.com/product/1392/
Brushless DC motor operation requires that the driver "know" the shaft orientation at all times and so with suitable control circuitry, they would be perfect for your application. Search with phrases like "precision brushless motor control" for more info.
I've looked at this thread a few times without commenting. There doesn't seem to be much progress.
Can you describe in mechanical terms what sort of machine you are trying to make? It sounds like you have a square table 25x25 cm weighing 15kg that you want to oscillate up and down by 10cm with precise accelerations?
You don't say how frequent those movements should be, or how many should happen in sequence. You don't say if each movement in a sequence is to have the same or different accelerations.
Have you considered using a stepper motor to drive a screw mechanism or a rack and pinion. These sorts of mechanisms are used in 3D printers though obviously yours would need to be more powerful. They have the advantage that the torque or displacement doesn't depend on the orientation of a crank.