Stepper Motors

Another way to use stepper motors is to put encoders on the stepper.
Then accumulated error is less and correction steps can be made.

That’s basically what a closed loop MaxNC mill or router does on the axis drives:

If the goal is low RPM discrete movements over partial rotations steppers have a very valid use case.

If the goal is higher RPM discrete movements over higher numbers of rotations motors rigged to be servos make more sense.

In CNC case it is common that servo drives like those from Panasonic on my larger home brew tools are AC motors with encoders and for short low speed movements I need to use gearing or cog belts to get the speed down and the keep in the higher torque operational area of the servo. For occasional short movements it’s okay to not gear down but honestly it is hard to just use the servo output shaft in most cases. Really same problem with FIRST drive trains and CIM motors. Stepper motors start to have decreased torque output the higher the output RPM where as servos tend to have higher torque in an RPM band higher up.

If my CNC work area is small, like say a 3D printer, it makes no sense to implement a full servo just so I can gear it down or do something with the electronics to push power into the motor and maybe blow past my intended target position. It makes more sense to use a stepper motor that tends to move slowly in discrete steps at higher power and catch the errors - with the extra bonus if a missed step is caught by the stepper with encoder it can be tried again which often works great with cutting tools pushing through materials.

Just to put it in perspective: servos with reductions can run at higher RPM with higher power than steppers so where professional larger size CNC is concerned (run time is directly proportional to production volume and money) I’d want the more expensive servos.

Course there’s the short movement intermediate case of hobby servos. In the hobby servo case the target position and the desired kind of movement is more to be smooth and close enough. Also it was likely cheaper to make the plastic gear boxes in volume than create the electronics when those first appeared on the market.

Radio Control History

Focusing only on the OP - Open loop control of a stepper will only be successful in those robot locations and during those match times where/when the stepper is always stronger than the varying loads it encounters. Otherwise the stepper gets stalled, and your count history becomes useless until you correct it using some known reference.

If you count the number of places on a typical (or close enough) FRC robot where the loads on motors are always low (or close enough), and/or fully predictable (or close enough), I’ll bet you come up with a short list. Those are the places where reasonably-priced (likely to be donate-able) steppers and their controllers are going to be useful.

I suggest using the steppers on your demo machines and other eye-candy, and using the alternatives during your matches.


I agree. Maybe I’ve led a sheltered life, but the only project anyone ever discussed with me that included steppers was ca. 1983 when the University of New Orleans automated the aiming of their 8" telescope. (With the light pollution, it had at least twice the light-gathering capability that could be justified. At least until 2005, when the lights went out for most of a year.) I can also imagine steppers being useful in machining applications. I really cannot come up with an on-field FRC application for a stepper that would not be more robustly met with a brushed motor and a high-count encoder.

On another subject I saw earlier in this thread: I have never paid much attention to brushless DC motors, except to plug a COTS fan into a computer I was building, the high-level theory as I was taking undergrad E&M, and a bit of subliminal/hindbrain work as I was reading “Prodigal Genius” about ten years ago. I was rather surprised to read that brushless motors could be left in a state that could not be electrically escaped. It seems to me that brushless motors should be built with N magnets on the rotor and N-1 electronically cycled coils on the frame/stator (or N+1 on the stator, but I prefer that the simpler solution be on the active side). In either of these configurations (assuming the smaller number is at least two), there would be no “trapped” states from which the motor could not start; essentially half of the coils would be available to pull the shaft around at any position. Did I miss a trick, or did the designers of brushless motors?

This is one the reasons why the motors have multiple (most commonly three) phases. All typical industrial servo motors will be able to generate torque at any shaft angle.

That is actually one of the more compelling reasons that they should be added to FRC! One of the most amazing things about FRC over the last decade or so is how VexPro, AndyMark and other vendors have stepped up to “democratize technology”… in the sense that it is so much easier now to source working gearboxes, chassis, control systems, and speed controllers.

If a particular brushless motor/controller combo were allowed how long do you think it would take before:

a) There would be a half dozen gearboxes designed to fit it available for sale at reasonable prices

and b) There would be suggestions for better motor/controller combinations?

