9/23/09: Building the Arm
        
I guess I'll keep a running record of my progress. So right now this robot is just an arm, but that's how DK-002 got started, he was just a head for the longest time. Anyway this is the most advanced piece of hardware I've built to date. It's got custom made everything and tons of control with equally as many inputs. While the arm is now done, capable of a wide variety of movements, I'm continuing to develope software to fully utilize this advanced piece of hardware. So far I can instructionally step the arm though a list of 3-dimentional coordinates.
Position / Protection Sensors
        
This circuit actually serves two applications, it acts as both a motor protection countermeasure and a max-travel indicator. The motor's main power is routed through this circuit's limit switches via the N.C contacts. So during normal operaion the current goes straight to the motor. Once the motor reaches one of it's position extremedies, however, the limit switch is pressed redirecting the current from the N.C. contact to the N.O contact resulting in the motor stopping itself and the circuit recieving the power instead. When the circuit receives that power it sends a signal back to the input card indicating that one of the limit switches was pressed and that the motor has reached the extent of it's travel.
      
|
Optical Encoders
        
Everything here is custom made, and that includes the motor encoders! Using the voltage division rule, this circuit generates a high or low signal based on weather the LED is visible or not. The opto-resistor receiving the light is tied high, so when the beam is broken, it's resistance is also high, so the output tied to the middle of the voltage divider is low. When the beam is present, it's resistance is low so the output goes high.
        
The encoder wheel is a piece of black construction paper cut into a half circle then sandwiched between two pieces of shipping tape cut into full circles resulting in a wheel half opaque half transparent. The encoder wheel is then placed on the motor's lead screw and positioned between the encoder. Given the length and thread size of these lead screws I get about 28 pulses from the full range of travel.
      
|
Digital / Analog Input Card
        
If you want to have more intelligent machines you need to have lots of feedback, so this device has sensors all over. Now With loads of information coming back from every motor, it wasn't sufficient to have a single processor board handle both control and interpretation, it just isn't fast enough, so I build this. It's an input board with 24 opto isolated digital inputs and 8 analog line-voltage inputs. The processor's sole purpose is to constantly transmit the status of all it's inputs out over the serial bus.
        
Each transmission packet contains 13 USART ASCII characters. The first 3 characters represent the 3 1-byte digital ports (b,c, and d). Each bit of these 3 characters represent each pin. 8 * 3 = 24 digital inputs.
The next 8 characters are for each of the 8 analog inputs. So a voltage detection range of 0 to 5v is proportionally translated into an 8bit value for a pretty high resolution. The last 2 characters transmitted are just '!!'. This is the stop delimiter that tells the computer that the packet is complete.
      
|
Motor Drivers
        
These motor drivers are actually a series of relays tied to an opto isolated transistor network for static noise isolation. Now since these drivers are relay based instead of H-bridged or MOSFETed, there is no speed control. There is only forward/reverse/stop. For this application, however, this is perfectly fine. We are more intrested in position accuracy than we are with anything else so it's a good compromise. For the big motors I'm using automotive cube relays, and for the smaller motors I'm using 2amp PCB relays. All are SPDT (form C). In each motor channel they are connected in such a fashion that if both relays are activated at the same time mistakenly, instead of shorting out the source, nothing happens at all because you are just bringing both sides of the motor to the same potential again. So it's like a built in safty measure.
                        
|
Digital Output card
        
The output card is extreamly efficient because like the input card, it too is serial, so it can receive a lot of information very quickly, resulting in outputs that can switch very fast. The card has an onboard voltage regulator for power spike protection, 3 sets of 8 digital outputs, and is addressable so you can string several of these cards together for a combined total of 192 outputs. The onboard processor is constantly listening for it's instruction packet from the rs232 port. The packet consists of 4 characters, the first byte is the address, and the following three are for each of it's three output ports, each bit in these characters coresponds to each output pin.
      
|
The Hand
        
I wanted this hand to be more humanoid than robotic. While it only has three fingers, it's better than using clamps, grippers, or pinchers. It not only looks neater, I think it will give it more dexterity in the long run. Each finger is custom cut and assembled from scrap aluminum and has it's own motor. The motors are all power drill assemblies so they're pretty strong. There are also limit sensors on each finger for the motors to know when to stop. The wrist is controlled by a junked car's climate control servo from the dashboard ventillation system.
                        
|
Putting It All Together
      
|
This is the car part that inspired the whole project. With out this, none of this would have been possible. It's a power seat gearbox and lead screw scrounged from the junk yard. It provides me an actuator that gives me more torque and speed to push and pull than I've ever had before. It also allows me to use electric motors instead of hydralics.
|
      
|
Here are all the sensors for just one axis mounted to the arm.
|
      
|
This is all the control cards wired together.
|
Completed Arm
        
Here is the arm fully assembled, hand attached, and connected to the computer. Everything is now fully functional, hardware-wise. There is still tons to do on the software side. It's like, it's capable of anything, but it's limited by it's 'intelligence'. Construction time was about 5 months. Aluminum costs were about $5 from a scrap yard, motors about $20 from a junk yard, and various other components from ebay that I didn't already have, maybe $50. Not too bad for a robotic arm that could easily cost thousands!
      
|
Related Videos: