I am about to build my own quadcopter from scratch. However i am having problem with understanding how it is possible to control the quadcopter without knowing the current rpm of the BLDC motors. According to my understanding the rpm is needed to calculate thrust force etc. in the mathematical model, which will be used for regulation.

The ESCs I have seen have two wires to connect them to the flight controller. The first one is GND and the second is signal wire, which are used for sending PWM signal- no information about the motor speed. There is also the IMU unit, which provides information about the acceleration of the whole aircraft- but again no information about the motor speed.

I would be grateful if someone could explain it in details how this is.

  • $\begingroup$ There are two broad topics, so I think there could be two questions. One about the design phase (in particular the thrust estimation and math model generation), And the other one about controlling this vehicle, with special reference to thrust information. Both are valid questions that I think are worth discussion. $\endgroup$ – Gürkan Çetin Feb 11 '17 at 13:01
  • $\begingroup$ To design the controller you do not necessarily need an rpm information. The linear model which includes necessary dynamics (second order?) would be sufficient to design, validate and code your controller. If you do not wish to go the engineer way, you could also try tuning the controller via trial and error. $\endgroup$ – Gürkan Çetin Feb 11 '17 at 13:04

A couple things, the first is that the controller does not really care what the "real" values are. Everything is relative, if the controller sees that it is sinking it will increase the thrust until it is not sinking. If it is tilting too far to the left it will decrease the right thrust and increase the left thrust. (Here is a good resource if you want to design your own controller)

The other thing is that we normally assume that thrust response from the motor, ESC, prop combo is instantaneous so in an ideal world if we told the motor to change from 5% speed to 100% speed in an instant it would happen but in the real world there is some delay this is normally modeled as the difference between a sine wave input at a certain frequency and its output. This is called Phase and Gain margins.


You're right. You should know the rpm of your propellers to build a mathematical model of your quadcopter and if you already have a mathematical model of your brushless DC motors you could compute them based on the PWM signal that you send to the motors (plus other factors depending on how much the model is accurate). This complex model is useful for simulations but it's not necessary to control your system in a real environment.

As answered before, to actually control your system the controller doesn't need the rpm values of you propellers but only the values of the trust. You can use a PID controller based only on the values given by your IMU.

For a more complex controller you may need approximated relationships between trust and PWM signal but I don't think that exists any controller that rely on rpm of the propellers, it will be a waste of computational resources.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.