Optical Heart Rate Monitor

9,833

Circuit Image

This application note describes the creation of a heart rate monitor utilizing an infrared (IR) LED and a phototransistor pair, with the waveform observed at the output of the phototransistor. The purpose of this project is to demonstrate a typical light sensor application rather than for actual medical use. An accompanying video illustrates the low-level signals involved in this circuit and how the dynamic range of a 24-bit ADC EMANT300 USB DAQ enables the observation of these signals without additional signal conditioning. When a finger is placed on the phototransistor, the voltage reading increases above 0.3V. With good contact, a sinusoidal signal is observed, superimposed on a fluctuating DC signal, resulting in a simple differential signal. Mathematically, it is known that the differential value is zero at the maximum or minimum points. An autocorrelation function is then applied to extract the peaks and calculate the heart rate. If the signal is noisy, incorrect BPM readings may occur, which are disregarded. This process is managed by the HRM class, written in C#, which can be enhanced using Visual C# 2005 Express. The figure below displays the filtered waveform observed at the phototransistor, with the waveform being processed through software averaging.

The heart rate monitor circuit employs an infrared LED and a phototransistor to detect variations in light intensity caused by blood flow in a fingertip. The IR LED emits infrared light, which penetrates the skin and reflects back to the phototransistor. The amount of light received by the phototransistor varies with the pulsation of blood, leading to changes in the output voltage.

The circuit is designed to amplify and filter the weak signals generated by the phototransistor. The output is connected to a 24-bit ADC, specifically the EMANT300 USB DAQ, which is capable of capturing low-level signals with high precision. This allows for effective digitization of the analog signal without the need for extensive external signal conditioning.

The software component of the heart rate monitor includes a class written in C#, which is responsible for processing the data collected from the ADC. The class implements algorithms for noise reduction and peak detection. It utilizes an autocorrelation function to identify the periodic peaks in the signal corresponding to heartbeats. The peaks are analyzed to compute the beats per minute (BPM) value. Any readings that deviate significantly from expected values due to noise or interference are filtered out to ensure accuracy.

The output waveform, as depicted in the accompanying figure, is subjected to software-based averaging to enhance signal clarity. This filtering process helps in minimizing the impact of noise, allowing for a more reliable heart rate measurement. Overall, the design illustrates a practical application of light sensors in biomedical monitoring, showcasing the integration of hardware and software in developing a functional heart rate monitoring system.In this application note, we create a heart rate monitor by using one IR LED and phototransistor pair and observing the waveform at the phototransistor output. This is intended for illustrating a typical light sensor application and not intended for actual medical use.

The accompanying video also shows the typical low level signals involved in this type of circuit and how the dynamic range from a 24 bit ADC EMANT300 USB DAQ allows such signals to be observed without further signal conditioning. When a finger is placed on the phototransistor, the voltage read rises above 0.3V. If a good contact is made, a sinusoidal type signal is observed. As the signal rides on a fluctuating DC signal, a simple differential signal is created. From maths, we know that when a max or min is reached, its differential value is zero. After this an autocorrelation function is applied and the peaks extracted to obtain the heart rate. When the signal is noisy, a wrong BPM will be calculated. Any count that is obviously wrong is ignored. This is all taken care of by the HRM class. The HRM class is written in C#. You can improve on it using the Visual C# 2005 Express. The figure below shows the filtered waveform seen at the phototransistor. The waveform is filtered by software using averaging. 🔗 External reference