I am a programmer who has never worked with electronics before. I am learning the concepts and hoping to build a quadcopter, with the control software entirely written by me. Motor control seems to be the most important part.
Is it true that the typical brushless DC motor and ESC (Electronic Speed Control) can only approximately control the speed? That's because the ESC seems to have only a very approximate idea how fast the motor is revolving. This still works for a PID (Proportional Integral Derivative) controller because it gets indirect feedback from say a gyroscope whether the motor is going fast enough and so it can tell the ESC to make it revolve "even faster" or "even slower", and that's good enough.
Is my understanding in the above paragraph correct?
If so, I wonder whether a servo motor that can inform about its current rate of rotation could help do away with the ESC entirely? I feel that if the microcontroller can receive an input about motor speeds and send an output requesting a certain speed, it would not need the ESC. But I am not sure how servo motors work — what happens immediately after you request 100rpm when say they were at 80rpm?
Since they cannot adjust the immediately, should the microcontroller immediately adjust other motors to account for the fact that not all motors are at 100rpm yet? Does that imply that the microcontroller should only request very small deltas from the currently measured speed, so that the period of deviation from desired state is negligible?
In the latter model, of requesting only very small deltas from currently measured speed, the algorithm seems like it would not really be PID since there is no way to control the acceleration? But may be requesting the servo to go from 80rpm to 100rpm causes it to reach 81rpm much faster than requesting it to go from 80rpm to 81rpm?
I feel I know so little I cannot put my finger on it more precisely, but I hope this gives an idea of the concepts I am struggling to absorb.
To summarize, the questions are:
- can a servo (brushless dc) motor allow doing away with ESC?
- does a servo motor accept control inputs such as "revolve at 100rpm"?
- does a servo motor offer an output saying "i am at 80rpm now"?
- does a servo motor at 80rpm go to 81rpm faster if it is requested to revolve at 100rpm versus at 81rpm?
- the less precise questions implicit in the text above.
Best Answer
First, there are several definitional errors in your assumptions:
So, in summary:
can a servo (brushless dc) motor allow doing away with ESC?
First, there is no such thing as a "brushless DC" motor. Motors are fundamentally AC devices. "DC" motors actually convert the DC power to AC internally, via the brushes. A brushless motor just replaces the internal brushes with solid-state electronics.
does a servo motor accept control inputs such as "revolve at 100rpm"?
No. A servo system can accept such control inputs, but it would do so with a motor, a ESC/motor-driver of some sort, a mechanism for reading motor speed back, and a microcontroller/circuit to control the input to the motor driver in response to readings from the tachometer/speed-measurement-interface.
does a servo motor offer an output saying "i am at 80rpm now"?
Again, no, but a servo system could offer such a interface.
does a servo motor at 80rpm go to 81rpm faster if it is requested to revolve at 100rpm versus at 81rpm?
This is somewhat dependent on the servo system's configuration, but most of the time, probably. A proper closed loop system has to account for the time it will take to stop changing velocity, which is within the time for the 80-81 rpm velocity, and not within the time for the 80-100 rpm velocity change.
Think about it like a physical movement. If you run 10 feet and stop, would it take longer then running to 10 feet and continuing at full running speed? Yes, because you have to begin stopping before you arrive at the destination, as infinite acceleration and deceleration are physically impossible.
the less precise questions implicit in the text above.
Please clarify
Realistically, there are numerous limiting factors in the precision of a control system (like a PID-based control loop). Even if you have direct feedback of the rotation speed of a motor, the ability of the control loop to correct for errors in velocity is limited by the available torque, the rotor inertia, the bandwidth of the control electronics, and the precision of the measurement interface.
Further reading: http://en.wikipedia.org/wiki/Servomechanism