esk8 calc donate now

ESK8 Motor Dyno - Requests and Discussion [SERIOUS]

Electric motors are awesome, so awesome that we can accurately predict the performance with just a few basic measurements, this mean that anyone using a VESC or VESC based hardware and software or any other ESC that can measure and display phase current and rpm and a few minutes to spare can supply the data needed to plot all the performance metrics

Before doing the guide on how to measure, I will show a result as an example, find it in the topic bellow that will be exclusive for the results, with time I hope we can have all motors measured and see the difference between them

All graphs have two sets of overlaid lines, the solid ones represent your battery voltage, and the dotted ones the motor current, keep in mind that if your battery current is lower than the motor current, the region your motor can work is smaller

I only plotted the nominal battery voltages to avoid too much visual pollution

As an example I’m using the torque boards 6355 190 Kv motors, if I was running them at 37 V (10S), 60 A motor current and 60 A phase current, the region that the motor in this setup can operate is represented as this area

Now, the same setup but with a 30 A battery current would be limited to approximately the area bellow, I may try to implement battery currents on the chart in the future to make it easier to understand, and update this section, but since we have to consider various battery voltages, the amount of lines on the graphs may get out of hand

The full size images can be found at the topic linked above

Km: Motor constant, how efficient the motor can produce torque, independent of Kv, does not consider rpm dependent losses that in some designs can be significant

Efficiency Map: How efficient a motor is at various torque and rpm levels in converting electrical to mechanical power

Total Losses: How much of the power is being wasted as heat, this is main limitation of motor performance

Copper Losses: Losses due to the copper winding resistance, is proportional to the square of motor current

Core Losses: Losses due to the interaction between the magnetic field from the magnets and the iron on the stator, increases linearly with rpm and without diving too deep has two main components, hysteresis loss, that is a fixed torque value needed to overcome the constant magnetization and demagnetization of the iron core as the motor spins, and Eddie loses, induced voltage on the stator iron that causes currents to circulate and dissipate energy as resistive losses. Fun fact, a motor stator is made from a bunch of stacked sheets to reduce Eddie losses

Output Power: Self explanatory, if you want to know the input power at a given point, just add this to the total loses at the same point

How To Meassure on hold until we figure what is going on with the VESC measurements

This is the data you will have to fill, please copy as it is and fill the values as a reply on this topic, also include at least picture from the motor feel free to include additional ones if there is relevant details

(delete the comments in the brackets)

Motor Model: [Maker and model]
Rated Current: [From the manufacturer,If not provided leaved blank]
Pole Pairs: [Number of magnets divided by 2, 7 is the most common]
Phase Resistance: [Given by the motor detection]
ESC Model and Firmware Version:
ERPM@30% Duty Cycle:
Phase Current@30% Duty Cycle:
ERPM@95% Duty Cycle:
Phase Current@95% Duty Cycle:
Comments/Observations: [Anything you find relevant like my motor has a bad bearing, if has been run to hell and back, I overheated it a lot]

You will need:

  • A motor
  • VESC based ESC
  • Computer with VESC tool

1. First remove the belt or wheel gear, we need to measure just the motor

2. Connect the VESC tool to the ESC, enable real time data and go to the real time tab

3. Now you will use the controls on the bottom left to set the motor to run at 35% duty cycle, type 0.35 and press the go button, first let the motor run to a bit to heat it up, specially if you are in a cold location, the grease in the bearings gets more fluid as it gets hotter, you will need to take note of I Motor and ERPM, let it running until I Motor stabilizes. Some hardware has way too much noise on the current readings, so try to get an average value

4. Repeat the same steps for a duty cycle of 0.95

5. Now we need the motor resistance, just go to the FOC tab and note it

We are done, just post the results here and as soon as possible I will post the results


Hopefully this will be useful so we can see if there is a big difference between motor sizes and designs, and also can be helpful in choosing gearing, Kv and all that

One important takeaway is that we are heat limited is most if not all setups, doesn’t mean that because the efficiency at a given point is high that a motor can be run at that point, taking the example motor, if we run it at 60 A and 15000 rpm, it would be at 96 % efficiency and producing 3000 W, amazing right? But as we look on the total losses graph, it shows that 150 W of heat has to be dissipated, can it do it? I don’t know, maybe, for a few seconds, sure, anything close as continuous? We can’t answer right now, with plenty of airflow at high speed perhaps

This is specially interesting given the new high voltage setups. If you are already on the thermal limits of a motor and spin it faster, the added core losses will be enough to melt the motor, so lower the current quite a bit and start from there. Using a lower Kv motor? For gods sake don’t use the same current limits as you used on the higher Kv one

Future Work

There are a few cools things that we can do with this data and a bit more of codding, for example, its possible to get a log form Metr or similar, and see what a ride would have been with a different gear ratio and a different motor. Going from belt drive to a hub? We can also predict how consumption would’ve changed, how much heat the motor produced and all that

One thing I really want to do is to make a windy tunnel so the heat shedding capability of any motor can be measured, but for that to happen we need to able to inject non torque producing current to the motor ( Hey @Deodand how arre you doing? :grin: )

Another easy to do thing is change the Kv of the motor in the simulation, I’m open to requests on that, but it has to be a motor that already been measured

If its of interest I can dive a bit deeper on the theory behind all these graphs, for those who want to play with here is the MATLAB code, there is a chance that it won’t plot the figures right in any version other than the 2017

