My robot hand's strong side is now ready and tested. It moves well and fast. Its commendable over serial using python program.
I'm using 3 byte packets for communication. First bit of each byte shows what type of byte it is. The whole packet contains address byte, and two number bytes. The address consists of two parts: 3 bit MCU address and 4 bit function address. I need address because I want to put several mcu-s on same communication line. The function address shows what function I want to use. Possible functions include: move x joint, ask where joint X is. Ask how much current the servos are using and so on. Number bytes are used to send one 14 bit number. So numbers from 0 to 16384 are supported. I could have used 7 bit numbers but I thought that 7 bit is not precise enough.
The hardware has potentiometers in each joint for feedback. I send the desired position over UART and software on atmega tries to move joint to there. I use soft acceleration and breaking but the software isn't perfect yet. Idea is to implement ROS support in it so I could use massive amount of inverse and forward kinematics code and 3D support in ROS.
The latest code can be downloaded from here.
This is part of my biggest robot project ... It has enough degrees of freedom (5+gripper), enough speed and strength. Ulitmate goal is - big and awsome robot hand, controlled by atmega, what is connected to PC. On top of this hand there is a camera and laser for computer vision. And all of this is powered from PCs power supply or car battery.
Mechanics:
Made out of electric window motors (ultracheap, 12V, fast enough, geared and powerful), aluminium and servos for wrist. I have built and tested strong side mechanics and all electronics. The part with servos is not built yet and it everything needs some serious coding.
It moves fast, and silent like a ninja. The motors are strong enough to lift at least 2Kg, I didn't test with more weight because the constructions bended about 30 degrees with 2Kg load . Unfortunately the PWM makes hearable sound at ~15kHz, I cannot change the PWM frequency because motors work best with this frequency.
H-bridge board:
Hbridge board has atmega for control, serial input, adc input for potentiometer (do know on what angle the joints are), programming header, 3x TLE5206 5A H-bridges, red led connected to error_flag pin (should show when there is short circuit), and couple of capacitors. 5206's datasheet said that it has protection diodes and other stuff like that so I believed it..
Materjals and cost:
- 3x servo from ebay - 10€
- 3x electric window motors from scrapjard - 10€
- bunch of aluminum from scrapjard - 1€
- piece of wood - nothing
- endless amount of bolts and nuts - 3€
- 3x TLE5206 5A H-bridges - 10€
- Old PC from whereever - free
- 2x atmega88 - 10€
- PCBs - 15€
- other electronics - 5€
All the schematics and boards can be downloaded from here. Its a tar archive with eagle files of h-bridge and servo controller board.