From cc574abd824f0d32a98b051338fa16fd93826519 Mon Sep 17 00:00:00 2001 From: Zach Fredin <zach.fredin@cba.mit.edu> Date: Sun, 10 May 2020 15:06:50 -0400 Subject: [PATCH] updates, next steps on pulseox --- img/pulseox_curve.jpg | Bin 0 -> 42431 bytes pulseox.md | 18 +++++++++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) create mode 100644 img/pulseox_curve.jpg diff --git a/img/pulseox_curve.jpg b/img/pulseox_curve.jpg new file mode 100644 index 0000000000000000000000000000000000000000..20bfc99ea50d1a891de10adeeb7d53fc1d24c327 GIT binary patch literal 42431 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 literal 0 HcmV?d00001 diff --git a/pulseox.md b/pulseox.md index d2939bb..465af72 100644 --- a/pulseox.md +++ b/pulseox.md @@ -16,6 +16,7 @@ Pulse oximetry devices use several LEDs to measure pulse rate and blood oxygen c - changing LED wavelengths with temp: ~0.1 nm/C: Reynolds, K. J., et al. "Temperature dependence of LED and its theoretical effect on pulse oximetry." British journal of anaesthesia 67.5 (1991): 638-643. - "... equation (2) is only an approximation and pulse oximeters are usually calibrated empirically using data obtained by inducing hypoxia in healthy volunteers." - detailed discussion of pulse-ox machine design: Pologe, Jonas A. "Pulse oximetry: technical aspects of machine design." International anesthesiology clinics 25.3 (1987): 137-153. +- a design study weighing the relative merits of different pulse-ox probe types for a low-cost device: Parlato, Matthew Brian, et al. "Low cost pulse oximeter probe." Conjunction with Engineering, World Health and the MEdCal Project (2009). ### Commercial Example A quick teardown of a ~$20 500BL from Walgreens revealed no [integrated photonics package](https://www.maximintegrated.com/en/products/interface/sensor-interface/MAX30101.html) or [signal processing ASIC](https://www.maximintegrated.com/en/products/interface/sensor-interface/MAX32664.html); instead, the device uses a bi-color IR/red LED on one side of a spring-loaded plastic clam-shell and a PCB with a decent sized photodiode on the other, paired with an [SGM8634](www.sg-micro.com/uploads/soft/20190626/1561538475.pdf) op-amp and an [STM32F100](https://www.st.com/en/microcontrollers-microprocessors/stm32f100-value-line.html)-series 32-bit Arm Cortex M3 microcontroller. The display is a custom multi-segment LED device, but the PCB labels suggest an OLED is used for an alternate model. TX/RX test points were spotted that could be investigated further; with any luck, these could be used to pull live data out of the instrument. @@ -45,14 +46,25 @@ Typical commercial pulse oximeters use a red LED (660 nm) and an IR LED (940 nm) _Figure source: Bülbül, Ali & Küçük, Serdar. (2016). Pulse Oximeter Manufacturing & Wireless Telemetry for Ventilation Oxygen Support. International Journal of Applied Mathematics, Electronics and Computers. 211-211. 10.18100/ijamec.270309._ -In order to differentiate the slight intensity change caused by varying blood oxygen concentration from errors related to skin absorbance and venous blood (whose oxygen has already been taken up by cells), the signal processing algorithm isolates the AC portion of the signal, since within a reasonable range (~0.5 - 3 Hz) this corresponds to blood rushing through arteries with each heartbeat. This _pulsatile arterial blood_ increases the optical path length of the measurement as blood pressure swells the arteries, producing periodic oscillations in the absorption signal. The other contributors to absorption, such as tissue and venous/capillary blood, are effectively constant in this frequency regime. By calculating the ratio of the AC and DC signals at each wavelength, then taking the ratio of these two absorption ratios, a value $`R`$ can be determined which is only related to the relative concentration of oxyhemoglobin (O2Hb) and reduced hemoglobin (Hb): +In order to differentiate the slight intensity change caused by varying blood oxygen concentration from errors related to skin absorbance and venous blood (whose oxygen has already been taken up by cells), the signal processing algorithm isolates the AC portion of the signal, since within a reasonable range (~0.5 - 3 Hz) this corresponds to blood rushing through arteries with each heartbeat. This _pulsatile arterial blood_ increases the optical path length of the measurement as blood pressure swells the arteries, producing periodic oscillations in the absorption signal. The other contributors to absorption, such as tissue and venous/capillary blood, are effectively constant in this frequency regime. By calculating the ratio of the AC and DC signals at each wavelength, then taking the ratio of these two absorption ratios, a value $`R`$ can be determined which is only related to the relative concentration of oxyhemoglobin (O<sub>2</sub>Hb) and reduced hemoglobin (Hb): ```math R=\frac{A_{AC_{660}}/A_{DC_{660}}}{A_{AC_{940}}/A_{DC_{940}}} ``` -As the photodiode sensor does not differentiate by wavelength, the device rapidly cycles between red, IR, and no LED, allowing the system to compensate for ambient light as well. The cycling speed must be substantially faster than the heart rate, since the ratio $`R`$ assumes absorption at all wavelengths is carried out simultaneously in order to cancel out path length. $`R`$ is then related to SpO2 using an empirically determined chart: +As the photodiode sensor does not differentiate by wavelength, the device rapidly cycles between red, IR, and no LED, allowing the system to compensate for ambient light variation as well. The cycling speed must be substantially faster than the heart rate, since the ratio $`R`$ assumes absorption at all wavelengths is carried out simultaneously in order to cancel out path length. $`R`$ is then related to SpO2 using an empirically determined curve: + +_Figure source, via Ohmeda Corp: Pologe, Jonas A. "Pulse oximetry: technical aspects of machine design." International anesthesiology clinics 25.3 (1987): 137-153._ -Note that methemoglobin (MetHb) and carboxyhemoglobin (CoHb) are not factored in with this method and will thus cause systematic errors; the above calculation assumes these two compounds are minimally present. Additional wavelengths are needed to quantify all four hemoglobin species. +Note that methemoglobin (MetHb) and carboxyhemoglobin (COHb) are not factored in with this method and will thus cause systematic errors; the above calculation assumes these two compounds are minimally present. Additional wavelengths are needed to quantify all four hemoglobin species. + +### Practical Considerations +Commercial pulse oximeters trace their calibrations back to empirical studies on human volunteers whose blood oxygenation is simultaneously observed using an invasive measurement device. To avoid needing to repeat this process for every device that is manufactured, designers rely on pre-assembly binning or per-unit spectroscopy testing to compensate for LED wavelength variation, and likely perform extensive electrical testing to ensure photodiode and amplifier differences are accounted for. The spirit of this exercise, open, low-cost devices that can be made anywhere and remain useful, means these techniques aren't particularly useful. + +A few paths exist that may be worth pursuing, given the aforementioned concerns: +- Build an uncalibrated device that allows users to track _changes_ in their blood oxygenation over time. Even without an absolute reference in terms of SpO<sub>2</sub>, this data could be used as an early warning for respiratory ailments. This fits with the use case, too; clinical devices need to be usable as spot-check instruments, where as a personal device could be used for weeks or months by one person. +- Develop a calibration system that can be easily manufactured and deployed based on fundamental principles, i.e. one that does not need to be _itself_ calibrated. One could build a spinning hollow clear plastic wheel with two chambers and controlled thickness, with the chambers filled with various concentrations of a solution whose absorption spectrum closely matches that of blood at a given oxygenation level. The wheel would be spun to simulate the heartbeat, and different wheels would represent different SpO<sub>2</sub> values. The solution could be accurately mixed using basic laboratory equipment, such as a scale or a pipette. +- Design an automated calibration system that uses a camera and optical character recognition to gather SpO<sub>2</sub> values from a commercial or clinical instrument and build a calibration table for the low-cost device while it is simultaneously clipped to the patient. Caregivers could "train" the low-cost device prior to patient discharge so they can self-monitor for flare-ups or subsequent respiratory ailments. +- Develop a methodology for cheaply and accurately characterizing LEDs and other components in the low-cost sensor, so that a master calibration file from a clinical study can be propagated to other devices as is done by traditional manufacturers. -- GitLab