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 82Next »

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.9411 days 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

AnirudhJ17 days ago

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

birdyberth (author)  AnirudhJ11 days 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???

Here is a project which works with this:

ramcica12310 days 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)  MatheusdeFariass11 days 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.meyad11 days ago

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

Hanaha3 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)  Hanaha11 days 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!

marklaslett3 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)  marklaslett11 days 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.

Garnagar3 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).

birdyberth (author)  Garnagar3 months ago

You need to make a few changes because the arduino's ADC works in the 0-5V range, and the output signal of my circuit is in the -0,5 to 0,5 V range. Use an amplifier with a gain of 5, then add an offset voltage of 2,5V to the output with a voltage divider and a large capacitor.

I can replace the other Diode 1N3064?? because I can not find it

birdyberth (author)  roberth.laureano3 months ago

Yes, pretty any diode will work.

andreagrandi4 months ago

p.s: could you publish the source file for the Fritzing project? I'm trying to re-create it from scratch, but for example I can't find some parts like the INA128 etc... thank you so much :)

birdyberth (author)  andreagrandi3 months ago

Here it is!

andreagrandi4 months ago

Hi and thanks for this amazing tutorial :)

I will build this as soon as possible, I just would like to avoid buying an Oscilloscope and I was thinking about sending the values to the serial port so I can read them from my computer and maybe with a pretty simple Python application I could draw a graph instead of having it drawed by the oscilloscope. Do yoou think it's possible or not? In case is possible where do I read the values from? Thank you so much!

birdyberth (author)  andreagrandi3 months ago

Yes it's possible. For example, you can use the arduino's ADC to digitize the signal and send the data through the serial port, then use an application to display it. In this case, you will need to add an offset voltage to the signal to keep it between 0-5V. Good luck!

aliumujib6 months ago
hi, I'd like to make an electrocardiogram using a heart rate scanner (the types that read heart rate from finger tips) how do I go about it? could you help modify your project for that? my email is , whatsapp +2347045095095
birdyberth (author)  aliumujib3 months ago

Hi, it's called an oximeter and it's based on a completely different measure :

NareshK14 months ago

I couldn't download the coding. Can you please email

MimiK14 months ago

Thanks for the great tutorial! What is the output? (Trying to figure out the gain) Also do you know the specs of the filters? I am looking to adapt the system for use on small animals and need to figure out exactly what needs to be adapted, or if the system will work as you've designed it.

ciarak7 months ago

Hi this is a great project.

I was wondering how I would add more electrodes if I wanted to.


birdyberth (author)  ciarak6 months ago


You could make a duplicate of the circuit for each electrode you want to add. You could use the same reference electrode by connecting all the negative inputs of the instrumentation amplifier together to one electrode, and the positive inputs would be the probing electrodes.

ctle7 months ago

hi there,

great project, i was wondering where you were able to pick up the supplies from? my local store did not carry some of the components such as the amplifier INA128

birdyberth (author)  ctle6 months ago

Hi, I got the INA128 on the internet, I think it was on ebay.

chaitanya11236 months ago

hello.. I have planned to take this circuit up for my college project..and that requires me to design the same circuits PCB layout. Hence, Could you send me the list of exact components used as I will use Eagle software to design the PCB. Also is it okay if I use medical electrodes instead of making the same with household materials. Please contact me as soon as you can on to answer these questions and any further doubts? Merci!

French -

bonjour .. j'ai prévu de prendre ce circuit pour mon collège project..and qui me demande de concevoir la même disposition des circuits de PCB. Par conséquent, Pourriez-vous m'envoyer la liste des composants exacts utilisés comme je vais utiliser le logiciel Eagle concevoir le PCB. Aussi est-il correct si j'utilise des électrodes médicales au lieu de faire la même chose avec des produits ménagers. S'il vous plaît me contacter dès que vous le pouvez sur de répondre à ces questions et d'autres doutes? Merci!

fred_dot_u7 months ago

A great instructable and one for which I have been searching at length. I have an Arduino experimenters kit and probably can knock this out if I collect the parts.

Has anyone constructed this device in PCB form? It would be great to have a simple box with the electrodes and perhaps the O-scope leads extending, to enable easy connection and monitoring. The reliability of a circuit board design means no jumpers to pull out by accident, of course.

Is anyone here handy with circuit routing? Etching a board is a simple matter with a Radio Shack kit or just "stuff on hand" in a lot of cases.

I see that sparkfun has the DSO nano v3 for US$100.00. The site text says the only difference is a metal case rather than plastic.

youss78 months ago

hello dear

can we use Ad620 instead of Ina 128? can u send me the project in french version plz Merci!

monicute9 months ago


This is a really great project, I am planning to do it this weekend.

Is there a problem if I change the inamp (INA128) to the (INA118)?

Merci :)

birdyberth (author)  monicute9 months ago

Désolé, je suis un peu en retard si tu voulais une réponse pour la fin de semaine... :)

Honestly, I don't see the difference between these two, they have the same pinout and after a very quick look, pretty much the same specs. In fact, at the origin I've chosen this model a bit arbitrarily :) It should work fine.

Pendant que j'y pense, si tu veux la version française de mon code, écris-moi!

1-40 of 82Next »