Introduction: Three Low Cost Interchangeable 3-D Printable Bionic Hands

This Instructable is based in part on my senior year high school science project “Power of Touch:Challenges in Designing Haptic Sensing and Feedback for Neural Controlled Bionic/Prosthetic Hands”. I was deeply honored when this project was selected as a finalist at the 2016 Intel Science and Engineering Fair (ISEF, Phoenix, AZ). At ISEF this project was awarded second place from the International Council on System Engineering (INCOSE). The project also won first prize in biomedical engineering and best in fair for materials science at the Virginia State science fair as well as grand prize at the Northern Virginia Regional science fair. I am deeply grateful for this opportunity and to all the wonderful fellow science fair participants, judges, and others who I have met through this project.

Concept- Instead of building a single hand that is forced to compromise; exploit the advantages of low cost 3d printing to build (at least) three hands that optimize key parameters of weigh, speed, and torque.

This Instructable will focus only on the 3-d printing and building of three motorized hands. It does not cover other key parts of the project. I hope to cover haptic feedback (piezo motors and transcutaneous electrical nerve stimulation) and neural (myoelectric sensors) trades and design in a later instructable when time and schedule allow.

This project borrows heavily from the multiple sources in the open source community. Especially from Patrick S, TACT:Low Cost Advanced Prosthetic Hand https://www.instructables.com/id/Tact-Low-cost-Adv...
Gael Langevin’s InMoov Open Robotics http://inmoov.fr/ and AdvancerTechnologies Myoware sensor http://inmoov.fr/ as well as many others. I would like to say, “thank you very much” to all who contribute to the open source community. I want to "pay this forward". By contributing to open source I hope to inspire others to improve the quality of at least one life. "help one, help many"- Mick Ebeling

Video from each finger design is attached. The speed finger is especially impressive (the video is in real time).

1)Ultralight Hand - 191 grams ( commercial $7,000 myoelectric hands range from 500 to 800 grams. Users state that high mass is a leading reason for not wearing their prosthetics) Steps 1-7 Illustrate the steps to build an ultralight hand using the SG90 servos controlled by an Arduino Uno. The total cost for parts was around $32.

Next steps- The SG90 servos are light (9 grams), fast (60 deg in 0.1 sec), small, and low cost (~$2.50). Unfortunately with very tiny plastic gears they are somewhat noisy and not extremely durable. May look for more durable and quieter alternates. 2) High Speed Hand - 0.06 seconds to open or close a finger Steps 8-10 Build the high speed hand around the 24 volt Maxon RE13 gear motor (13 millimeter diameter, 29 gram, $8). Controlled by an Arduino Uno + motor shield the total cost for parts was around $70. At 24 volts the Maxon gear motors with no load on the fingers operate close to their maximum speed of 480 rpm (8 revs/sec). A rotation of ~180 degrees fully opens / closes each finger in ~1/16 (~0.06)seconds. This is slighter faster than average human fingers and around 80 times faster than available myoelectric hands that start at ~$7,000.

Preliminary results - The 24 Volt Maxon RE13 coreless gear motors are quiet, fast and seem very durable and reliable. Writing software to take advantage of this hand’s speed would be an amazing next project. Maybe even software “macros” to play of piano, guitar, or violin chords? Or combine with inbuilt sensors to make a “smart hand” for catching at speeds normal hands cannot?

3) High Torque Hand = Hook grip with a single finger = 20 kg (3d printed worm gear requires zero power to hold in place)

Steps 11-12 illustrate the steps to build a worm gear based high torque hand around the 24 volt Maxon RE13 gear motor (13 millimeter diameter, 29 gram, $8). Controlled by an Arduino Uno + motor shield the total cost for parts was around $70.

Background - My goal is to build a better prosthetic hand. Hand loss is extremely devastating. The role of the hand in human life is not limited to movements, but is critical for gestures, caressing, communication, and sensation. Unfortunately it is estimated that one out of every 200 people in the United States has had an amputation and approximately 135,000 amputation surgeries happen annually. Looking into the future, with rising rates of diabetes the total number of people wearing prosthesis is expected to reach 2.4 million by 2020 (Dede).

