Concevoir un oxymètre de pouls à faible coût en utilisant des composants disponibles sur le marché
Avec la contribution de Rédacteurs nord-américains de DigiKey
2020-08-13
L'oxymétrie de pouls mesure la saturation en oxygène périphérique (SpO2), qui reflète l'efficacité du système cardio-pulmonaire à fournir du sang riche en oxygène à l'organisme. Les athlètes utilisent les mesures SpO2 pour évaluer leur niveau d'effort lors des entraînements, mais ces mesures ont pris une plus grande importance lors de la pandémie de COVID-19. Les prestataires de soins de santé surveillent une diminution de la saturation SpO2 comme signe avant-coureur de dommages aux tissus pulmonaires causés par le virus SRAS-CoV-2 qui est à l'origine de la COVID-19.
Pour les personnes atteintes présentant des symptômes légers et devant être mises en quarantaine à domicile, l'accès à un oxymètre de pouls peu coûteux peut aider à évaluer l'évolution de l'infection et fournir l'alerte nécessaire pour intensifier les soins.
Cet article aborde brièvement les symptômes de la COVID-19 et la nécessité d'une surveillance du niveau SpO2. Il montre ensuite comment les développeurs peuvent utiliser un contrôleur de signal numérique (DSC) de Microchip Technology et quelques dispositifs supplémentaires pour concevoir un oxymètre de pouls peu coûteux, capable de fournir aux utilisateurs à domicile une alerte précoce des symptômes correspondant à une infection COVID-19 avancée.
COVID-19 et la nécessité de mesurer les niveaux de saturation en oxygène
La COVID-19 présente un large spectre de symptômes résultant des effets néfastes du virus SRAS-CoV-2. Pour les professionnels de la santé, un symptôme particulièrement inquiétant concerne les lésions des tissus pulmonaires, qui entraînent une détérioration du système respiratoire et une réduction de l'absorption d'oxygène. Bien que les médecins utilisent des radiographies thoraciques individuelles et des tomodensitogrammes pour confirmer ce stade de la COVID-19, ils utilisent systématiquement les mesures SpO2 comme indicateur précoce.
La mesure SpO2 est une alternative non invasive à la mesure de la saturation artérielle en oxygène (SaO2) déterminée directement par l'analyse des niveaux de gaz du sang dans des échantillons prélevés dans une artère du patient. Bien que certaines conditions puissent nécessiter une mesure directe des gaz du sang artériel, on a constaté que la saturation SpO2 fournit une estimation fiable du niveau SaO2. Le plus important est peut-être que cette mesure peut être effectuée de manière aussi fiable à la maison qu'en milieu clinique à l'aide d'oxymètres de pouls optiques.
Les oxymètres de pouls optiques mesurent la valeur SpO2 en exploitant les différences d'absorption de la lumière montrées par l'hémoglobine désoxygénée (Hb) et l'hémoglobine oxygénée (HbO2). Transportée dans les globules rouges, l'hémoglobine forme rapidement une liaison réversible avec jusqu'à quatre molécules d'oxygène dans les poumons riches en oxygène. Dans cet état sous forme HbO2, la molécule absorbe plus de lumière à 940 nanomètres (nm) qu'à 660 nm (Figure 1).
Figure 1 : L'oxymétrie de pouls exploite les différences de spectre d'absorption entre les cellules sanguines oxygénées (HbO2) et désoxygénées (Hb). (Source de l'image : Wikipédia)
Lorsque les globules rouges porteurs d'HbO2 passent à la périphérie où la pression partielle — la pression d'un seul composant gazeux dans un mélange de gaz — d'oxygène est plus faible, l'affinité de l'hémoglobine pour l'oxygène diminue et l'HbO2 commence à décharger ses molécules d'oxygène, pour finalement se transformer en Hb. Dans cet état désoxygéné, le spectre d'absorption de la lumière de la molécule change, absorbant plus de lumière à 660 nm qu'à 940 nm.
Comme l'HbO2 se transforme en Hb lorsque la pression partielle d'oxygène est faible, la saturation SpO2 peut être déterminée par une formule simple :
SpO2 = HbO2 / (HbO2 + Hb)
À leur tour, les concentrations relatives d'Hb et d'HbO2 dans le flux sanguin peuvent être déterminées en mesurant l'absorption de la lumière aux longueurs d'ondes de 660 nm et 940 nm.
Les oxymètres de pouls utilisent la relation entre la pression partielle d'oxygène dans le sang, la charge en oxygène de l'hémoglobine et les différences d'absorption de la lumière pour fournir des mesures SpO2 fiables.
Sous-systèmes clés d'un oxymètre de pouls typique
Une conception d'oxymètre de pouls typique comprend trois sous-systèmes principaux :
- Un sous-système de distribution de la lumière incluant des circuits d'attaque et des commutateurs analogiques ainsi que des diodes électroluminescentes (LED) aux longueurs d'ondes rouges (660 nm) et infrarouges (IR) (950 nm). Certains systèmes comprennent également des sources vertes (530 nm) à utiliser avec les méthodes de photopléthysmographie (PPG) qui déterminent la fréquence cardiaque en surveillant les changements de volume des vaisseaux sanguins de la peau.
- Un sous-système de détection de la lumière incluant une photodiode, une chaîne de mise en forme des signaux et un convertisseur analogique-numérique (CAN).
- Un DSC ou un microcontrôleur pour coordonner les sous-systèmes de distribution et de détection de la lumière, et pour calculer le niveau SpO2 à partir des données mesurées.
Bien que ces sous-systèmes de base existent dans tout oxymètre de pouls, leur mise en œuvre peut varier considérablement. Dans les oxymètres de pouls transmissifs, la photodiode est placée du côté opposé du doigt ou du lobe de l'oreille de l'utilisateur par rapport aux LED. Les clips de doigts classiques combinent des LED rouges et infrarouges, et des LED vertes en option, d'un côté du clip et une photodiode de l'autre. Dans les oxymètres de pouls réflectifs, la photodiode et les LED sont placées du même côté de la peau avec une barrière optique placée entre elles pour réduire les artefacts. Par exemple, le SFH7060 d'OSRAM est un dispositif de mesure de la réflectance qui contient des LED et une photodiode dans un seul boîtier de 7,2 millimètres (mm) x 2,5 mm x 0,9 mm.
Qu'ils utilisent ces boîtiers optiques pour des méthodes transmissives ou réflectives, les concepteurs ont besoin de relativement peu de composants supplémentaires pour mettre en œuvre un oxymètre de pouls peu coûteux, capable de fournir aux utilisateurs à domicile des informations suggérant la nécessité d'une évaluation plus approfondie par des professionnels de la santé. Un exemple de conception architecturée autour du DSC DSPIC33FJ128GP802 de Microchip Technology utilise les périphériques intégrés du microcontrôleur pour contrôler l'illumination de la peau par des LED rouges et infrarouges et pour numériser le signal de sortie mis en forme de la photodiode (Figure 2).
Figure 2 : La conception typique d'un oxymètre de pouls combine des sous-systèmes pour l'éclairage LED et le traitement du signal de la photodiode avec un microcontrôleur utilisé pour contrôler la synchronisation de l'éclairage et de l'acquisition des données. (Source de l'image : Microchip Technology)
Les oxymètres de pouls reposent généralement sur une seule photodiode avec une large courbe de réponse spectrale pour capturer le signal transmis ou réfléchi, quelle que soit la source d'éclairage. Pour s'assurer que le signal reçu correspond uniquement aux longueurs d'ondes du rouge ou de l'infrarouge, la logique de commande matérielle ou logicielle présente uniquement la source d'éclairage rouge ou infrarouge à un moment donné, en alternant entre les deux sources pour terminer une séquence de mesures.
Mise en œuvre d'une conception matérielle d'oxymètre de pouls à faible coût
Dans cette conception, le DSC utilise un convertisseur numérique-analogique (CNA) MCP4728 externe de Microchip Technology pour régler des transistors MBT2222 séparés au niveau nécessaire pour commander chaque LED à l'intensité requise. Pour chronométrer précisément la séquence d'activation de chaque LED, le DSC utilise deux de ses sorties à modulation de largeur d'impulsion (PWM) pour contrôler le commutateur analogique ADG884 d'Analog Devices (Figure 3).
Figure 3 : Un commutateur analogique permet de commander le courant des LED rouges et infrarouges en alternant les signaux pour les canaux rouges et infrarouges du contrôleur numérique. (Source de l'image : Microchip Technology)
Pour traiter la sortie de la photodiode, un seul dispositif MCP6002 de Microchip Technology fournit une paire d'amplificateurs opérationnels, requis pour implémenter une chaîne de mise en forme des signaux de base à deux étages. Ici, le premier étage utilise un amplificateur opérationnel MCP6002, configuré en tant qu'amplificateur d'adaptation d'impédance, pour convertir le courant de sortie de la photodiode en un signal de tension. Après un filtre passe-haut pour réduire le bruit, le deuxième amplificateur opérationnel du MCP6002 fournit l'ajustement de gain et de décalage CC requis pour optimiser la dynamique du signal mis en forme sur toute la plage du CAN intégré dans le DSC (Figure 4).
Figure 4 : Une chaîne de signaux à deux étages met en forme la sortie de la photodiode pour l'envoyer vers le CAN intégré du contrôleur numérique. (Source de l'image : Microchip Technology)
En fonctionnement, le DSC utilise ses sorties PWM et ses entrées CAN pour synchroniser l'éclairage LED et la numérisation CAN du signal de sortie mis en forme de la photodiode. Ici, chaque période d'éclairage rouge et infrarouge en alternance est coordonnée avec l'acquisition et la conversion des signaux. Un échantillon CAN supplémentaire prélevé lorsque les deux LED sont éteintes fournit une mesure de la lumière ambiante utilisée pour optimiser l'intensité LED et la mesure SpO2. Le résultat est une séquence d'événements contrôlée avec précision qui coordonne l'éclairage LED et la numérisation CAN pour capturer les résultats de la longueur d'onde rouge pour Hb, capturer la lumière ambiante, et enfin capturer les résultats de la longueur d'onde infrarouge pour HbO2 (Figure 5).
Figure 5 : La fonctionnalité de l'oxymètre de pouls à faible coût repose sur la capacité du contrôleur de signal numérique à gérer la synchronisation précise des séquences d'éclairage et de capture des données nécessaires à la collecte des mesures pour la détermination SpO2. (Source de l'image : Microchip Technology)
Mise en œuvre d'une solution logicielle basée sur les interruptions
Microchip fournit un pack micrologiciel d'oxymètre de pouls avec un programme d'exemple qui démontre l'utilisation du DSC pour effectuer ces séquences de contrôle de l'éclairage et de conversion des données. Ici, le programme implémente une méthode commandée par interruption utilisant deux temporisateurs DSC — Timer2 et Timer3 — pour synchroniser les séquences d'activation distinctes de la LED infrarouge et de la LED rouge, respectivement. Ensuite, chaque temporisateur fournit la base de temps pour deux des modules de comparaison de sortie (OC) du DSC, OC1 et OC2, utilisés pour contrôler les commutateurs analogiques pour la LED infrarouge et la LED rouge, respectivement.
Comme indiqué dans la Liste 1, le logiciel initialise d'abord Timer2 et Timer3 pour définir la période souhaitée du cycle d'éclairage et activer les interruptions. Dans le cadre de leur séquence d'initialisation, les modules OC1 et OC2 sont reliés à des broches de sortie séparées en utilisant la capacité de broches remappables (RP) du DSC. La séquence d'initialisation définit ensuite le rapport cyclique de l'éclairage et sélectionne le temporisateur associé pour l'utiliser comme base de temps.
Copier
//*********************************************************************************************************
// 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
Liste 1 : La routine principale du pack de code d'exemple de Microchip Technology utilise une courte séquence d'initialisation pour configurer les temporisateurs du contrôleur de signal numérique et les modules de comparaison de sortie au cœur de cette solution d'oxymètre de pouls à faible coût. (Source du code : Microchip Technology)
Cette approche tire parti de l'affectation de chaque interruption de temporisateur à un point d'entrée spécifique de la routine de service d'interruption (ISR) de l'architecture DSC. Par exemple, lorsque l'interruption Timer3 du canal LED rouge se produit, le DSC exécute la fonction au point d'entrée _T3Interrupt. Ainsi, lorsque le Timer3 de la LED rouge expire, deux événements matériels et logiciels coordonnés se produisent :
- OC2 génère une impulsion continue vers le commutateur analogique, allumant la LED rouge
- Le DSC commence l'exécution de la routine ISR _T3Interrupt (Liste 2)
Copier
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
}
Liste 2 : Incluse dans le pack de code d'exemple de Microchip Technology, la routine ISR Timer3 illustrée ici collecte les mesures de l'éclairage LED rouge et de la lumière ambiante, tandis que la routine ISR Timer2 ne doit collecter que les mesures de l'éclairage LED infrarouge. (Source du code : Microchip Technology)
Comme illustré dans la Liste 2, la routine ISR _T3Interrupt lit le niveau de base rouge (Red-DC) du canal CAN 0 (AN0) et le niveau dynamique rouge (Red-AC) du canal CAN 1 (AN1). Si le développeur choisit d'inclure une définition pour Sleep_Enabled, le code ISR compilé suit la capture des données avec une vérification pour voir si le processeur doit entrer dans un état de veille. La configuration par défaut du progiciel Microchip inclut #define pour Sleep_Enabled, afin que la variable goto_sleep soit définie si la sonde optique n'est pas connectée ou si le doigt de l'utilisateur n'est pas présent.
Suite à cette vérification de l'état de la sonde, la routine ISR échantillonne le niveau de lumière ambiante et utilise cette valeur actualisée pour décaler les limites de la fenêtre de base en conséquence. En utilisant ces limites ajustées, la fonction Calibrate_Red() augmente ou diminue la sortie du CNA vers le circuit d'attaque LED rouge pour maintenir l'intensité entre Baseline_Lower_Limit et Baseline_Upper_Limit.
La routine ISR du temporisateur T2 utilise le même schéma de base, à l'exception de la vérification pour la mesure du niveau de lumière ambiante et Sleep_Enabled.
Une fois le temporisateur, la comparaison de sortie et les routines ISR en place, la routine principale du logiciel d'exemple exécute une courte séquence d'initialisation et démarre Timer2 et Timer3. À ce stade, le code entre dans la boucle principale et attend les données traitées par les routines ISR. Lorsque les données rouges et infrarouges sont disponibles, ces valeurs sont traitées par un filtre numérique à réponse impulsionnelle finie (RIF), appelant finalement les routines pour calculer le niveau SpO2 et la fréquence cardiaque (Liste 3).
Copier
//********** 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);
Liste 3 : Cet extrait de la routine principale du pack de code d'exemple de Microchip Technology montre comment le code initialise le temporisateur et les modules de comparaison de sortie et entre dans une boucle sans fin, calculant le niveau SpO2 et la fréquence cardiaque lorsque des mesures sont disponibles, ou plaçant le processeur en mode veille basse consommation lorsque la fonctionnalité du capteur est hors ligne. (Source du code : Microchip Technology)
Pour SpO2, la fonction SpO2_Calculation() convertit les amplitudes d'impulsion (Vpp) des signaux rouges et infrarouges en valeurs Vrms. À partir de ces valeurs, la fonction génère un ratio et utilise une table de correspondance (non illustrée dans la Liste 3) pour convertir le ratio en une valeur spécifique de SpO2. En général, cette table de correspondance est dérivée de multiples mesures empiriques. Pulse_Rate_Calculation() utilise la synchronisation inter-crête de la mesure pour déterminer la fréquence cardiaque.
Options d'optimisation de la conception SpO2
Bien que la conception décrite dans cet article offre une solution efficace pour un oxymètre de pouls à faible coût, d'autres dispositifs peuvent fournir une optimisation supplémentaire. Par exemple, un développeur peut éliminer le dispositif à double amplificateur opérationnel externe MCP6002 en utilisant les amplificateurs opérationnels intégrés dans le DSC DSPIC33CK64MP102 de Microchip Technology.
En implémentant cette conception d'oxymètre de pouls modifiée, les développeurs devront toutefois réécrire certaines parties clés du progiciel présenté précédemment pour tenir compte de certaines différences dans le DSC.
Par exemple, le DSC DSPIC33CK64MP102 fournit un ensemble de modules de temporisateurs multi-usages au lieu de la fonction Timer2/Timer3 du DSC DSPIC33FJ128GP802, ce qui oblige les développeurs à fournir leur propre solution pour certaines des fonctionnalités décrites dans les listes figurant dans cet article. Malgré cela, les principes de fonctionnement restent les mêmes et les développeurs peuvent, au minimum, utiliser les modèles de conception illustrés dans le progiciel d'exemple de Microchip Technology pour guider leur propre conception logicielle personnalisée.
Conclusion
La mesure des niveaux de saturation en oxygène du sang fournit un indicateur important de la fonction respiratoire et est devenue un outil important de gestion de santé pendant la pandémie de COVID-19. Utilisant des méthodes optiques simples, les oxymètres de pouls fournissent des estimations fiables de la saturation en oxygène périphérique (SpO2), répondant ainsi à un besoin particulier en matière de solutions de surveillance sanitaire abordables pendant la pandémie.
Comme démontré, en combinaison avec quelques composants de base, un DSC fournit une base matérielle efficace pour mettre en œuvre un oxymètre de pouls à faible coût, capable de fournir de manière fiable des mesures SpO2 pouvant alerter un utilisateur qu'il est nécessaire de demander une assistance médicale supplémentaire pour une infection COVID-19 en progression.
Avertissement : les opinions, convictions et points de vue exprimés par les divers auteurs et/ou participants au forum sur ce site Web ne reflètent pas nécessairement ceux de DigiKey ni les politiques officielles de la société.




