Pololu Blog »
New product: Advancer Technologies Muscle Sensor v3
Looking for a way to pump up your next project? Let the Muscle Sensor v3 from Advancer Technologies do the heavy lifting!
This small, easy-to-use, 1″ × 1″ board measures muscle activation via electric potential; this is referred to as electromyography (EMG). The sensor measures, filters, rectifies, and amplifies the electrical activity of a muscle; as the muscle flexes, the output voltage increases, resulting in a simple analog signal that can easily be read by any microcontroller with an analog-to-digital converter (ADC), such as our A-Star or an Arduino.
Muscle Sensor v3 with included hardware.
The engineers here were pretty excited to play with these when we got our first samples, as many of us hadn’t used anything like it before. While thinking of various ways to test the sensor, a few of us remembered this ridiculously awesome video of Terry Crews making music with his muscles. (Gets me every time! #MuscleEnvy.) Without getting ahead of ourselves, we decided to try something much quicker and more straightforward with some of our electronics.
In the demonstration video at the beginning of this post, you can see the muscle sensor in action as it measures the muscle activity of my bicep. The demo uses the muscle sensor with a Maestro servo controller to update the position of a hobby RC servo based on how hard I flex. The setup was very simple; the analog output signal from the muscle sensor is connected directly to channel 0 on the Maestro, and the two boards share a common ground. The muscle sensor is powered by two 1S LiPo batteries and the Maestro and servo (connected to channel 1) are powered from a separate 6 V battery pack.
Here I am modeling with electrodes on my bicep for the Muscle Sensor v3.
The Maestro script we used is very similar to the “Using an analog input to control servos” example script provided in the Maestro user’s guide with a couple of modifications. We changed the scaling of the input channel (since our signal was from 0 V to 3.7 V) as well as the channel numbers to match our setup. The whole script is only a few lines long:
# Sets servo 1 to a position based on the analog input of the Muscle Sensor v3. begin 0 get_position # get the value of the muscle sensor's signal connected to channel 0 6 times 4000 plus # scale it to roughly 4000-8092 (approximately 1-2 ms) 1 servo # set servo 1 accordingly repeat
We can’t wait to see all of the amazing things you come up with when you engage your brain (and your muscles) with this sensor!
How much does Muscle Sensor v3 cost?
You can find the price on the product page.
Can this measure the finger's movement?
And by the way, does it have to use electrode to detect the muscle movement? May I use another conductor material?
In the schematic, there are 5 chips, each is one AD8221 and four TL084. And I was confuse that I only see two chip on the top view of Muscle Sensor v3 PCB.
And I google the database about those two chips, AD8221 is 8 pins, TL084 is 14 pins. So I also confuse which chip it is on the top view of Muscle Sensor v3 PCB.
We have not tried it, but I do not see why the muscle sensor would not measure a finger movement if the electrodes were placed correctly. We have also not tried using things other than the included hardware as electrodes, so we are not sure if other materials might possibly work with it.
I recommend contacting the manufacturer, Advancer Technologies, to get more definitive answers to those questions and to learn more about the ICs that they use on the muscle sensor.
do i have to take and modify the samples you provided in the example scripts to identify the channel im using?
for example you provided
# sets servo 0 to a position based on a analog input
1 get_position # get the value of the pot , 0-1023
4 times 4000 plus # scale it to 4000-8092, approxmately 1-2ms
0 servo # set servo 0 based to the value repeat?
i have a 12 channel maestro
and i usually just move the sliders and save frames so this will be a learning experience for me.
all are set to servo except channel 5 for input
is this the correct approach to using the advancer tech muscle sensor to a maestro.? like your flexing video?
I talked to you earlier today when you called, but I wanted to post the answer here for anyone else who might have the same questions.
It looks like the example you posted is the "Using an analog input to control servos" from the Maestro user's guide. The modified version of that example script that we used in this project can be found in the blog post above. Please note that this script expects the output from the muscle sensor to be connected to channel 0 on the Maestro and the servo to be connected to channel 1. If you want the script to work with the sensor connected to channel 5, you will need to modify it to do so. If you try to modify the script and continue to have trouble, you can post your modified script on our forum, and I would be happy to continue troubleshooting there.
Also, please note that we used two 1S LiPo batteries in our setup, so the analog output of the muscle sensor in our demo was from 0V to roughly 3.7V. If you are using 9V batteries, your signal could be upwards of 9V, which is higher than the Maestro inputs support and could result in damage. You might consider reducing the voltage by either adjusting the gain potentiometer on the Muscle Sensor V3, or using a voltage divider circuit.
It is not entirely clear what you are asking (e.g. connect Muscle Sensors to what?), but it sounds like you might be trying to do something complicated or otherwise be looking for more in-depth technical support than is appropriate for blog post comments. Can you refine your questions and either email us or post to our forum?
Specifically, if you explain in more detail what it is you want to do with two muscle sensors (e.g. what muscle(s) are you sensing, how are you planning on reading the output of the sensors, etc.), we might be able to give you a better idea of whether or not your proposed system could work and maybe refer you to additional documentation for getting started with your project.