Today’s prosthetics have significant room for improvement. The cost of the most advanced myoelectric hands start at around $7,000 and complete with fittings can exceed $40,000. And according to recent surveys, 20% of users abandon their very expensive hands because of weight (today’s commercial myoelectric hands typically weigh > 500 grams) and because the hand is too slow. (Biddiss, Chau)(Pylatiuk).

By printing hands quickly and at low cost, we can flip the paradigm of design compromise that is currently limiting prosthetics. Instead of compromise, print multiple different designs that are optimized for each application. Playing frisbee? Use a high speed hand. Gardening? Switch to a high torque hand. Working all day around the office. Use an ultralight hand. Designs with multiple hands and multiple specialized tools could be done. Integrating chef’s tools, a surgeon’s knife or an artist’s chisels and brushes could become the new reality.

To learn I started by printing Gael Langevin’s InMoov hand http://inmoov.fr/ on my Lulzbot Mini 3-D printer in ABS. The InMoov hand is brilliantly simple and relatively simple and easy to print. With arduino/servo control the programming is relatively simple to learn. Unfortunately (for use as a prosthetic) the design uses servos in the forearm(difficult to integrate with arm) and tendons (high drag) passing through the wrist, palm and through the fingers. Gael Langevin has worked on this problem http://inmoov.fr/ but a final design is not ready to be released.

I next printed Patrick S, TACT:Low Cost Advanced Prosthetic Hand https://www.instructables.com/id/Tact-Low-cost-Adv... The TACT hand design is amazing! The instructions are complete and easy to follow. The TACT finger 2 joint /linkage design is simple to print and works really well. There were however two areas that I thought could be improved. Although minor, the TACT hand recommends the Escap 16 Coreless Gear motor. At 16 millimeters and ~39 grams this Escap motor is slightly larger and heavier than desired. The actuator is a steel wire (tendon) that is designed to wrap around a 3-d printed cylinder to pull in the finger. Unfortunately I found the cycle lifetime of these wires were often short. Over time the actuator wire (tendon) tended to fatigue and fail. (This fault may be because I building these actuators incorrectly?)

Step 1: The Ultralight Bionic Hand - 191 Grams

Step 1 - Much of the mass of electric prosthetics is the motors. Design around the ultra low cost / ultra light around five of the 9 gram SG90 Tower Pro servos.

Gather parts -

Miscellaneous includes glue (Oatey ABS to PVC cement, Home Depot or other hardware store)
Optional - fish line mini barrel crimps (Amazon or fishing supply store) NinjaFlex Filament for top of fingers ( soft, more flexible, and allows for better grip)

Step 2: 3-D Print the Ultralight Hand Parts (ABS Filament - NinjaFlex Filament Optional for Fingers)

Print the following files in the quantity listed:

I used NinjaFlex filament for the finger1 prints to make the fingers more compliant and provide better grip. For the remainder of the hand I used inexpensive Hatchbox ABS (printed on the Lulzbot Mini)

(For the ultralight hand, I used very thin shells and lowered the infill factor to save mass. Durability would likely suffer but with 3-d printing, repairs are quick and cheap. )

5 x base for fingers& thumb

5 x linkage

2 x mounts for sg90servos

1 x outer shells for hand

4 x tact_finger1x9 (optional Ninjaflex filament using the Flexystruder head)

5 x tact_finger2x9

1 x tact_thumbx9 (optional Ninjaflex filament)

1 x thumbsg90servo_mount

Step 3: Assemble Fingers

Glue two (2) "base for fingers& thumb" to one(1) "mounts for sg90servos" . Oatey - ABS to PVC (Home Depot and others, works great)

Using an m2 bolt and nut attach a linkage to the finger1 (above)

Attach finger2 (m2 bolt or use a piece of 1.75 mm filament and solder iron to melt ends)

Attach linkage to finger base with m2 bolt and nut.

Attach bottom of finger2 to finger base with piece of 1.75 mm filament.

Attach first 9 gram SG90 servo motor to motor base. Secure in place with m2 bolt and nut.

