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.


  1. the digital servos have 10 bit resolution which might be better than your flex sensor (i haven't looked into it so i'm unsure). You can also turn a servo into continuous rotation which might be better for you if your going to use it to drive a pulley. There are also several open source servo drivers that you could use to replace the servos current board.

  2. My 18F4550 chip has 10 bit A/D pins. If I put an op amp circuit I can stretch the resistance into 0-5v, so same same.

  3. Flex sensor is good choice for master glove sensor...and of course the resistance is better than potentiometer...easy use and easy attach to glove...good choice Mr. Forrest :D If you use DC geared motor, the problem is you can't command it to turn how many degree....except that geared motor equipped with encoder....

  4. I'm also planning to use a flex sensor on the hand itself instead of a potentiometer as well as on the glove. :-D