I love the reliability and economy of the CIM… but the efficiency does leave a bit to be desired!


That’s the big issue. Once I knew what I was looking for in a controller and in a motor it became pretty easy to find things that would PROBABLY fit the requirements. [1] But a lot of the issues I ran into were because the specifications don’t involve things like “torque” and “rpm” directly and instead involve new terms like “kv” and a handful of constants that I didn’t know.

[1] Was looking sensorless brushless for cost reasons, ended up changing scale on the project and am using a pair of tiny brushed motors that, even with controller, come in cheaper than the motor.

So not really knowing much about Brushless motors (other than the basics of operation), what do they do better than the brushed counterpart?

More efficiency is a good one. Also more power density.

It’s easy to tell a brushless motor to go at an exact speed, or to configure it to have a flat speed/torque curve. They also are generally more powerful/efficient for the same weight/size.

Yes and no.

It’s not that they are inherently amazingly better for this, it’s just that the typical control methodology required for brushless motors requires you to have your ducks in a row and already have the sensors/firmware required to do so.

Above is a study by the Army Research Laboratory comparing brushed to brushless motors for use in UAV’s and land robotics systems. I like it because it talks about commercially available motors and practical concerns such as the fact that for consumer brushless motors the specs an engineer would need like stall torque, free speed, stall current, etc, etc. (what we are used to seeing for dc permanent magnet motors) are rarely if ever provided.

Reading 2015 R42 Table 4-4, it is legal to power electrical solenoids with the PCM. What is a stepper but 4 solenoids arranged about a steel rotor?
If each coil of a stepper were connected to a solenoid channel, and the channels were activated and deactivated in the right sequence, the stepper would function correctly. It would not be fast or efficient code, but it would work, it would be safe, and as far as I can see, it would be legal. Getting a robot inspector to agree is a completely different matter.

The inherent current limitation of the PCM ensures that unsafe forces will not be developed.

Useful applications of steppers in FRC include camera turrets, gating, and autonomous aiming mechanisms where a device needs to be rotated to multiple positions with a high degree of repeatability. There are some applications where there just isn’t room for multiple limit switches or the degree of movement required is so small that it simply cannot be achieved by brushed motors without overshoot.
All the warnings about becoming out of step mentioned earlier in the thread still apply, but a home limit switch can mitigate the effects.

It would also be useless. See, the limit on electrical solenoid actuators is 10W, 1" stroke, each. Therein lies the problem: converting that 1" stroke into a stepper motor isn’t going to be easy… (For that matter, I’ve only ever seen 1 team that I know for sure used electrical solenoid actuators. 1. And I’ve been doing this for… well, let’s not go into that.)

Meanwhile, the folks who used a servo or three are going to be done already and busy tracking. (And have probably rigged a window motor with PID to act as a really big servo…)

I don’t know much about steppers but I’d like to ask a question… if it were legal, how would it be wired to the roboRIO? What is its voltage and current specs?

One mystery I’ve been tracking deals with the loss of the Vex 393 being legal, and while I have yet to find the official answer why it was pulled… I’m guessing its electrical needs are not quite a good fit for the roboRIO. I’m still working out the amp draw from the roboRIO vs. the digital side car.

As I recall there were several rules about the wiring that prohibit any special wiring needs to manage the voltage… so for example if I wanted to use the 393 I could either provide a separate 7.2 power source, or wire my own voltage regulator. (these things would be discouraged). So I’m curious how good of a fit these stepper motors would be in terms of wiring.

Well if we used standard 1.8 or 0.9 degree NEMA23 steppers like a RepRap with 1.2-1.4A per phase at around 3.5 to 4.2Ohms.
We could use the same Allegro Semiconductor A4988 drivers as the RepRap RAMPS 1.4.
That would get a STEP+DIR interface to the stepper motor for a 5V TTL signal level and take the motor power from either the battery directly or some DC/DC conversion.

An Arduino can obviously control this with a RAMPS 1.4 board on a RepRap 3D printer with several steppers per MEGA2560 so there’ s no reason someone couldn’t hack up either an Atmel based stepper controller or just use the digital I/O.

