Arduino Controlled Prosthetic Hand With Individual Finger Tendon Actuation And Force Feedback
Place one electrode in the middle of the muscle body, connect this electrode to the RED snap connector. Place a second electrode at one end of the muscle body, connect this electrode to the GREEN snap connector. Place a third electrode on a bony or non-muscular part of your body near the targeted muscle, connect this electrode to the YELLOW snap connector.
A 3D-printed, EMG-controlled prosthetic hand designed to translate muscle activity into intuitive finger movements using low-cost hardware.
This project was developed as part of my Mechatronics Engineering coursework . January 2024
This project was developed as a group project as part of Mechatronics Engineering coursework.
Electromyography (EMG) sensors detect the tiny electrical impulses generated by muscle contractions. By placing an EMG sensor on your forearm, you can trigger a robotic hand to mimic your flexes.
What you'll learn: Bio-signal amplification and filtering, threshold detection, and multi-servo string tendon actuation.
Wesley Kagan’s PorscheKart project returns with a new Arduino-powered F1 steering wheel
The cost of a new prosthetic arm can range from several thousand dollars to tens of thousands, putting them out of reach for many people. Ahmad Ikram recognized this need and decided to design and build a far cheaper, open source version that has myoelectric capabilities.
To begin this project, Ikram decided upon using the InMoov 3D-printed arm design from French sculptor Gael Langevin due to it being easy to construct. The hand itself contains a single wire connected to each finger, while the other end gets wrapped around a servo motor horn so that the finger can bend whenever the serv moves. A Myoware muscle sensor is responsible for reading the electrical signals generated by muscle contractions and converting them into a readable analog voltage, which is read by an Arduino Nano ’s analog pin.
The program Ikram created for the Arduino simply takes continuous readings from the myoelectric sensor and checks if it above a certain threshold. Once it is, the servos are set to a position for contracting the finger, otherwise it releases tension from the wire and makes the fingers return to their original position.
To see more about this project, you can read Ikram’s post here on Instructables and watch its demo video below.
Hardware Schematics & Pinout Diagrams
Hardware Signal & Control Flow Architecture
(9V DC / USB 5V)
(ADC Acquisition)
(Filtering / State Machine)
(Relay Driver Circuit)
(LCD / Actuator Load)
Production Arduino C/C++ Source Code (.ino)
[*] Initializing Hardware Core for Arduino Controlled Prosthetic Hand With Individual Finger Tendon Actuation And Force Feedback... [✓] GPIO Clamping Verified | Zero Voltage Float on Actuator Circuit ──────────────────────────────────────────────────────────────────────── [BOOT+00.02s] ADC_INIT Calibrated zero-offset = 12 mV (Clean noise floor) [RUN +01.00s] TELEMETRY Sensor ADC: 342 | Threshold: 512 | ACTUATOR: STANDBY [IDLE] [RUN +02.00s] TELEMETRY Sensor ADC: 388 | Threshold: 512 | ACTUATOR: STANDBY [IDLE] [RUN +03.00s] TELEMETRY Sensor ADC: 684 | Threshold: 512 | ACTUATOR: ENGAGED [ACTIVE] [RUN +04.00s] INTERRUPT Optocoupler PC817 saturated | Actuator Active in 4.2 ms [RUN +05.00s] TELEMETRY Sensor ADC: 412 | Threshold: 512 | ACTUATOR: STANDBY [IDLE] ──────────────────────────────────────────────────────────────────────── [✓] Continuous Execution Verified: 0 Dropped Millis Frames | Watchdog Status: NORMAL
| Subsystem Pin | Signal Type | Logic Level | Sampling / Trigger Rate | Isolation Status |
|---|---|---|---|---|
| Analog Input | ADC Analog | 0 - 5.0V / 3.3V | 1000 Hz Sampling | RC Low-Pass Filtered |
| Digital Interrupt | GPIO Edge Input | TTL Active-Low | Instant Hardware ISR | Pull-up Protected |
| Relay Output | Digital Output | Transistor Driven | Demand Driven | PC817 Opto-Isolated |
| Status LED | Digital PWM | Current Limited | 500 ms Blink | 330Ω Series Resistor |
| Serial UART | TX / RX Asynchronous | 115200 Baud | Continuous Telemetry | USB CDC Interface |