Download pdf - Pulse Oximeter

Transcript
Page 1: Pulse Oximeter

1

PULSE OXIMETRY: IMPROVING OUR WORLD ONE HEART BEAT AT A TIME

AN ABSTRACT

SUBMITTED ON FIFTH DAY OF MAY 2009

TO THE DEPARTMENT OF BIOMEDICAL ENGINEERING

IN PARTIAL FULLFILLMENT OF THE REQUIRMENTS

OF THE SCHOOL OF SCIENCE AND ENGINEERING

OF TULANE UNIERSITY

FOR THE DEGREE OF BACHELOR OF SCIENCE

IN BIOMEDICAL ENGIEERING

BY

_____________________

LUCAS MARSH

APPROVED:______________

CEDRIC WALKER, PH.D.

Page 2: Pulse Oximeter

2

Pulse Oximetry: Improving Our World One Heart Beat at a Time

Lucas Marsh

Biomedical Engineering

Tulane University

New Orleans, LA

Advisor: Dr. Cedric Walker

Engineering World Health was established back in 2001 when two professors,

Dr. Malkin and Dr. Kiani, witnessed the condition of hospitals in Nicaragua. They set out to

create an organization that utilizes the expertise of college engineering programs around the

country to design equipment and products that would better the condition of hospitals in

developing nations. Engineering World Health (EWH)expressed a need for a cheap pulse

oximeter. Many third world countries need a small cheap battery powered device that provides

both visual and auditory feedback of a patient’s heart rate. The oximeter needs to cost fewer

than eight dollars to produce and it must fit into a small container that will be able to withstand

a force up to 5 newtons. The oximeter will utilize an infrared Light Emitting Diode (LED) and a

detector to compute the heart rate. The LED will shine light through the finger and the detector

will output a voltage. This voltage will then be converted to a digital signal and the oximeter will

compute the heart rate with this information. The oximeter must be able to display a heart rate

varying from 30 up to 180 beats per minute and must provide a beep whenever there is a pulse.

The oximeter will be built to the specifications laid out by EWH and will provide the adequate

read-outs to measure the pulse.

Page 3: Pulse Oximeter

3

Some issues that could arise during the build are that the oximeter might be over cost

and also there might be issues with the oximeter being able to survive a fall. Some sources of

error could occur because of a lack of power from the batteries or failure to pick up an accurate

pulse. The results will be assessed by whether or not they fulfill the requirements specified by

Engineering World Health.

Page 4: Pulse Oximeter

4

PULSE OXIMETRY: IMPROVING OUR WORLD ONE HEART BEAT AT A TIME

A THESIS

SUBMITTED ON THE FIFTH DAY OF MAY 2009

TO THE DEPARTMENT OF BIOMEDICAL ENGINEERING

IN PARTIAL FULLFILLMENT OF THE REQUIRMENTS

OF THE SCHOOL OF SCIENCE AND ENGINEERING

OF TULANE UNIERSITY

FOR THE DEGREE OF BACHELOR OF SCIENCE

IN BIOMEDICAL ENGIEERING

BY

_____________________

LUCAS MARSH

APPROVED:______________

CEDRIC WALKER, PH.D.

Page 5: Pulse Oximeter

5

ACKNOWLEDGEMENTS

First off I would like to thank my parents who birthed me and raised me. They also deserve

thanks for putting up with me all the years that I lived at home. And of course I would not be here at

Tulane without their financial support. I love you guys.

I would also like to thank all my friends here at Tulane who have encouraged me through the

good times and the bad. I love all you guys and I will miss you all when I graduate.

I would like to thank all the teachers and professors over the years that have taught me and

nurtured me. I would not be who I am without your influence. I would specifically like to thank Dr.

Cedric Walker for everything he has done for me. You are my favorite professor and I have really

enjoyed all of your classes. And your humor just hits the spot every time. High Noon Club Forever.

Thanks to Justin Cooper for living in 441 and always being around for me to bother.

Finally I would like to thank Tulane for giving me a chance to shine. Thank you for providing me

a lab and almost endless resources, without your contributions this research would not have been

possible.

Shout out to all the BME ’09 seniors. Roll Wave Roll.

Page 6: Pulse Oximeter

6

TABLE OF CONTENTS

Section: Page Number:

Abstract Title: 1

Abstract: 2

Thesis Title: 3

Acknowledgements: 4

Table of Contents: 5

List of Tables & Figures: 6

Introduction: 7

Background: 9

Blow Flow 9

History of Pulse Oximetry 10

Principles of Pulse Oximetry 11

Signal Processing 14

Microprocessors 19

Materials and Methods 24

Results 30

Discussion 32

Conclusion 34

References 35

Appendices 36

Biography 54

Page 7: Pulse Oximeter

7

LIST OF TABLES & FIGURES

Figure: Page Number:

1: Circulation System 10

2: Light Absorption from Tissues 12

3: Location of LED and Detector 12

4: Isobestic Point 13

5: High Pass filter 15

6: Low Pass filter 15

7: Op-amp & Active Filter 16

8: Voltage Divider & Follower 17

