Diseñar un oxímetro de pulso de bajo costo usando componentes de venta.
Colaboración de Editores de DigiKey de América del Norte
2020-08-13
La pulsioximetría mide la saturación de oxígeno periférico (SpO2), lo que refleja la eficacia del sistema cardiopulmonar para proporcionar sangre rica en oxígeno al cuerpo. Los atletas utilizan mediciones SpO2 para medir su nivel de esfuerzo en los entrenamientos, pero estas mediciones han ganado mayor importancia durante la pandemia de COVID-19. Los proveedores de atención médica están atentos a la disminución de SpO2 como una señal de alerta temprana del daño al tejido pulmonar causado por el virus del SARS-CoV-2 que causa la COVID-19.
Para las personas afectadas con síntomas leves a las que se les ha dicho que se pongan en cuarentena en casa, el acceso inmediato a un oxímetro de pulso de bajo costo puede ayudar a medir el curso de su infección y proporcionar la advertencia necesaria para intensificar la atención médica.
Este artículo discute brevemente los síntomas de COVID-19 y la necesidad de monitorización de SpO2. A continuación, muestra cómo los desarrolladores pueden utilizar un controlador de señal digital (DSC) de Microchip Technology y algunos dispositivos adicionales para diseñar un oxímetro de pulso de bajo costo capaz de proporcionar a los usuarios domésticos una advertencia temprana de los síntomas consistentes con la infección avanzada de COVID-19.
COVID-19 y la necesidad de medir los niveles de saturación de oxígeno
La COVID-19 se presenta con un amplio espectro de síntomas resultantes de los efectos dañinos del virus del SARS-CoV-2. Para los proveedores de servicios de salud, un síntoma particularmente preocupante se relaciona con el daño del tejido pulmonar, lo que resulta en un sistema respiratorio comprometido y en la reducción de la captación de oxígeno. Aunque los médicos utilizan radiografías de tórax individuales y tomografías computarizadas (TC) para confirmar esta etapa de COVID-19, utilizan rutinariamente mediciones de SpO2 como un indicador temprano.
La medición SpO2 es una alternativa no invasiva a la medición de la saturación arterial de oxígeno (SaO2) que se determina directamente analizando los niveles de gas en sangre en muestras extraídas de una arteria del paciente. Aunque algunas condiciones pueden requerir la medición directa de gas en sangre arterial, se ha encontrado que SpO2 proporciona una estimación fiable de SaO2. Tal vez lo más importante es que se puede realizar con la misma fiabilidad en casa que en la clínica, usando oxímetros ópticos de pulso.
Los pulsioxímetros ópticos miden SpO2 aprovechando las diferencias de absorción de luz que presentan la hemoglobina desoxigenada (Hb) y la hemoglobina oxigenada (HbO2). Transportada en los glóbulos rojos, la hemoglobina forma rápidamente un enlace reversible con hasta cuatro moléculas de oxígeno dentro de los pulmones ricos en oxígeno. En este estado, como HbO2, la molécula absorbe más luz a 940 nanómetros (nm) que a 660 nm (Figura 1).
Figura 1: La pulsioximetría aprovecha las diferencias en los espectros de absorción entre las células sanguíneas oxigenadas (HbO2) y desoxigenadas (Hb). (Fuente de la imagen: Wikipedia)
A medida que los glóbulos rojos portadores de HbO2 pasan a la periferia donde la presión parcial -la presión de un solo componente gaseoso en una mezcla de gases- de oxígeno es menor, la afinidad de la hemoglobina por el oxígeno disminuye y la HbO2 comienza a descargar sus moléculas de oxígeno, convirtiéndose finalmente en Hb. En este estado desoxigenado, el espectro de absorción de luz de la molécula cambia, absorbiendo más luz a 660 nm que a 940 nm.
Debido a que HbO2 se convierte en Hb cuando la presión parcial de oxígeno es baja, SpO2 puede ser determinada por la simple fórmula:
SpO2 = HbO2 / (HbO2 + Hb)
A su vez, las concentraciones relativas de Hb y HbO2 en el flujo sanguíneo pueden determinarse midiendo la absorción de la luz a longitudes de onda de 660 nm y 940 nm.
Los pulsioxímetros aprovechan la relación entre la presión parcial de oxígeno en la sangre, la carga de oxígeno de la hemoglobina y las diferencias en la absorción de la luz para proporcionar mediciones fiables de SpO2.
Subsistemas clave de un oxímetro de pulso típico
Un diseño típico de pulsioxímetro comprende tres subsistemas principales:
- Un subsistema de entrega de luz que incluye interruptores y conductores analógicos junto con diodos emisores de luz (LED) en longitudes de onda rojas (660 nm) e infrarrojas (IR) (950 nm). Algunos sistemas también incluyen fuentes verdes (530 nm) para su uso con métodos de fotopletismografía (PPG) que determinan la frecuencia cardíaca mediante la vigilancia de los cambios de volumen en los vasos sanguíneos de la piel.
- Un subsistema de detección de luz que incluye un fotodiodo, una cadena de acondicionamiento de señales y un convertidor analógico-digital (ADC).
- Un DSC o microcontrolador para coordinar los subsistemas de entrega y detección de luz, así como para calcular SpO2 a partir de los datos medidos.
Aunque estos subsistemas básicos existen en cualquier oxímetro de pulso, su aplicación puede variar significativamente. En los oxímetros de pulso transmisivos, el fotodiodo se coloca en el lado opuesto del dedo o del lóbulo de la oreja del usuario de los LED. Las unidades de clip de dedo comúnmente disponibles combinan LED rojos, IR y verdes opcionales en un lado del clip con un fotodiodo en el otro. En los oxímetros de pulso de reflectancia, el fotodiodo y los LED se colocan en el mismo lado de la piel con alguna barrera óptica colocada entre ellos para reducir los artefactos. Por ejemplo, SFH7060 de OSRAM es un dispositivo de medición de la reflectancia que empaqueta los LED y un fotodiodo en un solo paquete de 7.2 x 2.5 x 0.9 milímetros (mm).
Ya sea que se utilicen estos paquetes ópticos para métodos transmisivos o de reflectancia, los diseñadores requieren relativamente pocos componentes adicionales para implementar un diseño de oxímetro de pulso de bajo costo capaz de proporcionar a los usuarios domésticos información que sugiera la necesidad de una mayor evaluación por parte de los profesionales de la salud. Un ejemplo de diseño construido en torno a un DSCDSPIC33FJ128GP802 de Microchip Technology utiliza los periféricos integrados del microcontrolador para controlar la iluminación de la piel mediante LED rojos e IR y para digitalizar la señal de salida del fotodiodo condicionado (Figura 2).
Figura 2: Un diseño típico de oxímetro de pulso combina subsistemas para la iluminación del LED y el procesamiento de la señal del fotodiodo con un microcontrolador utilizado para controlar el tiempo de iluminación y la adquisición de datos. (Fuente de la imagen: Microchip Technology)
Los diseños de los pulsioxímetros suelen basarse en un solo fotodiodo con una amplia curva de respuesta espectral para capturar la señal transmitida o reflejada, independientemente de la fuente de iluminación. Para asegurar que la señal recibida corresponde solo a longitudes de onda rojas o IR, la lógica de control del hardware o del software presenta solo la fuente de iluminación roja o IR en un momento dado, alternando entre las dos fuentes para completar una secuencia de mediciones.
Implementar un diseño de hardware de oxímetro de pulso de bajo costo
En este diseño, el DSC utiliza un convertidor digital-analógico (DAC) externo MCP4728 de Microchip Technology para establecer transistores separados MBT2222 al nivel necesario para impulsar cada LED a la intensidad requerida. Para cronometrar con precisión la secuencia de "encendido" de cada LED, el DSC utiliza dos de sus salidas de modulación de ancho de pulso (PWM) para controlar el interruptor analógico ADG884 de Analog Devices (Figura 3).
Figura 3: Conducido por señales alternas para los canales rojo e IR del controlador digital, un interruptor analógico permite conducir la corriente a los LED rojo e IR. (Fuente de la imagen: Microchip Technology)
Para procesar la salida del fotodiodo, un único dispositivo MCP6002 de Microchip Technology proporciona un par de amplificadores operacionales necesarios para implementar una cadena básica de acondicionamiento de señal de dos etapas. Aquí, la primera etapa utiliza un optoamplificador MCP6002, configurado como amplificador de transimpedancia, para convertir la salida de corriente del fotodiodo en una señal de voltaje. Tras un filtro de paso alto para reducir el ruido, el segundo amplificador operacional del MCP6002 proporciona un ajuste de ganancia y compensación de CC necesario para optimizar el balanceo de la señal condicionada en todo el rango del ADC integrado en el DSC (Figura 4).
Figura 4: Una cadena de señales de dos etapas condiciona la salida del fotodiodo para su entrega al CDA integrado del controlador digital. (Fuente de la imagen: Microchip Technology)
En funcionamiento, el DSC utiliza sus salidas PWM y sus entradas ADC para sincronizar la iluminación LED y la digitalización ADC de la señal de salida del fotodiodo condicionado. Aquí, cada período de iluminación alterna de rojo e IR está coordinado con la adquisición y conversión de la señal. Una muestra adicional de ADC tomada cuando ambos LED están apagados proporciona una medición de la luz ambiental utilizada para optimizar la intensidad de los LED y la medición de SpO2. El resultado es una secuencia de eventos controlada con precisión que coordina la iluminación de los LED y la digitalización del ADC para capturar los resultados de la longitud de onda roja para Hb, capturar la luz ambiental y, finalmente, capturar los resultados de la longitud de onda IR para HbO2 (Figura 5).
Figura 5: La funcionalidad del pulsioxímetro de bajo costo se basa en la capacidad del controlador de la señal digital para gestionar la sincronización precisa de las secuencias para la iluminación y la captura de datos necesarios para recoger las mediciones para la determinación de SpO2. (Fuente de la imagen: Microchip Technology)
Implementar una solución de software impulsada por la interrupción
Microchip proporciona un paquete de firmware de oxímetro de pulso con un programa de muestra que demuestra el uso del DSC para realizar estas secuencias de control de iluminación y conversión de datos. Aquí, el programa implementa un método impulsado por la interrupción usando un par de temporizadores DSC -Timer2 y Timer3- para cronometrar las secuencias separadas de "encendido" del LED IR y del LED rojo, respectivamente. A su vez, cada temporizador proporciona la base de tiempo para dos de los módulos de comparación de salida (OC) del DSC, OC1 y OC2, utilizados para controlar los interruptores analógicos para el LED IR y el LED rojo, respectivamente.
Como se muestra en la Lista 1, el software inicializa primero el Timer2 y el Timer3 para establecer el período deseado del ciclo de iluminación y habilitar las interrupciones. Como parte de su secuencia de inicialización, los módulos OC1 y OC2 están unidos a pines de salida separados usando la capacidad de pines remanufacturables (RP) del DSC. La secuencia de inicialización establece entonces el ciclo de trabajo de la iluminación y selecciona el temporizador asociado para utilizarlo como su base de tiempo.
Copiar
//*********************************************************************************************************
// Initialize Timer 2 - IR light
//*********************************************************************************************************
T2CON = 0x0020; // Stop 16-bit Timer2, 1:64(40MhzFosc) Prescale, Internal clock (Fosc/2)
TMR2 = 0x00; // Clear timer register
PR2 = 1250; // Load the period value, OCxRS <= PRx, 4ms period = (1/(Fosc/2))*1000*64*PR2 = (1/(40000000/2))*1000*64*1250
IPC1bits.T2IP = 2; // Set Timer2 Interrupt Priority Level
IFS0bits.T2IF = 0; // Clear Timer2 Interrupt Flag
IEC0bits.T2IE = 1; // Enable Timer2 Interrupt
//*********************************************************************************************************
// Initialize Timer 3 - Red light
//*********************************************************************************************************
T3CON = 0x0020; // Stop 16-bit Timer3, 1:64(40MhzFosc) Prescale, Internal clock (Fosc/2)
TMR3 = 0x00; // Clear timer register
PR3 = 1250; // Load the period value, OCxRS <= PRx, 4ms period = (1/(Fosc/2))*1000*64*PR2 = (1/(40000000/2))*1000*64*1250
IPC2bits.T3IP = 2; // Set Timer3 Interrupt Priority Level
IFS0bits.T3IF = 0; // Clear Timer3 Interrupt Flag
IEC0bits.T3IE = 1; // Enable Timer3 Interrupt
//*********************************************************************************************************
// Initialize Output Compare 1 module in Continuous Pulse mode, OC1 controls IR LED switch
//*********************************************************************************************************
RPOR6bits.RP13R = 0b10010; // RP13/RB13 tied to OC1 (IR)
OC1CONbits.OCM = 0b000; // Disable Output Compare 1 Module
OC1R = 0; // Write the duty cycle for the first PWM pulse, 24=8MHzFosc(50us), 30=40MHzFosc(50us), 600=40MHzFosc(1ms)
OC1RS = duty_cycle; // Write the duty cycle for the second PWM pulse, OCxRS <= PRx, 499=8MHzFosc(1ms), 623=40MHzFosc(1ms), 1246=40MHzFoc,2msPeriod, 4984=40MHzFoc,8msPeriod, 280=450us D/C@40MHzFoc,2msPeriod,switch
OC1CONbits.OCTSEL = 0; // Select Timer 2 as output compare time base
//*********************************************************************************************************
// Initialize Output Compare 2 module in Continuous Pulse mode, OC2 controls Red LED switch
//*********************************************************************************************************
RPOR6bits.RP12R = 0b10011; // RP12/RB12 tied to OC2 (Red)
OC2CONbits.OCM = 0b000; // Disable Output Compare 2 Module
OC2R = 0; // Write the duty cycle for the first PWM pulse, 24=8MHzFosc, 30=40MHzFosc, 600=40MHzFosc(1ms)
OC2RS = duty_cycle; // Write the duty cycle for the second PWM pulse, OCxRS <= PRx, 499=8MHzFosc(1ms), 623=40MHzFosc(1ms), 1246=40MHzFoc,2msPeriod, 4984=40MHzFoc,8msPeriod, 280=450us D/C@40MHzFoc,2msPeriod,switch
OC2CONbits.OCTSEL = 1; // Select Timer 3 as output compare time base
Lista 1: La rutina principal del paquete de códigos de muestra de Microchip Technology utiliza una corta secuencia de inicialización para configurar los temporizadores del controlador de la señal digital y los módulos de comparación de salida en el corazón de esta solución de oxímetro de pulso de bajo costo. (Fuente del código: Microchip Technology)
Este enfoque aprovecha la asociación de la arquitectura DSC de cada interrupción del temporizador con un punto de entrada específico de la rutina de servicio de interrupción (ISR). Por ejemplo, cuando se produce la interrupción del Timer3 del canal del LED rojo, el DSC ejecuta la función en el punto de entrada de la interrupción _T3. Por lo tanto, cuando el Timer3 del LED rojo expira, ocurren dos eventos coordinados de hardware y software:
- OC2 genera un pulso continuo al interruptor analógico, encendiendo el LED rojo
- El DSC comienza a ejecutar la _T3Interrupción ISR (Lista 2)
Copiar
void __attribute__((__interrupt__, no_auto_psv)) _T3Interrupt(void) //Read Red DC & AC signals from AN0 & AN1
{
int delay;
unsigned char i;
Read_ADC_Red = 1;
CH0_ADRES_Red_sum = 0;
CH1_ADRES_Red_sum = 0;
for (delay=0; delay<200; delay++); //2000=delayed 256us before read ADC
// LATBbits.LATB14 = 1; // for debugging
for (i=0; i<oversampling_number; i++)
{
//Acquires Red-DC from Channel0 (AN0)
AD1CHS0bits.CH0SA = 0x00; // Select AN0
AD1CON1bits.SAMP = 1; // Begin sampling
while(!AD1CON1bits.DONE); // Waiting for ADC completed
AD1CON1bits.DONE = 0; // Clear conversion done status bit
CH0_ADRES_Red_sum = CH0_ADRES_Red_sum + ADC1BUF0; // Read ADC result
//Acquires Red-AC from Channel1 (AN1)
AD1CHS0bits.CH0SA = 0x01; // Select AN1
AD1CON1bits.SAMP = 1; // Begin sampling
while(!AD1CON1bits.DONE); // Waiting for ADC completed
AD1CON1bits.DONE = 0; // Clear conversion done status bit
CH1_ADRES_Red_sum = CH1_ADRES_Red_sum + ADC1BUF0; // Read ADC result
}
CH0_ADRES_Red = CH0_ADRES_Red_sum / oversampling_number;
FIR_input_Red[0] = CH1_ADRES_Red_sum / oversampling_number;
#ifdef Sleep_Enabled
if (CH0_ADRES_Red<=74 && CH1_ADRES_Red>=4000) //if spo2 probe is not connected, 74=60mV, 4000=3.2V
{
goto_sleep = 1;
}
else if (CH0_ADRES_Red > Finger_Present_Threshold) //if no finger present then goto sleep
{
goto_sleep = 1;
}
else
#endif
{
// LATBbits.LATB14 = 0; // for debugging
for (delay=0; delay<500; delay++); //1000=delayed 256us before read ADC
// LATBbits.LATB14 = 1; // for debugging
//Acquires Red-DC baseline from Channel0 (AN0)
AD1CHS0bits.CH0SA = 0x00; // Select AN0
AD1CON1bits.SAMP = 1; // Begin sampling
while(!AD1CON1bits.DONE); // Waiting for ADC completed
AD1CON1bits.DONE = 0; // Clear conversion done status bit
Baseline_ambient = ADC1BUF0;
Baseline_Upper_Limit = Baseline_ambient + DCVppHigh;
Baseline_Lower_Limit = Baseline_ambient + DCVppLow;
Meter_State = Calibrate_Red();
}
// LATBbits.LATB14 = 0; // for debugging
OC2RS = duty_cycle; // Write Duty Cycle value for next PWM cycle
IFS0bits.T3IF = 0; // Clear Timer3 Interrupt Flag
}
Lista 2: Incluido en el paquete de códigos de muestra de Microchip Technology, el Timer3 ISR que se muestra aquí recoge las medidas de iluminación del LED rojo y las medidas de luz ambiental, mientras que el Timer2 ISR solo necesita recoger las medidas de iluminación del LED IR. (Fuente del código: Microchip Technology)
Como se muestra en la Lista 2, la _T3Interrupt ISR lee el nivel de base rojo (Red-DC) del canal 0 del ADC (AN0) y el nivel dinámico rojo (Red-AC) del canal 1 del ADC (AN1). Si el desarrollador opta por incluir una definición de Sleep_Enabled, el código ISR compilado sigue la captura de datos con una comprobación para ver si el procesador debe entrar en un estado de sueño. La configuración por defecto del paquete de software de Microchip incluye un #define para Sleep_Enabled, de modo que la variable goto_sleep se establecerá si la sonda óptica no está conectada o si el dedo del usuario no está presente.
Después de esta comprobación del estado de la sonda, el ISR toma una muestra del nivel de luz ambiental y utiliza este valor actualizado para desplazar los límites de la ventana de la línea de base en consecuencia. Al usar estos límites ajustados, la función Calibrate_Red() aumenta o disminuye la salida del DAC al conductor del LED rojo para mantener la intensidad entre el Baseline_Lower_Limit y el Baseline_Upper_Limit.
La rutina de interrupción del servicio del temporizador T2 utiliza el mismo patrón de diseño básico, excluyendo la comprobación de la medición del nivel de luz ambiental y del sleep_enabled.
Con el temporizador, la comparación de salida y los ISR en su lugar, la rutina principal del software de muestra realiza una breve secuencia de inicialización e inicia el Timer2 y el Timer3. En ese punto, el código entra en el bucle principal, esperando los datos procesados por los ISR. A medida que se dispone de datos de rojo e IR, esos valores son procesados por un filtro digital de respuesta a impulsos finitos (FIR), llamando finalmente a rutinas para calcular SpO2 y la frecuencia cardíaca (Lista 3).
Copiar
//********** Enable OC1 & OC2 ouputs for IR & Red LED's on/off switch **********
OC2CONbits.OCM = 0b101; // Select the Output Compare 2 mode, Turn on Red LED
T3CONbits.TON = 1; // Start Timer3
for (delay=0; delay<2200; delay++);
OC1CONbits.OCM = 0b101; // Select the Output Compare 1 mode, Turn on IR LED
T2CONbits.TON = 1; // Start Timer2
goto_sleep = 0;
first_reading = 0;
while (1)
{
if (goto_sleep)
{
[lines clipped]
Sleep(); // Put MCU into sleep
Nop();
}
}
//--------- Main State Machine starts here ---------
if (RedReady && IRReady)
{
RedReady = 0;
IRReady = 0;
// LATBbits.LATB14 = 1; //for debugging
FIR(1, &FIR_output_IR[0], &FIR_input_IR[0], &BandpassIRFilter);
FIR(1, &FIR_output_Red[0], &FIR_input_Red[0], &BandpassRedFilter);
CH1_ADRES_IR = FIR_output_IR[0];
CH1_ADRES_Red = FIR_output_Red[0];
[lines clipped]
if (Detection_Done)
{
//Max & Min are all found. Calculate SpO2 & Pulse Rate
SpO2_Calculation(); //calculate SpO2
Pulse_Rate_Calculation(); //calculate pulse rate
[lines clipped]
}
/*****************************************************************************
* Function Name: SpO2_Calculation()
* Specification: Calculate the %SpO2
*****************************************************************************/
void SpO2_Calculation (void)
{
double Ratio_temp;
IR_Vpp1 = fabs(IR_Max - IR_Min);
Red_Vpp1 = fabs(Red_Max - Red_Min);
IR_Vpp2 = fabs(IR_Max2 - IR_Min2);
Red_Vpp2 = fabs(Red_Max2 - Red_Min2);
IR_Vpp = (IR_Vpp1 + IR_Vpp2) / 2;
Red_Vpp = (Red_Vpp1 + Red_Vpp2) / 2;
IR_Vrms = IR_Vpp / sqrt(8);
Red_Vrms = Red_Vpp / sqrt(8);
// SpO2 = log10(Red_Vrms) / log10(IR_Vrms) * 100;
// if (SpO2 > 100)
// {
// SpO2 = 100;
// }
// Using lookup table to calculate SpO2
Ratio = (Red_Vrms/CH0_ADRES_Red) / (IR_Vrms/CH0_ADRES_IR);
Listing 3: Este fragmento de la rutina principal del paquete de código de muestra de la Tecnología del Microchip muestra cómo el código inicializa el temporizador y los módulos de comparación de salida y entra en un bucle sin fin, calculando SpO2 y la frecuencia cardíaca cuando hay mediciones disponibles, o poniendo el procesador en modo de reposo de baja potencia cuando la funcionalidad del sensor se desconecta. (Fuente del código: Microchip Technology)
Para SpO2, la función SpO2_Calculation() convierte las amplitudes de pulso (Vpp) de las señales rojas e IR en valores Vrms. Utilizando estos valores, la función genera una relación y utiliza una tabla de búsqueda (no mostrada en el Listado 3) para convertir la relación en un valor específico de SpO2. Generalmente, esta tabla de búsqueda se deriva de múltiples mediciones empíricas. El Pulse_Rate_Calculation() usa el tiempo entre picos de la medición para determinar la frecuencia cardíaca.
Opciones de optimización del diseño de SpO2
Aunque el diseño descrito en este artículo proporciona una solución eficaz para un oxímetro de pulso de bajo costo, otros dispositivos podrían ofrecer una mayor optimización. Por ejemplo, un desarrollador podría eliminar el dispositivo externo MCP6002 de doble amplificador de operaciones utilizando los amplificadores de operaciones integrados en el DSCDSPIC33CK64MP102 de Microchip Technology.
Sin embargo, al implementar este diseño modificado de pulsioxímetro, los desarrolladores tendrán que reescribir algunas partes clave del paquete de software descrito anteriormente para tener en cuenta algunas diferencias en el DSC.
Por ejemplo, el DSC DSPIC33CK64MP102 proporciona un conjunto de módulos de temporizador multiusos en lugar de la característica Timer2/Timer3 en el DSC DSPIC33FJ128GP802, lo que requiere que los desarrolladores proporcionen su propia solución a algunas de las funcionalidades descritas en los listados incluidos en este artículo. Aun así, los principios de funcionamiento siguen siendo los mismos y los desarrolladores pueden, como mínimo, utilizar los patrones de diseño que se muestran en el paquete de software de muestra de Tecnología de Microchips para guiar su propio diseño de software personalizado.
Conclusión:
La medición de los niveles de saturación de oxígeno en la sangre proporciona un importante indicador de la función respiratoria y se ha convertido en una herramienta importante en la gestión de la salud durante la pandemia de COVID-19. Mediante métodos ópticos sencillos, los pulsioxímetros proporcionan estimaciones fiables de la saturación de oxígeno periférico (SpO2), satisfaciendo así una necesidad particular de soluciones asequibles de vigilancia de la salud durante la pandemia.
Como se muestra, en combinación con unos pocos componentes básicos, un DSC proporciona una base de hardware eficaz para implementar un oxímetro de pulso de bajo costo capaz de suministrar de manera fiable mediciones de SpO2 que podrían indicar la necesidad de que los usuarios busquen más atención médica para una infección progresiva de COVID-19.

Descargo de responsabilidad: Las opiniones, creencias y puntos de vista expresados por los autores o participantes del foro de este sitio web no reflejan necesariamente las opiniones, las creencias y los puntos de vista de DigiKey o de las políticas oficiales de DigiKey.