I have one of those BLDC Motors which are used in quadcopters and also an ESC to control it. I give it a PWM signal and it outputs the necessary condition for the motor to spin (AC signal).
The first question is: I think the ESC's output relative to its input is nonlinear. In other words, multiplying the width of the input pulse by 2 will not increase motor's speed in a factor of two. Am I right?
The second question is based on the first: in case it is a nonlinear system, how can I use a PID to control it? Suppose I want to build a controller (PID) in which I give a specific angular speed and the motors reach this angular speed as fast as it can with low or none overshoot. The input to this system will be something like a RPM value and the output is will be another RPM value (some speed sensor coupled to the motor). But somewhere inside the control loop one should place a gain K which converts the RPM value to a voltage or PWM value. If this relation is nonlinear, how can this be done?