11w/5.5w V5 Motor Torque-Speed Curves - Based on Real World Data!

Preface

This post is heavily inspired by these two fantastic posts by @jpearman:
Motor torque-speed curves
Motor torque-speed curves - REV2
These threads sparked my curiosity into the complicated dynamics of DC motor performance way back in 2015, and I am very greatful to James for having written them. It is my hope that this thread can in some way continue on that legacy and maybe serve as some inspiration of its own.

Also I’d like to thank Kenneth (you may know him for this or this) for help with the design of the flywheel including sourcing of parts.


Introduction

You may be asking - Hey, doesn’t VEX already publish torque-speed graphs for the V5 motors?
Yes! However, there are some issues with the official graphs that I’d like to go over. Here they are:

V5 Smart Motor (11W)


source

V5 Smart Motor (5.5W)


source

A few things to note:

  • The 5.5W motor graph is almost certainly synthetic or idealized. Perfectly linear relationships like those depicted in the graph do not exist in these kinds of real-world problems.
  • Both the 11W and the 5.5W graphs (especially the 5.5W) cut off early at the rated speed of each motor. There is significant headroom to the right of this artificial cutoff on the graph as the motors approach their free-spinning speed at maximum voltage.
  • Measurements for Torque in the 11W graph appear to be directly proportional to current measurements, which could indicate they are calculated from current instead of directly measured. There is a strong relationship between these two values in the real world (generally, more current = more torque); however, it seems a little too perfect here. If this is the case, then the calculated power value would also be based on some assumptions that don’t play out in the real world.

Because of these reasons, I think there is some merit in independently measuring the motor’s performance, specifically via measuring the torque output of the motor at multiple speeds.

Methodology

Theory

Measuring torque at speeds other than stall is a challenging proposition. Using an electronic device such as a load cell to directly measure the torque is difficult because of the necessity to electrically connect a device which is connected to a rotating axle. Such tools do exist for this purpose; however they can be cost-prohibitive.

Another approach is to use the motor under test to spin up a large weighted flywheel for which the moment of inertia is well known, and measure the rate of acceleration of this wheel very precisely. Several options exist for this commercially; however it is also common to see R/C enthusiasts DIY their own. I chose to follow this latter approach.

How can we calculate torque and power by spinning a wheel? Math!

Here is Newton’s second law for rotation:

\tau = I\,\alpha

We see that Torque (\tau) is equal to the Moment of Inertia (I\,) times the Angular Acceleration (\alpha). Therefore, if we know the wheel’s moment of inertia and also what its rate of acceleration is at a given moment, we can calculate how much torque is being applied to the wheel.

To calculate power, we can use the equation:

P = \tau \omega

We see that Power (P) is equal to the Torque being applied (\tau) times the Angular Velocity (\omega). Therefore, if we know the angular velocity and also the torque being applied to the wheel (from above), then we can calculate the instantaneous power output of the motor. We now have the math we need to generate our own graphs.

One thing to note here - our inputs to these equations are Angular Acceleration (\alpha) and Angular Velocity (\omega). As a result, accurate measurement of these values is critical to the accuracy of our results. Even very small amounts of jitter in our angular velocity measurements will cause larger errors in our angular acceleration measurements. Unfortunately there are some issues with the velocity measurements built into the V5 motor (se this excellent writeup by @Sylvie). Therefore, as you will see in the section below, I decided not to use the V5 motor’s internal encoder for velocity measurements, opting instead for an external high resolution encoder connected to an external microcontroller for maximum accuracy and minimal jitter.

Design

The flywheel itself is the most important aspect of the setup, as the Moment of Inertia must be precisely known in order to produce an accurate result. Due to limited machining capabilities (I do not have access to a lathe since graduating), I was not able to construct a solid metal flywheel because I lack a lathe which would enable me to produce such a perfectly balanced disc with a perfectly centered hole for an axle. Instead, I opted for a 3D printed flywheel with embedded steel weights in the perimeter which would enable a high moment of inertia while still not costing a fortune in materials. Here is the final design:


The wheel is 10.0" in diameter and is not fully solid, but has pockets to save on filament. Still, each face is flat so as to eliminate air resistance caused by exposed spokes. Each steel weight was press fit into place to prevent movement or the wheel becoming unbalanced.

Because this was designed in CAD (and masses of all objects were verified), I was able to use Onshape’s measurement tools to get the wheel’s mass and moment of inertia, which are 2.003 kg and 0.0241857894 kg⋅m2

