Wednesday, August 11, 2010
Servos and firmware
I had a while last evening to work on a bit of driver firmware for the servo for my the telepresence finger.
I had just got it working properly when what appears to be a on-chip fault developed in my 18F4550 MCU that disabled USB comms with the controller board. I was, however, able to work with the RC Servo long enough to grow not all that impressed with it.
Basically, a RC servo consists of a small gearmotor which is coupled to a potentiometer which acts as a feedback mechanism on position. A small bit of electronics controls the feedback dynamic and converts repeating incoming analog signal into positioning instructions. These things were made to be controlled by radio control sets for model airplanes and boats.
In my application, I use a MCU to create the analog signal. While I was debugging the firmware the little epiphany came to me that there were far too many unnecessary parts in the overall system. As well, the range of motion of the servo is kind of limited and they are a bit expensive. I have gearmotors which are smaller and far more powerful than the servo and my MCU can control them. For feedback for my telepresence finger, a flex sensor...
...makes far better sense than a potentiometer and why have extra electronics when you can dedicate an MCU that controls a gearmotor according to feedback from the flex sensor for about $1?
My friend, Josh Hall, is building a robot starting from the shoulder and working down while I am going in the other direction. The high torque gearmotors that he is using cost about $500 each. You can buy hugely powerful gearmotors mass produced for the automotive industry surplus for about $10 and out of the catalog for $30-50.
I think I am going to buy some flex sensors and use this small and very efficient gearmotor directly with my MCU...
...and see where I can go.