You are on page 1of 12

HOME

ABOUT

BLOG

SHOP

MUSCLECONTROL

DEVELOPER

CONTACTUS

Signupforupdates!*

January19,2016

SIGNUP

OVERVIEW
Thistutorialwillguideyouthroughtheprocess
ofusingElectromyography(EMG)muscle
sensorstocontroltheAdahand.

Joinourdeveloper
community!

Thistutorialisfor:

Hand:AdaV1.0

SIGNUP

CircuitBoard:AlmondV1.2
Firmware:ArtichokeV1.0

Youwillneed:

AdahandwithAlmondcircuitboard,
runningArtichokeV1.0firmware
12VDCpowersupply

ADAV1.0ASSEMBLY
INSTRUCTIONS
Jan26,2016

MicroUSBcable
ComputerrunningArduinoIDE
Solderingiron+solder
2xMuscleSensorV3(orsimilar)

ARTICHOKEV1.0
FIRMWAREUSER
GUIDE
Jan19,2016

2xSensorcables
5xStickyelectrodepads
2x9Vbatteries
2x9Vbatterysnaps
1x4Pole3.5mmheadphonejack
(IMPORTANT,mustbe4Pole)
30cmRedwire
30cmBlackwire

SENSORS
Electromyography(EMG)sensorsareusedto
detecttheelectricalpotentialofyour
muscles.Asignalispickedupfromasurface
electrode,placedonyourskin,thesignalis
thenpassedthroughaseriesofamplifiersand
filterstoproducea'clean'signal.Theresulting
'clean'signaliswithintheusablerangeofa
microcontroller,socanbefedintoanAnalogue
toDigitalConverter(ADC),wherethe
magnitudeofthesignalrepresentsthe
magnitudeofthemuscleactivation,i.e.the
greaterthesignalmagnitude,theharderthe
muscleistensing.

CONSTRUCTINGTHE
SENSOR
EMGsensorsarebecomingmorewidely
available;thistutorialinvolvesthemodification
anduseoftheMuscleSensorV3boardsfrom
AdvancerTechnologies,howeverthistutorial
willalsobrieflycovertheuseoftheirnew
MyoWareboardsaswell.

MUSCLECONTROL
Jan19,2016

Thefirststepisto
attachthebattery
snapstotheMuscle
SensorV3boards.

1.Solderthenegative(black)wirefromthefirst
batterysnapandthepositive(red)wireofthe
secondbatterysnap,totheGNDpadofthe
MuscleSensorV3board

2.Solderthepositive
(red)wireofthefirst
batterysnaptothe
'+Vs'padonthe
MuscleSensorV3board

3.Solderthenegative(black)wireofthe
secondbatterysnaptothe'-Vs'padonthe
MuscleSensorV3board

Youshouldnowhavethefirstbatterysnap
connectedbetween'+Vs'andGND,andthe
otherbatterysnapbetweenGNDand'-Vs'

4.Soldera10cm
wirebetweenthe
'+Vs'padonthefirst
MuscleSensorV3
boardtothe'+Vs'
padonthesecondMuscleSensorV3board

5.Soldera10cmwirebetweentheGNDpad
onthefirstMuscleSensorV3boardtotheGND
padonthesecondMuscleSensorV3board

6.Soldera10cmwirebetweenthe'-Vs'padon
thefirstMuscleSensorV3boardtothe'-Vs'
padonthesecondMuscleSensorV3board

Thenextstepisto
attachtheMuscle
SensorV3boardsto
theheadphonejack.

1. Solderthe
GNDpadonthesecondMuscleSensor
V3boardtotheGNDconnectiononthe
headphonejack
2. SolderawirefromtheSIGconnectionon
thefirstMuscleSensorV3boardtothe
firstsignalpin(SCL/ADC6/RX)ofthe
headphonejack
3.SolderawirefromtheSIGconnectionon
thesecondMuscleSensorV3boardto
thesecondsignalpin(SDA/ADC7/TX)of
theheadphonejack
4.DONOTCONNECT5Vasthismay
damagetheboard

