Motor.efficiency() and Ideal temprature

A couple of questions about motor programming…

  1. What exactly is the Motor.Efficiency() command. Is it simply (desired speed/actual speed)*100? Or is there something more?

  2. When using Motor.temperature(), what temperature value would indicate a motor overheat and the motor needs to cool down? What might a green, yellow, and red zone be?

Thanks in advance!

Don’t know about efficiency, but the motors go to half speed at 55 degrees celsius and go to quarter at 60 degrees.

Seen from here, efficency() only returns the motor efficency in percentUnits::pct. I do not know how they measure it but what you are saying seems to be on track.
For temperature() your green zone would most likely be anywhere below 40C and they really shouldnt be going above 60C unless theres a problem

1 Like

efficiency is output power / input power


Not quite true. The motor’s current limit is set to lower values when these temperatures are reached, not the voltage limit. Current is related to torque whereas voltage is related to speed. Therefore the maximum speed of an overheating motor should be the same as a cool one, but it’s torque will be reduced.


So in other words your motor performance will start to decrease at 55 degrees C? Or will it start to slow before then? Thanks again!

Correct, I don’t believe that it slows down at all before then. You should be safe running at 50 celcius, but keep in mind that vex rounds the temp to 5 degrees so you could at any time go into the 55 range.


It’s a stairstep… happens all at once, not gradual. And I thought the amps/torque went to 25% not 50% but maybe I’m wrong on that. But bottom line… if it suffers a de-rate… you’ve got serious problems.

If you are having heat problems, go look at friction. All gears/sprockets/bearings/shafts/etc should spin FREELY. You will probably have to replace some bearings and sand some shafts. Take before/after amp readings (good notebook material) when you do all this.