9: Progression of Processing Power 19

10: Basic Code Flow Diagram 20

11: Configuration of LED and Detector 23

12: Schematic of Signal Condition Section 23

13: Pin Diagram for 3 Digit LED Display 24

14: Pin Diagram for 16f88 25

15: Detailed Code Flow Diagram 26

16: Original signal from phototransistor 27

17: Final Signal after conditioning 27

18: Displayed Heart vs. Actual 28

Page 8: Pulse Oximeter

8

INTRODUCTION

Engineering World Health expressed a need for a low cost Pulse Oximeter. Pulse oximeters are

one of the most commonly requested pieces of medical equipment, nearly every patient in US hospitals

uses a pulse oximeter on to monitor their pulse. This is not the case in developing countries; where

equipment such as pulse oximeters are difficult to find (EWH). The purpose of this project is to develop

a pulse oximeter that has a total cost of $8 or less. The primary function of the oximeter will be to

display the heart rate of the patient. Other functions will include an auditory beep on each pulse and a

digital display showing the patient’s heart rate. Calculating oxygen concentration will not be a function

of the oximeter

Pulse Oximetry is a non-invasive way to measure a patient’s heart rate. A sensor is placed on a

thin part of the patient’s anatomy, in this case the finger. On one side of the sensor lies an infrared light

emitting diode (LED), on the other side lays an infrared detector. The LED shines infrared light onto the

finger. While most of this light is absorbed by tissues within the body, a small portion of the light

actually passes through the finger and is picked up by the detector. The detector then converts this light

into an analog voltage signal. As the heart pumps blood through the body, the amount of blood within

vessels will vary. Specifically, during the heart beat, a wave of blood rushes through the vessels. This

increased concentration of blood will absorb more infrared light, allowing even less light to pass through

to the detector. This change in blood concentration will show up in the analog output of the infrared

detector. The output from the detector is then modified to a useful signal, and used to calculate the

patient’s heart rate.

The infra detector used is a phototransistor that is calibrated to pick up light in the infrared

spectrum. 5 volts are applied to the phototransistor. When the transistor is not picking up any light, all

5 volts flow through the transistor. As more light is detected, the voltage that is allowed to flow through

Page 9: Pulse Oximeter

9

decreases, such that in full light almost no voltage passes though. Recall that during each heart beat,

more blood is in each vessel, thus allowing less light to pass through. The change in voltage during a

heart beat is very minute, around 10 milli-volts, but still a change none the less. This voltage drop is

resting on top of a 5 volt DC signal, and is also cluttered with interference. In order to create a usable

signal from this output, it must be run through a series of filters. First the signal is directed through a

high-pass filter, which eliminates the DC portion of the signal, as well as any voltage drop that occurs at

a rate slower than a beating heart. Then the signal is passed through a low-pass filter, which eliminates

any part of the signal that occurs more frequently than a beating heart. Not only do these filters

eliminate unwanted noise in the signal, they also amplify the output. The final product of the signal

processing is a square wave that jumps from 0 to 5 volts when the heart contracts, and then returns to 0

as the heart relaxes.

The goal of this project will be to feed the signal into a microchip or Programmable Interface

Controller (PIC)which calculates the heart rate and then displays it on a simple LED read-out. This entire

ensemble will be housed in a small device that slips over the finger. The device will be constructed from

cheap parts available almost anywhere in the world. This will keep the price low and provide hospitals

all around the world with a valuable tool.

Page 10: Pulse Oximeter

10

BACKGROUND

Blood Flow

The blood flow through the body is called circulation (Human Physiology). The heart connects

the two major portions of the circulation's circuit, the systemic circulation and the pulmonary

circulation. The blood vessels in the pulmonary circulation carry the blood through the lungs to pick up

oxygen and get rid of carbon dioxide, while the blood vessels in the systemic circulation carry the blood

throughout the rest of our body. As the heart pumps it generates pressure because the circulation

system is closed loop, meaning there is nowhere for pressure to escape to. This blood pressure is

defined to be the force exerted by the blood against the vessel wall. It is this pressure caused by the

pumping of the heart that keeps your blood circulating. Every blood vessel in the circulatory system has

its own blood pressure, which changes continually. The term blood pressure is most commonly used to

refer to arterial pressure. Arterial blood pressure rises and falls in a pattern corresponding to the

phases of the cycles of the heart, the cardiac cycle. When the ventricles contract, their walls squeeze the

blood inside their chambers and force it into the pulmonary artery and aorta. As a result, the pressures

in these arteries rise sharply. When the ventricles relax, they begin to fill with blood again to prepare for

the next contraction and the arterial pressure drops. The surge of blood entering the arteries during a

ventricular contraction causes the elastic walls of the arteries to swell, but the pressure drops almost

immediately as the ventricle completes its contraction and the arterial walls recoil. This surge of blood

is entitled the pulse and it occurs every time the heart beats (Human Physiology).

Page 11: Pulse Oximeter

11

Figure 1: Circulation

History of Pulse Oximetry

In 1864 George Gabriel Stokes discovered that hemoglobin is the carrier of oxygen in blood

