Bias feedback
Hi,
I assembled an EEG setup for the first time and I found quite a lot of line noise (50 Hz) unless I use the notch filter on the GUI. This seems to me quite odd, as the ADS1299 should have a fairly good CMRR, so I started digging into the schematics and have a couple of questions.
Regarding the feedback loop for the Bias pin of the Cyton Board: on the datasheet of the ADS1299 (and the evaluation board), there is a low-pass filter formed between BiasOut and BiasInv
whereas on the Cyton board, that filter is missing. There is, however, a filter formed by R5 and C16; what is the purpose of the latter? Just limiting the current? If so, why was the low-pass filter of the evaluation board avoided?
Thanks,
Federico
Comments
Here is a related thread on the TI Forum,
https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/424183/ads1299-bias-setting
If you examine the Cyton schematic, or the TI Eval Board schematic, you can see a separate low pass filter installed on EACH input pin. This is a requirement of delta-sigma ADCs. The bandpass of the RC filter is set such as to null out the high frequency 'holes' in "sinc-filter" bandpass.
It would be wonderful if there was at some point a clear answer to the BIASINV story. I've gone through all the threads that mention it and there are very aggressive answers pointing to inconclusive to say the least references.
The TI forum link above is good. What Brian Pisani implies is right. The BIASINV in the Cyton is floating if the internal BIASP/N are disabled. Tracing the PCB also shows that clearly. BIASINV goes straight to J2. Same happens in Daisy. When a Daisy is connected to Cyton the two BIASINV are connected together and still floating.
Floating the negative input of an op-amp doesn't sound great. Someone might say that given that BIASP/N are disabled, what's the point of using the Bias amplifier? Brian Pisani explains that scenario as an "alternative scenario", saying that you might want to drive mid-supply voltage. It's left to the imagination how a floating negative input will drive mid-supply voltage.
So I believe that most people use configurations where the Bias earclip is connected to the Ground instead of BIAS and the bias functionality is not used. See 10:28 on the Ultracortex Mark IV video .
Why this choice was made? Brian Pisani gets this right! Because "On the Open BCI schematic, it seems they have left that to the user to do given that they provide flexibility on how many devices users can daisy-chain." Let's decode this a bit. There will be either zero or one daisy boards, although, if you look at the schematic you can see that the processor (U7) has CS1-CS4 out of which only the two first are used. So at some point there might have been experiments with more Daisies but highly likely things couldn't work well for high sampling rates. So given zero or one daisy boards, why didn't connect BIAS_DRV and BIAS_INV in Cyton and not place R5/C9 in Daisy? The configuration they didn't want to prevent, is to have the two bias circuits (of Cyton and Daisy) running independently. If you somehow prevent the connection of J2 between the two circuits you can do that.
To summarize up to this point, both Cyton and the ADS1299 leave some details out. Here they are:

For Cyton, indeed you have to connect the DRV and INV for any active BIAS driver and just setting the BIASP/N registers isn't enough. For the ADS1299 Manual's Figure 39, although it's not really an omission since the figure illustrates a different concept, but the filter must be present only on the active driver. If it's connected on the non-active drivers I'm not sure what will happen, but that would certainly be not intended. This nuance prevents designs where you just stack identical PCBs on top of another and you don't have to worry about BIAS. You have to go and enable/disable the RC circuits as well on all the non-active devices.
Now that we see the big picture, let's go back to Cyton. We need to find a way to connect the BIAS_DRV and BIAS_INV net. The BIAS_INV is exposed through J2, but the BIAS_DRV is not. But there's just an 2.2k resistor and a small capacitor sitting between it and the BIAS signal that is exposed twice in the electrode PL1a/b connectors. So it's likely that connecting one of the BIAS electrodes from those connectors to the BIAS_INV of J2 is good enough. I don't know.
I have seen here that:
That can be perfectly true with the BIAS circuit non-functional, or if the authors put some extra effort to tune the feedback loop. To be honest, I suspect that the bias circuit is very hard to tune. Even the single 1MOhm resistor in the negative feedback loop seems arbitrary to me. Depending on the BIASP/N registers, on the negative input of the op-amp you have between zero and 32 sources via 220k resistors (for both Cyton and Daisy). That means that you get vastly different effective gains depending on the configuration. Would be nice to confirm all those, but the BIAS driver is a "summing amplifier". Forget about the filter's capacitor for a moment. If we assume that the "common mode" voltage is Vc and you have one input connected e.g. BIAS1P, then the op-amp creates a voltage of - (1Mohm/220k) * Vc = -4.5 * Vc. Is that -4.5x amplification sound? My view is that it might have empirically been proven to work under all sorts of assumptions including electrode/patient impedance. If you enable all 32 BIAS * N/P of Cyton and Daisy, then given Vc in the input, the output will be -144*Vc... to drive pretty much the same electrode/patient system that is. The ADS1299 manual says:
So my view is that they explicitly state that it's up to you to tune this circuit. They don't say it will be trivial. They don't even say that a single (e.g. 1MOhm) resistor will work as you enable/disable bias electrodes through BIASP/N registers. The need of custom tuning would also explain why people report getting all sorts of noise when they try to use DC BIAS. There are some large gains there and if the feedback filter isn't tuned properly, I can only imagine bad things happening.
To conclude this long post, I think that Cyton has done all there could responsibly be done there. It gave people options in terms of hardware and then individuals can do whatever they like according to their level of expertise. ADS1299 is a very expensive chip and its price keeps rising (wow - it just got to $79 - 40% up in about a year?!). Texas Instruments has many 24-bit Sigma-Delta Analog to Digital converters (including ADS1298) that are suspiciously similar, but they aren't "Analog Front Ends" and are way cheaper. The BIAS drive (which somehow is different to "Right Leg Drive Amplifier") is one of the few features that makes ADS1299 special. So I'm a bit disappointed by all this story and I hope I'm getting something seriously wrong, but after multiple attempts throughout a year to figure out what's going on, I think that what I describe above is actually the case here.
@lookfwd, thank you for wrapping up such a nice discussion about the BIASINV problem. Thumb up for what you did! I have been wondering about this problem since the first time I saw the schematic. The schematic shows that BIASINV and BIASDRV are not connected. There is no way the bias amplifier output anything meaningful if there is no feedback between BIASINV and BIASOUT.
I believe that you are right about "most people use configurations where the Bias earclip is connected to the Ground instead of BIAS and the bias functionality is not used". In Cyton board, it is ok to use Gnd as the BIAS electrode, because the Cyon board is powered with bipolar +-2.5V supplies.
However, if the circuit is designed with a single 5V supply (Figure 77. in datasheet), Gnd cannot be used as BIAS electrode anymore. You would want the bias electrode to be somewhere around 2.5V. In this scenario, if the bias amplifier feedback loop is complete as shown in the datasheet Figure 34, the BIASOUT pin should output a 2.5V voltage when all driven right leg functions are disabled. The voltage on the non-inverting input is the internal BIASREF: (AVDD+AVSS)/2 = 2.5V, and the bias amplifier behaves like a voltage follower. I guess this is a scenario where you can use BIASOUT as the BIAS electrode.
Hello @tangte,
Thank you for clarifying the single 5V case. Makes perfect sense.
After writing the post above, I spent about a week setting up the ADS1299 Performance Demonstration Kit to generate Bode plots. The image shows a transformer but I managed to remove it later on by isolating the USB port of the signal generator. General comment; because of ground loops, it's very hard to measure anything unless you power everything (including laptops and oscilloscopes) from batteries/UPSs.
By removing a few components from the ADS1299 Performance Demonstration Kit, you can modify the elements in the feedback loop:
I observed that as the feedback loop approached infinite gain, the rejection of 50/60 Hz interference improved significantly. Interestingly, in these cases, I have the feeling that the BIAS signal jumped from rail to rail, yet the FFT analysis did not indicate excessive distortion. This doesn't make much sense, and I should definitely get back and clarify exactly what happens in that case. I also experimented with enabling and disabling various channels, but apart from some UI bugs on the TI software, it didn't uncover anything particularly noteworthy. I also measured open-loop performance of the BIAS driver under different configurations.
Overall, my experiment was messy and inconclusive. I couldn't identify a clear "trade-off" that the filter optimizes for. I plan to repeat the experiment with improved software and a more realistic setup - this time incorporating longer cables and using 10k+ resistors to drive the input signals.