Front tendon -Thread knotted fish line from servo arm to finger2 front. Secure in place with barrel crimp (easier) or knot. Rear tendon -Drill hole in rear of finger2 and through the motor mount plate, Thread the 2nd tendon (fish line) from rear of servo arm through the motor mount and secure to back of finger2. Secure in place.

Repeat for second finger on base. Repeat for 2 additional fingers.

Build thumb. Glue a finger mount to the thumb motor mount. Repeat the finger building with another linkage and the shorter thumb piece. Mount a 9 gram SG90 servo into the motor mount and repeat the tendon (fishline) attachment process to the front and rear of the thumb.

Bolt the thumb mechanism to the front of the hand shell.

Assemble the hand

Bolt the 2 finger mechanisms into place inside the second hand shell. (50 mm long m3 bolts)

Step 4: Wire and Control the Ultralight Hand With Arduino Uno

Arduino Uno Control of hand -

A single small servo may be powered directly from an Arduino Uno. From experience, this does NOT work well especially when using multiple servo motors. Instead power directly from a DC source (batteries). A battery pack of 4 AA or 4 AAA batteries (nominal 6 Volts) works very well.

. *****Warning************* do not combine servos with more than 4 (alkaline) batteries.

More than the nominal 6 volts will burn out the controller in the servo.

The wiring schematic for your servos should be similar to this image (except with five servos) from the Arduino user forum.

http://microbotlabs.com/armuno-arduino-schematic.html

The external ground from the power supply must go to all the servo grounds AND MUST also go to a ground pin on the Arduino UNO.

Step 5: Simple Arduino Example Program to Control Ultralight (servo Motor) Hand

Assumes basic understanding of Arduino. Copy and paste into the Arduino IDE. Download to Arduino.

/*
Controlling a servo position using a potentiometer (variable resistor) This original code is an example code download with the Arduino Integrated Development Environmeent IDE Arduino.org version 7.14 download November 2015 controls up to 5 servo motors from 2 inputs servo 1 responds to input from input on AO servos 2-5 responds to input from input on A1

*/

#include;

Servo myservo1; // create servo object1 to control servo1

Servo myservo2; // create servo object to control a servo2

Servo myservo3; // create servo object to control a servo3

Servo myservo4; // create servo object to control a servo4

Servo myservo5; // create servo object to control a servo5

int potpin1 = 0; // analog pin not used in this example

int potpin2 = 1; // analog pin used to connect the potentiometer(joystick or even myoware sensor)

int val1; // variable to read the value from the analog pin

int val2; // variable to read the value from the analog pin

void setup()

{Serial.begin(9600);

myservo1.attach(8); // attaches the servo on pin 9 to the servo object

myservo2.attach(9); // attaches the servo on pin 9 to the servo object

myservo3.attach(10); // attaches the servo on pin 9 to the servo object

myservo4.attach(11); // attaches the servo on pin 9 to the servo object

myservo5.attach(12); // attaches the servo on pin 9 to the servo object

}

void loop()

{ val2 = analogRead(potpin2); // reads the value of the potentiometer (value between 0 and 1023)

val2 = map(val2, 0, 1023, 0, 180); // scale it to use it with the servo (value between 0 and 180) myservo1.write(val2); // sets the servo position according to the scaled value

Serial.println(val2); // print to serial to allow debug if necessary

myservo1.write(val2);

myservo2.write(val2); // sets the servo position according to the scaled value

myservo3.write(val2); // sets the servo position according to the scaled value

myservo4.write(val2); // sets the servo position according to the scaled value

myservo5.write(val2); // sets the servo position according to the scaled value

delay(15); // waits for 15 milliseconds for servo

}

Step 6: Build High Speed Hand - 3-D Print Parts and Assemble Other Parts

Gather parts and print files in the following quantities. I used ABS filament on Lulzbot Mini and NinjaFlex Filament on same printer with the Flexystruder head).

5 x armfor_maxongearmotor

1 x base_speed_hand 5 x linkage

4 x maxon_motor_mount_interior

5 x speed_finger_mount

1 x speed_thumb_mount