Any doubts I’m open to try to answer and discuss


Virtual_Dyno_V1.m (10.4 KB)


Shameless bump


Interesting , right now I’m working on something similarish where users can submit data according to a board profile. Commenting here for later to see if I can incorporate this somehow.

Edit: I’m back , Looking through the VESC Tool Now, I can’t test right now but @Pedrodemio Could you get the same data by going to the Log Tab, clicking enable logging , and then going through your steps above?

If so then it’ll be easier to get the data via a script and I can incorporate this into the website.

There’s a section in the VESC Tool where users can put stuff like Battery Data and Motor Data. If it doesn’t get exported, I’ll see if I can make a Pull Request to include the data that users set in Additional Info into the Logs.

Edit #2: thanks to @kook I can confirm at least the Vesc file tool would allow you to capture motor information if the put it in.


How did we miss this?

You’re the real MVP @Pedrodemio

Fantastic initiative! I’ll be swinging back around to Motor/ESC testing after summer and will be sure to coordinate here.


You didn’t. It was unlisted while Pedro put this great resource together, and only listed for public view today. Discourse still counts unlisted threads as active and puts the usual timer on it.


I was wondering myself why I missed this thread…

but then I got a cocktail or three and it didn’t bother me so much!


I think it’s all there I just gave you the motor config. back-up… it’s prolly in the app config back-up…

1 Like

Yeah the Motor Config backup has the motor information (if the user puts it in) . And the motor resistance is in there too

1 Like

ping me tomorrow and I’ll upload the app config .xml file… I’m too high right now to power anything up…

1 Like

Added the graphs for the Boosted V3, really amazing motor with crappy bearings, and the 6355 from Aliexpress, for the price is good, but comparing with a TB6355 the performance is pretty bad, way higher resistance and also core losses

@Jc06505n Yeah, that would work, ideally I would like to see this being part of the detection process, on the results for each motor it already would show Km, Eddie losses and Hysteresis Losses, all that we need to plot those graphs, a database could be hosted on VESC tool site and have all those graphs. Unfortunately that is way beyond my capabilities

Thanks man, waiting for your tests

You know what would be cool on FreeSk8? Add motor efficiency logging, if we know the parameters I calculate here and the motor temperature, we can easily calculate how efficient the motor is at any given time. Maybe have a efficiency indicator on the remote like some cars do

1 Like

One cool thing we can now do is ride simulation using Trip Simulator

Will do a guide sometime on how to convert the information we have here to use there

Unfortunately temperatures won’t be accurate until we model each motor, need the wind tunnel for that

But will help a lot with motor selection and gearing optimization


I’m thinking I may have screwed up the core losses calculations somewhere, I can’t make the results from the Grin Trip Simulator and from my graphs to agree

For example, running a TB 6355 at 15k rpm, looking at the graphs we should have around 40 W of core losses, while if I input all the losses coefficients and spin at the same speed I got 200 W of core losses, doesn’t sound right, but also my value may be too low, time to dig in the code and see if there is any mistake, take the core losses results with reserves until I can find what is going on

Edit: kind off forgot that there is a really easy way to validate the data, just spin the motor and see the power draw, with no load almost all energy is going into core losses, will test that tomorrow and see if the results match

I didn’t take note of the power, but it was not high at all, I’m thinking my plots are right and there is some bug on the Grin simulator when entering data for our small and high rpms motors

Will probably join a bunch of batteries and maybe some wall adapters to get to 18S

1 Like

Well, I will keep updating my findings here for posterity

This is the plot of core losses torque vs RPM for my TB6355, it starts fine with a Hysteresis loss of just 0.075 N.m, a reasonable value, but is way too steep, consider that a 190 Kv at 60 A produces around 3 N.m of torque, at 12500 rpm (18S nominal speed) we have an almost 1 N.m or torque needed just to overcome the core losses, this mean 20 A of motor current just to make the motor spin

Either the current measurements are screwed up, or the bearings that are bad but not that bad cause way more drag than I imagined

Now lets look at the TB5055

And the Aliexpress 6355

The TB seems reasonable considering the bearings are also not good, but the Aliexpress one is even worse, at 18S it needs 40 A just to spin at the nominal speed

What this all means for now? That apparently at least these motors are absolute crap at high rpm, I hope people contribute with more motors measurements so we can find the good ones, but if the trend is right, none of our motors are good at high rpm

Next step is to replace the bearings on the TB6355 and see what changes

1 Like

Error found

When the current at two duty cycles is measured, I forgot to multiply by Kt, the torque per amp constant of the motor, so the graphs above actually were representing phase current vs rpm, not torque vs rpm, this is how it should look, way lower core losses all across the rpm band

Will fix all motor plots as soon as possible


I get the logic behind voltage constant, but what’s the math to extract torque constant from the VESC measurements?

1 Like

You get the torque constant directly from the Kv, they are inversely proportional

Kt = 60 / ( 2 * pi * Kv ) = 9.55 / Kv [Nm / A]


Wow, that’s an interesting relationship. Thanks! Blows my mind how much we can learn from these motors with just a few simple tests.

I think I will do a section explaining all the math behind the graphs

The only thing you can’t do i think that a lower Kv will produce more torque, it won’t, two equal motors, having the only difference being the Kv, can produce exactly the same torque