Sensor Report: Muscle sensor

 

MyoWare Muscle Sensor

13723-01.jpg

Description

Using our muscles to control things is the way that most of us are accustomed to doing it. We push buttons, pull levers, move joysticks… but what if we could take the buttons, levers and joysticks out of the equation? This is the MyoWare Muscle Sensor, an Arduino-powered, all-in-one electromyography (EMG) sensor from Advancer Technologies. The MyoWare board acts by measuring the filtered and rectified electrical activity of a muscle; outputting 0-Vs Volts depending the amount of activity in the selected muscle, where Vs signifies the voltage of the power source. It’s that easy: stick on a few electrodes (not included), read the voltage out and flex some muscles!

MyoWare Muscle sensor purchase link

https://www.sparkfun.com/products/13723#documents-tab

Biomedical sensor purchase link

https://www.sparkfun.com/products/12969

 

Tangibility

 Seven year old Alex, who was born with a partially developed right arm was given a Iron Man themed prosthetic arm as a gift by Robert Downey Jr. This Arm uses MyoWare sensor as controls for operation.

Seven year old Alex, who was born with a partially developed right arm was given a Iron Man themed prosthetic arm as a gift by Robert Downey Jr. This Arm uses MyoWare sensor as controls for operation.

Measuring muscle activity by detecting its electric potential, referred to as electromyography (EMG), has traditionally been used for medical research. However, with the advent of ever shrinking yet more powerful microcontrollers and integrated circuits, EMG circuits and sensors have found their way into all kinds of control systems. In a traditional manner, it may not be categorized as a tangible control, but it's still physical, needs contact with human muscle, and only triggers based on voluntary muscle activity.

The sensor may not allow you to get a tactile feedback, (Unless you intend to design one by using moving electronic devices like electrical diaphragm, vibrating motor, or knocker/piston attached to a motor to give tactile feedback based on muscle readings) but the sensor most certainly affords you to have some control (not as obvious as using buttons) over actions you intend to have based on muscle activity readings. This feature is currently very useful in the prosthetic industry. People who unfortunately have lost parts of their limbs, like fingers or hand, still have functioning muscles. These muscles movements can be mapped and used as tangible control points for a robotic arm, using this sensor.

 

Applications

This sensor is relatively new to the 'wearables' market, hence the current applications are very few. As the sensor technology gets better over time, there might be a few new applications that it might have, like the MYO band https://www.myo.com/ where multiple muscle sensors work together to track user's hand accurate gestures.

Possible fields where it could be used as a wearable controller or trigger

 MYO Gesture controller

MYO Gesture controller

  • AR/VR
  • Media devices
  • Drone
  • Robotics
  • Music
  • Exercise / Posture correction tool
  • Medical therapy tool
  • Augmentation
  • Prosthetics
FG6W9PBI6YY0O3Q.LARGE.gif

Examples

 

Strengths

  • New possibilities for prototyping unobtrusive wearable controlling (without the need to hold a controller)
  • Fairly accurate muscle activity readings and can be programmed or modified for higher precision in muscle activity readings.

 

Weaknesses

  • Expensive about $40 usd, and may need to buy more components like Biomedical sensor pads $8 for a 10pack, Power shield $4.
  • Sensor still not compact and precise enough to be used as a serious tool.
  • Not as reliable as tactile controls, needs some practice and training to get used to.
  • Uncomfortable to wear
  • Requires preparation time for use

 

Data sheet

The MyoWare Muscle Sensor is the latest revision of the Muscle Sensor of old, now with a new wearable design that allows you to attach biomedical sensor pads directly to the board itself getting rid of those pesky cables. This new board also includes a slew of other new features including, single-supply voltage of +3.1V to +5V, RAW EMG output, polarity protected power pins, indicator LEDs, and (finally) an On/Off switch. Additionally, we have developed a few shields (CablePower, and Proto) that can attach to the Myoware Muscle Sensor to help increase its versatility and functionality!

https://cdn.sparkfun.com/datasheets/Sensors/Biometric/MyowareUserManualAT-04-001.pdf

Supply Voltage: Min: +2.9V, Typ: +3.3V or +5V, Max: +5.7V

Adjustable Gain potentiometer: Min: 0.01ohm, Typ: 50ohm, Max: 100ohm

Output Signal Voltage

EMG Envelope: Min 0V, Max +Vs

Raw EMG (Centered about +Vs/2): Min: 0V, Max +Vs

Input Impedance: 110Gohm

Supply Current: Typ 9mA, Max 14 mA

Common Mode Rejection Ratio (CMRR): 110

Input Bias: 1pA

Dimensions: 52.3 mm x 20.7 mm

 
 MyoWare Data sheet

MyoWare Data sheet

 

 

Assembly

Using 3 biomedical sensor pads, the embedded electrode connectors allow you to stick the board right to the target muscle and avoid the hassle of wires. All you need to do is find the target muscle, attach biomedical sensor pad stickers to the electrodes on the sensor board and then stick it on top of the muscle.

 
 

The muscle area needs to have less skin fat, in order to get most out of the readings. Also shaving the area of contact is recommended as the glue might rip out hairduring removal.

Possible points for Myoware muscle activity readings. (Marked in Blue)

 
untitled.png
 

 

Example:

This example shows how to connect the muscle sensor to get analog readings, blink LED and even activate a servo based on the readings.

Materials used: Arduino UNO, Servo motor, 9V battery, Myoware sensor, Biomedical sensor pads, USB A-B cable, Computer with Arduino IDE.

Circuit

 
Untitled Sketch 2_bb.jpg
 

 

Code

(Arduino UNO)

#include <Servo.h>
Servo myservo;
int sensorPin = A1; // select the input pin for the sensor pin
int ledPin = 13; // select the pin for the LED
int sensorValue = 0; // variable to store the value coming from the sensor
const int threshValue = 100; // used for motor control

void setup() {
  // declare the ledPin as an OUTPUT:
  pinMode(ledPin, OUTPUT);
    Serial.begin(9600);
    myservo.attach(9);
}

void loop() {
  // read the value from the sensor:
  sensorValue = analogRead(sensorPin);
  // turn the ledPin on
  digitalWrite(ledPin, HIGH);
  // stop the program for <sensorValue> milliseconds:
  delay(sensorValue);
  // turn the ledPin off:
  digitalWrite(ledPin, LOW);
  // stop the program for for <sensorValue> milliseconds:
  delay(sensorValue);
  Serial.println(sensorValue);
  //servo control
  if(sensorValue < threshValue)
{
  myservo.writeMicroseconds(800);
}
  else
{
  myservo.writeMicroseconds(2250);
}
}

 

 
 

Citations

The data sheet is copyright of Sparkfun and MyoWare. They have done an amazing job at documenting all the possible information and uses of the sensor, more information on their other products is available on their website here

Circuit drawing was made with Fritzing and modified in Photoshop.

Example code was written by Nitish Wakalkar, derived from sample code available on Sparkfun and Arduino.

 

Useful links

https://www.sparkfun.com/products/13723#documents-tab

https://cdn.sparkfun.com/datasheets/Sensors/Biometric/MyowareUserManualAT-04-001.pdf

http://www.advancertechnologies.com/2013/03/diy-conductive-fabric-electrodes.html

https://github.com/AdvancerTechnologies/MyoWare_MuscleSensor

https://www.youtube.com/watch?v=PU1niI2qw1U

https://www.youtube.com/watch?v=Nj3bfRxshQA

 

 
Nitish Wakalkar1 Comment