The legs each have a pocket for a VEX high strength ball bearing to be press fit into, and attach to the other using multiple standoffs which ensures the bearings are precisely lined up. Friction must be kept to a minimum to get the best measurements.

For velocity measurements, I opted for an external encoder instead of the one built into the V5 motor for accuracy reasons (see Theory above). I also chose to use an external microcontroller to record position data at precise timing intervals. The encoder I am using is the AMT102-V quadrature encoder with 8192 ticks per revolution. The external processor is an STM32 dev board I have.

Here is the final setup (with a 5.5w motor attached):

Results

For now, testing one of each motor type that I have on hand, I was able to generate these two sets of graphs:

11W Motor

By % of rated velocity

Absolute velocity

5.5W Motor

By % of rated velocity

Absolute velocity

Discussion

The 11w motor’s performance largely lines up with what we expected! We see a peak output power around 65% of rated velocity, though it is marginally lower than we might expect (11W vs 12W). We also see that the flat current limit may not actually yield a quite flat torque output. The effect of the current limit is clearly visible, but the torque does still seem to peak near stall and gradually decline while under constant current, before finally declining in the right half of the graph.

The 5.5W motor’s performance differs quite a bit from the graph from VEX, though of the two motors this was more expected given the synthetic appearance of the 5.5W motor graph from VEX. First off, free spin velocity is around 150% of the rated maximum velocity. This means that if speed is what you’re after, utilizing pwm control for 5.5W motor can get you quite a speed boost (but not a power boost, of course). The peak power also appears to occur a lot later than predicted by VEX, at around 190 RPM vs the predicted 125 RPM.

Future work

Now that I have this test rig, there’s lots of additional questions I’d like to explore, such as:

  • How does changing the current limit affect performance?
  • How much variation in performance is there between units?
  • I’d like to do a deep dive into how much current the motors draw from the battery in different scenarios with independent measurements. I’ve already looked into this a bit (actually this was the reason this post wasn’t made ~8 months ago), but the numbers don’t quite seem to be adding up, likely because of the PWM+inductance of the system causing power factor issues. I’m not formally educated in EE, so if anyone has any suggestions I’m happy to hear them :slight_smile: .
  • I’m also planning on open sourcing the code for everything here including the python for calculating the graphs from the position/velocity data, the software on the STM32 and the brain, and the model files for the wheel/stand. I just need some time to polish things up. Hopefully I’ll have some time after worlds.

Thanks for reading, I hope you learned something from this thread! If you have any suggestions for improvements or for things to test, feel free to mention them below.

Really cool stuff! I do have one question about the methodology: was the motor command move(127) or equivalent for all measurements? (I think I can infer that the answer is yes, but I’m not entirely sure). The reason I ask is because that would be a very interesting additional thing to test: the impact of PWM below 100% on these performance curves. Of course, we are seeing some of that transiently already because of the current limiting, but I’d also be curious to see its effect in steady state. It’s likely to be different than the linear effect we might expect from “voltage” control, since it is not actually changing the voltage (there is no hardware in the motor which is capable of doing that) but instead is using the PWM duty cycle to control the average voltage by alternating the actual voltage between 0 and direct from the battery, and it’s not really clear to me what the effect of this would be.

Thanks for doing these experiments, this is a great service to the VEX community!

Yes, for all experiments in the OP this was the case. It is worth noting that I performed these tests with a bench power supply set to ~13.6 volts (similar to a charged battery), but the motors will internally limit voltage to 12V average via PWMing. So, for these graphs there was PWM throughout the whole curve. I think it would be interesting to test how well this works i.e. does a motor powered by a discharged lower voltage battery really behave the same as with a charged battery?

One challenge is I only have a two channel scope, so it can be hard to capture all the readings I want at the same time. I’ll probably have to do them in batches and line things up as best I can.

I really like this. I always thought that the motors would have some level of difference, but short of buying a dynamometer, I never had any reasonable way to test it. Please, once you get the chance, release the raw data along with the instructions to build your test setup. I have motors from all different ages and would love to test to see the degradation over time.

I have a question. In the graph of the 11W motor torque curves, you say the red and green carterages are simulated. What do you mean by this?

To maximize data resolution, I picked the highest speed/lowest torque gear cartridge to spin the wheel, the blue cartridge. If for example I used the red gear cartridge, then the motor would fully spin up the wheel much faster, leading to fewer datapoints, more noise, and less accurate acceleration readings.

The simulated values are derived by dividing torque by 3 (for green cartridge) and by 6 (for red cartridge).