Subtotal: 0
View Cart

Artifical Limb

This project was submitted to Parallax by Nicholas Hossein of San Diego, California

The main problem faced with creating an artificial limb using Nitinol is the unpredictable nature of the wire under non-ideal conditions. Slight air currents, exposure to light, and variations in room temperature affect the amount of current needed to alter the length of the wire. This problem was solved by using a Javelin Stamp™ microcontroller to measure the angle of each joint and changing the current through the wire to compensate for any environmental variations. Another problem was deciding between using an active bias (Nitinol contracts freely) or a constant bias (constant force opposing the contraction) in the artificial limb.

Three tests were conducted on the Nitinol. Test one and two were used with an active bias system while test three was used with a constant bias system. The first test determined the percent contraction of the wire as a function of the current. It also determined the super elastic current range, which is used to maintain the limb at a set position.

The second test determined how the force of the Nitinol varied with current and therefore the stress range under which the Nitinol safely operates. The third test determined how the bias force affected the percent contraction of the Nitinol. It was also used to predict the results of test one for a constant bias system. Each set of results contributed the data required by the Javelin Stamp module to control the Nitinol.

SAMPLE CODE SAMPLING
---------------------------------------------------------------------------------
import stamp.core.*;
import java.lang.Integer.*;

public class Finger5R3
{
public static void main()
{ ////////////////////////////////////////////////////////////////////////////////
//
DAC nitinolP[]= {new DAC(CPU.pin0), new DAC(CPU.pin1), new DAC(CPU.pin2)};//
Timer T1 = new Timer(); //
//
StringBuffer cmd = new StringBuffer(10); //
char tmp; //
//
int angleP[] = {-1,-1,-1}; //
int angleD[] = {-1,-1,-1}; //
int rcTime[] = {0,0,0}; //
int AproxNew[] = {0,0,0}; //
int AproxOld[] = {0,0,0}; //
//
final int AI = 60; //
final int AF = 255; //
final int SD = 30; //
// ////////////////////////////////////////////////////////////////////////////////

System.out.println("Finger [prototype 4.2]");
System.out.println("Code [revision 2]");
System.out.println('\n');

while(true)
{
angleD[0] = -1; angleP[0] = -1; rcTime[0] = -1;
angleD[1] = -1; angleP[1] = -1; rcTime[1] = -1;
angleD[2] = -1; angleP[2] = -1; rcTime[2] = -1;

PromptJoint(angleD);

Run(nitinolP, T1, angleP, angleD, rcTime, AproxNew, AproxOld, AI, AF, SD);

System.out.print('\u0010');
}
}

 

Home    |    Contact Us    |    Job Opportunities    |    About Parallax    |    Privacy Statement    |    Terms Of Use    |    Copyright 2008 by Parallax, Inc.