Introduction
Build a powered upper-limb exoskeleton for stroke rehabilitation that responds to EMG muscle signals. This comprehensive guide covers everything from design through implementation, testing, and deployment.
Build a powered upper-limb exoskeleton for stroke rehabilitation that responds to EMG muscle signals.
Build a powered upper-limb exoskeleton for stroke rehabilitation that responds to EMG muscle signals. This comprehensive guide covers everything from design through implementation, testing, and deployment.
EMG (electromyography) measures electrical signals generated by muscle contractions. MyoWare sensors amplify and rectify the EMG signal to a 0–3.3V analog output. Baseline (resting) EMG is noisy but low (~0.1–0.3V). Strong muscle contraction: 0.8–2.5V. Threshold detection: if EMG > 0.6V for >100ms → detect voluntary muscle activation. Bicep EMG → intent to flex elbow. Tricep EMG → intent to extend. Map to exoskeleton joint command.
10 components required for this project.
| # | Component | Purpose | Qty |
|---|---|---|---|
| 1 | MyoWare EMG Sensor | Muscle activity detection on arm | x4 |
| 2 | High-Torque Servo (DS3218, 20kg⋅cm) | Joint actuation | x4 |
| 3 | 3D-Printed Orthotic Shells | Custom-fit structural support | x1 |
| 4 | IMU (MPU6050) ×2 | Joint angle measurement | x2 |
| 5 | Arduino Mega | Real-time EMG processing and control | x1 |
| 6 | Velcro and Padding Kit | Patient comfort and safety | x1 |
| 7 | Lithium Battery (7.4V 5Ah) | Portable operation | x1 |
| 8 | Force Sensitive Resistors | Detecting patient grip and contact force | x4 |
| 9 | LCD display (patient feedback) | Exercise progress and alerts | x1 |
| 10 | Emergency stop button (patient-accessible) | Immediate safety cutoff | x1 |
Follow these 3 steps carefully.
EMG (electromyography) measures electrical signals generated by muscle contractions. MyoWare sensors amplify and rectify the EMG signal to a 0–3.3V analog output. Baseline (resting) EMG is noisy but low (~0.1–0.3V). Strong muscle contraction: 0.8–2.5V. Threshold detection: if EMG > 0.6V for >100ms → detect voluntary muscle activation. Bicep EMG → intent to flex elbow. Tricep EMG → intent to extend. Map to exoskeleton joint command.
Safety is paramount for rehabilitation devices: maximum joint angle limits (hardware hard stops + software limits), maximum force limits (FSR feedback stops motor if contact force excessive), emergency stop (patient-accessible button immediately removes power to all servos), velocity limits (joints cannot move faster than 30°/s to prevent injury), alert monitoring (battery low, servo overtemperature), and session time limit (auto-stop after 30 minutes of continuous use).
Implement three therapy modes: Passive (exoskeleton guides arm through full range of motion, no patient effort required — for acute stroke phase), Active-Assisted (patient provides partial force, exoskeleton provides remainder — most common), Active-Resistive (patient moves against exoskeleton resistance — for strengthening phase). Display repetition count, range of motion achieved, and force applied on patient screen. Log all session data for therapist review.
Core code for exoskeleton.ino:
// EMG-controlled elbow joint
#define EMG_BICEP A0
#define EMG_TRICEP A1
#define ELBOW_SERVO 9
#define MAX_ANGLE 145
#define MIN_ANGLE 20
int current_angle = 90;
Servo elbow;
float readEMG(int pin) {
float sum = 0;
for(int i=0; i<50; i++) { sum += analogRead(pin); delayMicroseconds(200); }
return sum / 50 / 1023.0 * 3.3; // Averaged voltage
}
void loop() {
float bicep = readEMG(EMG_BICEP);
float tricep = readEMG(EMG_TRICEP);
// Proportional assist control
if(bicep > 0.5) {
int assist = map(bicep*1000, 500, 2500, 0, 3); // 0-3 degrees per loop
current_angle = min(current_angle + assist, MAX_ANGLE);
} else if(tricep > 0.5) {
int assist = map(tricep*1000, 500, 2500, 0, 3);
current_angle = max(current_angle - assist, MIN_ANGLE);
}
elbow.write(current_angle);
delay(20); // 50Hz control rate
}
Test Exoskeleton for Rehabilitation by verifying each subsystem individually before full integration.
Verify power voltages, check ground connections, use serial monitor for debug.
An interactive simulator will be available here — simulate circuits and run code in-browser without hardware.