Front end filtering: ESD, CMRR, RFI

The resistor-capacitor low-pass filter components on the circuit board augment the digital sinc filter inside the chip at frequencies above 1MHz.

Electrode impedances in clinical practice can typically vary between a few kOhm through upwards of 50kOhm and this in combination with the filter capacitor will cause CMRR ratios to suffer because a capacitor has an impedance of 1/2/Pi/f/C which is in the same order of magnitude as the electrode impedance variability. The industry standard mitigation strategies are to keep the capacitor values low such as 100pF and to use tight tolerance capacitors such that no imbalance is created between leads. On the other hand the capacitor must be large enough to suppress frequencies above 1MHz so we don't pick up radio signals and alias them into our EEG above the sinc filter, putting us to perhaps 1nF.

The engineering dilemma then becomes to determine what is more important: CMMR or RFI suppression. Because I use short EEG leads and do not sit in a room full of electrical equipment or live close to any AM radio stations, I strongly prefer the 100pF capacitor. Other people may not feel the same so here is opportunity to share experience for discussion.

The OpenBCI folks have of course looked into this in some detail:

Looking at the schematic I see the filter caps are CKCL44X7R1H102M085AA and the "102" contained therein seems to indicate 100pF. Can someone please post the data sheet to this part?

Could someone please also post the data sheet for the ESD protection clamp TPD4E1806 so we can see the specs for possible constructive comment? I see this connects directly to the input pins whereas it can sometimes be better to have this behind a resistor to limit inrush current if someone touches electrodes to a metal surface (of course then you still need another resistor behind it same as now). Note that anyone who wishes to add a resistor in front can easily do so in line with each electrode lead.

