Sensor Report: Muscle sensor


MyoWare Muscle Sensor



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

Biomedical sensor purchase link



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.



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 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




  • 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.



  • 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!

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




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)




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.


Untitled Sketch 2_bb.jpg



(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);

void loop() {
  // read the value from the sensor:
  sensorValue = analogRead(sensorPin);
  // turn the ledPin on
  digitalWrite(ledPin, HIGH);
  // stop the program for <sensorValue> milliseconds:
  // turn the ledPin off:
  digitalWrite(ledPin, LOW);
  // stop the program for for <sensorValue> milliseconds:
  //servo control
  if(sensorValue < threshValue)




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


Nitish Wakalkar1 Comment