# NEO motor characterization results and motor curves

Team 8 opted to try out a 6x NEO drivetrain this year—7.67:1 gear ratio, 8x 6" Hi-Grip, 125 lb.
The drivetrain was characterized according to the kS kV kA model—see the 449 whitepaper here if you are unfamiliar.

The results can be found here. In summary, the characterization resulted in:

kS = 0.22 volts
kV = 0.50 volts per ft/s
kA = 0.17 volts per ft/s^2

Using these values to back-calculate some motor parameters, we arrive at a free speed of roughly 7000 RPM. The has also been anecdotal data (locked rotor stall tests, this thread) that when commanded 25%-30% duty cycle, the motor pulls 80A (motor side) at stall. Furthermore, the resistance of the motor winding has also been measured to be 36.5mOhm. All of this evidence points a true kV of about 580 RPM/volt and a true stall current of ~320A for the NEO.

I invite other teams to share their characterization experiences with NEO drivetrains, or even any more anecdotal evidence that points to what the performance of these motors is really is. With more data, we may be able to build a clearer picture of what the true specs of the NEO motor are.

8 Likes

Thanks for sending us an email @dardeshna. I’m going to post my reply here as well:

Looking at the kV and free speed RPM you calculated, there must have been an error somewhere along the way. Our published free speed (and therefore kV) was measured with an optical tachometer using a 12V power supply with the SPARK MAX running at 100% output.

We have recently found a bug in the voltage measurement in the SPARK MAX that we have implemented a firmware fix for, but are still testing. If your voltage measurements were coming from the MAX, I could see this being the source of the error.

Regarding the stall current, you are correct that the NEO’s internal resistance is ~36mΩ, which does mean the NEOs theoretical absolute maximum stall current is ~330A. However, this number isn’t achievable within FRC constraints, and is unlikely to be achievable outside of FRC without some extremely hefty equipment. The NEO will burn up almost instantaneously at that stall current, assuming the power supply and controller can provide that much current.

With our main focus for NEO and SPARK MAX being FRC users, we decided to publish the data within FRC constraints as this is the most useful and clear for the average team. Our empirical data was taken here at REV with the average constraints you’d expect to see on an FRC robot. We feel that if a team plugs these numbers into their calculations or JVN’s calculator, they will see predictable performance, if not better performance.

The theoretical numbers came out of calculations based on measured motor parameters and the theoretical power limitations of the system. Since publishing these numbers, we have received some additional testing data from external sources on an industrial dynamometer setup with a heftier power supply and a direct torque sensor which is better than the flywheel based setup we have at REV. It still uses the SPARK MAX as the controller. This additional data correlates well with the published theoretical data, so we feel pretty confident that those numbers are the theoretical maximum a team could see given these constraints, with the main constraint being the SPARK MAX surviving above 100A for a significant period of time.

We hesitate to publish the internal resistance and absolute maximum stall current because, as I said before, they are virtually unachievable. We don’t want to mislead users and drive them to design mechanisms that are likely to damage the NEO or SPARK MAX.

We will look at revising the wording in our documentation to better reflect what I explained above and we’ll figure out if there is a good way to publish the internal resistance with the appropriate warnings.

7 Likes

Thanks for the email response and the detailed explanation! I think the voltage measurement being misreported must have been the cause of why our calculated motor kV was too high. Also makes sense why the bootstrapped values I tried before characterizing totally didn’t work.