I'm very much looking forward to using this device with BioEra =)
Stepan Novotill


  • I meant to say ...the "102" contained therein seems to indicate 1nF.
  • wjcroftwjcroft Mount Shasta, CA
    edited September 2014
    Stepan, hi.

    Joel did extensive CMRR tests with the V3 board.  He may comment further.  The spreadsheet you linked to shows Joel's CMRR test results.  As you can see, this included simulations of varying electrode resistances, to try to amplify the capacitive reactance issue you mention.

    As the spreadsheet shows, there were no significant differences between the 100 pF case and 1 nF.  Resistor is 2.2K.  In fact, as you can see, the 100 pF case was slightly WORSE than the 1 nF.  So consequently we went with the 1 nF and 2.2K RC filter.  Because of the better RC filter RFI performance at the 1.024 MHz multiple 'holes' in the sinc filter.

    We're 20 dB down (10x voltage attenuation) at 700KHz, and 40 dB (100x attn.) down by 7MHz.  So we're only very minorly 'exposed' to the unlikely RF noise at the first few 1.024MHz multiple holes.  If we had gone with the 100 pF value, exposure to potential RF noise would be considerably larger, with no advantage in CMRR.  

    RC filter response plotter,

    William Croft

    PS I also use BioEra, really excellent package.
  • wjcroftwjcroft Mount Shasta, CA
  • I'm not sure what to make of that spreadsheet. If we look at line 3 vs line 13 we see 28uV and 30uV respectively of CMRR noise. These huge values defy logic and are in direct conflict with the chip specification. It seems to imply that there is some other more serious problem either in the design or in the test methodology, which completely overwhelms the effect of the capacitors themselves. Compare to lines 2 and 12 which are okay in relation to a -120dB on-chip suppression. If this is the case as the data seems to support, then there is very obviously a bigger underlying issue which must be addressed and removed before we will see the impact that 1nF vs 100pF should have. At minimum, some sort of explanation for this discrepancy aught to be provided. I cannot speak to this because I was not privy to the test, but a big red flag seeing the information which was provided.
  • wjcroftwjcroft Mount Shasta, CA
    Stepan, hi.

    The injected differential noise signal is 1.1 volts.  Absolutely huge and way beyond the typical AC coupled differential noise that would more usually be in the millivolts range.  So the fact that we are only seeing 20 or 30 microvolts of noise remaining (of the original injected 1.1v) in this "worst case" impedance mismatch situation, is actually reassuring.

    The very large (23K ohms) sensor impedance mismatch, seems responsible for the larger voltages recorded in the spreadsheet.  When sensor impedances are similar we get 1 microvolt or less of the noise signal remaining.  Quite excellent, really.

    Is it possible that you could soften the language you are using, such as "big red flag", "serious problem in the design or test methodology".  These statements have a tone that is somewhat confrontational and blaming.

    As you might know from the TI-designed ADS1299 dev kit board, TI chose RC values of 4.7nF & 5K.  These are ultra conservative values intended to have a 100x voltage reduction at the first 1.024 MHz sinc filter hole.  The 1 nF capacitor value is a good compromise between 100 pF and 4.7 nF.

    The 100 pF value you suggest, while it might be desirable in an RF clean environment such as yours, it opens an exceptionally wide RFI window.  (From 1.024 MHz up to 70 MHz, at the -40 dB, 100x voltage reduction point.)

    It is certainly possible that the CMRR test jig setup was not the same as you were assuming, when you've done CMRR tests in your own lab.  So that could account for some of what you are referring to.  These values were not measured on human skin or modeled skin, but rather on just simple wired connections.

    Best regards,

  • Well, it's not my intent to point any fingers without knowing and I wonder whether TI apps support might be able to offer an explanation for the discrepancy cited.
  • The implication being that perhaps it's some characteristic of the chip. We are getting into undocumented specifications here. This discussion is clearly not cause for alarm, but it could be cause for farther investigation for the purpose of optimization. TI will of course showcase their wares with the most conservative filtering possible in order to fully demonstrate conformance to specifications. Open source projects are wonderful because of opportunity for peer review, while proprietary products simply hide issues.
  • Hello Joel. Could you please disclose materials and methods used to arrive at the CMRR tabular data presented above? The manufacturer of the chip went to the trouble of providing a high CMRR ratio and yet the tabular data presented above shows a 25dB drop in measured CMRR performance between with resistors vs without resistors, so there could be good benefit in sharing publicly for better understanding whether there is opportunity for optimization.

    In the interest of addressing languaging concerns raised above, I want to be clear that no judgement about the design can be made unless additional information about materials and methods is provided and that the drop in measured CMRR is in all likelyhood appropriate, correct and fully expected given the measurement methods and materials used.

    A thought about the method: Did you bandpass filter the digital output stream before calculating CMRR, in order to eliminate out of band thermal and other noise generated in the test setup? I wonder if the test results might then be more meaningful with regard to capacitor values.
  • edited September 2014

    I'm not the guy who designed OpenBCI, but I do a lot of EEG hacking with it.  For my silly experiments, I've never cared about the CMRR, because I always had the opportunity to do plenty of filtering (if needed) once the EEG data arrived at the computer.  60Hz/50Hz interference reduction is, of course, the primary benefit of CMRR, which is also very easy to notch filter on the computer.

    One of the reasons that CMRR of 60/50Hz used to be so important was the limited dynamic range of the electronics that would follow the first stage differential amplifier (such as secondary amplifiers and the analog-to-digital converter).  On these older systems, if the interference signal level exceeded the dynamic range of the system, it would saturate the signal, which would prevent you from successfully digitally filtering out the interference to see your EEG signal.  That would be bad.

    For an example of an older system, consider the OpenEEG system.  It's got a 10-bit ADC, which has a very low dynamic range compared to the 24-bit digitizer in the ADS1299.  For OpenEEG, whose LSB is somewhere down around 0.5 uV, any interference must have a p-p amplitude below 500 uV.  If the interference is above this level, digital filtering in software will not allow you to reclaim your EEG signal

    By contrast, on the ADS1299, even at full gain (LSB = 0.022 uV), any interference can be up to 10s of mV (maybe even all the way up to 4.0V/24 = 166 mV) before the system saturates.  If the intereference is below this level, digital filtering in software can easily remove it.  As a result, the 24-bit digitizer in the ADS1299 povides a huge improvement in usability compared to the older systems with their limited bit depth.  Because the dynamic range is so wide on the ADS1299, maybe that is why I've never really been concerned with the CMRR of the V1 and V2 boards ... it simply has never been relevant.

    But, none of this should suggest that the CMRR is's just that it's never been important to me and to my EEG hacks.  Your situation might be very different.  So, I greatly appreciate your interest and enthusiasm in pursuing this part of the design.  I have a very early V3 board.  Once I complete some of my other hacks, I hope to take some time to measure its CMRR performance.  I'll be sure to post back here, if I do.

    Thanks again for your interest!

  • Noting that CMMR rejection takes place prior to A->D conversion, we should never see EEG signals as badly contaminated as explained above, because newer equipment is body-mounted rather than chassis grounded. I would propose CMRR becomes important when comparing uV values between channels for assessment purposes, under the condition of varying electrode impedance as would be ordinarily encountered in practice. I started this thread because the opportunity for discussion and transparency in this kind of project can lead to exceptionally good results. The front-end CMRR/ESD/RFI protections are one of the very few aspects of this project which cannot be compensated with software once the product ships. Again I must be careful to state that this is for the sake of optimization and that the current version 3 design has already been greatly improved since version 2. I know  the guys are busy now and when things are not so crazy it would be nice to revisit the original CMRR test setup, if the community interest supports doing so.

  • I suppose for the sake of those who might not have EE mindsets, I should point out the gigantic pink elephant standing among us it this thread. That would be the voltage divider effect between electrode to skin contact impedance (5-50kOhm) and the AC impedance presented by the capacitors. Although the chip itself will easily have impedance in the megaOhms range, the impedance of the very necessary capacitors will be much less (1/2/Pi/f/C) as per the opening post. This will  certainly affect uV readings and this is why I personally would prefer to see 100pF caps, as used in OpenEEG. As we have seen, opinions on capacitor size do and will vary.
  • And although the voltage divider effect will typically show up as a CMRR deficit (depending upon how the test was done) it is important to note that the voltage divider affected uV readings very directly, any time there is an electrode-skin impedance imbalance between channels. This is why we strive for such high input impedances on the channels.
  • edited September 2014
    In any multi-channel EEG system with passive electrodes, another important killer of CMRR is the fact that the reference electrode is being shared by many front-end amplifiers.  In an 8-channel system, it'll be shared by 8 of the amplifiers and in a 16-channel system, it'll be shared by 16 amplifiers.

    Even in an otherwise perfectly-balanced EEG system, I believe that this effectively creates an 8x or 16x difference in impedance between the "+" and "-" legs of each channel's differential amplifier.  This kind of imbalance is also a destroyer of CMRR, and there's nothing that one can do about it.

    To me, this has always been another "pink elephant" that few people talk about.  It's another reason why I think that 100+ dB CMRR is fun to talk about in product spec sheets, but completely impossible to achieve in EEG practice.  But, that's just my opinion based on my (probably inadequate) mental model of how these systems work.

  • Great point and anyone doing such montages aught to make damn sure that the reference electrode(s) specifically, is(are) mounted with the utmost care and lowest possible impedance.
  • Speaking of montage, to me the holy grail of OpenBCI would be a 24 channel (10/20) Laplacian remontage in firmware. I believe the algorithm is available in OpenVibe. Too bad I'm not a firmware developer :o\
  • edited September 2014
    Regarding the reference electrode...

    It is my understanding that CMRR in an EEG montage is not necessarily a function of getting *low* impedance values for the is a function of getting *equal* impedance values for the electrodes.  My understanding is that CMRR is hurt when the impedance of the "+" and "-" inputs on the amplifier differ, not by the actual impedance value itself.

    For example, solely with respect to CMRR, I believe that you could tolerate something 1 MOhm, of skin-electrode impedance, as long as the 1M impedance was *exactly* the same for the "+" and "-" electrode.  That, of course, never happens.

    Now, back to the reference electrode in particular, if you are good, maybe you can get it to be 5 kOhm.  When connected to an (unbuffered) 8-channel EEG system, it's effective impedance will be 8 x 5 kOhm = 40 kOhm.  If you're good and get your other EEG electrodes to also be 5 kOhm, you'll have a 35 kOhm difference between "+" and "-" inputs.  I think that this has a pretty big negative effect on CMRR.  (And, with a 16-channel setup, the problem is even worse)

    So, from a CMRR point of view, getting a super-low reference impedance isn't necessarily the goal...what you'd ideally want (as stupid as it sounds) is to get the reference electrode to be 1/8th (or 1/16th) the impedance of your other electrodes.  Since it is really hard to get < 5 kOhm for an electrode, this likely means that you'd prefer a little extra impedance on your other electrodes in order to achieve the desired 1:8 or 1:16 impedance ratio.  It is totally impractical to tailor the electrode impedances in this way.

    So, I return to my original assertion that getting 100+ dB CMRR in a real EEG setup is just not realizable, even if you get your ref electrode impedance as low as possible.

    (Another important caveat here is that I don't know the topology of the differential amplifiers built into the ADS1299.  My arguments above are all based on the mental model of a basic differential amplifier built from a single op-amp.  If the ADS1299 utilizes a 3 op-amp instrumentation amplifier as its topology for the differential stage, the CMRR behavior is probably completely different.  Anyone with knowledge here, please raise your hand!)

  • Those are important comments for the EEG technician to know. From a design perspective we do need to minimize the NEED to keep input impedance balanced. If the reference electrode impedance is high while at the same time individual amplifier input impedances are sub-par due to capacitance etc, then the reference starts to float and no longer acts as a reference at all. The lower the parasitic impedance in the input of each amplifier, the more tolerance we have for poor electrode-skin contact. All great reasons to keep RFI filter caps at low values. Doing so greatly reduces the need for optimal electrode application. Anyone can do the math and see that if amplifier input impedances are kept in the megohm range then there is much less voltage-divider effect and uV readings will always be bang on. For the sake of imagination it can be useful to think about what would happen if we put 100nF RFI caps on all inputs and then allowed electrode impedance to vary between 5K and 40Kohm. See the carnage? The reason I keep harping on capacitors is simply that this is the only component which will normally be a candidate for optimization. The ESD diodes should not create problems unless they have become leaky due to someone zapping them with huge bolts of static electricity.
  • biomurphbiomurph Brooklyn, NY

    When I did the CMRR tests, I used an Arduino DUE DAC to create a 1.1V 60Hz sine wave outuput.
    That signal was connected to the P and N inputs of one ADS1299 channel.
    Then data was acquired from the OpenBCI for ~13 seconds.

    In between the signal and the ADS input, I tried different RC values. 
    I made the call to use 2.2K ohm and 1nF because of the CMRR test results and the desire to filter out 1MHz noise as much as possible.

    Hope that helps!
  • If you use 2.2K on one input and 22K on another input as would often be
    the case in clinical use then I believe you'll see a huge difference in
    amplitude between the two channels due to the voltage divider effect of
    the 1nF capacitors and especially so in the Beta range. Amplitude comparisons between channels are a most
    important part of QEEG and therefore 100pF capacitors may be optimum. CMRR and
    RF interference may well turn out to be secondary concerns. I'd be
    curious what the clinical users find.
  • edited August 2015
    I want to know what for is the RC filter after the ESD protection? It is related with Sigma-Delta modulation, isn't it?
    How should I calculate it?
  • wjcroftwjcroft Mount Shasta, CA
    edited August 2015
    @AgustinS , hi.

    I merged your question into this previous thread on the front end filtering. Also see the TI pdf data sheet for the purpose of the front end RC filter; it works in conjunction with the ADS1299 built in sinc filter. TI Eval Kit used 4.7nF & 5K. We're using 1nF and 2.2K.

Sign In or Register to comment.