Pages: [1] 2   Go Down
Author Topic: analog input introduces noise into EMG sensor signal  (Read 1397 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Jr. Member
**
Karma: 1
Posts: 69
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

0
Offline Offline
Faraday Member
**
Karma: 16
Posts: 2857
ruggedcircuits.com
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Offline Offline
Jr. Member
**
Karma: 1
Posts: 69
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

0
Offline Offline
Faraday Member
**
Karma: 16
Posts: 2857
ruggedcircuits.com
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Offline Offline
Jr. Member
**
Karma: 1
Posts: 69
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

0
Offline Offline
Faraday Member
**
Karma: 16
Posts: 2857
ruggedcircuits.com
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Offline Offline
Jr. Member
**
Karma: 1
Posts: 69
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

0
Offline Offline
Faraday Member
**
Karma: 16
Posts: 2857
ruggedcircuits.com
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Offline Offline
Jr. Member
**
Karma: 1
Posts: 69
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

0
Offline Offline
Faraday Member
**
Karma: 16
Posts: 2857
ruggedcircuits.com
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Offline Offline
Jr. Member
**
Karma: 1
Posts: 69
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

0
Offline Offline
Faraday Member
**
Karma: 16
Posts: 2857
ruggedcircuits.com
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Offline Offline
Jr. Member
**
Karma: 1
Posts: 69
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset



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

0
Offline Offline
Faraday Member
**
Karma: 16
Posts: 2857
ruggedcircuits.com
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Offline Offline
Jr. Member
**
Karma: 1
Posts: 69
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Pages: [1] 2   Go Up
Jump to: