Introduction: PulseSim - Photoplethysmograph (Heartbeat) Analog Simulator

About: Graduate student at Purdue University, biomedical engineer, electronics enthusiast, educator, trying to learn a little about engineering and programming

The volume of blood in our fingers changes at different parts of the cardiac cycle (heartbeat). Immediately following ventricular contraction (when the heart pumps blood out of the ventricles and to the rest of the body), the volume of blood in the fingers increases slightly. This change in blood volume can be measured using finger photoplethysmography. In this technique, an LED shines light through a person's finger and a photodiode measures the amount of light that passes through the finger. The amount of light that hits the photodiode will change due to the change in blood volume in the finger. Interestingly enough, if we plot intensity of light vs time, we get a very characteristic waveform (here and here). The initial sharp rise of our pulse waveform indicates the systolic phase (aotric and ventricular contraction). The smaller secondary peak occurs due to the closure of the aortic valve at the end of the cardiac cycle. This smaller peak is called the dicrotic notch.

In this Instructable, I will show you how to recreate the pulse waveform using basic circuit components (resistors, capacitors, transistors, and op amps) without the use of a microcontroller. I didn't have much inspiration for doing this other than I love finding excuses to play with circuits and I just wanted to see if I could do it. ;) I thought about putting it together a little more to make it some sort of educational tool. I was thinking the circuit could be tweaked in order to show students how the waveform changes when someone has some sort of ailment that messes with their cardiac cycle. I'm not sure if I will still get around to doing that, but I thought I would share my progress thus far. MattDougan and I made this in a bit of a competition to see who could do this better. I won by the way. Lol.

*****NOTE: This is NOT a medical device.

Step 1: Gather Your Tools

*****NOTE: This is NOT a medical device.

5 x TL072 amplifiers

2 x PN2907A transistor
1 x 2N2222A transistor

2 x 1N4148 diode

2 x 30k resistor
12 x 10k resistor
1 x 3.3M resistor
1 x 1.5M resistor
4 x 150k resistor
1 x 47k resistor
1 x 1k resistor

5 x 1uF capacitor
1 x 10uF capacitor
1 x 100nF capacitor
1 x 4.2uF capacitor

2 x 9V batteries

I attached the schematic file so everyone can take a closer look. The screenshots may not be high enough resolution.

Also, the 4.2uF capacitor in the sawtooth wave generator sets the frequency of the sawtooth. In order to get 1Hz pulse (60 beats per minute), I used the 4.2uF cap. Feel free to play around with the value to get faster or lower pulses.

The 3.3M resistor and 100nF capacitor of the square oscillator set the frequency of the sine wave (dicrotic notch). This should match the frequency of the sawtooth wave generator. Feel free to play around with this value as well.

Step 2: Systolic to Diastolic Phase - Sawtooth Wave Generator and Inverter

The first part of our simulator is the sawtooth wave generator. I found a really simple circuit from YouTuber w2aew. If we look at a characteristic pulse waveform, there is a sharp rise at the beginning of a waveform due to the systolic phase and then a slow drop off (diastole). A sawtooth wave is an inverted version of this with a sharp drop off and a slow rise. As a result we generate a sawtooth wave and then put it through an inverting amplifier which flips our waveform.

The sawtooth waveform fits the idea of what we want for the pulse waveform (sharp rise, slow drop off), but it is too sharp. The pulse waveform, as you can see from the earlier picture, is smooth and curved. The sharp rise and sharp transition from rising to falling are really high frequency components. In order to remove the sharp transitions, we will use a low-pass filter. I used a cut-off frequency of 5.3 Hz, but feel free to play around with that value to see what cutoff makes your waveform simulator look good.

Step 3: Dicrotic Notch - Sine Wave Generator

Another characteristic feature of the pulse waveform is the secondary pulse called the dicrotic notch. The dicrotic notch is sinusoidal-looking, so we will use a sine wave generator to recreate it. I found a simple sine wave generator online that appears to work fine. I used a square wave oscillator circuit and then a square to sine wave filter circuit to create the sine waveform.

Step 4: Signal Mixer

The next part requires putting the two signals (inverted sawtooth wave and the sine wave) together. For this, I used an inverting summer. An inverting summer, just as the name suggests, sums the sawtooth and sine wave together.

Step 5: You're Done!

Your simulator is finished.

I have found that the signal generators have a bit of drift which causes our simulator to get a bit distorted. You could improve this by using higher accuracy capacitor and resistor values in the sawtooth and sine wave generator. Other than that show your creation off, put it in a nice enclosure, or do whatever. Feel free to follow the project's GitHub repo for future updates.

Until the next project, happy building!

Step 6: Visual Output

I added a heart-shaped LED output to visualize the pulse. I made this for an earlier project. The visual output uses a peak detector circuit (learn more here) and a comparator (learn more here). The peak detector finds the highest pulse and compares the highest pulse to subsequent pulses.

*****NOTE: This is NOT a medical device.