Robot Shoulder

Building a hobby robot with surplus electronics parts

This is a single degree of freedom, ~360 degree angle workspace, closed loop shoulder driven by a gear head DC motor with chain & sprocket drive train. It uses a fancy-pants homebrew optical absolute shaft encoding system (which, without feeling like I'm tooting my horn too much, is really cool.)

    The shoulder rotates the robot's body on its base (which may mean it should be called the "waist.") It can move freely in all directions (360 degrees) within a plane. This range of motion would be impossible with a standard servo. It is equipped with a sensor which can be read to find out what angle it is at.

    This is the page where I spend a lot of time bragging about how cool the shoulder is. If you've already read the elbow page, you should know what all that technical jargon above means and I'm not going into it again. Honest.
    I pulled off two coups in this shoulder.
    Coup #1 is that the shoulder has a 360 degree workspace. This was necessary to make the robot phototaxic. I didn't want to sit there watching it try to align itself to a light source and think to myself. "If only it could rotate another 10 degrees..." Fact is, most robot arms max out between 180 to 270 degree workspace envelopes.

    This photo should make the chain/sprocket drive train pretty clear. It is driven by a gear head motor. The gears built into the head increase the motor's power at the cost of speed. This makes, once again, for high torque, slower movement.

    As I was saying, Coup #2 is my homebrew optical absolute shaft encoder.
    Three infrared (IR) LED/sensor packages are attached to the shoulder. Across from these, attached to the shaft, is a disk with alternating black & white patches. When the shaft rotates, the alternating flashes of IR created by the black and white patches trip the IR sensor, creating 3 bits of binary information.

    Here you can see the sensors and the encoding disk. The disk is coded with the binary counting system. Using this information, the microcontroller knows how the shoulder is positioned.
    Admittedly, it can only really count up to eight, making only 16 positions readily programmable (counting half steps would be possible,) which translates to only a 22.5 degree accuracy, but for my purposes this is just fine, and it actually ends up being more accurate than the pot-based encoder, which according to theory has infinite position accuracy.
    Part of the reason I am so proud of this encoder is that I imagine it must be pretty danged expensive to purchase a real one, and I say "imagine" because I have yet to find someone who'll sell you one.

    Here is one final picture of the assembly. A circuit diagram, including a thorough parts list, for the optical encoder is here. This diagram could easily be upgraded to a six bit accuracy by adding more sensors & resistors. I hope you won't think I'm bragging when I say that I would only recommend this to someone who has more patience than I do. Although in the end, the optical encoder is much more robust than the pot-based encoder, it is rather difficult to line the sensors up well enough to get a usable reading off all of them. Even then, things get pretty shaky around the transition areas, which necessitated another form of oversampling in the programming.
    However, like most optics systems, once you've gone through the painful business of aligning everything, the rest is cake.
    Well, that's it for now. Hopefully I'll have more to report soon. Totally as a side-note, here's a page that a friend of mine wrote about the iRobot Roombas.

back to brains


All this stuff copyright, 1998 Dave Benz

hits counter