(Wilson). Then in 1874 Karl von Vierordt uses light to distinguish between blood that is fully saturated in

oxygen and blood that is not. The first oximetry measurements were traced back to the 1930s when

German scientists used spectrophotometers to research light transmission through human skin (Wilson).

In 1939, German researchers reported use of an "ear oxygen meter" that used red and infrared light to

compensate for changes in tissue thickness, blood content, light intensities and other variables.

However, it was not until World War II that interest in oximetry took hold as there was a need to

Page 12: Pulse Oximeter

12

evaluate oxygenation of high altitude pilots. Around that time a British researcher, Millikan, used two

wavelengths of light to produce a practical, lightweight aviation ear oxygen meter for which he coined

the word "oximeter" (History). In 1964, a San Francisco surgeon developed a self-calibrating, 8-

wavelength oximeter that was later marketed by Hewlett Packard in the 1970s. This system was used in

clinical environments but was very large, weighing approximately 35 pounds and had a bulky clumsy

earpiece; it also came with a large price tag of around ten thousand dollars. However, it did allow for

continuous noninvasive monitoring of arterial oxygenation and heart beat.

In the late 1970s, the Biox Corporation in Colorado made significant advances in pulse oximetry.

They first introduced the use of Light Emitting Diodes for the red and infrared light sources (History).

Through the 1980s advances were made in size, cost, and various probing sites. By 1987, the standard

of care for the administration of a general anesthetic in the US included pulse oximetry. From the

operating room, the use of pulse oximetry rapidly spread throughout the hospital, first in the recovery

room, and then into the various intensive care units. Pulse oximetry was of particular value in the

neonatal unit where the patients do not thrive with inadequate oxygenation, but also can be blinded

with too much oxygen. Furthermore, obtaining an arterial blood gas from a neonatal patient is

extremely difficult (History).

Principles of Pulse Oximetry

Pulse Oximetry is based upon the absorption of infrared light by oxygenated hemoglobin.

Infrared light is within the spectrum of 850-1000nm, but oxygenated hemoglobin has a peak absorption

wavelength of around 900nm (Principles). Pulse oximetry uses LED to shine infrared light through a

reasonably translucent site with good blood flow, such as the finger or ear lobe. At the measuring site

there light is constantly absorbed by skin, tissue, venous blood, and the arterial blood. This produces

DC, or Direct Current, portion of the signal because it remains constant. With each heart beat the heart

Page 13: Pulse Oximeter

13

contracts and there is a surge of arterial blood, which momentarily increases arterial blood volume

across the measuring site (Principles). This results in more light absorption during the surge. This

produces the AC, or Alternate Current, portion of the signal because it alternates with the amount of

light. If light signals received at the photo detector are looked at 'as a waveform', there should be peaks

with each heartbeat and troughs between heartbeats. If the light absorption at the trough (which should

include all the constant absorbers, DC portion) is subtracted from the light absorption at the peak then,

the resultants are the absorption characteristics due to added volume of blood only; which is arterial.

Since peaks occur with each heartbeat or pulse, the term "pulse oximetry" was coined (Principles).

Figure 2: shows the various tissues that absorb light, and what causes the variable absorption levels

(Principles).

Figure 3: shows the basic layout of LEDs and Detector on a finger (Principles).

Page 14: Pulse Oximeter

14

Figure 4 shows the isobestic point, point of maximum absorption by HbO2

Signal Processing

A phototransistor is used as the photo detector in this project’s pulse oximeter. A transistor is a

three terminal, solid state electronic device. One can control electric current or voltage between two of

the terminals by applying an electric current or voltage to the third terminal. With a phototransistor the

third controlling terminal is replaced by a light sensitive surface. When light hits this surface, the

Page 15: Pulse Oximeter

15

photons dislodge electrons, these electrons then form a current. This current regulates the amount of

voltage allowed to pass through the transistor. The more light that is collected, the higher the current it

produces. The amount of voltage allowed through the transistor is negatively correlated to the amount

of current produced by the photo terminal. More light, less voltage and vice versa. The phototransistor

is what creates the wave form discussed earlier.

To create the signal that will be used by the PIC, the original output from the phototransistor

must be processed by some filters. These filters are created by arranging resistors and capacitors

appropriately within a circuit. The first filter the signal passes through is a high-pass filter. The simplest

electronic high-pass filter consists of a capacitor in series with the signal path in conjunction with a

resistor in parallel with the signal path. This filter lets frequencies higher than the cut-off frequency pass

through, while reducing the amplitude of frequencies that are lower than the cut-off frequency, which is

defined by the letter f. This filter also eliminates the DC portion of the signal, leaving just the AC

portion, or the “Wave form”. The signal then passes through a low-pass filter, which does the opposite

of the high-pass filter. A low-pass filter allows frequencies below the cut-off frequency to pass, but

reduces the amplitude of those higher than the cut-off frequency. The simplest electronic low-pass

filter consists of a resistor in series with the signal path in conjunction with a capacitor in parallel with

the signal path.

The cut-off frequency of any filter is determined by:

Where f is in hertz, τ is in seconds, R is in ohms, and C is in farads.

