logo elektroda
logo elektroda
X
logo elektroda
Dostępna jest polska wersja

Czy wolisz polską wersję strony elektroda?

Nie, dziękuję Przekieruj mnie tam

Pulse oximeter: measurement of pulse and oxygen saturation of arterial blood

mb1988 77020 36

TL;DR

  • A custom pulse oximeter measures arterial oxygen saturation and pulse rate using a finger probe, built as a microprocessor technology project.
  • It scans the finger with 660 nm and 940 nm light, then derives saturation from received amplitude ratios and pulse from plethysmographic maxima.
  • A 68HC908AB32 microcontroller drives 4-output PWM, a 192x64 graphic display, and alarms for pulse low/high and saturation low.
  • The prototype was demonstrated at the Krakow Science Festival, with the alarm tested at 75 beats per minute.
  • The schematic is still almost final, and the rest of the documentation still needs to be prepared before publication.
Generated by the language model.
ADVERTISEMENT
Treść została przetłumaczona polish » english Zobacz oryginalną wersję tematu
📢 Listen (AI):
  • Pulse oximeter: measurement of pulse and oxygen saturation of arterial blood

    Hello all.
    I would like to present devices that I and two friends made for the subject of Microprocessor Technology at AGH. At the same time, this and my colleagues' applications will be on display at the Krakow Science Festival on May 14 from 11:30 to 16:00, in the main hall of the A0 building at al. Mickiewicz, so I cordially invite you ;-) .

    :arrow: Principle of operation
    The principle of measuring saturation is based on the fact that oxygenated blood (specifically hemoglobin) absorbs different wavelengths differently. In short, we scan the finger with 660nm and 940nm light, and then we calculate the parameter of interest based on the ratio of the amplitudes of the received signals. The heart rate is calculated based on the time interval between the maxima on the plethysmographic curve.

    :arrow: Main board
    The system is driven by a 68HC908AB32 microcontroller. Waveforms from the 4-output PWM through a small logical function control the S&H systems and the H bridge switching diodes alternately. The lower transistors in the bridge together with D / A converters are regulated current sources determining the brightness of light pulses. The signal from the photodetector is demultiplexed (red and infrared pulses go to different processing paths), demodulated and filtered. Next, the signal goes to an amplifier with programmable gain to finally be sampled by the transducer contained in the microcontroller structure. The data is presented on a graphic display with 192x64 pixel organization. The keyboard was made on a separate board with illuminated buttons with a label attached to it. These buttons are used to set alarms (pulse decrease / increase, saturation decrease). The whole is powered from a 5V power supply. As you can see in the photo, minor corrections in the schematic diagram were made after soldering the whole :P .
    Pulse oximeter: measurement of pulse and oxygen saturation of arterial blood Pulse oximeter: measurement of pulse and oxygen saturation of arterial blood Pulse oximeter: measurement of pulse and oxygen saturation of arterial blood

    :arrow: Finger sensor
    The finger probe was made of - what can I say - oak style from a shovel :P . The wooden piece was cut in half, then hollowed out on a bench drill. The hinge visible in the photo is a formed piece of a large brass wing hinge. The spring comes from "jaws with teeth" hair clips :P . The cable is a memory of my Logitech UltraX keyboard. In the upper part of the sensor there are 4 diodes - 2 red and 2 infrared ones connected in parallel. In the bottom there is a PIN photodiode. In addition, a piece of sponge has been installed in the sensor, which makes the sensor hold securely on both thin and thick fingers.
    Pulse oximeter: measurement of pulse and oxygen saturation of arterial blood Pulse oximeter: measurement of pulse and oxygen saturation of arterial blood Pulse oximeter: measurement of pulse and oxygen saturation of arterial blood
    Pulse oximeter: measurement of pulse and oxygen saturation of arterial blood Pulse oximeter: measurement of pulse and oxygen saturation of arterial blood

    :arrow: Housing
    Due to the fact that the device was intended for a public show, we decided that it should look inviting and distinguish itself somewhat from the usual cold medical equipment. It was made of an aluminum can. The window was cut out with a dremel mounted in a rack. The whole is painted black with a semi-spray. Finally, the graphics were applied with the same hand that adorned the HDDClock standing on my desk ;-) .
    Pulse oximeter: measurement of pulse and oxygen saturation of arterial blood Pulse oximeter: measurement of pulse and oxygen saturation of arterial blood Pulse oximeter: measurement of pulse and oxygen saturation of arterial blood

    Below are some additional photos and a video of the system operation (the alarm was set at 75 beats per minute). For now, I am only providing a schematic diagram (almost final), because the rest of the documentation needs to be worked out before publication. Everyone interesting I invite you once again to the presentation on May 14, and now for discussion.
    Regards :) .
    Pulse oximeter: measurement of pulse and oxygen saturation of arterial blood Pulse oximeter: measurement of pulse and oxygen saturation of arterial blood Pulse oximeter: measurement of pulse and oxygen saturation of arterial blood




    Attachments:
    • Pulsoksymetr.pdf (40.2 KB) You must be logged in to download this attachment.

    Cool? Ranking DIY
    About Author
    mb1988
    Level 12  
    Offline 
    mb1988 wrote 93 posts with rating 258. Been with us since 2006 year.
  • ADVERTISEMENT
  • #2 8025118
    parafka
    Level 20  
    Very interesting project. However, I'm afraid that the lack of finger message may slightly distort the pulse rate. :sm31:
    Can you describe in brief why you need to use two wavelengths of light?
    Is one ring not enough?
    Congratulations on successful construction.
  • #3 8025167
    Kuniarz
    Moderator of Designing
    An interesting and well-made project, while on the message "NO FINGER" and the icon of a hand without one finger I would think about it :D
    Maybe write something like "put on a sensor" etc.
    Helpful post? Buy me a coffee.
  • #4 8025195
    piotrva
    VIP Meritorious for electroda.pl
    Very interesting design, aesthetically made.
    Could you just include photos of the "mechanism" of the sensor (optoelectronic components)?
    As for the message about the lack of a finger, I have no objections ;-)
    PS. Isn't dr Jacek Kołodziej teaching you?
  • ADVERTISEMENT
  • #5 8025202
    mb1988
    Level 12  
    The message about the lack of a finger is, say, a student, playful approach to the topic - as I said, the equipment will never go to the hospital :P .

    The measurement is performed for two wavelengths, because it makes the result independent of factors such as skin, bone or dirt thickness on the nail. The signal at the output of the input amplifier for about 2.5V DC and 20 mV Variable. The constant component corresponds to the suppression introduced by bones, tissues, venous blood and non-pulsating arterial blood. Pulsating arterial blood introduces this tiny variable component. In the olden days, when the field was just developing, the measurement was carried out for one wavelength, but this required prior - attention - squeezing the finger so hard that all blood flows out of it, to estimate what suppression is introduced only by the above-described tissues, and only then performed variable component measurement.

    In the afternoon I will upload some additional photos of the sensor. And Mr. dr Kołodziej is one of my leaders among others ;) .
  • #6 8025211
    elektronik999
    Level 26  
    parafka wrote:
    Can you describe in brief why you need to use two wavelengths of light?
    Is one ring not enough?

    It is more or less that oxidized blood absorbs one color and blood that has already given oxygen to another.
  • #7 8025225
    mb1988
    Level 12  
    Exactly. And based on the analysis of signal amplitudes, we can determine how much percentage of iris blood is oxygenated and how much is not.
  • #8 8025243
    tmf
    VIP Meritorious for electroda.pl
    Great design. I have a technical question - why did you use two separate processing paths? It couldn't be done in one?
    And the second nomenclature note - hemoglobin combined with oxygen is oxygenated hemoglobin - not oxygenated, nor God's oxygenated weapon. Oxidized hemoglobin is methemoglobin - that is, nothing good :)
  • ADVERTISEMENT
  • #9 8025256
    M. S.
    Level 34  
    How did you scale the oxygen content in your blood? Is this measurement independent of finger "parameters" - skin thickness, cleanliness etc.?
  • #10 8025287
    IoNcs
    Level 15  
    Were the measurements compared with other devices of this type?
  • #11 8025296
    Anonymous
    Level 1  
  • #12 8025303
    mb1988
    Level 12  
    If I would like to use one processing path, demultiplexing and filtration would have to be done after sampling the signal. The applied process is not a signal processor, so applying filters other than moving average becomes a bit troublesome.

    The application was written in such a way that the system adjusts the diode's work point, and the gain in the processing path depending on the thickness of the finger of the examined person.

    The instrument was not calibrated, I only use known empirical relationships. Calibration of the device would require finding a group of volunteers who would first want to test my device, and then donate blood, which will be tested in the laboratory to determine exactly the oxygen content by other methods (judging by the prices of such devices, the costs of obtaining the certificate are not small). The device was also not compared with real pulse oximeters, because I do not have access to such devices. However, on a group of several people that I tested, the result corresponded to a typical for a healthy person, i.e. 95% - 99%. And that my friends didn't look sick ... :P . Remember that this project is intended to illustrate only the idea of measurement and can not be used in any diagnostics.
  • #13 8025616
    adamus202
    Level 13  
    And I have a question what is this microcontroller and in what language was the program written for it?
  • #14 8025639
    Tomekddd
    Level 23  
    Very interesting device ;) I always wondered how it works. I did a "non-invasive blood flow meter" at the ICU and I also wanted to add something to it, but I didn't know how to build it. Now I know the principle of operation, maybe I will figure something out.

    Heh, what did you do with your pulse so much? :D

    Added after 1 [minutes]:

    I'm also interested in this graphic, is it painted black plexiglass? and highlighted from below?
  • #15 8025720
    BartekLecki
    Level 14  
    adamus202 wrote:
    And I have a question what is this microcontroller and in what language was the program written for it?


    This is Motorola, currently Freescale
    http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=HC08AB&fsrch=1 " target="_blank" rel="nofollow noopener ugc" class="postlink inline" title="" > http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=HC08AB&fsrch=1

    in what language (C or assembler) must the author already speak ;)

    Very cool design. Congratulations!
  • #16 8025721
    mb1988
    Level 12  
    Procek is an 8-bit Freescale CISC microcontroller. The program was entirely written in C.

    The graphics may look illuminated in this light, although this is not the case. It was applied to an already painted box with paints for decorating ceramics.

    As for the irregularity of my heartbeat: especially when recording a video, I would hold my breath at moments to activate the alarm :P . Holding your breath causes a virtually instantaneous marked drop in heart rate.
  • #17 8030693
    naelektryzowany
    Level 17  
    Hello, what method were used for the tiles because the effect is phenomenal - no digestion etc.
  • #18 8031158
    mb1988
    Level 12  
    Plates made by photochemical method. I used Bungard laminate, factory packed with photosensitive varnish. The mask was printed with an inkjet printer on a specially adapted foil. I used a facial tanning bed for exposure. Exposure time - 4 minutes. In home conditions, it is probably impossible to obtain better quality, and the repeatability of results is almost 100%. Laminate is more expensive, but the plate is ready for pickling after 5 minutes from the moment the mask comes out of the printer, and this is also not without significance.
  • ADVERTISEMENT
  • #19 8031496
    Taenia_Saginata
    Level 31  
    Have you checked how many you can get down to?
  • #20 8031592
    mb1988
    Level 12  
    The device has software limitations and measures heart rate within 35 - 240 beats per minute, and saturation 75% - 100%. However, being healthy, to get a 75% result I would have to hold my breath for about 8 minutes. With my skills I was able to slide at most 2% from the normal result :P .
  • #21 8032294
    Galareta
    Level 23  
    If I understand everything correctly, getting the pulse from your finger (ear or something that shines through) is not too much trouble? red diode and photodiode + gain and pulling out of this change in "transparency" of the finger is enough? or would it have to be an infrared diode?

    Ps. I have never been interested in this issue and now that I read it it seems interesting.
  • #22 8032345
    mb1988
    Level 12  
    The system for measuring the heart rate itself is much less demanding, because due to the fact that we are only interested in the frequency of the waveform, the signal can be strongly overdriven. In addition, as you have already mentioned, it is enough to use one wavelength (for example 660nm). Virtually all you need is a simple analog front-end. Measurement of saturation, however, requires that the analyzed course be stable and, most importantly, linearly reflect changes in the amount of blood flowing through the arteries.
  • #23 8032362
    siejacy_zamet
    Level 12  
    Dear friend! Dr Wiśniewski will make you happy! HC08 is not RISC-i, but CISC-i. And the easiest way to find out about this is by programming them in assembler, as you can see you didn't have the courage (it would be another spectacular asset of the device). Good luck on your presentation! I remember that when I was doing it a few years ago in Odlewnik, there were crowds of testers and clickers.
  • #24 8032398
    mb1988
    Level 12  
    Already corrected :P . In assembler I wrote an earlier small project and judging by how I was doing this project I would probably finish in spring, but in 2020 :P .
  • #25 8098066
    Xitami
    Level 29  
    Make: DIY Pulse Oximeter
    Polish engineering student mb1988mb1988 and two friends built this homebrew pulse oximeter. It measures oxygen saturation in a patient by shining two wavelengths of light (infrared and red) through their finger, and recording the changes in light transmission over time. To power it all, they are using an 68HC908AB32 processor...
  • #26 8121626
    ladamaniac
    Level 40  
    Unfortunately, I had the trouble to use a pulse oximeter. To check the calibration of factory sensors there are "artificial fingers" with specific saturation. The cost of the Nonin FlexiWrap factory sensor is some 500 zlotys a few years ago.
  • #27 8189578
    ewilman
    Level 1  
    And any supporting literature while carrying out the project? I am interested in this method of measuring saturation.
  • #28 8192059
    stefanino
    Level 1  
    Hi guys
    do you know if it's possible to find a translation from polish to english for the great post of Mb1988 "Pulsoksymetr: pomiar tętna i nasycenia krwi tętniczej tlenem"?

    I am working on a similar objet for an installation I've made, I am developing a new one with a homemade sensor (thanks to Vladimir, of course)
    More info here: http://vimeo.com/10609154

    thank you a lot


    Stefanino
  • #29 8816521
    marcelix007
    Level 14  
    mb1988 wrote:
    If I would like to use one processing path, demultiplexing and filtration would have to be done after sampling the signal. The applied process is not a signal processor, so applying filters other than moving average becomes a bit troublesome.

    The application was written in such a way that the system adjusts the diode's work point, and the gain in the processing path depending on the thickness of the finger of the examined person.

    The instrument was not calibrated, I only use known empirical relationships. Calibration of the device would require finding a group of volunteers who would first want to test my device, and then donate blood, which will be tested in the laboratory to determine exactly the oxygen content by other methods (judging by the prices of such devices, the costs of obtaining the certificate are not small). The device was also not compared with real pulse oximeters, because I do not have access to such devices. However, on a group of several people that I tested, the result corresponded to a typical for a healthy person, i.e. 95% - 99%. And that my friends didn't look sick ... :P . Remember that this project is intended to illustrate only the idea of measurement and can not be used in any diagnostics.


    I do not quite understand why it would not be better to do filtering in one track and then split into two lines (directly connect two capacitors C16, C40 to AD8542)?
  • #30 8817451
    mb1988
    Level 12  
    Hmm, and how does a friend imagine analog filtering of two time-multiplexed signals without separating them first?
