I am designing a Pulse Oximeter.
The SpO2 probe has an IR LED and a photodiode.

I need assistance with the algorithm for calculation of SpO2.

I'm aware of eg Wikpedia and similar sites and I have referred to many papers for the SpO2 calculation, understood till calculation of modulation ratio. But different equations were used in different papers, which they say that they obtained by calibration results. That's the problem. How to calibrate the Sp02 level?

  • 1
    \$\begingroup\$ Normally a pulse oximeter measures absorption (extinction) characteristic at two different wavelengths, 940nm and 680nm, then uses the ratio to determine the relative concentration of Hb vs HbO2. With only one IR LED, you can measure heart rate (pulse) at the capillaries of the fingertip, but with only one wavelength you can't distinguish the hemoglobin from the oxyhemoglobin, and therefore can't calculate SpO2 no matter what the algorithm. You need at least two different color LEDs. \$\endgroup\$ – MarkU Aug 18 '16 at 7:50
  • 1
    \$\begingroup\$ Thank u so much.If I use red and IR leds, after finding out the ratio R(ac /dc) , how to calibrate , inorder to find spo2? \$\endgroup\$ – Veena Aug 18 '16 at 9:08
  • 1
    \$\begingroup\$ en.wikipedia.org/wiki/Pulse_oximetry \$\endgroup\$ – MarkU Aug 18 '16 at 9:43
  • 1
    \$\begingroup\$ Okay..I have referred many papers for the spo2 calculation,understood till calculation of modulation ratio..but different equations were used in diffrerent papers,which they say that they obtained by calibration results...that's the problem..thank you anyway...... \$\endgroup\$ – Veena Aug 18 '16 at 10:32
  • \$\begingroup\$ @MarkU - Sounds like you have some knowledge in this area. Comments on my answer are welcome. \$\endgroup\$ – Russell McMahon Sep 8 '16 at 14:22

SPO2 calculations are a "black art".
While they are based on the optical characteristics of haemoglobin at two wavelengths, there are a range of other parameters which make a simple calculation impractical.

The basic theory can be simplistically described as: At one optical "reference" wavelength, blood is about equally 'transparent' regardless of its degree of oxygenation, whereas at a second wavelength the 'transparency' varies with the degree of oxygenation in an analytically understood manner. By comparing the optical attenuation at the two wavelengths the losses due to mechanical issues can be eliminated and the loss due to change in oxygenation level can be determined.

In practice, a range of additional factors greatly complicate the system. Developers make various assumptions and derive their own proprietary methods and algorithms to cope. Your main choices are to either become another 'developer' carrying out your own investigations , or to "pickyback" on prior work by intelligent "curve fitting" of your measured optical results with the reported SpO2 levels from commercial systems when your system and theirs are measuring the same "target". I'll assume that the latter "stand on the shoulders of giants" approach will be preferred.

You say that you have referred to many papers that discussed calibration - which is an essential starting point. You now need to make your own decisions based on what others have done and applying some practical reasoning. Depending on the purpose of your device (student project or commercial product or ....) you may be able to get a 'good enough' result by simple means.

You may be able to get access to a commercial machine either on a loan basis or perhaps by persuading a local clinic or hospital to come in and "play" with one in an unused treatment room when they are not busy. All you then need is your machine, their machine , a means of measuring the output of your machine AND, importantly, a source of varyingly oxygenated blood inside a finger or whatever target you are using. The last requirement is both the hardest and easiest. The easiest method is to have a willing "target" who is able to vary SpO2 levels on demand. You or a friend/candidate/guinea pig are a good choice.

By varying my own breathing, I personally can reduce my SpO2 level to the point where a typically set monitoring alarm will sound. From memory this is often about 80% but whatever figure it is, it's not too hard by breathing slowly and retaining air as long as possible and controlling breath size to lower SpO2 to alarm level in perhaps (from memory) 20-30 seconds. Return to high levels (95% +?) is rapid when breathing normally. With a small amount of practice and "optical feedback" from a calibrated machine one can hold SpO2 at any desired level between trigger point and close to fully saturated. (Ask me how I know :-) ).

SO if you have the two machines (yours and a commercial one for comparison) you can vary the SpO2 levels easily and widely, and record data output by your machine plus recorded SpO2% from the commercial machine under various conditions. Being able to do this with several brands of commercial equipment would be even better. Doing this with different users, different fingers, varying conditions (temperature, user mild inebriation, fasting, post glucose 'spike', .... ) would allow you to see what if any difference these things make.

It is useful, fun and important to note that altitude alters the result due to the affect of absolute oxygen mass per litre of inhaled air and the body's consequent adjustment of its operating point on the haemoglobin takeup / release curve (which is the main factor affecting altitude climatization).

If you are using an Arduino or similar it would be easy to log your results - and not quite so easy to record the commercial machines SpO2 values. If it has a USB or serial output that can be logged. If not you may need to use manual keyboard input of displayed SpO2 levels.

Long ago (10-20 years) I read an utterly superb Hewlett Packard Journal with a number of related articles. It covered equipment and sensor design and decisions and more. Should be findable.

Possible use:

Hewlett Packard Journal, 1997

Volunteer Study for Sensor Calibration

A New Family of Sensors for Pulse Oximetry

Neonatal Sensor Clinical Validation

Hewlett Packard Journal, 1976

Haha wow !!!



Philips 22 pages !!! Understanding Pulse Oximetry SpO2 Concepts



  • \$\begingroup\$ Thank u so much @ Russel...In this paper ,till calculation of R is fine..On page 24 of the journal iosrjournals.org/iosr-jeee/Papers/Vol8-issue1/… cannot understand how the following equation is obtained which says, the empirical data is referenced in order to find the percentage of oxygenation. Y= - 10.291 * X * X – 27.865 * X + 117.93 ...Here is my problem \$\endgroup\$ – Veena Sep 9 '16 at 4:08
  • \$\begingroup\$ @Veena The "key" is that (unfortunately) there IS NO key. "Empirical" means "we arrived at these parameters by trial and eo\rrir - these figures are what provided the best match of our data to the result we thought we should get. This is exactly what I was referring to in my answer when I talk about logging results from your sensors and the reading from a commercial machine. This allows you to plot/compare your data with the desired result and establish "empirical" formulae to make the desired result fit the data across the range of interest. ... \$\endgroup\$ – Russell McMahon Sep 9 '16 at 13:23
  • \$\begingroup\$ @Veena ... See Marku's comments above and his referenced Maxim product. What I am saying and what they are saying is that there is no easy way - most people work out the typical sort of results they expect and then experimentally create formulae that work in practice. This is what I meant at the start about it being a black art. \$\endgroup\$ – Russell McMahon Sep 9 '16 at 13:23
  • \$\begingroup\$ Thank u @Russell.Your explanation was very understandable..this is for my research..Am from TN,India. \$\endgroup\$ – Veena Sep 10 '16 at 9:51
  • \$\begingroup\$ @Veena Are you able to get access to a commercial Pulse Oximeter to do comparative readings? I makes it a lot harder if not - but the "breathing control" method I mentioned will still help you see how much variation you can get. | I've visited India - only briefly alas, starting in TN (was)-Madras. I took a "hard sleeper" train to Pune - an interesting journey :-). Also Delhi, Agra, Mumbai. \$\endgroup\$ – Russell McMahon Sep 10 '16 at 14:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.