Go Down

Topic: analog input introduces noise into EMG sensor signal (Read 1 time) previous topic - next topic

rptort

I developed an EMG sensor that detects muscle contractions. Using a scope, the output of the sensor has a peak to peak value of a few hundred millivolts when not contracting. However, when the output of the sensor is connected to an analog input of the Arduino Uno, the signal jumps to a peak to peak of over 1 volt, sometimes close to 2 volts.

Where is this noise coming from and how I can get rid of it?

Please and Thank you

RuggedCircuits

How did you hook up the ground reference of your sensor to the Arduino?

--
The Basic Motor Driver: simple, inexpensive motor driver for 1 stepper motor or 2 DC motors

rptort

Because of the nature of the sensor, the circuit is grounded by the user's body. The arduino ground is floating.

RuggedCircuits

I think this explains what you are observing. The 1V-2V offset is the difference in "ground potential" between the Arduino and the user's body.

--
The Flexible MIDI Shield: MIDI IN/OUT, stacking headers, your choice of I/O pins

rptort

I understand what you're saying, but it's not really an offset...the signal doesn't simply shift up.  The amplitude increases.

Do you think a common ground will fix the signal?

RuggedCircuits

You are possibly seeing good old 60 Hz noise from fluorescent lights and such superimposed upon your signal, causing an increase in amplitude. Looking at the signal with an oscilloscope right at the Arduino pin might confirm (though it introduces its own earth ground and could disturb the measurement).

I think a common ground will definitely help, or perhaps actively driving the Arduino's ground to a sensor on the body (using an op-amp) to set the body's potential to be the same as the Arduino. There are lots of "open source" EMG interface circuits on the web that might provide some inspiration for this. Googling "emg circuit schematic" brings up lots of related information.

--
The Aussie Shield: breakout all 28 pins to quick-connect terminals

rptort

I don't think it's 60 Hz because it only occurs when the arduino is connected. Without any bridge between the circuit and the arduino, the signal is perfect.

Also, I tried a common ground and the signal gets huge and clips.

I've done quite a bit of research on this...I just think it's something specific with my setup, but I can't figure out what.

RuggedCircuits

Perhaps you can post more details on your wiring and your sensor design?

It could still be 60 Hz, if the Arduino is connected over USB, which comes from a computer, which is connected to a 60 Hz supply!

--
The Rugged Motor Driver: two H-bridges, more power than an L298, fully protected

rptort

Okay I've pinpointed the problem, but I have no idea how to fix it.  The common ground fixed the issue (I messed up something the first time).  Now, the signal is fine until I open the Serial Monitor.  THEN, it goes crazy.  Any ideas??

RuggedCircuits

Hmmm....are you connecting to a laptop? Try disconnecting the laptop's power supply.

--
The Rugged Circuits Yellowjacket: 802.11 WiFi module with ATmega328P microcontroller, only 1.6" x 1.2", bootloader

rptort

Yes I'm using a laptop, and I've tried it with and without the power cable connected...same issue.

RuggedCircuits

It sounds like it's pretty susceptible to noise, and the constant activity of the USB port once you connect is coupling into your signal (my guess). How close are your wires to the "USB side" of your Arduino? Any chance you can keep them as far away as possible?

Can you post more details on your circuit and setup?

--
The Gadget Shield: accelerometer, RGB LED, IR transmit/receive, speaker, microphone, light sensor, potentiometer, pushbuttons

rptort



that's my schematic.

When you say

Any chance you can keep them as far away as possible?


do you mean, on the board use say A5 instead of A0 because its further from the USB port?

RuggedCircuits

Quote
do you mean, on the board use say A5 instead of A0 because its further from the USB port?


Well, yes, and also make sure the wires go away from the board and don't run over the USB part as they are exiting. Though if your signal is "going crazy" I have a feeling it's more serious than just picking up some stray noise from the USB.

There are a couple of issues with your schematic. The LM741 is not a good choice for this kind of "sensitive" work. A higher-quality rail-to-rail op-amp would be better. Also, it looks like your final output stage is bipolar (goes both positive and negative) and you cannot put negative voltages into the Arduino.

--
The Ruggeduino: compatible with Arduino UNO, 24V operation, all I/O's fused and protected

rptort

I've moved the wires away as you suggested and I'm getting the same issue. I understand there are better op amps than the 741, but it doesn't seem like that would be the reason the serial monitor is distorting the signal so much. Also, the final two op amps act as a rectifier so the final waveform is all positive.

Go Up