Heart-rate measurement using Arduino

Hello,

I want to make a project for measuring the heart rate from the fingertip and I also want to plot a graph over a period of time using the measurements taken. I have an Arduino Duemilanove and I am interested in what other components should I buy for the project. I know that I need an IR sensor which would send the light to the fingertip and the fingertip would reflect back to the detector but I don't really know how to connect this IR sensor to the Arduino.

I don't what to connect it to a LCD screen or something, I will just make a program on Mac and connect the Arduino to the PC.

Thanks!

How will the IR sensor detect a heart beat?

The oxygenated blood will reflect the light back to the detector and there's a correlation between the heart rate and oxygenated blood.

And skin won't?
You think you can detect the change of oxygen level?

The idea is that when your heart beats you have a quick rush of blood into tiny blood vessels close to your skin which makes it less transparent. This effect is easiest to observe on your finger tips or earlobe. So the IR emitter and phototransistor are placed next to each other (not much light goes through the side of the emitter!) and I put my finger on top. Light from the IR emitter illuminates my skin and is reflected

Have you checked this site (go to root before searching) or googled?

Yes, but I did not really find informations about how should I connect the IR sensor to the arduino.

Hi,

This is similar, but shows a 0ne-piece module with IR LED and IR detector.
http://arduino-info.wikispaces.com/Opto-Switch

You probably want a separate IR LED and IR Phototransistor that you can mount in a way that fits a finger..

In the example above, you probably want to use an Analog input instead of the digital input shown. You can first sample the detector about 100 times per second and graph or examine the data to see the pulses, and then decide what levels to use for pulse detection. You probably want both an upper and lower threshold for a property of "Hysteresis" . You might want to do more sophisticated averaging and tracking to get good pulse data even when the subject moves, parameters change etc..

I will probably source a module like this after Chinese New Year for about $5:

DISCLAIMER: Mentioned stuff from my own shop...

I'm sure no expert, but I'll add my two pence...

I have seen a number of the fingertip blood O2 / Pulse sensors, and they had the LED on one side and the receiver on the other. Thus, the IR light goes through the finger rather than reflect off of it.

Just sayin'

MaJiG:
Thus, the IR light goes through the finger rather than reflect off of it.

That may work better though having the phototransistor on the same side should still work. I have a couple of heart rate monitors on my Android phone. You hold a finger over both the camera lens and the LED flash. The camera detects the slight brightness changes as the blood pulses through the capillaries. Works very well.

@maximm , where are you located? Maybe I can send you one of these when I get them...

@ maximu where you able to solve this... i am working on the same thing and I was wondering if you were willing to share your findings thank you

Hi!

Check out this site Heart rate measurement from fingertip | Embedded Lab for some tips.
http://pulsesensor.com/2011/08/01/anatomy-of-the-diy-heart-rate-monitor/ has a nice guide and code. They also sell complete kits.

Don't forget to buy op-amps!

I tested the circlet from embedded-lab this weekend and it worked good.
I used 2 lm358 op-amps to amplifiy the signals. Maybe not the best op-amp but it works.

The IR-sensor was TCRT5000 (bought 60pcs for 2.7$ on ebay :slight_smile: )

/Olof

@olof_n thank you so much for the information, I tried the code from pulse website but it didn't work for me, I haven't try the one from Embedded Lab but I will review it! Thank you tons!

At first I did not get the code to work either because my signal was to weak.
Check your raw analog signal.

If your signal only go to say 300 you have to change some values in intrerrup.ino.

volatile int P =512;                      // used to find peak in pulse wave
volatile int T = 512;                     // used to find trough in pulse wave
volatile int thresh = 512;                // used to find instant moment of heart beat

Change 512 to your max value. I also added a third op-amp stage to get a stronger signal from the sensor.

/Olof

terryking228:
Hi,

This is similar, but shows a 0ne-piece module with IR LED and IR detector.
http://arduino-info.wikispaces.com/Opto-Switch

You probably want a separate IR LED and IR Phototransistor that you can mount in a way that fits a finger..

In the example above, you probably want to use an Analog input instead of the digital input shown. You can first sample the detector about 100 times per second and graph or examine the data to see the pulses, and then decide what levels to use for pulse detection. You probably want both an upper and lower threshold for a property of "Hysteresis" . You might want to do more sophisticated averaging and tracking to get good pulse data even when the subject moves, parameters change etc..

I will probably source a module like this after Chinese New Year for about $5:

Hi Terry,

Got myself a Chinese Heart-rate sensor but couldn't find any usefull documentation. Have you found any?

Cheers/ Gaudino

DISCLAIMER: Mentioned stuff from my own shop...