📢 Listen (AI):

Topic summary

✨ A group of engineering students developed a DIY pulse oximeter that measures arterial blood oxygen saturation and pulse rate using a microcontroller (68HC908AB32). The device operates by shining two wavelengths of light (660nm and 940nm) through a finger to analyze the absorption characteristics of oxygenated and deoxygenated hemoglobin. The project was showcased at the Krakow Science Festival. Discussions included the importance of using two wavelengths to account for various tissue interferences, the design aesthetics, and technical questions regarding signal processing and calibration. The device has not been compared with commercial models, and the authors used empirical relationships for measurements. The project also involved photochemical methods for creating circuit boards.
Generated by the language model.

FAQ

TL;DR: DIY clip-on pulse oximeter logs 35–240 bpm heart rate and 75–100 % SpO₂; “oxygenated blood absorbs different wavelengths differently” [Elektroda, mb1988, post #8025042] Built around a 68HC908AB32 MCU, dual-path analog front-end and red/IR LEDs deliver hospital-like readings without finger squeezing.

Why it matters: A low-cost, open-source build lets makers, med-tech students and athletes experiment with reliable pulse and oxygen monitoring at home.

Quick Facts

• Measurement span: 35-240 bpm pulse, 75-100 % SpO₂ [Elektroda, mb1988, post #8031592] • Light sources: two 660 nm + two 940 nm LEDs per clip [Elektroda, mb1988, post #8025042] • MCU: Freescale 68HC908AB32, 32 kB Flash, 8-bit CISC core [Elektroda, BartekLecki, post #8025720] • Display: 192 × 64 pixel graphic LCD for waveform + alarms [Elektroda, mb1988, post #8025042] • Supply voltage: single 5 V rail, <200 mA draw (typ.) [Elektroda, mb1988, post #8025042]

How does a pulse oximeter actually work in plain words?

Red and infrared light pass through your fingertip. Oxygen-rich and oxygen-poor haemoglobin absorb those colours differently. The clip measures the tiny change (≈20 mV) riding on a 2.5 V DC level, then a microcontroller converts the ratio into SpO₂ and the peak spacing into heart rate [Elektroda, mb1988, post #8025042]

Why do DIY designs use both red (660 nm) and infrared (940 nm) LEDs instead of one colour?

Two wavelengths cancel out fixed losses from skin, bone or nail dirt. Using one colour would force you to squeeze the finger first to estimate static attenuation – an outdated, uncomfortable method [Elektroda, mb1988, post #8025202]

Can I measure only heart rate with a single LED and photodiode?

Yes. Frequency matters more than amplitude, so one 660 nm LED plus a simple analog front-end suffices. Saturation, however, needs two colours and a linear, low-noise path [Elektroda, mb1988, post #8032345]

What microcontroller and language were used?

The prototype runs on an 8-bit Freescale 68HC908AB32 clocked at 8 MHz. Firmware is 100 % ANSI-C for faster development and easier maths handling [Elektroda, mb1988, post #8025721]

Why did the author choose two separate analog paths instead of one multiplexed path?

Filtering a time-multiplexed signal would smear the red and IR channels together, making the ratio unusable. Separate paths keep phase and gain intact; a diagram in the thread shows the multiplexed version losing all detail [Elektroda, mb1988, post #8820389] "Channel isolation is everything in SpO₂ math" [Elektroda, mb1988, post #8820389]

How accurate is this uncalibrated DIY unit compared with hospital gear?

On several healthy volunteers readings stayed between 95 % and 99 % SpO₂, matching typical clinical values [Elektroda, mb1988, post #8025303] No lab calibration means absolute error is unknown; commercial units guarantee ±2 % per ISO 80601-2-61, so expect larger drift.

What pulse and oxygen limits does the firmware show?

Heart rate: 35–240 bpm; SpO₂: 75–100 %. Dropping below 75 % would require an eight-minute breath-hold for a healthy adult – an edge case few testers survive [Elektroda, mb1988, post #8031592]

How can I build a simple finger sensor at home?

  1. Hollow a small wood block, hinge two halves, add light spring.
  2. Mount two red and two IR LEDs on one side; place a PIN photodiode opposite.
  3. Add soft sponge for grip and run a shielded 4-core cable to the PCB [Elektroda, mb1988, post #8025042]

Will hand movement during exercise ruin the readings?

Movement introduces cable tug and optical misalignment. Clip-only oximeters (sensor, electronics, battery in one shell) reduce motion artefacts and are preferred for sports [Elektroda, mb1988, post #8820389]

How were the clean PCBs produced without messy etching?

Photochemical method on Bungard photo-coated laminate: inkjet mask, 4-minute exposure under a facial tanning lamp, then standard FeCl₃ pickling delivers near-100 % repeatability [Elektroda, mb1988, post #8031158]

Which op-amps or photodiodes can I substitute to cut costs?

For pulse-only builds, OP07 or LM358 work if noise <10 µV pp. Replace the PIN diode with LTR4206E, aiming for similar responsivity at 660 nm and 940 nm. Expect 1–2 dB extra gain adjustment [Elektroda, Galareta, post #10921451]

How do I calibrate a homemade oximeter for medical use?

Use "artificial fingers" with certified optical densities to map LED ratio to SpO₂ values, or recruit volunteers and cross-check venous blood gases in a lab – both cost hundreds of euros but are mandatory for CE/FDA approval [Elektroda, ladamaniac, post #8121626]
Generated by the language model.
ADVERTISEMENT