EMG using Myoware Muscle Sensor Raw output


New member
I got a Myoware muscle sensor (https://www.sparkfun.com/products/13723) a few months ago and was using it with an Arduino to read out the raw EMG waveforms from the sensor. I switched over to using a teensy b/c I could sample so much faster with more resolution using the ADC library and the optimized USB interface. That has all worked great I can sample much much more now with more bits of resolution.

What I am trying to figure out now has to do with the Myoware's raw output being such a tiny voltage. Originally I used 2 LMV358 breakout boards to amplify the signal to a point where I could see it (and indeed I could see it), usually one LMV358 was at the max and the other was barely on. This configuration is annoying I am constantly having to adjust the trim pots to not saturate and use most of the dynamic range.

What I am wondering is if I can use the differential read of the teensy ADC (I have a Teensy 3.2) and the PGA to amplify the small signal all on the Teensy? I have tried to read up on how to use the differential read using A10 and A11, but it is unclear to me (I program for a living, but electronics is only a hobby) how to set this up. The Myoware spits out voltages centered around Vs/2.0, is it simply a matter of pumping in the ground voltage of the Myoware, or the ground voltage of the Teensy to do the difference, or do I need to divide the voltages somehow to mimic the range output by the Myoware?

Anyway any advice or pointers would be super helpful.

Hi James:
I haven't used the Myoware board myself, but looking at the datasheet, I am guessing you must be using the RAW output, as that one is referenced to Vs/2.
You are correct that the ADC differential mode is the way to go, and that you need to use the A10, A11 pins on the inner pins on the bottom of the Teensy 3.2
You would hook up the RAW output to A10 and the following to A11:
You could use other values besides 2.2K, but both values should be closely matched- 1% resistors would be best. Vs should be the power supply pin on the
Myoware board, and the GND of both the Teensy and Myoware board should be connected together.
You can see how to use the differential mode by looking in the Arduino Teensy examples folder called ADC for an example called analogDifferential read. Read the program over, and select the options you want.
You will want to use the PGA to get some gain. Set the Analog reference to 1.2V, as that is required if you use PGA:
adc->setReference(ADC_REF_1V2, ADC_0);

This should get you going. Good luck.
Hi James, I can't answer the Teensy specific questions but I can give you a tip that might help. You can use the R pin on the MyoWare to get the Vs/2 voltage that the RAW output is centered on.
I use the R pin to connect to an electrode, I use the raw pin to go back to the teensy. Are you suggesting I don't have a reference electrode or that I split the signal?


Hi James, I can't answer the Teensy specific questions but I can give you a tip that might help. You can use the R pin on the MyoWare to get the Vs/2 voltage that the RAW output is centered on.
So I split the wire coming out of the electrode on my body that ran to the R pin, I ran one split to the R pin, the other to A11 on the Teensy. I got back exactly what I wanted, the serial plotter showed data centered on 0, adjusting the PGA resulted in using more or less of the dynamic range (in this case I set it to 16 bits). Below is a screen show of the serial plotter, the muscle action was between 2136 and 2236. The spike between 1936 and 2036 is actually my hearbeat which comes through loud, clear and regular (I will eliminate that with a digital filter in post processing).

So I think everything is working, I just wanted to make sure I posted back here in case anyone comes looking for this later.


Screen Shot 2017-01-01 at 9.33.53 PM.jpg
Are you using a USB isolator? The amount of noise that you are seeing usually manifests when powering the MCU / MyoWare senso via USB. If you're using a laptop, disconnecting the power cord while using the setup is another option.

Also, are you using external cables? Your mention of splitting the reference cable makes me think you might be. If you are and haven't done so already, I highly recommend braiding the external cables. They act as great antenna which is bad for noise. Braiding the cables ensures the noise is in phase between the two inputs and the sensor is able to remove it appropriately.
I am powering with USB from my computer on battery (plugged in the noise is really bad) and I do not have an isolator. I've had one in my amazon cart forever but was never quite sure it was what I needed, here is the one I was considering:

HifimeDIY USB Isolator. ADUM4160 5000V signal isolation https://www.amazon.com/dp/B00F4SCCR2/ref=cm_sw_r_cp_api_96SAyb0MVT09J

Do you have a recommendation? Cheaper would be great 😄...

I do have external cables and they are braided.

Last edited:
For much cheaper than that usb isolator you could get a bluetooth module for your teensy to stream the data to a computer that has bluetooth.