Accuracy of impedance test signal on Ganglion
Hi all,
First time poster. I don't yet have OpenBCI hardware, but my new Ganglion board (and the Low-cost Biosensing Starter Kit) are arriving tomorrow (fingers crossed).
Can anyone tell me anything more about the accuracy/error magnitude of the Ganglion's impedance test signal for measuring electrode impedance? I intend to use the Ganglion Signal Widget, as demoed here.
This blog post on an analogous mechanism for the ADS1299 on the Cyton board says that the error in the test signal current ("lead-off", ~6nA) sourced from the ADS1299 is +/- 20%, thus the error in the electrode impedance measurement should be within that same range. Is there a comparable calculation for the impedance measurements from the Ganglion?
I've looked at the Ganglion schematic but I'm pretty new to electronics so there's nothing super obvious to me there.
Comments
Also I know that head phantoms are a thing that can be used for characterizing impedance:
I'd like to characterize the impedance of a few different electrodes and compare them. If the Ganglion/Cyton aren't great for this, any suggestions for a head phantom setup?
Thellertik, hi.
Your best approach will be to wait until you have the actual Ganglion and electrodes, and measure on yourself under different conditions. Generally with newer EEG amplifiers, skin impedance is not as critical as with older equipment. Use the GUI impedance widget to check what you are seeing. Electrodes using conductive electrolyte (paste or gel), will always have lower impedance than dry electrodes. Another test you could do is monitor the amplitude of your eyes closed alpha waves, with different electrode setups. Note that alpha is strongest in occipital or parietal lobe locations.
re: head phantoms. They are an impressive research tool, but quite involved to create and calibrate. So your best option is just live tests on your own head or on the head of a subject.
https://openbci.com/forum/index.php?p=/discussion/637/methods-for-signal-validation-eeg-phantom-heads
Regards, William
Hi William,
Thanks for the response. Indeed I've received and tested with the hardware at this point, and it works pretty well. I'm still not sure about the magnitude of the error in the values, but they seem to vary as I expect (impedance is better when I press down, adding salt water to dry electrodes lowers impedance significantly) so I don't suspect they're inaccurate overall.
I would still like to do a little more characterization though, considering impedance is still fundamental to understanding the noise performance of electrodes, it would seem. It would be nice to inject a square wave via the impedance test circuit, like they do in this paper.
Added some of my own analysis here. Hopefully this isn't duplicative with documentation found elsewhere...but if it isn't I couldn't find it! The firmware itself is undocumented, thus not very helpful.
How I think impedance calculation on the Ganglion works. See the schematic from my initial post for context.
The instrumentation amp measures the voltage between the electrode positive and ref
The known voltage output by the DAC and the sensed current (uA_SENS) are used to calculate the resistive component of impedance (which seems often be assumed to be the only part that matters at the low frequencies of EEG)
This happens here in the firmware. You can see there's a voltage divided by a current in that line
int _impedance = (HALF_WAVE * DAC_volts_per_count) / (((((maxPosCurrentCounts - minNegCurrentCounts)/2) * ADC_volts_per_count)/SHUNT_SENSOR_GAIN)/SHUNT);(HALF_WAVE * DAC_volts_per_count)this appears to be the voltage dropSHUNTappears to be the current uA_SENS. Gain factored in withSHUNT_SENSOR_GAIN(((maxPosCurrentCounts - minNegCurrentCounts)/2) * ADC_volts_per_count)part is all about.This also confuses me:
(((maxPosCurrentCounts - minNegCurrentCounts)/2) * ADC_volts_per_count)part I don't understand?DAC_volts_per_countcanceling with the volts fromADC_volts_per_count, leaving impedance as a 1/amp value. That's weird.