The carrier board based A4988 drivers can often be found for the $4-$8 range each.
If you look around you can find a cheap Arduino in the $5 range.
Even if you forked over for the whole RAMPS 1.4 board with the Arduino you can get that whole package for around $75 from SainSmart.
You may also want to get some small aluminum heatsinks for the A4988 they can overheat near stall.

So one could create some custom RAMPS 1.4+Arduino MEGA2560 firmware and have a bunch of these steppers running from a RoboRio with that as a coprocessor drawing power from the robot PDP breakers. Seems like $75 + $10-$20 a stepper motor. Cost wise it’s easily comparable to cost of a Talon and a CIM or a bunch of hobby servos. Course this has the issue of how to integrate the field safety shutoffs, however I can see quite a few ways to make that work.

Speaking purely as a matter of possible - not as a matter of FRC legal.

The 2015 list of legal motors includes Electrical solenoid actuators with a specific limited power and a specific limited stroke length. I am absolutely certain that stepper motors are not, nor do they contain, solenoid actuators.

If I were inspecting a robot and found a stepper motor, I would not consider it legal. If a team tried to argue that stepper motors are just solenoids in a certain arrangement, I would tell them they are entitled to present their case to the Lead Robot Inspector.

If I were the LRI and a team tried to make that case to me, I would give them a yellow card for egregious attempted lawyering.

So I think, other than the brushless discution, we are somwhat off track. I Think the main point of the OP was to find resions why stepper motors could not be legalized but this has become more of a discussion on whether or not they are useful to a particular team. I think thay can and shold be allowed with very simple restrictions that are easy to verify. It won’t hurt you if you don’t touch them.

I think someone would have to demonstrate to FIRST headquarters that: your stepper motor control was cost effective, open-source and meets the safety requirements to get started down this path.

As noted previously then they might need to donate a bunch to FIRST to evaluate.

Good news is thanks to RepRap printers there is a big DIY community for NEMA17/23 steppers and the parts needed to control them. Thing is the end product will probably have to be FIRST specific or have FIRST specific options.

So yes someone could drive this change: but there’s some costs and some lobbying involved that will probably take this into late next year at the very earliest - if they even agree to consider it.

Also I’ve picked that NEMA size stepper for a better reason than merely the availability of cheap control parts.
You want steppers that will work within reason at the battery voltages of the robot.
CNC controls for steppers often use more than 24V even more than 48V for the stepper power supplies.
So realistically we should consider the practical limitations: FIRST is not likely to start letting you add whole batteries.

That assumes we use the same rule that only specific controllers are allowed. A 12v to 24v step up converter isn’t necessarily all that hard to find. I Don’t however know about the required current capacity for a typical size stepper you could likely see on an FRC robot.

How else would you implement the field safety features such that the stepper can not be moved while not enabled?

Yes you can certainly boost voltage like FIRST did with the cRIO.
Something like this would do it.
Course at 24V@3A you are just scratching the surface of the power requirements for a single stepper.
As an inductive load your switching DC-DC converter will need to be slightly overrated.

A A4988 for example can handle 1A coils with minimal heatsinking, 2A if you fully heatsink and force air cool. So if your RAMPS 1.4 PCB is configured like a Prusa I3 then you have: X, Y, Z split to 2 stepper drivers, extruder single stepper. Assuming the coils are all in parallel it’s easy to pull 1.4A or more to each stepper while moving full steps if the current limit set on the A4988 allows it. It is quite possible the maximum torque will limit below 200oz-in at the lowest RPM, more over even below 100oz-in with some stepping motors. This assumes of course that the voltage of the stepper is such that the robot battery voltage is sufficient to move it the full stepping and micro-stepping modes. So the voltage of the stepping motor should be below 12V to come off a FIRST style battery. (This is safe because this A4988 driver is a current limited chopper driver: set the current limit wrong smoke the stepper motor AKA safe unless you do it wrong.)

To put this in perspective: a <12V NEMA23 stepper with this A4988 on a 12V battery is going to be about the force of a general case hobby servo.
A RepRap generally needs a fraction of this force to move the mechanics if built properly.