Tuesday, December 3, 2013

Self-Noise of OpenBCI with More Data

After posting about my short-duration measurement of the self-noise of the OpenBCI board, there was a comment that discussed EEG applications where very low frequency signals were being used.  To understand the self-noise of the OpenBCI board at these low frequencies, I repeated my self-noise measurements, but used a much longer recording...one hour instead of ten seconds.  I also to the opportunity to measure the noise on five channels, not just one like before.  Here are my results.

Measuring Self-Noise of Five Channels of OpenBCI by
Jumpering Them All to Analog Ground
Setup:  The setup that I used was the same as before except that I jumpered the first five inputs to analog ground, instead of jumpering just the first channel.  Also, yesterday, I de-activated all of the channels except for the first one.  Since today's test used five channels, I kept the first five channels and only de-activated the last three.

Data Collected:  I recorded about an hour of data.  Near the end of the data, there was a spike that I could see in the graphs...I must of bumped the setup with my hand while I was doing other things.  So, I trimmed the data to remove the spike.  Overall, I was left with 3180 seconds of data.  The lowest possible frequency that could be represented in this data is about 1/3180 = 0.00031 Hz.  That is a very slow signal.

Results for One Channel:  After removing the DC offset (ie, the mean) of the entire 3180 second recording, and after lowpass filtering the data with a cutoff at 65 Hz, I get the histogram shown below.  This is for Channel 1.  As can be seen, it is a nice Gaussian shape, which is very smooth because of the huge number of data points in my 3180 second recording.  The standard deviation is 0.15 uV.  Since the standard deviation is the same as the RMS value (when the mean is removed), the RMS noise value for this channel for this recording was 0.15 uVrms.  This is very close to the 0.16 uVrms value that I recorded yesterday for the shorter 10 second recording.  This agreement makes me feel very good.

Histogram of 3180 Seconds of Noise Recorded from
OpenBCI with its Inputs Jumpered to Analog Ground.

Noise Spectrum:  To see how the noise level varies with frequency, we can plot the spectrum of the signal.  Since the recording is so long, the spectrum reaches down to very low frequencies.  For channel 1, I got the spectrum shown below.  As can be seen, it has two regimes: (A) a flat "white noise" region above 0.07 Hz and (B) a sloped "1/f Noise" region where the noise density increases as the frequency gets lower and lower.  This "1/f" behavior (the "f" is for "frequency") is very commonly seen when evaluating the low-frequency noise of analog amplifiers.  It is impressive that the 1/f noise doesn't begin until about 0.05 Hz.  As a result, even at a frequency of 0.001 Hz, the noise level is only about 0.3 uV/sqrt(Hz).  That seems pretty good to me.

Spectrum of Self-Noise Recorded from OpenBCI
with its Inputs Jumpered to Analog Ground.

60 Hz Noise:  What is a bit surprising in this spectrum is the sudden appearance of the 60 Hz noise (there was none seen in my data yesterday) and of a spike at 0.080 Hz.  I'm thinking that, because I now have 5 channels active instead of one, and because the 5 channels share the single SRB2 input as the reference for the differential amplifier, that the common-mode rejection capability of the differential amplifier is degraded because of the 5x leakage current through the common SRB2 components.  Any imbalance on the two legs of a differential input will degrade the common-mode rejection, and the datasheet for the ADS1299 warns of this behavior.  It looks like we're seeing it.  While it is unfortunate, the level of the 60 hz (and 0.080 Hz) is still quite low...it reads about 0.3 uV/sqrt(Hz).  Since the "sqrt(Hz)" part is confusing for sinewave-like signals, I zoomed in on the graph around 60 Hz and I saw that the bandwidth of the 60 Hz signal is about 0.01 Hz.  From this, I estimate that the RMS value of the 60 Hz signal is 0.3 uV/sqrt(Hz) * sqrt(0.01Hz) = 0.03 uVrms.  So, it is a very small signal and probably not much to be concerned about.

Comparison Across Five Channels:  Unlike yesterday, where I measured just one EEG channel, today I measured five.  I would have done all eight, but I didn't have enough jumper wires.  For the five channels of data, I made the same plots.  They are very similar to each other.  The white noise is flat and the 1/f noise is similarly sloped.  They all contain the 0.080 Hz and the 60 Hz spikes.  The only real difference is that the amplitude of the two spikes varies a bit from channel to channel.  That does not change my overall conclusion that the five channels are sufficiently similar.  For the 3180 sec recording, I've tabulated the RMS noise (up to 65 Hz) below:

  • Chan 1: Noise = 0.15 uVrms
  • Chan 2: Noise = 0.16 uVrms
  • Chan 3: Noise = 0.17 uVrms
  • Chan 4: Noise = 0.18 uVrms
  • Chan 5: Noise = 0.15 uVrms

Conclusion:  This longer, multi-channel recording that I performed today confirms the noise levels that I recorded yesterday.  Today's longer recording is also able to reveal the low-frequency noise behavior of the system, which transitions from white noise to 1/f Noise around 0.07 Hz.  At 0.001 Hz, the noise density is about 0.03 uV/sqrt(Hz).

Other EEG Systems:  While I think that these noise levels are pretty low, I still do not have any comparison data from other systems.  Does anyone know how they perform?

4 comments:

  1. I also replied to Chip with an email, but the noise graph in this post is really well done. Fascinating that the 1/f and white noise segments show so clearly with your dotted line extrapolations. Will be interesting to see if the 60 hz artifacts (very small already) change when the DRL / bias pin is engaged.

    ReplyDelete
    Replies
    1. Thanks for the kind words!

      An experiment where I tied the inputs to the DRL/Bias line instead of analog ground would indeed be an interesting experiment.

      Delete
  2. Chip -

    Any idea what these kinds of signals look like when someone is doing breath meditation? I would love to be a guinea pig if you could set me up for some measurements...

    ReplyDelete
    Replies
    1. Hey Rob! Interested in meditating, eh? I actually have some data and you inspired me to finally post it. Check it out:

      http://eeghacker.blogspot.com/2013/12/eeg-while-meditating.html

      If you got some time, we can totally hook you up and see if you can make something happen with your brain waves. Fun!

      Delete