TheEMGsensorsshouldnowbereadyforus
toplugintotheheadphonejackontheAda
hand,butfirstweneedtoconnectthe
electrodes.

POSITIONINGTHE
ELECTRODES
Eachsensorboardrequiresthreeelectrodesto
attachtotheskin;2electrodesusedforthe
musclesignal(red+blue)anda3rdelectrode
usedforabody/groundreference(black).
However,whenworkingwith2channelswe
areabletodiscardoneofthebody/ground
referenceelectrodes(black).The5remaining
electrodesshouldbeplacedontheforearmas
seenbelow.

1. Presseachofthestickyelectrodepads
intotheelectrodesensors
2. Peeloffthepaperbackingofeachsticky
electrodeandapplytotheskininthe
locationsshownintheimagebelow
3.Themusclesignalelectrodes(red+blue)
foreachchannelshouldbeplacedon
theareaoftheforearmwiththegreatest
musclemass,withatleast2cmbetween
them
4.Thebody/groundreference(black)
electrodeshouldbeplacedonanareaof
thebodywithoutmuchmusclemass,
suchastheelbow

Forearmelectrodeplacement

Notethatthestickyelectrodesaresingleuse
only,andthequalityofthesignaldegrades
greatlyaftertheyareremovedandreapplied.

FIRMWARE
TheArtichokefirmwareallowstheAdahandto
becontrolledviamusclesignalsusingEMG
sensors.Themusclesignalsarefedintothe
ADCoftheAlmondboardviatheheadphone
jack.Musclemodeisdisabledbydefault,but
standardmusclecontrolcanbeenabledby
enteringtheserialcommand'M1',onceenabled
thismodewillstayenabled(evenafterapower
cycle)untilitisdisabledusing'M0'.

Oncestandardmusclemodeisenabled,the
handwilltakeasampleof150musclevalues
(takes200ms),whichitusestogeneratethe
initialbaselinevaluesforyourmuscles,called
thenoisefloor.Thisnoiseflooristhedefault
valueofyourmuscleswhentheyarenotactive,
andchangesdependingonawiderangeof
factors,suchaselectrodeplacement,skin
contactduetosweat/hairsetc.Once
generated,weusethisnoisefloorasthe
baselinereadingofyourmusclesanditis
recalculatedconstantlywhilstthemuscleisnot
activated(anoisefloorcanbegenerated
manuallybyentering'N').

Thethresholdvalueisgeneratedbyaddinga
specifiedsensitivityvaluetothenoisefloor,if
thecurrentmusclesignalisgreaterthanthe
thresholdvalue,themuscleisdeterminedas
activated.Thesensitivityvaluecanbesetvia
serialbyenteringthecommand'U###',where
#isanumberbetween0-1023.

WiththeEMGsensorsconnectedtoyour
musclesandpluggedintothehand,ifyou
enablemusclemode(M1),youcanviewalive
updateofthevaluesbyenteringthecommand
'M3'.Thisshouldcontinuouslyprintoutmuscle
datainthefollowingformat;


 

M#-rawmusclesignal
T#-calculatedthreshold(noisefloor+
sensitivityvalue)
N#-noisefloor
A#-whetherthemuscleisdeterminedto
beactive(0=inactive,1=active)
DIR-calculateddirectionofthe
combinedmusclesignal(open,close,
none)

Withyourmusclesrelaxed,bothA0andA1
shouldbe0,showingthatthemusclesare
determinedtobeinactive.Ifanyofthemis
detectedasactive,evenwhenthemuscleis
relaxed,tryincreasingthesensitivityvalueby
entering'U###',where#isthenew
value,typicallybetween100-300,wherethe
lowerthenumberrelatestoanincreasein
sensitivity.

MUSCLE

CONTROLMETHODS
OnceyouhaveconfirmedtheEMGsensorsare
workingandwiredcorrectly,youcanstartto
controlthehandusingyourmuscles.

Theimageontherightshowshowthetwo
handmotionsyoushouldperformtoactivate
theinsideandoutsideforearmmuscleswith
theleastamountofeffort.

