EKG signals leaking into EEG signals when measuring EMG and EEG together
I am attempting to run the 32-bit OpenBCI board + daisy to capture EMG and EEG signals simultaneously. I'm running channels 1-12 with UltraCortex spiked EEG electrodes, and 13-16 with gold cup electrodes + Ten20 paste surgical-taped to the arm. I'm primarily a software guy but I am supporting an EEG/EMG research project and I'll admit I'm a bit lost. I've written my own C# OpenBCI serial interface (which hopefully I can share at some point in the future) but I'm testing with the OpenBCI-Processing UI to make sure my implementation is functioning correctly.
Long story short: when I connect an EMG reference electrode to my body, ALL the signals, even the EMG signals that should in theory be disconnected from SRB2/bias, get contaminated by EKG-type data. The Getting Started tutorial claims to work around this, but it doesn't seem to help -- in the OpenBCI Processing GUI and in my own code, I get this coupling.
Any ideas how to fix this? (EG: ch 1-12 using default channel mappings; ch 13-16 disconnected from BIAS and SRB2; separate reference electrode into ch 13-16's P port)
I'm referencing the Getting Started setup guide, Section V.2, Section V.3.e and V.3.f and Section V.4.e for connection and channel settings.
I am connecting the EMG and EEG electrodes to the "N" side of the ADC, and the EMG reference electrode to the "P" side (I ended up using a 1-to-4 splitter to share one reference electrode across all 4 EMG channels).
I am connecting ear clips to SRB and AGND. I am using a Y connector to connect SRB and BIAS between the daisy and mainboard.
As per the guide, I'm configuring the EMG channels (13-16) in the Processing GUI to "Scale: 1x," "Baseline: Don't Include," and "SRB2: No" (ie: x*000000X as a serial command, if I understand correctly).
Here's a dump of my registers after sending the equivalent commands from my serial interface:
Board ADS Registers
ADS_ID, 0x00, 0x3E, 0, 0, 1, 1, 1, 1, 1, 0
CONFIG1, 0x01, 0xB6, 1, 0, 1, 1, 0, 1, 1, 0
CONFIG2, 0x02, 0xC0, 1, 1, 0, 0, 0, 0, 0, 0
CONFIG3, 0x03, 0xEC, 1, 1, 1, 0, 1, 1, 0, 0
LOFF, 0x04, 0x02, 0, 0, 0, 0, 0, 0, 1, 0
CH1SET, 0x05, 0x68, 0, 1, 1, 0, 1, 0, 0, 0
CH2SET, 0x06, 0x68, 0, 1, 1, 0, 1, 0, 0, 0
CH3SET, 0x07, 0x68, 0, 1, 1, 0, 1, 0, 0, 0
CH4SET, 0x08, 0x68, 0, 1, 1, 0, 1, 0, 0, 0
CH5SET, 0x09, 0x68, 0, 1, 1, 0, 1, 0, 0, 0
CH6SET, 0x0A, 0x68, 0, 1, 1, 0, 1, 0, 0, 0
CH7SET, 0x0B, 0x68, 0, 1, 1, 0, 1, 0, 0, 0
CH8SET, 0x0C, 0x68, 0, 1, 1, 0, 1, 0, 0, 0
BIAS_SENSP, 0x0D, 0xFF, 1, 1, 1, 1, 1, 1, 1, 1
BIAS_SENSN, 0x0E, 0xFF, 1, 1, 1, 1, 1, 1, 1, 1
LOFF_SENSP, 0x0F, 0x00, 0, 0, 0, 0, 0, 0, 0, 0
LOFF_SENSN, 0x10, 0x00, 0, 0, 0, 0, 0, 0, 0, 0
LOFF_FLIP, 0x11, 0x00, 0, 0, 0, 0, 0, 0, 0, 0
LOFF_STATP, 0x12, 0x00, 0, 0, 0, 0, 0, 0, 0, 0
LOFF_STATN, 0x13, 0x00, 0, 0, 0, 0, 0, 0, 0, 0
GPIO, 0x14, 0x0F, 0, 0, 0, 0, 1, 1, 1, 1
MISC1, 0x15, 0x00, 0, 0, 0, 0, 0, 0, 0, 0
MISC2, 0x16, 0x00, 0, 0, 0, 0, 0, 0, 0, 0
CONFIG4, 0x17, 0x00, 0, 0, 0, 0, 0, 0, 0, 0
Daisy ADS Registers
ADS_ID, 0x00, 0x3E, 0, 0, 1, 1, 1, 1, 1, 0
CONFIG1, 0x01, 0x96, 1, 0, 0, 1, 0, 1, 1, 0
CONFIG2, 0x02, 0xC0, 1, 1, 0, 0, 0, 0, 0, 0
CONFIG3, 0x03, 0xEC, 1, 1, 1, 0, 1, 1, 0, 0
LOFF, 0x04, 0x02, 0, 0, 0, 0, 0, 0, 1, 0
CH1SET, 0x05, 0x68, 0, 1, 1, 0, 1, 0, 0, 0
CH2SET, 0x06, 0x68, 0, 1, 1, 0, 1, 0, 0, 0
CH3SET, 0x07, 0x68, 0, 1, 1, 0, 1, 0, 0, 0
CH4SET, 0x08, 0x68, 0, 1, 1, 0, 1, 0, 0, 0
CH5SET, 0x09, 0x00, 0, 0, 0, 0, 0, 0, 0, 0
CH6SET, 0x0A, 0x00, 0, 0, 0, 0, 0, 0, 0, 0
CH7SET, 0x0B, 0x00, 0, 0, 0, 0, 0, 0, 0, 0
CH8SET, 0x0C, 0x00, 0, 0, 0, 0, 0, 0, 0, 0
BIAS_SENSP, 0x0D, 0x0F, 0, 0, 0, 0, 1, 1, 1, 1
BIAS_SENSN, 0x0E, 0x0F, 0, 0, 0, 0, 1, 1, 1, 1
LOFF_SENSP, 0x0F, 0x00, 0, 0, 0, 0, 0, 0, 0, 0
LOFF_SENSN, 0x10, 0x00, 0, 0, 0, 0, 0, 0, 0, 0
LOFF_FLIP, 0x11, 0x00, 0, 0, 0, 0, 0, 0, 0, 0
LOFF_STATP, 0x12, 0x00, 0, 0, 0, 0, 0, 0, 0, 0
LOFF_STATN, 0x13, 0x00, 0, 0, 0, 0, 0, 0, 0, 0
GPIO, 0x14, 0x0F, 0, 0, 0, 0, 1, 1, 1, 1
MISC1, 0x15, 0x00, 0, 0, 0, 0, 0, 0, 0, 0
MISC2, 0x16, 0x00, 0, 0, 0, 0, 0, 0, 0, 0
CONFIG4, 0x17, 0x00, 0, 0, 0, 0, 0, 0, 0, 0
So far, so good -- seems like CH5-8 have the SRB connection disabled and are set to 1x scale, and BIAS_SENSN and BIAS_SENSP are disabled for the top 4 channels on the daisy board. But I'm still getting this weirdness in my data -- I attach the EMG reference electrode to the body (which is wired to pins N5P, N6P, N7P and N8P on the daisy), and I get EKG-looking spikes in my EEG data on all 12 channels.The problem persists across the OpenBCI Processing GUI too (same settings, entered via the channel setup GUI).
What's going on here? I feel like I'm misunderstanding something!
Comments
What happens when you follow the EEG + ECG tutorial, exactly, to the letter? In other words using gold cups exclusively?
Mixing electrode metals can cause unusual effects. It is possible to get stick-on Ag-AgCl electrodes. These are widely used for ECG and are compatible with the Ag-AgCl combs in the headset.
Regards, William
I am connecting ear clips to SRB and AGND. I am using a Y connector to connect SRB and BIAS between the daisy and mainboard.
The Y connector should bridge the two SRB2 pins (closest to board), not the Bias.
The round adhesive ECG Ag-AgCl (snap connector) electrodes may be best for your ECG and EMG leads. You can get cables with a snap connector (female) on one end, and touchproof on the other.
Thanks for your input, wjcroft!