A human heart beats anywhere between 1/2-3 Hertz (30-180 BPM). Hertz is defined as number of

cycles per second.

Page 16: Pulse Oximeter

16

Figure 5: Above left shows a simple high-pass filter. Above right shows the amplitude of various

frequencies passed through a high-pass filter (Bigelow).

Figure 6: Above left shows a simple low-pass filter. Above right shows the amplitude of various

frequencies passed through a low-pass filter (Bigelow).

Page 17: Pulse Oximeter

17

The filters discussed above are called passive filters and have a gain of 1. Gain is equal to the

amplitude of Vout/Vin. This means that the filter cannot amplify the signal beyond its original amplitude.

In order to create a usable signal these filters must amplify the 10 mv “wave form” to 5 volts. This can

be achieved by using an active filter, which can have a gain higher than 1. To create an active filter, an

operational amplifier, or op-amp, must be incorporated into each filter. An op-amp is just an amplifier,

which can be integrated into circuits to achieve the outcome that is needed. Op-amps also need an

external power supply so that they may amplify their output. Most op-amps either require +/-5 volts or

+/- 15 volts.

Figure 7: Above left shows an op-amp symbol, the 2 pin represents the inverting input and the 3 pin

represents the non-inverting input. Above middle shows an active high- pass filter. Above right shows

an active low-pass filter. The gain on these filters is calculated as R1/R2. Thus a value of 100k in R1 and

100 in R2 would create a gain of 1000 (Bigelow).

The final product of the signal processing is a 5 volt square wave with the frequency of the heart

beat. The reason for this conditioning is to prepare the signal to be an input to a microchip, or PIC. PICs

are small processors that run the same software whenever they are powered up. PICs are used in many

of today’s digital devices. TV remote controls are operated by PICs, as well as personal music devices

such as iPods. PICs only accept digital inputs, which means it must be binary, i.e. 1s and 0s. The square

wave acts as a digital signal. When the wave is at 0 volts, the input is 0, and then when the wave is at 5

Page 18: Pulse Oximeter

18

volts, the input is 1. The PIC will count each 1 it sees within a certain time span, and then use that

information to calculate the heart rate. Then the PIC will output the heart rate to a 3 digit LED screen.

More on the PIC and LED next semester……

Since this device will be run on batteries, this presents a small problem for the op-amps. Op-

amps need both positive and negative power inputs, such as +5 and -5 volts. Since 4 batteries can only

provide +6 volts, a false ground needs to be set up. This is accomplished by putting a voltage divider in

series with a voltage follower. A voltage divider is a simple linear circuit that produces an output voltage

that is a fraction of its input voltage.

Figure 8: Above left shows a voltage divider. Above middle is the formula used to calculate Vout. Above

right is a voltage follower (Frequency).

Hence if the same resistance is used for Z1 and Z2, then Vout. Is half of Vin. If 6 volts are input

into the divider, then 3 volts come out. These 3 volts are then supplied to a voltage follower. A voltage

follower is another simple application of an op-amp. The signal source is input through the non-

inverting input and then the output is connected to the inverting input. The importance of this circuit

does not come from any change in voltage, but from the input and output impedances of the op-amp.

Page 19: Pulse Oximeter

19

The input impedance of the op-amp is very high, meaning that the input of the op-amp does not load

down the source or draw any current from it. Because the output impedance of the op-amp is very low,

it drives the load as if it were a perfect voltage source. This means that the output from the voltage

follower acts a ground because free electrons will flow towards it. And no matter how much current is

drawn from the follower, the voltage output will always remain the same. This false ground is then used

for the ground on all the op-amps. +6 volts is applied to positive power input and the true ground is

applied to the negative power input. So now each op-amp sees +/- 3 volts.

Micro-processing

The final product of the signal processing is a 5 volt square wave with the frequency of the heart

beat. The reason for this conditioning is to prepare the signal to be an input to a microchip, or PIC. PICs

are small processors that run the same software whenever they are powered up. PICs are used in many

of today’s digital devices. TV remote controls are operated by PICs, as well as personal music devices

such as iPods. PICs only accept digital inputs, which means it must be binary, i.e. 1s and 0s. The square

wave acts as a digital signal. When the wave is at 0 volts, the input is 0, and then when the wave is at 5

volts, the input is 1. The PIC will count each 1 it sees within a certain time span, and then use that

information to calculate the heart rate. Then the PIC will output the heart rate to a 3 digit LED screen.

A microprocessor is defined as a complete computation engine that is fabricated on a single

chip. Microprocessors are also known as the CPU. The first microprocessor was introduced in 1971 and

was the Intel 4004. The 4004 only had 4 bits of memory. Bit is short for Binary digIT, so the 4004 could

only store 4 1s or 0s. A byte is equal to 8 bits. The decimal number system uses a base of 10. The first

digit is 10^0, 2nd digit is 10^1 and so on. Binary number system uses base 2, so the first digit is 2^0, 2nd

digit is 2^1 and so on.

Page 20: Pulse Oximeter

20

0 = 0

1 = 1

2 = 10

3 = 11