Ifyoufindthatthehandisrespondingtothe
oppositecommand(i.e.youperformanopen
movementandthehandcloses)switchingthe
electrodesensorwiresbetweenthetwo
MuscleSensorBoards.

STANDARDMUSCLE
CONTROL
Thedefaultcontrolmodeisstandardmuscle
control;thehandwilleitheropenorclose,
dependingonwhichofthemusclesistensed.
Forexample,whentheouterforearmmuscleis
tensed,thehandshouldopen,andwhenthe
innerforearmmuscleistensed,thehand
shouldclose.

Ifthehandisopen,andyouholdtheopen
forearmmusclefor700ms,thehandshould

cycletothenextgrippattern,youshouldthen
beabletoopenandcloseasnormalinthisgrip
pattern.Thepossiblegrippatternsarelistedin
orderbelow.

1. Fist-allfingersandthumbmove
2. Palm-allfingersmove,thumbstays
open
3.Thumbsup-allfingersstayclosed,
thumbmoves
4.Point-allfingersremainclosed,onlythe
indexfingermoves
5. Pinch-allfingersremainopen,onlythe
thumbandindexmove
6. Tripod-ringandpinkyremainopen,
indexmiddleandthumbmove

Toenablethiscontrolmode,enter'M1'over
serial,thismethodwillalsostayenabledaftera
powercycle,unlessitisdisabledbyentering
'M0'.

POSITIONALMUSCLE
CONTROL
Positionalmusclecontrolisdesignedto
achievefinercontrolofthehandwhenusing
musclesensors,thismodealsomoreclosely
reflectshowaroboticprosthetichandis
controlled.Thehandonlymoveswhena
muscleistensed,andthespeedofmovement
isproportionaltothesizeofthemuscle
activation/howmuchthemuscleistensed.This
meansthatyoucanmovethehandslowlyby
tensinggentlyandyoucanmovethehand
quicklywhentensingmorefirmly.Toenable
thiscontrolmode,enter'M2'overserial,this

methodwillalsostayenabledafterapower
cycle,unlessitisdisabledbyentering'M0'.For
thismodeyoumayneedtodecreasethe
sensitivitytoallowforthe'gentle'tensestobe
pickedupbythehand.

EXTRA
I2CMUSCLESENSORS
Analternativesolutionformusclesensingisto
useanI2CADC.Insteadofpassingtheraw
analoguesignalsdownthroughalongcableto
theADContheAlmondboard,whichcould
resultinanincreaseinnoise,anI2CADCcould
belocatedascloseaspossibletothe
muscles/EMGsensor.Thiswouldresultina
shortercablelengthbetweentheoutputofthe
EMGsensorsandtheADC,thusreducingthe
chanceofnoise.

Artichokeisdesignedtousebothanalogue
(default)andI2Cmusclesensors,inparticular
theAD7995,a4channel10-bitI2CADC.

Thelibrarycanbefoundat
www.github.com/OpenBionics/Arduino_Libraries,titled'I2C_ADC.h'.
Oncedownloadedandinstalled,itcanbe
enabledwithinArtichokebynavigatingto
'Globals.h'anduncommentingthefollowing;

 
Uncommentingthislinechangesthemuscle
controllertoperformanADC2.read()

(I2C_ADC)insteadofananalogRead(),enables
theI2C_ADCtobeinitialisedandpullstheADC
pinshightoconfigureI2Clines,asdiscussed
below.

IMPORTANTNOTEABOUT
I2C
The2datalinespassedthroughthe
headphoneportontheAlmondboardare
connectedtobothI2Cpinsandanaloguepins
(througha10kresistor).Iftheheadphoneportis
beingusedforanaloguedata(e.g.muscle
sensors),youshouldnotinitialiseI2C.When
usingI2C,theanaloguepinsneedtobepulled
hightoactasthepullupsfortheI2Clines.







Share

ArtichokeV1.0
FirmwareUserGuide

0Likes

Home

Downloads

Investment

About

TheTeam

Opportunities

Blog

ContactUs

DeveloperCommunity

Shop

Tutorials
Forum

Tocontactuse-mail
hello@openbionics.com

(c)OpenBionics2016