Brainbay with DIY ADS1299 board
wjcroft
Mount Shasta, CA
This discussion was created from comments split from: BrainBay, install & test.
wjcroft
Mount Shasta, CA
Comments
Here is the way that I sent the data.UartSerial ((char)(i>>16))UartSerial ((char)(i>>8))
UartSerial ((char)(i))
So, I'm wondering if anybody faced with this problem or have any suggestion?
Thanks
Did you follow the suggestion in the previous 'Brainbay install' comment,
element on the left, connect one of the channels to a Filter element,
then connect the Filter output to an Oscilloscope. Filter parameters
would be for example, a Butterworth Bandpass filter, order 6, from .5 hz
to 40 hz.
This removes the DC offset. Without the Filter, your scope will be "pinned" to one of the + or - rails.
The + - 500 uV is not the full range of the ADS1299, but just a medium range value. Such that you can use the Gain slider on the scope to zoom in and out (from full scale range 5 uV to 50000 uV). By right clicking on the actual EEG output pin, you can see that the full range is + - 187500 uV (+ - 187 millivolts), which is very large. You can set any range you want by right clicking a scope pin and putting the values there.
The adjustable range on any block element input and output pins, is a unique feature of Brainbay -- which is documented in the user manual.
I assume you've tried your device with the OPENBCI_GUI Processing sketch?
William
> It seems that the BrainBay plot the data in 16-bits instead of 24.
No, that's not true, all the input EEG element blocks convert their native mode integer data streams into a stream of floats, normalized to ((float)1.0) = 1 microvolt. All downstream elements operate on this same stream of floats, including the Oscill. element.
I'm not sure I can help you if you are not running the OpenBCI code on your microcontroller. I suggest you (1) try your test with the Processing GUI sketch. Or (2) write your own stream decoder based on what you see in the Brainbay source. (It's a simple state machine.) Or using the Processing sketch source. Then print or plot those values.
You may want to use the test signal generation capability of the ADS1299. That way you eliminate any possible noise issues with your analog front end parts. Why you would be seeing the magic oscillation between + - 500 uV, I have no idea.
With your ADS1299 input pins (signal, reference, and bias) all shorted together, you should see a pretty flat null signal output result. With a very small bit of inherent noise, as Chip has documented. (In this post he was using AGND vs. Bias.)
http://eeghacker.blogspot.com/2013/12/self-noise-of-openbci.html
UartSerial ((char)(i>>16)); UartSerial ((char)(i>>8)); UartSerial ((char)(i));
Kaveh, hi. I would be cautious with the way you convert the 24 bit integers into bytes for transmission. The data type 'char' is defined in various ways depending on the compiler. You may be better off with using an explicit '&' operation with a 0xFF mask.
You say you have seen Alpha with your Qt plots. But I assume they were reading not the OpenBCI serial stream, but some custom stream that you created. Try converting the actual OpenBCI format stream and plot that.