Open Jibby2k1 opened 1 month ago
64-bit precision is not common for these applications. While they are used, they are typically reserved for training numerically sensitive machine learning models - although we may look into training these models in the future, this is not necessary for the project, and we should probably avoid implementing 64-bit precision.
32-bit precision seems to be a pretty common choice which trades-off numerical sensitivity for computational efficiency. Typically, the ADCs used for these systems are 16-bit or 24-bit precision.
Based on my readings:
16-bit ADC: Given that we can find the appropriate model(s) to interpret the EEG signals correctly, the additional precision may be redundant, that is that the extra bits may be mostly noise, which would not significantly impact our project's implementation.
24-bit ADC: If we were to tailor this project to be more of a research instrument, then capturing the signals with higher resolution can always be meaningful. Since we are just prototyping though, the additional cost may be undesirable.
16-bit ADC as a "commercial/common" EEG device (and prototype) is likely the most appropriate.
The level of noise in the ADC supply is dependent on many factors such as power supply, the probing electrodes sensitivity to noise and may be few other factors. For the power supply while we will use batteries, the quality of the decoupling capacitors will decide the power supply noise and how much of that noise will affect the ADC readings. For 24bit ADC - Voltage resolution = 0.196 microvolt/bit (3.3V/16777216) i.e. 2^24 = 16777216. Resolution = Voltage level / 2^n where n is the bit-level of ADC. For 16-bit ADC - Voltage resolution = 50.35 microvolt/bit (3.3V/65536). The voltage fed by electrodes and amplifiers circuit should be such that it swings 50.35 microvolt to 3.3V. Since we would be having many electrodes feeding the voltage multiplexed ADC like ADS 1299 would make sense to read voltages from multiple electrodes in time multiplexed manner.
ADS 1299 datasheet can be referred from https://www.ti.com/lit/ds/symlink/ads1299.pdf and this is the one which is used by OpenBCI Cyton board.
Here is ADS1115 that is 16bit res, 4 channels but we can combine multiple for more channels on the I2C bus. https://www.adafruit.com/product/1085
Depending what microcontroller we go with, this has a guide for RPi, Arduino, and ESP32: https://how2electronics.com/how-to-use-ads1115-16-bit-adc-module-with-esp32/
ads1115 ads1299 comparison.xlsx ADS1115 Vs ADS1299
Choosing how precise we want the ADC to be impacts the selection for the Processing Units.