4 = 100

5 = 101

6 = 110

7 = 111

8 = 1000

9 = 1001

10 = 1010

11 = 1011

12 = 1100

13 = 1101

14 = 1110

15 = 1111

16 = 10000

17 = 10001

18 = 10010

19 = 10011

20 = 10100

Computers and electronics use the binary system because it is easy to tie into electricity, such

that high is equal to a 1 and low is equal to a 0. Prior to microprocessors, electronics were comprised of

hundreds or even thousands of transistors wired together to form the logic that one microchip can

simulate. The first microprocessor to make it into the home computer was the 8088. This processor

had the equivalent 29,000 transistors and could compute around 650,000 instructions per second, MIPS.

Since the 8088, processors have only become faster. The Pentium 4 has nearly 125 million transistors

embedded in the chip and can computer nearly 7 billion instructions per second (Brain).

Page 21: Pulse Oximeter

21

Figure 9: Progression of processing power

Specifically, this design incorporates a PIC, or "Peripheral Interface Controller". These

processors are produced by the Microchip Company and are perfect for this design because they are

cheap and have wide availability. The specific model used is the 16f88, which contains an 8 bit

processor and 256 bytes of memory. (microchip). The 16f88 has 18 pins, 16 of which can be used for

input and output. Another beneficial aspect of using a PIC is that it uses assembly level code, instead of

a high level programming language such as JAVA or C++. Assembly level, or low level code, is basically

Page 22: Pulse Oximeter

22

instructions directly to the hardware, whereas higher level languages need to be translated by another

program before it is usable by the hardware. This direct relationship between code and hardware

allows for an increase in speed at which the program is executed since it does not have to be translated

(Milo).

Code Breakdown

Figure 10: Basic code flow chart

The code used to calculate heart rate uses an interrupt. An interrupt is a signal indicating the

need for attention or a change in execution. Interrupts are used to avoid wasting time polling for a

specific input. Polling, or busy-waiting, is the active sampling of an external device waiting for a specific

Page 23: Pulse Oximeter

23

input, such as waiting for a high signal to be seen on an input line. Instead of waiting for the PIC to see 4

high pulses, then react, the code uses this time to do other tasks. When the PIC sees the 4th high pulse,

it interrupts. The interrupt pauses the code, and jumps to the interrupt segment, which then deals with

the interrupt. After the interrupt has been dealt with, the code then returns to where it was in the

program right before the instant it was interrupted, then continues on its way. This saves time as the

code does not have to be continually watching for the 4th high pulse and actually increases timing

accuracy.

Another structure used by the code is a lookup table. A lookup table is a list of values that are

retrievable by the code. The values are located in their own row, numbered 1 to the number of values.

The code takes a specified value and then jumps to that number row on the lookup table. Say the

number was 5, the code would jump to row 5 and then return the value located in the row. This is

useful because it can save lots of code and time. Instead of having to do calculations, which can get very

complicated with the limited commands available, the user can do the calculations and then put the

various different outcomes into the lookup table. Thus for each input, the code will jump to the specific

output associated with it. This is how the heart rate is calculated by the code. See appendix for

complete breakdown of assembly level commands.

Page 24: Pulse Oximeter

24

MATERIALS AND METHODS

Materials Needed:

12 20Ω Resistor 1 1 µF Capacitor

1 510Ω Resistor 1 33µF Capacitor

1 1kΩ Resistor 1 150µF Capacitor

2 10kΩ Resistor 1 880nm LED, 100mAmps

1 20kΩ Resistor 1 Silicon Phototransistor 875nm

1 51kΩ Resistor 3 MCP601 8pin Op-amps

1 100kΩ Resistor ¾ inch heater hose

1 16f88

1 3 Digit LED Display

Various lengths of wire

The assembly of the pulse oximeter starts by cutting the heater hose in a 3in long piece. Then

about an inch in on one side drill a hole through both walls of the hose, ensuring that both holes align

with each other. Then place the infrared LED through one hole and the phototransistor through the

other. Make sure the LED is pointing directly at the phototransistor so that they are perfectly lined up.

Page 25: Pulse Oximeter

25

Figure 11: Configuration of LED and Detector

When connecting the Op-amps, connect the positive power pin to +5 volts and the negative

power pin to true ground. Connect the output to an oscilloscope to view the waveform. Then connect

the 3 Digit LED and 16f88 as they are shown below.

Page 26: Pulse Oximeter

26

Figure 12: Schematic of Signal Processing Circuit

Page 27: Pulse Oximeter

27

Figure 13: Pin diagram for 3 Digit LED display

Page 28: Pulse Oximeter

28

Figure 14: Pin diagram for 16f88

Connect the output from the signal processing circuit to pin RBO on the PIC. Place a 1000 Ω

resistor between RA5 and +5. Also connect a normally open switch between ground and RA5; this is to

act as a reset button. Then connect the following pins from the PIC to the LED display with a 200Ω

resistor in between:

Page 29: Pulse Oximeter

29

RB1 => Pin8

RB2 => Pin9

RB4 => Pin12

RA0=> Pin11

RA1=> Pin7

