Voltage control vs RPM control


Just wanted to ask a quick question with regards to RPM Control on the Zubax Myxa;

While running some tests we realised that, unlike what we thought initially was the case of it just being an RPM offset between RPM control and Voltage control for any given PWM input – infact its not a linear offset.

Is there any parameter by which we can remap the throttle to RPM curves for the RPM control mode?

Hopefully the image attached helps explain what I am trying to say a bit better:

For example for any given throttole command, the RPM Control mode gives a lower RPM but also the step change is smaller for the same throttle change.

Let me know if you have any suggestions how to change this.


I have the same question as you. Hopefully Pavel can expand the getting started guide section. Quick start guide for Myxa v0.1 . Have you run your motors through the motor identification process in Kucher?

Kucher will figure out the best parameters for a motor using either Resistance, Inductance, Flux linkage. It then fills out a bunch of control parameters . In the run tab of Kucher, it then allows for several ways to control the motor (e.g Radiometric RPM) . For Radiometric control which is really you control radian’s per sec - I’d like to know how this maps to the RPM command.

I am attempting to use the uavcan.equipment.esc.RPMCommand(rpm=[rpm_setpoint]) with sensible values as well, but I am not getting the desired effect I want, especially when “starting up from zero”. Sometimes The motor just stutters. I’d like to understand the parameters and increment value/frequency to pass to the RPMCommand . I’m hoping Pavel can point to which of the 53 parameters we should be considering for use with the RPM command . I have included a side by side comparison for 2 motors I ran through Kucker’s ID process (a 2 pole and a 4 pole). The choice of values as can be seen vary.

Hi Irieblue,

Thanks for your post.

Yes I have gone through the motor identification process and have been using these esc’s for a while now in Voltage control mode, but ideally I want to swap to RPM control since it offers the extra RPM limiit functionality which is very useful for my application.

In reality it shouldnt matter what the RPM/throttle response is between the two modes as the Flight controller should just learn a new setpoint, but I would like the ability to edit these myself instead if possible.

Hi Petros,
There is a square dependency between rotating speed and thrust for each propeller. For example, you can read about it here. And if you are using Myxa in rpm control mode, the thrust will be a square function of your command. Voltage control mode is more preferable in your case. If you want to increase the maximum speed/thrust you can enable ctl.vm_oversatur parameter.

The torque is a linear function of the current; the current is defined as:

I = (Vesc - Vbemf) / R

where Vesc is the voltage modulated by the ESC, Vbemf is the induced back EMF of the motor, and R is the resistance of the motor (which is constant). From the above one can see that the torque is a linear function of the difference (Vesc - Vbemf); Vesc is commanded directly by the external controller (e.g. autopilot, we’re talking about the voltage control mode here), and Vbemf is a linear function of speed (see motor speed constant Kv for more details). Assuming a propeller load, the load torque increases as a square of RPM (more or less, taking shortcuts here); therefore, given the above mentioned relationships, RPM is roughly proportional to the square root of the voltage setpoint.

There is no linear mapping.

Our work on v0.2 is limited by certain unforeseen complications, but we are on track to release it very soon.