Picture of Electrocardiograph & Heart Rate Monitor
This instructable shows you how to make an electrocardiograph and a heart rate monitor. It is intended to be a fun science project only. Of course, it should not serve as a medical purpose.

PLEASE NOTE : To avoid any risk of electric shock, only use battery alimentation. Electrodes are theorically isolated from the circuit by the instrumentation amplifier, but play safe. I'm not responsible for any accident that may happen. 

This is a simple design that fits on a single breadboard. You are free to experiment and to custom it for your needs.

Since it's my first Instructable and also since English is my second langage, don't hesitate to contact me if you find an error or if you want some clarifications about a section or another. I will be happy to edit my project for the better!
Remove these adsRemove these ads by Signing Up

Step 1: List of Materials

Picture of List of Materials
- (1) Instrumentation amplifier INA128
- (1) Operational amplifier 741
- (1) Arduino Uno
- (1) 16x2 characters Liquid crystal display
- (1) Voltage regulator 7805
- (1) 8 ohms mini speaker
- (1) Brigth LED (I use a 10 mm one)
- (1) Diode 1N3064
- (2) 9V Batteries with connectors
-  Breadboard
-  Jump wires
Resistors :
- (2) 100 ohms, 1/4W
- (1) 470 ohms, 1/4W
- (1) 1 kiloohms, 1/4W
- (2) 10 kiloohms, 1/4W
- (2) 100 kiloohms, 1/4W
- (1) 1 Megaohms, 1/4W
Capacitors :
- (1) 10 nF
- (1) 47 nF

For the electrodes :
- About one meter of speaker wire
- Antistatic wrist strap
- Medical tape
- Aluminum paper
- (2) metallic paper clips
- Shower gel (a substitute for electrocardiogram gel)

Optional but recommended:
-Oscilloscope, for the electrocardiography part of the device
1-40 of 102Next »
OrkemY5 days ago


I trıed to use your code and cırcuıt schematıc ın my project. but ıt dıdn't work. I tested components as well everythıng ıs fıne. the problem ıs ıt ıs always showıng below 30 bpm, and LED ıs not blınkınd ıt ıs alwyas on, and on the LCD ıt ıs always showıng "dead". I cannot fıgure out the problem.can you please gıve me any ıdeas ?? Thank you, apprecıate ıt !

SiR31 month ago

Bonjour birdyberth merci pour cet tuto,

j'ai une question pour la masse de circuit: est ce que toutes les masses du circuit sont reliées à l'électrode de référence ou seulement la masse de l'amplificateur qui reliée à l'electrode??

corradini SiR35 days ago

(translation for others:)

"I have a question about the circuit grounding: are all the grounds connected to the reference electrode, or just the amplifier ground?"

nasdly.diaz28 days ago

Hi. thanks you tuto is good, i have a doubt the 741 is used as virtual ground? and I don't understand diode use.

Hi birdyberth,

Could you explain how the Arduino is able to read continuous data such as heart rate through the digital pin even though it's more of an analog signal?

ie. I thought that any data input through the digital pin will either be high/low (on/off) - how are you able to display the ECG wave through the digital pin rather than the analog?

Kind Regards,

SiR31 month ago

Merci birdyberth pour cet tuto, svp est ce que je peux changer l'INA128 par l'AD620?

DusanPaun1 month ago

I dont have an oscilloscope, can I use a programs that simulate oscilloscope on mine PC and still have a real time communication between them two?

ck79sg2 months ago

Hi, I would like to know, what is the purpose of using another OpAmp 741?

Also, can I use OpAmp INA126 instead of using INA128?

birdyberth (author)  ck79sg1 month ago

Hi, you can use the INA126 instead, just adjust the gain resistor to have something similar to my values. The 741 is used as a simple comparator to find the peak of the heartbeat and output a near 5V pulse to the arduino wich acts like a frequency meter.

Hi, I have few enquiries:

(1) I've assembled the circuit, instead of using a oscilloscope to view the waveform, I have connected a digital-millimeter at the filter area. Now, when I remove(disconnect) the digital-millimeter, the LCD Screen will show <30bps, LED stopped blinking and speaker sounding a 'dead' pulse. My friend create another identical circuit and encountered same issue as mine. The only components that we uses different from yours is the diode (1N4001). I read your earlier post, diode should not post any problem.

(2) I've to convert my Arduino codes to Atmel Studio because I'm using a Atmel Development Board, do u have any codes that can run in Atmel Studio? Or do you have any website/guides that can help me?