RA2=> Pin4

RA3 => Pin2

RA4=>Pin1

RA6=>Pin10

RA7=>Pin5

Then using MPLAB build the code and then write it to the PIC. The complete code is available in

the appendix. A flow chart of the code used is below:

Figure 15: Detailed flow chart of code

Page 30: Pulse Oximeter

30

RESULTS

Oscilloscope readout of the signal directly from the phototransistor:

Figure 16: This is a very messy and noisy signal. The voltage drop due to the heart beat is around 10 mV

and is mixed in within this signal. After running this signal through the filters it should clean up nicely:

Page 31: Pulse Oximeter

31

Figure 17: It’s important to notice that the resulting wave is a crisp clean square wave from 0-5 volts, this

is the perfect digital input needed for the PIC.

The PIC input was attached to a function generator and a square wave was applied of frequency

between 30 BPM to 180 BPM. The results are shown below:

Figure 18: Graph of Displayed Heart Rate vs. Actual

As shown, the accuracy of the device is within 3 BPM up to 120 BPM. Once there, the accuracy

drops a little, but is still within 7 BPM at most.

Page 32: Pulse Oximeter

32

DISCUSSION

The results from the signal conditioning were exactly as anticipated. The design shows similar

results to other pulse oximetry research. The original signal from the phototransistor was around 10mV

peak to peak.

A report from Texas Instruments shows a similar signal received from their photodiode. The

signal output was described as “a small AC component (around 10mV pk-pk)”. In the Texas Instruments

design they also encountered interference from outside sources. Their signal was then run through a

similar series of filters to receive the desired output before use with their PIC (Chan).

Another project undertaken by students from Duke University shows similar results. The signal

they received from their photodiode was around 20mV peak to peak. They then attempted to process

the signal with various filters, but were unable to achieve their desired result (Bonazza).

Judging from the results of other similar designs, this design seems to be right on track to

completion. The PIC program has been written and is functioning properly. Some issues with the

program are that the reading can sometimes be incorrect if the input signal is not a clean square wave.

Apart from taking a couple months to polish, the code seems to be working great. One area of concern

is the device seems to be very sensitive to patient movement. It is unable to extract a usable signal if

the patient is moving. Also the device seems to have trouble finding a signal if the patient is breathing

heavily. This shouldn’t be an issue assuming the patient is told to remain still and calm during the

sampling period. Overall the project has produced high quality results and has not suffered any

setbacks.

Engineering World Health expressed the need that the total design cost less than $8 . Below is a

discussion of cost:

Page 33: Pulse Oximeter

33

The total cost of the prototype pulse oximeter, without batteries, is $9.48, less than a $1.50

more than the desired cost. If at least 100 units were produced then the cost per unit of the pulse

oximeter could be reduced to fewer than the required $8 dollars without batteries. This is exactly what

Engineering World Health was looking for, so I believe this design to a success. There is no other device

currently on the market that can measure heart rate for fewer than 8 dollars.

Page 34: Pulse Oximeter

34

CONCLUSION

The signal output from the conditioning portion of the device is exactly as needed. This allows

for proper transfer of the signal to a PIC and the calculation of heart rate. The heart rate displayed is

within the acceptable range of accuracy.

As requested by Engineering World Health, the total cost of the pulse oximeter less than eight

dollars. Combined with the fact that it is constructed with easily accessible materials means this project

is a success.

Page 35: Pulse Oximeter

35

REFERENCES

Bigelow, Ken. "High Pass Filters." Play Hookey. 2007. Play Hookey. 11 Dec 2008 <http://www.play-

hookey.com/ac_theory/hi_pass_filters.html>.

Bonazza, Nicholas and Ryan Dobbertien and Ruben De Alba. “Heart Rate Monitor Final Design Document”. BME 261/262-

Design for the Developing World. December 6, 2007

Brain, Marshall. "How Microprocessors Work." 01 April 2000. HowStuffWorks.com.

<http://computer.howstuffworks.com/microprocessor.htm>

Chan, Vincent and Steve Underwood. "A Single-Chip Pulse oximeter Design Using the MSP430." MSP430 Products November

2005 1-11. 15/10/2008 .

Engineering World Health. Design Topics. Oct 11, 2008. http://ewh.org/youth/design_projects.php

"Frequency Response to Filters." Introduction to Filters. Swarthmore University. 13 Dec 2008

<http://www.swarthmore.edu/NatSci/echeeve1/Ref/FilterBkgrnd/Filters.html>.

"History of Oximetry." Oximetry.org. September 10, 2002. Oximetry.org. 13 Dec 2008

<http://www.oximetry.org/pulseox/history.htm>.

"Human Physiology in Space." National Space Biomedical Research Institute. 12 Dec 2008

<http://www.nsbri.org/HumanPhysSpace/focus2/heart-circulation.html>.

Milo, "Introduction to Assembly Language." OSDate. 31/03/2004. OSData.com. 1 May 2009

<http://www.osdata.com/topic/language/asm/asmintro.htm>.

"Principles of Oximetry." Oximetry.org. September 10, 2002. Oximetry.org. 13 Dec 2008

