The control of RC servos in robotics projects is an often discussed problem, and it is fairly easy to provide the pulse width control signal from a microcontroller. There are plenty of websites discussing this. One thing that they don't tell you is that often they can be updated at more than the standard 50Hz, I have successfully run the MG995 servos at 60Hz (to match the 30 fps frame rate of a webcam).
However this PWM control is a bit of a drag. What if I want:
- lots of servos in my system - requires lots of control signals.
- feedback of where the servo actually is - have to add an extra wire to the internal potentiometer and read with an ADC.
- control over the velocity profile of the servo's stroke.
So what do I want?
- A bidirectional serial communication protocol - using a single wire, preferably on a bus system.
- A better control system - able to be given not only a position set-point but a velocity set-point. So looking at a state-space control system, with progammable gains to allow the control to be matched to the dynamics of the system it is connected to. Maybe even with some system identification or machine learning thrown in.
- Use a minimum of extra-parts. Because I am cheap and being in NZ makes anything but the simplest of parts difficut to obtain without a $50 shipping charge.