Spring 2017 Prosthetic Hand: Mode Selector Test

The Robot Company | CEO Professor Gary Hill

Blog Post created by Project Manager | Bianca Esquivel

Project Test Executed by Electronics and Control Engineer | Forest Nutter

Table of Contents

Preliminary Information

Test Objective

In order to control the prosthetic hand we need to have different modes that will tell the hand to complete different tasks. Therefore, we need the mode selector to have enough modes for every task we need, as well as being reliable enough to not enter or exit the wrong mode. The tasks we want are gripping the hand, gripping the index finger, gripping the ring finger, going to open palm position, and toggling the thumb.

Our objective is to verify that the mode selector is working as intended. When all flex sensors are straight the mode=0. When all flex sensors are bent up, the mode=1, when left flex sensor is bent up, the mode=2, when right flex sensor is bent up, the mode=3 and when all flex sensors are bent down, the mode=4. The flex sensors that dictate the different modes were tested and are referenced in the Blog Post below.

Flex Sensor Test Blog Post

This Test Reflects the Subsystem Requirements:

L2-4.1 The control of the prosthetic hand’s fingers and thumb flexion and extension shall be controlled using flex sensors, which are connected to the each individual toe.

L2-4.1.1 Different motions of the toes shall trigger individual movement in at least 2 fingers to control the left and right click of the computer mouse


(1) Arduino Nano

(2) Xbee

(4) Flex Resistors

(-) Wires

(-) Resistors

Test Set Up

The flex sensors are connected to the Arduino Nano, their flex conditions can then be tested in conjunction to the code to make sure that is outputs specific signals that can be programmed to activate the motors and the servo in the prosthetic hand in different ways.

Arduino Code:

int AverageToes;

int LowToes=100; //Find Values through testing and customer feedback

int ErrorL=1.2;


//Tuning ———-


AverageToes=(FL1+FL2+FL3+FL4)/4; //Find average Toe flex

if (AverageToes>HighToes){ //Choose a Mode


else if (AverageToes

//if (LowTime>Time) { //Mode=4 Lower Toes

//Turn clock off

//else {



else if (FL4>HighToes*ErrorR) {


else if (FL1>HighToes*ErrorL) {


else { //Turn clock off

PWM=map(PWM,0,7,0,255); //Scale the PWM based on the flex sensors. Values will require testing



With some tuning for the thresholds of the modes we were able to get the mode selector to work for modes 0-4. We used mostly “if” statements that would check the average analog voltage and enter the mode for that value.

Mode=0 Flat foot

Mode=1 Raised toes

Mode=2 Right Toes raised

Mode=3 Left Toes raised

Mode=4 Toes lowered


The mode selector function will work, but it will require the threshold voltages to be tuned based on the flex sensor’s variation, the user’s foot shape and the foot movement. The mode selector should be able to control the hand by quickly reading the foot position then sending the mode to the hand to implement the motor movements based on what mode was entered.