<http://www.oximetry.org/pulseox/principles.htm>.

Wilson, Peter. "Oximeters." Portable Oxygen. 2005. Portable Oxygen. 11 Dec 2008

<http://www.portableoxygen.org/pulseoxone.html>.

Page 36: Pulse Oximeter

36

APPENDICES

CODE:

;-----[ Robot Controller ]-----

list p=16f88

processor PIC16f88

include <p16f88.inc>

;-----[ Definitions ]-----

cblock H'20'

Time

Counter

Digit1

Digit3

Digit2

endc

org 00

goto Initialize

org 04 ; Here if interrupt occurs

goto Int_Routine ; Proceed to interrupt routine

org 0040 ;beginning of main program

;-----[ Initialization ]-----

;-----[ Subroutines ]---------

;---------[ Interrupt Service Routine]----------

Int_Routine

bcf PIR1,2 ;clear peripjheral interrupt flag

bsf INTCON,7 ; allow interruptws

Page 37: Pulse Oximeter

37

clrf TMR1H ; clear timer1 high and low

clrf TMR1L

goto BPM ;find the BPM!!!

retfie

;--------LOOK UP TABLES----------

Table1

addwf PCL

goto Main

retlw B'01000011'

retlw B'00010010'

retlw B'10000000'

retlw B'00000000'

retlw B'11011000'

retlw B'00000000'

retlw B'10000000'

retlw B'01010000'

retlw B'11011000'

retlw B'11011001'

retlw B'00000010'

retlw B'11011001'

retlw B'11011000'

retlw B'01010000'

retlw B'10000000'

retlw B'11011000'

retlw B'00011001'

retlw B'11011001'

retlw B'00010000'

Page 38: Pulse Oximeter

38

retlw B'00000010'

retlw B'00011001'

retlw B'01000100'

retlw B'10000000'

retlw B'00000000'

retlw B'00000010'

retlw B'00010010'

retlw B'01010000'

retlw B'01000100'

retlw B'11011001'

retlw B'00010000'

retlw B'00000000'

retlw B'11011000'

retlw B'00000010'

retlw B'00010010'

retlw B'00011001'

retlw B'01010000'

retlw B'01000100'

retlw B'11011001'

retlw B'10000000'

retlw B'00010000'

retlw B'00000000'

retlw B'00000000'

retlw B'11011000'

retlw B'00000010'

retlw B'00000010'

retlw B'00010010'

Page 39: Pulse Oximeter

39

retlw B'00011001'

retlw B'00011001'

retlw B'01010000'

retlw B'01010000'

retlw B'01000100'

retlw B'11011001'

retlw B'11011001'

retlw B'10000000'

retlw B'10000000'

Table2

addwf PCL

goto Main

retlw B'00010000'

retlw B'11011000'

retlw B'00000010'

retlw B'00011001'

retlw B'01010000'

retlw B'01000100'

retlw B'01000100'

retlw B'11011001'

retlw B'10000000'

retlw B'10000000'

retlw B'00010000'

retlw B'00010000'

retlw B'00000000'

retlw B'00000000'

retlw B'00000000'

Page 40: Pulse Oximeter

40

retlw B'11011000'

retlw B'11011000'

retlw B'11011000'

retlw B'00000010'

retlw B'00000010'

retlw B'00000010'

retlw B'00000010'

retlw B'00000010'

retlw B'00010010'

retlw B'00010010'

retlw B'00010010'

retlw B'00010010'

retlw B'00010010'

retlw B'00010010'

retlw B'00011001'

retlw B'00011001'

retlw B'00011001'

retlw B'00011001'

retlw B'00011001'

retlw B'00011001'

retlw B'00011001'

retlw B'00011001'

retlw B'00011001'

retlw B'00011001'

retlw B'01010000'

retlw B'01010000'

retlw B'01010000'

Page 41: Pulse Oximeter

41

retlw B'01010000'

retlw B'01010000'

retlw B'01010000'

retlw B'01010000'

retlw B'01010000'

retlw B'01010000'

retlw B'01010000'

retlw B'01010000'

retlw B'01010000'

retlw B'01010000'

retlw B'01010000'

retlw B'01010000'

Table3

addwf PCL

goto Main

retlw B'11011001'

retlw B'11011001'

retlw B'11011001'

retlw B'11011001'

retlw B'11011001'

retlw B'11011001'

retlw B'11011001'

retlw B'11011001'

retlw B'11011001'

retlw B'11011001'

retlw B'11111111'

retlw B'11111111'

Page 42: Pulse Oximeter

42

retlw B'11111111'

retlw B'11111111'

retlw B'11111111'

retlw B'11111111'

retlw B'11111111'

retlw B'11111111'

retlw B'11111111'

retlw B'11111111'

retlw B'11111111'

retlw B'11111111'

retlw B'11111111'

retlw B'11111111'

retlw B'11111111'

retlw B'11111111'

retlw B'11111111'

retlw B'11111111'

retlw B'11111111'

retlw B'11111111'

retlw B'11111111'

retlw B'11111111'

retlw B'11111111'

