NEO 550 integration with Spark MAX

(Advance apologies for anything nonsensical; I’ll admit I have a somewhat hazy grasp on how brushless motors work)

I have a few questions on how the new NEO 550 motors will integrate into the existing Spark MAX/NEO system:

1: How will the Spark MAX differentiate between NEOs and NEO 550s attached to it? Will there be separate modes for NEOs and MiniNEOs, or will the MAX automatically detect what’s plugged into it? Bonus question - How might this work if even more brushless motors are introduced into the FRC ecosystem in the future? Even more modes?

2: If the MAX needs to be put into a different mode for NEOs and NEO 550s, what would the consequences be of running a regular NEO on a Spark in 550 mode?

3: If the MAX is electrically capable of commutating a motor at 10,000+ rpm, what prevents the NEO from being run faster than its current “free speed”? Would the motor simply fly apart if run faster than 6,000 rpm? Could the NEO theoretically be capable of running at 10,000+ rpm with a firmware update on the Spark MAX?

Any answers appreciated. Thanks!

I’ll take #3. Referencing Vex’s measurements (expand the motor curve data and scroll to the last row of the table):

At 12V supply and 100% throttle, the NEO only draws 1.326A, which means it’s consuming 1.326A * 12V = 15.9W. The friction in the bearings probably turns that much into heat at 5875 rpm. In order to get the NEO to run faster, you will need more voltage. (Which is an option outside of FRC competitions.)

As for #1 and #2, I speculate (but don’t know!) that the sensors on the two are compatible so that the SPARK does not actually need to know which motor is at the other end of those wires; it just commutates at the speed the feedback is coming at the desired throttle level (output voltage).

Why should it need to? If the sensor connection is the same, what difference would it make? (Genuine question.)


I’m assuming that the NEO 550 will run at a significantly higher RPM than the regular NEO - If my understanding of brushless motors is correct, their RPM is governed by the speed controller, in this case the Spark MAX. The MAX needs to know somehow at what speed to run the motor connected to it, even (especially?) if the connections to the motor are the exact same. I’m wondering how REV will implement that, and if their implementation will open itself up to abuse from teams trying to run the regular NEO at NEO 550 speeds.

Full disclosure, I don’t know how these work.
With that out the way I’ve assumed that the motor controllers don’t need to know the max speed of the motor, as they just apply voltage in the correct way depending on the current position of the motor, meaning max speed is governed by the specs of the motor and the voltage applied (as @GeeTwo pointed out). The motor controller just senses the position of the motor to figure out what coils to energise in what polarity.
Very happy to be corrected.

Sort of.

If you change which coils you have active prior to when the poles are in the correct location you are, at best, killing efficiency, and at worst, doing less than good things to your poor motor.

So it’s not a function of being able to just switch faster, the poles have to move into the correct location. Which, and this is going a bit into gut feel, is going to be a function of the inertia of the assembly spinning, the current in the coils, and the strength of the magnets.

Even assuming we can switch infinitely fast, because the Neo550 has a smaller diameter and less mess it will spin faster assuming all things else equal. (this is not to say this is the only reason. Just that it’s the easiest to grasp.)

Max speed of a motor per volt of applied electricity (KV rating) is determined by hardware characteristics of the motor (everything from diameter to material to number of magnets) - the 5600 RPM top speed of the Neo is a motor design limitation, no way to run it faster without increasing the bus voltage.

At least with how the MAX works, it really doesn’t have to care about any characteristic of the motor - it just needs to read the hall input, energize the corresponding phases with a user-specified duty cycle (when doing open loop control), and perform any necessary current limiting.


Makes sense, thanks.

Would this mean that there wouldn’t have to be separate modes for the two NEOs? Or would closed-loop control still require some sort of knowledge of what’s connected to the MAX?

There shouldn’t have to be different modes. That being said, I’d bet that (similar to the Neo) the inrush/stall current on the 550 is much greater than what you’d actually want to put in the motor, so some knowledge of the attached motor in order to current limit is never a bad idea.


Also not an expert, but what you’re describing is how brushed DC motors work: apply voltage, receive torque.

“Brushless DC” is a bit of a misnomer, because the current feeding into the motor is really a three-phase AC current. The voltage potential ramps up and down on various sets of coils, pushing the magnets on the rotor around. The faster you change the current on those phases (IE: the higher the frequency), the faster the motor spins. So, the motor has to tell the controller what position it’s in, and the controller has to push the motor at the desired speed.

Probably. I think.