sathya12851 month ago

Hi i am using ATMEGA-164A can you please explain how to use it?

lovebes1 month ago

On the V- lead at the INA128, Do I just add the GND lead of the 9V battery to it? I don't have a voltage regulator..

please can you send for us the programmation of the arduino= stp donnez nous la programmation de l'arduino

birdyberth (author)  kawtherch.chrigui1 month ago

You can find it in step 3. Or in the attached file.

Merci pour ce tutoriel birdyberth, svp pouvez vous me donner plus d'information sur les électrodes utilisées???

Pourquoi tu as choisi ces amplificateurs ??

est-il possible d'utiliser des électrodes prêts ???

birdyberth (author)  Marwa.Abderrahmene1 month ago

Oui, c'est possible d'utiliser des électrodes commerciales. L'un des buts de cet instructable était de montrer qu'il est possible d'obtenir d'excellents résultats avec des électrodes faits à la main avec des matériaux pouvant s'obtenir facilement. J'ai choisi ces amplificateurs un peu pour la même raison, parce qu'ils sont vraiment pas chers et se trouvent facilement. Vous pouvez essayer d'autres amplificateurs qui ont à peu près les mêmes caractéristiques si vous ne trouvez pas ceux-là, ça ne devrait pas poser de problème.

can i get a pcb layout of this project plz

jekseni.jilty2 months ago
merveozden343 months ago

This is a great project and i prefer make for graduation project.I have resarched it for a long time.I really need more details. Suddenly, researching this site is open. I am very happy. :) Please more detail about this project. :) my email: thank you

How to connect my laptop instead of
birdyberth (author)  prithviraj.jain.943 months ago

With a USB oscilloscope? You need an analog acquistion module.

What is that analog acquisition module?
Can I connect to my laptop using USB and then interpret the graph through a software.

maybe you should try this

maybe you should try this

AnirudhJ3 months ago

could we tweak this a bit to use led and photo detector to detect heart rate?

birdyberth (author)  AnirudhJ3 months ago

No, because the thing you are talking uses a completely different phenomenon. It's called an oximeter.

I want to apply this application to the fetal heartbeat, what is the change needed please and what type electrode used???

Garnagar AnirudhJ3 months ago

Here is a project which works with this:

ramcica1233 months ago

I want to apply this application to the fetal heartbeat, what is the change needed please and what type electrode used???

hello, I'm having problems with the input signal, the display is running very fast, appearing unknown characters, I used a 7905 instead of 7805 to have the negative voltage (5V) when I put the oscilloscope only shows noise, would have problems calculation using ina129? if so need to change the resistors?
birdyberth (author)  MatheusdeFariass3 months ago

Hi, try to change the gain resistor of the ina129 (R1). A lower gain makes it easier to see the signal although it will be noisier and less amplified.

Hello birdyberth

Possible give me the code in Word file , or the program name who to opens the code.

Send Connector software.

Thank you alot...

birdyberth (author)  abdulnasser.meyad3 months ago

Hi, you can open it with any basic text editor or with, of course, the arduino IDE which you can find here :

Hanaha6 months ago

is there a possibility to use your circuit with arduino but only to plug into computer and there draw a ecg in matlab for example ? without display and speaker and other stuff... just body > circuit > arduino > matlab

birdyberth (author)  Hanaha3 months ago

Yes, but you will need to change the circuit and the code. Start with the intrumentation amplifier, and make a circuit to feed the signal into the arduino's ADC, then code the arduino to transmit the data to a virtual com port and finally code a matlab script that plots the ecg. Good luck!

marklaslett6 months ago

This is a great project. Thanks. I am having trouble with reading the circuit diagram. I have a uA741CP and the pin assignments don't seem to match up. What appears to be pin 4 on your diagram reads V+ is Vcc- on the uA741CP data sheet diagram. What appears to be V- on your diagram is Vcc+ on the datasheet. Can you please help me ensure I make the correct connections. Thanks!

birdyberth (author)  marklaslett3 months ago

Hi! Pin 4 on my diagram is Vcc- and pin 7 is Vcc+. Use basic logic and if unsure, check the voltages with a multimeter before putting the chip.

Garnagar6 months ago

Hi, really great project!

I was wondering if it is possible to read anlog signal from electrodes by just pluging input cable into analog input on Arduino or I need to make more changes? Thank you very much (and sorry for noob qestion).

1-40 of 102Next »