retlw B'11111111'

retlw B'11111111'

retlw B'11111111'

retlw B'11111111'

retlw B'11111111'

retlw B'11111111'

Page 43: Pulse Oximeter

43

retlw B'11111111'

retlw B'11111111'

retlw B'11111111'

retlw B'11111111'

retlw B'11111111'

retlw B'11111111'

retlw B'11111111'

retlw B'11111111'

retlw B'11111111'

retlw B'11111111'

retlw B'11111111'

retlw B'11111111'

retlw B'11111111'

retlw B'11111111'

retlw B'11111111'

retlw B'11111111'

retlw B'11111111'

BPM2

movf CCPR1H,0 ; ignore bpm2/3

clrf PORTB

bsf PORTB,1

movwf PORTA

goto BPM2

BPM3

movlw B'11011001'

movwf Digit1

movwf Digit2

Page 44: Pulse Oximeter

44

movlw B'11111111'

movwf Digit3

goto Display

LED_FLASH

movlw B'00011110' ;flash 888 until interupted

movwf PORTB

movlw B'00000000'

movwf PORTA

call Delay

movlw B'00000000'

movwf PORTB

call Delay

goto LED_FLASH

Display

clrf PORTB ;this is multiplexing for the 3 digit LED

bsf PORTB,1 ; displays lsd

movf Digit1,0

movwf PORTA

call Delay2

bcf PORTB,1

bsf PORTB,2 ;displays middle digit

movf Digit2,0

movwf PORTA

call Delay2

bcf PORTB,2

bsf PORTB,4 ;displays msd

Page 45: Pulse Oximeter

45

movf Digit3,0

movwf PORTA

call Delay2

goto Display

;--------[ Main Program Loop]---------

Main

clrf TMR1L ;clear tmr1 low and high

clrf TMR1H

bcf PIR1,2 ;ckear periphareal interrupt flag

bsf T1CON,0 ;start tmr1

goto LED_FLASH

;gonna put some LED junk in here

BPM

movlw B'00001000'

subwf CCPR1H,0 ;take value from ccpr1h and subract off an amount, so that the smallest value in ccpr1h would result in 1, for the lookup table

movwf Time ;move the calculated value to variable

call Table1 ; call lookup table 1, this is for the least significant digit

movwf Digit1 ;move this value in digit 1 variable

movf Time,0 ;recall the value, and continue on with all the digits

call Table2

movwf Digit2

movf Time,0

call Table3

movwf Digit3

goto Display ;display obtained values

Page 46: Pulse Oximeter

46

Initialize

bsf STATUS,5 ; Bank1

movlw B'00000001' ; PORTB: port 0 = input from ccpm1

movwf TRISB ; port 1-7 output to LED

movlw B'00000000' ; PORTA: port 0-7 output to LED

movwf TRISA ;

movlw B'00000000' ; make all digital

movwf ANSEL

bsf OSCCON, 3 ;system run off internal RC

bsf INTCON,7

bsf INTCON,6 ; set global interupt enable

bsf PIE1,2 ; enables ccpm1 interrupt

bcf STATUS,5

movlw B'00100000' ;sets tmr1 speed

movwf T1CON ; config tmr1`

movlw B'00000110'

movwf CCP1CON ; set to interupt on 4th rising edge

goto Main

Delay

movlw H'FF'

movwf Counter

DelayLoop

Page 47: Pulse Oximeter

47

decfsz Counter,F

goto DelayLoop

return

Delay2

movlw B'00010000'

movwf Counter

goto DelayLoop

16f88 Instruction Set

Page 48: Pulse Oximeter

48

Page 49: Pulse Oximeter

49

Page 50: Pulse Oximeter

50

Page 51: Pulse Oximeter

51

Page 52: Pulse Oximeter

52

Page 53: Pulse Oximeter

53

Page 54: Pulse Oximeter

54

Biography

Lucas Marsh is a Senior Biomedical Engineer at Tulane University. He hails from the great

nation of Texas where he resides in the beautiful city of Austin. In his free time he enjoys eating,

sleeping and spending time with friends and family. After graduation Lucas plans to travel and

eventually settle down and find a job.

Education: Bachelors of Science in Biomedical Engineering Minor in Business Tulane University New Orleans, Louisiana Expected date of graduation: May 2009 GPA 3.1/4 Employment: May 2008-August 2008, Intern Austin Water Utility: Maps and Records Synchronized field records of water intersections with The master online grid. August 2006-Present, Assistant Manager Tulane Mail Operations: New Orleans, LA Receive Packages from couriers, Scan packages into the Network, Deal with spoiled students and their parents Summer 2005-2007, Activity Specialist City of Austin: Parks and Recreation Dept. Worked as a counselor for a Summer Camp and Afterschool care program. Organized games and activities to entertain the children. May 2003-May 2005, Customer Service HEB Grocery: Austin, Texas Assisted customers with their grocery needs. Stocked shelves, performed maintenance, checked customers out Activities/: Distinguished Honors Scholarship, Green Wave Honors Ambassadors, Intramural Racquetball, Biomedical Engineering Honor Society


Recommended