3D Printed EMG Prosthetic Hand

by Ahmad Ikram in Circuits > Arduino

18266 Views, 93 Favorites, 0 Comments

3D Printed EMG Prosthetic Hand

3D Printed EMG Prosthetic Hand

If you've ever looked at prices for prosthetic arms, you may have noticed that they can cost upwards of $5000, with more advanced myoelectric controlled arms priced at over $20,000. Such prices are not ideal considering that over 80 percent of amputees are from developing countries where access to prosthetic limbs is limited by lack of health care and financial resources.

With 3D printing, however, we can create more cost-effective prosthetics that can better address the need of amputees. Some of the major advantages of 3D printing are rapid prototyping, customization of size, and the flexibility to replace parts by printing new ones. This project combines a 3D printed robotic arm from an open source project called InMoov with an Arduino compatible muscle sensor from Advancer Technologies. While this arm may not be as advanced as a $20,000 prosthetic limb, it is still a proof of concept that demonstrates the possibility of creating cost effective limbs that can provide comparable functionality at a fraction of the price. I also think it's a cool project in general and one that can spur great interest for those who wish to work with prosthetics.

Supplies

IMG_20221115_111336__01.jpg
IMG_20221115_112515.jpg
IMG_20221115_112133.jpg
IMG_20221115_111820.jpg
IMG_20221115_111521.jpg
IMG_20221115_111559.jpg

Major Parts:

  • 3D Printed Hand from InMoov
  • Arduino Nano
  • MyoWare Muscle Sensor
  • Electrodes
  • Servo Motors (I used MG996R servos)
  • Wires
  • 7.2 Volt Battery
  • Fishing line
  • Screws

Other:

  • Drill and sandpaper to enlarge openings and create a smooth finish
  • Two-part plastic adhesive to glue 3D printed parts
  • Wire stripper
  • Screwdriver
  • Electrical tape

3D Printing & Assembly

F9C23DE1-9406-4877-913E-9A7BAE3E028E.jpeg
E159E123-BB0A-439F-A759-41F907436896.jpeg
18954069-F956-4F5B-B26E-96DF1F74CD77.jpeg
A242EB6B-3BB7-4EB2-A614-8003427805FB.jpeg
2937DEB5-BDBE-40A4-B883-B6CEEF808312.jpeg
3E467042-9AEE-4678-A57E-EA5B158ED32C.jpeg

As mentioned in the intro, the 3D printed hand used in this project comes from an open-source project called InMoov. For this project we will only be using the hand and forearm. The link to the STL files can be found here and the link for the assembly instructions can be found here.

Since there are a plethora of guides and resources on how to build this arm, I won't be covering the build process in this guide. I have included pictures of some of the steps in case you want to reference them. It is important to be patient with the build process since it may take some trail and error to get all the pieces to fit and move smoothly. Take your time with each step and enjoy the build process. I promise it will be very satisfying once you finish.

Wiring Everything Together

E79C9B31-8945-4FD2-85D2-BD8352F95646.jpeg
7DBF1EB1-13B9-486F-BAB8-F59579C7B7D1.jpeg
84363AAA-C3DE-4911-950F-3DFC81A17E38.jpeg
0449F5F9-B899-4750-9A20-F5AD55C462B1.jpeg
4238BF34-4138-4067-9F8F-EEB28EFB05E5.jpeg
08DB97AA-90DC-4915-8C66-52658E756554.jpeg

While it may look daunting at first, the wiring for this circuit is actually pretty simple. In essence we want to connect each of the 5 servos to a power, ground, and signal wire. In total, you should have 6 power wires and 6 ground wires coming from your battery. I have included an image that illustrates this better.

You may be asking why we need 6 wires when we only have 5 servos. This is because we need to attach one of the power wires to the Arduino board in order to power it and one of the ground wires to the ground pin on the Arduino. The signal wires should be directly attached to any of the digital pins on the Arduino. For my circuit, I attached the servos to digital pins D3, D5, D6, D9 and D10 on the Arduino Nano board.

Next, we want to attach our Myoware muscle sensor to the Arduino. To do this we want to attach the positive lead of the Myoware sensor to the 3.3 Volt output on the Arduino board. We then want to take the negative lead of the Myoware sensor and attach it to the ground pin on the Arduino board. Lastly, we want to attach our signal lead of the Myoware sensor and attach it to one of the analog pins on the Arduino (I attached it to A3). This will allow the Arduino to read signals from the muscle sensor that will be used to control the servos.

If you're new to circuits this may seem overwhelming and that's okay. This is all part of the learning process and it may take some time to understand all the details. But with patience and curiosity you will come out of this experience knowing so much more than when you started.

Programming the Arduino

If you haven't done so already, you will need to download the Arduino software to be able to program your Arduino. If you're new to Arduino, I would first recommend exploring the Arduino software and try uploading a few basic sketches onto your Arduino to see how it works and troubleshoot any hardware compatibility issues. Again there are many guides and resources on how to do this so I won't be going into detail here. The key is to feel comfortable using the Arduino and that only comes with hands-on experience and trail by error.

The code for this project is actually pretty simple. You can find my code at my GitHub page here. In our program, we essentially want to read the analog inputs from the muscle sensor and use them to control the servo motors.

I remember feeling very satisfied seeing my program work when I finally figured it out. I want everyone to have the same rewarding experience of seeing their programs work because I find that it makes for an engaging experience and opens room for creativity.

Testing It Out

21066129-EEA6-4D41-9961-E75B469FD0EC.jpeg
IMG_20221115_113519.jpg
IMG_20221115_113559.jpg

Once you've completed the previous steps, your arm should look complete. To turn on the arm, simply plug in the battery as this should power all the servos and the Arduino board. Next, place two electrodes on a muscle group (forearm, bicep, etc) and snap the Myoware sensor onto the electrodes. Make sure the electrodes are spaced so that the pins are able to align with Myoware. Take a third electrode and attach it to the black lead of the Myoware sensor. Place this electrode at the end of the muscle group on which you placed your first two electrodes. I have included pictures that show this more clearly.

Once you've installed the muscle sensor, turn it on using the on/off switch and try flexing your chosen muscle group. The servos should contract all the fingers upon muscle flexion and should release when you relax your muscle. Congratulations, you've just made yourself a working myoelectric prosthetic hand.

If your arm does not work as intended, some common problems may be that your wires are not properly connected, your circuit may not align with your code, or you may have a faulty servo or battery.

Conclusions

IMG_20221115_110705__01.jpg
IMG_20221115_105905.jpg

Overall, this project blends 3D printing and electromyography in a unique way to create a device that demonstrates the potential for cost-effective prosthetics. Again, this project is not meant to be a replacement for advanced prosthetics but rather to show what can be achieved with a 3D printer and a few electronic parts. Through this project, I hope everyone is able to learn more about 3D printed prosthetics and gain a better understanding of how they work and the steps we can take to help create cost-effective alternatives to expensive prosthetics.