aryan-42 / prosthetic-arm

1 stars 0 forks source link

A prosthetic hand refers to an artificial device designed to replace or augment the functionality of a missing or impaired natural hand. It is a type of prosthetic limb, which is a mechanical or electronic device created to replace a missing body part. Prosthetic hands are used by individuals who have experienced amputation or were born without a hand.The goal of a prosthetic hand is to restore as much functionality as possible, allowing the user to perform daily activities and tasks that require hand movements.

Contents

Hardware Components Required

Software Used

Hardware Description

MG996R Servo Motor

MG996R Digital Servo features metal gearing resulting in extra high 10kg stalling torque in a tiny package. The MG996R is essentially an upgraded version of the famous MG995 servo, and features upgraded shock-proofing and a redesigned PCB and IC control system that make it much more accurate than its predecessor.

Wire Configuration

Wire Number Wire Colour Description
1 Brown Ground wire connected to the ground of system
2 Red Powers the motor typically +5V is used
3 Orange PWM signal is given in through this wire to drive the motor

            MG996R Servo Motor

        MG996R Servo Motor

PCA9685 Servo Shield

The PCA9685 servo driver module is used in applications that require a large number of servo motors, such as robots, hexapods, and robot arms. It increases the number of PWM outputs of a micro-controller. The PCA9685 module can control up to 16 servo motors with just two pins of the Arduino, Raspberry Pi, or any other microcontroller with I2C.

pca9685-removebg-preview.png

The on-board PWM controller will drive all 16 channels simultaneously with no additional Arduino processing overhead. What's more, you can chain up to 62 of them to control up to 992 servos - all with the same 2 pins!

It has a 16-way steering gear control and a power supply voltage of DC5-10V. All PWM output lines have a 220-ohm series resistor protection that can easily drive LED.

Pinouts

!https://cdn-learn.adafruit.com/assets/assets/000/050/181/medium800/adafruit_products_815-06.jpg?1516056388

There are two sets of control input pins on either side. Both sides of the pins are identical! Use whichever side you like, you can also easily chain by connecting up two side-by-side

Power Pins

Pins Description
GND  This is the power and signal ground pin, must be connected
VCC This is the logic power pin, connect this to the logic level you want to use for the PCA9685 output, should be 3 - 5V max! It's also used for the 10K pullups on SCL/SDA so unless you have your own pullups, have it match the microcontroller's logic level too!
V+ This is an  optional power pin that will supply distributed power to the servos. If you are not using for servos you can leave disconnected. It is not used at all by the chip. You can also inject power from the 2-pin terminal block at the top of the board. You should provide 5-6VDC if you are using servos. If you have to, you can go higher to 12VDC, but if you mess up and connect VCC to V+ you could damage your board!

Control Pins

Pins Description
SCL I2C clock pin connect to your microcontrollers I2C clock line.
SDA I2C data pin connect to your microcontrollers I2C data line.
OE(Output Enable) Can be used to quickly disable all outputs. When this pin is low all pins are enabled. When the pin is high the outputs are disabled. Pulled low by default so it's an optional pin!

Output Ports

There are 16 output ports. Each port has 3 pins: V+, GND and the PWM output. Each PWM runs completely independently but they must all have the same PWM frequency. That is, for LEDs you probably want 1.0 KHz but servos need 60 Hz - so you cannot use half for LEDs @ 1.0 KHz and half @ 60 Hz.

They're set up for servos but you can use them for LEDs! Max current per pin is 25mA.

There are 220 ohm resistors in series with all PWM Pins and the output logic is the same as VCC so keep that in mind if using LEDs.

Power for Servos

adafruit_products_Connections_bb-1024.jpg

Most servos are designed to run on about 5 or 6v. Keep in mind that a lot of servos moving at the same time (particularly large powerful ones) will need a lot of current. Even micro servos will draw several hundred mA when moving. Some High-torque servos will draw more than 1A each under load.

It is not a good idea to use the Arduino 5v pin to power your servos. Electrical noise and 'brownouts' from excess current draw can cause your Arduino to act erratically, reset and/or overheat.

Bio-Amp EMG Sensor

A candy-size single-channel ElectroMyography (EMG) sensor for precise recording of muscle signals at an affordable cost. It is an SMD version of Muscle BioAmp BisCute that can be used to make amazing Human-Computer Interface (HCI) projects.

It is used here to read the voltage change (in microvolts) when the muscle triggers an impulse.

bioamp-removebg-preview.png

What is EMG?

Electromyography (EMG) is a technique for evaluating and recording the electrical activity produced by skeletal muscles.

Electromyography is used in some real-world applications like,

  1. Prosthetic hands,
  2. Human augmentation,
  3. Games controllers,
  4. Rehabilitation and
  5. Physical therapy to name just a few.

Even doctors are using them for the diagnosis of various neuromuscular ailments.

Recently, It was in the news that Meta is working on wearable EMG sensors to track user movements in the metaverse.

EMG Electrodes

Gel Electrodes are medico gel electrodes which can be used to record biopotential signals from your body be it from your heart (ECG), brain (EEG), muscles (EMG), or eyes (EOG).These electrodes are placed on or in close proximity to the skin overlying the muscles being studied.

EMG electrodes pick up the electrical signals generated by muscle fibers during contraction and relaxation. The recorded signals help healthcare professionals assess muscle function, diagnose neuromuscular disorders, and determine the source of symptoms such as muscle weakness, pain, or spasms.

In addition to diagnostic purposes, EMG electrodes are also used in biofeedback and rehabilitation settings to monitor muscle activity during exercises and therapeutic interventions.

emg-bgremove.png

Arduino Nano ATmega328P Board

The Arduino Nano is a small, complete, and breadboard-friendly board based on the ATmega328 (Arduino Nano 3.x). It has more or less the same functionality of the Arduino UNO, but in a different package. It lacks only a DC power jack, and works with a Mini-B USB cable instead of a standard one.

                                    Arduino Nano

                                Arduino Nano

Specification of Arduino Nano

Microcontroller ATmega328P ( AVR Architecture)
Operating Voltage 5V
Flash Memory 32KB of which 2KB used by the bootloader
SRAM 2KB
Clock Speed 16MHz
Analog IN Pins 8
EEPROM 1KB
Digital I/O Pins 22 (6 are PWM)
PCB Size 18mm x 45mm

Making The Prosthetic Arm

Here are the steps to help you proceed with the making of the prosthetic arm

Circuit Diagram and Code for Prosthetic Arm

Connections

PCA9685 Servo Shield Arduino Nano
VCC 5 V
GND GND
SDA A4
SCLA A5
PCA9685 Servo Shield Servo Motors
EMG Sensor Arduino Nano
OUT A0
VCC 5V
GND GND
EMG Sensor Band
IN- Black
IN+ Yellow
REF Red
          ****