multiplexing muscle sensor

i am doing a project "artificial arm" readings taken by electrodes of muscle sensor are fed to arduino to move five stepper motors which are connected to artificial fingers. now i can move the figures as a whole. when the signal from the muscle sensor goes above thershold value , the finger close.. and when signal from muscle sensor goes below threshold, the artificial fingers opens.

i am planning to move the artificial fingers separately. when i had searched about this, i came to know that by using 5 muscle sensors we can move the fingers separately. as the muscle sensor are costly.. before trying that i would like to try a configuration using mux and de mux. i need expert advice regarding this.

five set of electrodes are used to get values from muscles, giving that to a mux.. then single output to muscle sensor for processing the five set of values , then to a demux we get 5 procesed dc levels corresponding to muscle contraction and relaxation.. this five values to arduino.

does this work?

Why bother with mux and demux? You have an MCU and 5 inputs and 5 outputs.

Do the electrodes give analog signal for strength applied? If so then read them analog and make the fingers only bend so far?

Whether analog or digital, have the sketch constantly read the sensors and only act on changes.

I guess that the electrodes will some day connect to amputee nerves?

If not or if you want a robot hand for other use, piezo discs do make nice pressure sensors from light touch to hard hits.

You are going to need some serious signal processing - as well as isolation - between the electrodes and the Arduino.

The new MyoWare muscle sensor can be multiplexed.

The new boards have jumper pads marked RAW.

To do this... 1) Take a sharp object and cut the trace between the RAW jumper pads 2) Connect the output pin of your mux to the RAW output pin on the MyoWare board 3) Connect each instrumentation amplifier's (IA) output pin to its own input on the mux. You'll need one IA for each muscle you want to measure 4) Connect the MyoWare's - R pin to the IA's reference pin - SHLD pin to the IA's +Vcc pin - GND pin to the IA's -Vcc pin 5) Connect each muscle's electrodes (middle, end, reference) to the IA's + input pin, - input pin, and reference pin, respectively

We are currently working on a shield that will do this all for you but don't expect it anytime soon.

Can be muxed (so can leds, switches, etc ) but for only five of them, why?

It's more hardware, more code, more complications, longer development for the sake of what?

We are currently working on a shield that will do this all for you but don't expect it anytime soon.

GoForSmoke: Can be muxed (so can leds, switches, etc ) but for only five of them, why?

It's more hardware, more code, more complications, longer development for the sake of what?

EMG isn't as simple as connecting the electrodes to the analog input pins on a MCU... the electrodes are basically just the probes of a very sophisticated voltmeter; without the circuitry of the voltmeter, they're useless.

I would highly recommend reading up on monopolar and bipolar surface EMG if you want to learn why what you're suggesting is impossible.

Also, EMG raw unamplified signals are in the order of 5-10mV. A typical 5V arduino can only tell a difference in steps of 5V/1023 = 4.88mV so you wouldnt get any meaningful measurement from it even if it could work this way.

What I said. :grinning:

So the mux-demux is more than just a mux-demux? It levels voltage up too?

The Uno ADC reference voltage can be set lower than VCC (to external reference or internal 1.1V reference) and the raw output of the sensors can also be amplified. I know that much.

An ARM duino (like a Due or Teensy 3.2) has 12 or 13 bit ADC with 3.3V VCC plus the speed and resources to do major processing compared to any AVR duino.

And btw, 10 bit ADC has 1024 steps. The 1st starts at 0, the last ends at 5V when the ADC reference is 5V. We had a good thread about that one last year.

The OP wants to open and close a robot hand.....


The ADC converts an analog input voltage to a 10-bit digital value through successive approximation. The minimum value represents GND and the maximum value represents the voltage on the AREF pin minus 1 LSB. Optionally, AVCC or an internal 1.1V reference voltage may be connected to the AREF pin by writing to the REFSn bits in the ADMUX Register. The internal voltage reference may thus be decoupled by an external capacitor at the AREF pin to improve noise immunity.

24.5.2 ADC Voltage Reference The reference voltage for the ADC (VREF) indicates the conversion range for the ADC. Single ended channels that exceed VREF will result in codes close to 0x3FF. VREF can be selected as either AVCC, internal 1.1V reference, or external AREF pin. AVCC is connected to the ADC through a passive switch. The internal 1.1V reference is generated from the internal bandgap reference (VBG) through an internal amplifier. In either case, the external AREF pin is directly connected to the ADC, and the reference voltage can be made more immune to noise by connecting a capacitor between the AREF pin and ground. VREF can also be measured at the AREF pin with a high impedance voltmeter. Note that VREF is a high impedance source, and only a capacitive load should be connected in a system. If the user has a fixed voltage source connected to the AREF pin, the user may not use the other reference voltage options in the application, as they will be shorted to the external voltage. If no external voltage is applied to the AREF pin, the user may switch between AVCC and 1.1V as reference selection. The first ADC conversion result after switching reference voltage source may be inaccurate, and the user is advised to discard this result.