4 x tact_finger1x9 (with Lulzbot Mini, option to switch to Ninjaflex filament using the Flexystruder head)

5 x tact_finger2x9

1 x tact_thumbx9 (optional Ninjaflex filament)

1 x top_speed_hand

Assemble fingers and thumb identically to Step 2 from Ultralight hand.

Step 7: High Speed Hand (continued) Assemble Motor Assembly

First motor into mount 1 -

Second motor inserted into mount 2 and integrated with mount 1.

Tape motors (for stable assembly) and push on arm (may need a file / drill to open tendon holes on arm ends and to fit arm on motor shaft).

Assemble 2nd motor assembly - identical to motor assembly 1-

Step 8: High Speed Hand (Continued) - Add Fingers to Motor Mounts - Attach to HandShell

Repeat tendons assembly (arm to finger assembly, front and back) from Ultralight weight instructions (do not crimp tendons to final length until placed in final position in hand.

Assemble index and ring fingers with motor mount 1 into base hand. Fix in place with small machine screws and crimp finger tendons (fishline) to final lengths.

Repeat for middle and pinky fingers and motor assembly 2.

Step 9: High Speed Hand Continued - Build and Attach Thumb

Insert last motor into thumb motor mount and insert motor mount into base of thumb.

Mount the thumb on hand top plate with small machine screws.

Drill a hole in the bottom of the hand base, pull motor wires through and connectorize. Screw top hand (with thumb) to hand base with small machine screws.

Step 10: High Speed Control Using Arduino Motor Shield (DC Motor)

Control with Arduino +Arduino motor shield (Adafruit version 1 - 24 Volt) At 24 volts the Maxon gear motors with no load on the fingers operate close to their maximum speed of 480rpm (=8 revs/sec). A rotation of ~180 degrees then fully opens / closes each finger in an incredible ~1/16 (~0.06)seconds. This is faster than human fingers and around 80 times faster than available myoelectric hands that start at ~$7,000.

The low cost arduino motor shields available from Amazon claim to support 24 V. They use the Adafruit version 1 motor shield library. https://github.com/adafruit/Adafruit-Motor-Shield... Unfortunately at 24 volts the capacitors on these low cost motor shields fail. Backing off to 20 or 22 volts the shields appear to work ok. They also only support 4 motors. I recommend connecting ring and pinky fingers to operate together.

** warning - Decrease voltage below stated 24 V for low cost arduino motor shields **

For improvement - find a more reliable 24 V motor shield controller that ideally could support 5 DC motors.

Connect the wires from the Maxon motors to the 4 DC motor outputs on the Arduino motor shield. The black and red wires are external power inputs (recommend 20-22 volts) to the motor shield and also power the Arduino.

As stated above download the Adafruit version 1 motor shield library to the Arduino IDE (follow online instructions) and compile code. For sensor input (demonstration) I used simple potentiometers (joy sticks) wired to the Arduino.

Step 11: High Speed Hand (continued) - Arduino Software

Simple expample to test your DC motors of your hand - Library must be downloaded from Adafruit motor shield version 1

// Adafruit Motor shield library

// this code is public domain, enjoy!

#include

// DC motor on M1234

AF_DCMotor motor1(1);

AF_DCMotor motor2(2);

AF_DCMotor motor3(3);

AF_DCMotor motor4(4);

int potpin1 = 0; // analog pin used to connect the potentiometer

int potpin2 = 1; // analog pin used to connect the potentiometer

int potpin3 = 2; // analog pin used to connect the potentiometer

int potpin4 = 4; // analog pin used to connect the potentiometer

int val1; // variable to read the value from the analog pin

int val2; // variable to read the value from the analog pin

int val3; // variable to read the value from the analog pin

int val4; // variable to read the value from the analog pin

void setup()

{

Serial.begin(9600); // set up Serial library at 9600 bps

Serial.println("Motor party!"); // turn on motor 1234 - (255 is top speed)

motor1.setSpeed(255 );

motor1.run(RELEASE);

motor2.setSpeed(255 );

motor2.run(RELEASE);

motor3.setSpeed(255 );

motor3.run(RELEASE);

motor4.setSpeed(255 );

motor4.run(RELEASE); }

void loop()

{ val1 = analogRead(potpin1); // reads the value of the potentiometer (value between 0 and 1023)

val1 = map(val1, 0, 1023, 0, 180); // scale it to use it with the servo (value between 0 and 180)

Serial.println(val1);

if (val1 > 95) motor1.run(FORWARD); // motor forward according to the scaled value

if (val1 > 95) motor2.run(FORWARD); // motor forward according to the scaled value

if (val1 > 95) motor3.run(FORWARD); // motor forward according to the scaled value

if (val1 > 95) motor4.run(FORWARD); // motor forward according to the scaled value

delay (15);

motor1.run(RELEASE);

motor2.run(RELEASE);

motor3.run(RELEASE);

motor4.run(RELEASE);

if (val1 < 85) motor1.run(BACKWARD);

if (val2 < 85) motor2.run(BACKWARD);

if (val3 < 85) motor3.run(BACKWARD);

if (val4 < 85) motor4.run(BACKWARD);

delay (15);

motor1.run(RELEASE);

motor2.run(RELEASE);

motor3.run(RELEASE);

motor4.run(RELEASE);

}

Step 12: Build High Torque Hand - Print 3D Files and Gather Parts

(Parts list is identical to parts for High Speed Hand). The key difference is to use the 3-D print worm drive (files attached) to increase torque (but reduces finger speed)

3D printed worm drive (worm and worm gear in finger mount housing)

Gather parts and print files in the following quantities -Assemble fingers and thumb identically to Step 2 from Ultralight hand.

5 x linkage

5 x mount_forfinger_motor_wormdrive

4 x tact_finger1x9 (with Lulzbot Mini, option to switch to Ninjaflex filament using the Flexystruder head)

5 x tact_finger2x9 1 x tact_thumbx9 (optional Ninjaflex filament)

1 x torque_hand

1_baseshell

1 x torque_hand

2_topshell

5 x worm

5 x worm gear

Step 13: High Torque Hand (continued)

Gather parts and print files in the following quantities -Assemble fingers and thumb identically to Step 2 from Ultralight hand.

Firmly push worm onto Maxon gear motor shaft. Insert motor assembly (motor + worm) into mount. (fix motor to mount with small amount of epoxy).

Insert worm gear into mount_forfinger_motor_wormdrive engaging worm. Insert m2 bolt and nut through mount and worm gear to hold gear in place. (alternative- use 1.75 mm filament in place of m2 bolt and nut.)

Drill hole through worm gear (teeth) to provide for tendon (fish line) attachment.

Secure tendon (fish line) from worm gear to finger2. I found copper crimps easier than knots.

Aas designed this worm drive only pulls finger/thumb forward. A rubber band on the rear of fingers/thumb returns to straight position. Insert machine screws into rear of mount and rear of finger. Attach rubber band ( bands designed for tooth braces work well, but others will work) between screws.

Repeat for for four fingers and thumb. Mount 4 fingers into "torque_hand1_baseshell" with small machine screws and mount thumb on "torque_hand2_topshell" with long m3 bolts and nuts.

Wiring and control of Maxon motors for High Torque Hand. (Identical to Step 10 above - Wiring and control of Maxon Motors for High Speed Hand). Since the DC motor control is handled by the Arduino motor shield there are no differences required. Repeat the instructions from the high speed hand.

Short bibliography-

Pylatiuk, Christian;Results of an Internet survey of myoelectric prosthetic hand users, Institute for Applied Computer Research https://www.researchgate.net/publication/5798071_...

Biddiss E, Chau T, Upper-Limb Prosthetics Critical Factors in Device Abandonment.Am J Phys Med Rehabil

http://www.ucdenver.edu/academics/colleges/medical...

Dede, Ana, Prosthetic End­User Usability Survey.Worcester Polytechnic Institute https://www.wpi.edu/Pubs/E-project/Available/E-pr...

Automation Contest 2016

Participated in the
Automation Contest 2016

3D Printing Contest 2016

Participated in the
3D Printing Contest 2016