Initialising
Skip to content
Assembled bionic hand pointing under live glove control
Back to work
Mechatronics · Embedded · Human–Robot Interface

Bionic Arm Control Using Flex Sensors

A low-cost, gesture-driven 3D-printed prosthetic hand. A sensor glove maps human finger flexion straight to servo actuation — read, map, actuate, at 10 Hz as originally built.

5 Flex Channels5× SG90 Servos3D-Printed ABSTendon-Driven
Sathvik Koti · B.Tech Mechatronics · 2022
01 · Overview

Wearable input, tendon-driven output.

Each finger of a wearable glove is instrumented with a flex sensor whose resistance rises as the finger bends. An Arduino digitises the five analog channels, maps each to a 0–180° servo command, and drives five SG90 servos in a 3D-printed hand.

Nylon tendon lines transfer servo rotation to the fingertips, replicating the operator's gesture in real time.

Motivation — commercial bionic hands are expensive; this targets an affordable, manufacturable alternative for hazardous-environment teleoperation.

02 · System Architecture

Signal flow.

Finger flexion
Flex sensor ΔR
Voltage divider
Arduino ADC A0–A4
map() + constrain()
SG90 servo D0–D4
Nylon tendon
Fingertip motion

Five fully independent channels — one flex sensor drives exactly one servo, giving per-finger control with no cross-coupling.

03 · Mechanical Design

Modelled in Fusion 360.

The arm was modelled as a full forearm, a ball-joint wrist, and an articulated five-finger hand with internal tendon routing. Parts were printed individually and assembled.

04 · Electronics & Control

Wire it, map it, write it.

Servo cluster and nylon tendons at the wrist
Servo cluster and nylon tendons at the wrist — each servo horn pulls one finger.

Flex sensors wire into the Arduino's analog inputs as voltage dividers; the five servos take digital I/O.

The firmware is intentionally minimal and deterministic — read, map, constrain, write, at ~10 Hz.

hand_control_program.ino — as-built, 2022arduino · C++
#include <Servo.h>

Servo servo_1, servo_2, servo_3, servo_4, servo_5;
int flex_1=A0, flex_2=A1, flex_3=A2, flex_4=A3, flex_5=A4;

void setup(){
  servo_1.attach(0); servo_2.attach(1); servo_3.attach(2);
  servo_5.attach(3); servo_4.attach(4);
}

void loop(){
  int p;
  p = constrain(map(analogRead(flex_1),800,900,0,180),0,180); servo_1.write(p);
  p = constrain(map(analogRead(flex_2),800,900,0,180),0,180); servo_2.write(p);
  p = constrain(map(analogRead(flex_3),800,900,0,180),0,180); servo_3.write(p);
  p = constrain(map(analogRead(flex_5),800,900,0,180),0,180); servo_5.write(p);
  p = constrain(map(analogRead(flex_4),800,900,0,180),0,180); servo_4.write(p);
  delay(100);
}

map(800,900→0,180) linearises each sensor's usable resistance band; constrain() clamps to the servo's mechanical limits. This sketch also has two real defects: servos share the D0/D1 UART pins, and the same narrow 800–900 window is hardcoded across all five channels. A later firmware rewrite moves the servos to D3/D5/D6/D9/D10, adds per-finger calibration and smoothing, and targets ~50 Hz — not yet run on the physical hardware.

05 · Hardware

Bill of materials.

MCU
01
Arduino (Mega-class)
  • · 5V logic · 7–12V in
  • · 54 digital I/O (15 PWM)
  • · 16 analog in · 16 MHz
  • · 256 KB flash
Actuator
02
SG90 micro servo ×5
  • · 4.8–6V · 1.8–2.5 kg·cm torque
  • · 0.1 s / 60° · 0°–180°
  • · plastic gear · 9 g
Sensor
03
Flex sensor ×5
  • · ~25 kΩ flat → ~100 kΩ bent
  • · voltage divider → ADC
  • · as-built band ≈ 800–900 raw
  • · mapped to 0–180°
Power
04
5V regulated, ≥3A (UBEC)
  • · SG90 ×5: ~100–250 mA moving
  • · ~700 mA stalled, each
  • · as-specced LiFePO4+9V combo undervolted — corrected
End effector
05
3D-printed ABS hand
  • · high tensile strength
  • · warps without an enclosure
  • · nozzle 230–260 °C
  • · bed 80–130 °C
Software
06
Arduino IDE
  • · C / C++
  • · Servo.h library
  • · ~10 Hz control loop
06 · Fabrication

Print, assemble, tendon-drive.

01
Print

Fingers printed as three ABS segments — proximal, middle, distal — on an FDM printer.

02
Assemble

Segments superglued into articulating digits; palm and forearm printed and joined.

03
Tendon-drive

Nylon lines tie each servo horn to a fingertip; rotation pulls the tendon and flexes the finger.

07 · Results

Live gesture reproduction.

Assembled hand holding an index-point gesture under live glove control
Assembled hand holding an index-point gesture under live glove control — ABS, tendon-driven, 5-DOF.
Prototype build

The hand reproduces per-finger flexion from the glove in real time.

08 · Honest

Limitations & future work.

Current limitations
  • Current build implements 5 flex→servo channels only; wrist/elbow DOF and an accelerometer are designed but not yet integrated.
  • Open-loop control — no force or position feedback from the hand.
  • As-built calibration is one hardcoded 800–900 window shared by all five channels — narrow, glove-specific, and a documented source of jitter.
Future work
  • +EMG (muscle-impulse) control in place of flex.
  • +Haptic feedback to the glove.
  • +Added wrist and elbow DOF via accelerometer fusion.
  • +Closed-loop tactile / force sensing at the fingertips.
  • +Wireless glove-to-hand link (nRF24L01) to physically separate operator from the hand — the actual requirement for the hazardous-environment use case.