Pulse Transit Time for Cuff-less BP from ECG and PPG

Pulse Transit Time for Cuff-less BP from ECG and PPG © MIT

MAX86150 puts ECG and SPO2 on a single chip, opening new opportunities for calculation of pulse transit time and indirect blood pressure.

  • 41 respects

Components and supplies

Apps and online services

About this project

Measuring blood pressure traditionally involves a nurse or the doctor placing an inflatable handcuff to somewhere above your elbow, asking you to breathe in and out. They then use a stethoscope to understand the timing of the measure. If you happen to have one of those digital Blood pressure meters at your home, you already know the poor accuracy. This is by no means a continuous or consistent measure of blood pressure !

Cuff less BP measurement has always been a challenge. There are a wide variety of studies where several methods were developed for cuff-free BP measurement and one among them which showed great potential is PTT or Pulse Transit Time, which acts as an indicator of Blood Pressure. Pulse Transit Time in simple words is the time taken by a pulse wave to propagate from heart to the point where reading is taken, in our case the finger tip.

Maxim Integrated recently released the MAX86150, a biopotential sensor which gives both Photoplethysmogram (PPG) and Electrocardiogram (ECG) simultaneously sampled. According to clinical studies, we can measure PTT(Pulse Transmit Time) which is a measure of our blood pressure using ECG and PPG waveforms.

What did we do?

At ProtoCentral, we are passionate about pushing the boundaries of DIY and affordable health. So we made a breakout board of this little sensor, which can be connected to any micro-controller using a simple I2C interface with easy-to-use ECG pads on which you can record ECG from your fingers.

What does the ProtoCentral MAX86150 Breakout bring to the table?

  • MAX86150 Sensor:
  • Ergonomically Designed Dry ECG On board Electrodes:
  • 1.8 and 3.3 V onboard voltage regulators:
  • Level Trigger MOSFET's for SDA and SCL lines. Interrupt line provided as part of the header.
  • Jack connection for connecting ECG electrodes: The connection automatically shifts from pads to the jack, as soon as it is connected. The connection shifts to the onboard pads as the jack is disconnected.
  • QWIC connectors for hassle free I2C connection

How to use it?

You can plug in this breakout board just like how you plug in I2C devices to an Arduino Uno using jumper wires or use QWIIC connectors for a quick connection !

Arduino connect to BreakoutBoard





You can get our Arduino libraries for the MAX86150 here or you can install it from the Arduino IDE's libraries page. Once installed, check out our examples:

You can either use the Arduino IDE's built-in serial plotter utility or use something like ProtoCentral OpenView to look at the ECG and PPG waveforms.

Measuring PTT intervals

This functionality is not currently built into the current version of our Arduino library, but will be in the future. Meanwhile, we used Python to calculate the PTT peak and foot intervals of each segment of ECG-PPG that is measured simultaneously by the MAX86150 breakout board.

Below is quick run through of the code.

For each R peak detected, we discovered the following trench and peak of the processed PPG signal. The time intervals are obtained using the sampling frequency.

PTT is often inversly proportional to BP. Though there are several limitations of using PTT to measure ecg, this board opens a platform to work on those limitations.

Note: There is still work to be done to accurately calculate PTT intervals, watch this space for updates on this project.


Arduino library for the ProtoCentral MAX86150 breakout



Similar projects you might like

Single-lead ECG & Heartrate Variability using MAX30003

Project showcase by Team ProtoCentral

  • 17 respects

Arduino Heart Beat with ECG Display & Sound

Project tutorial by DIY GUY Chris

  • 29 respects

Open Source Pulse Oximeter for COVID-19

Project tutorial by Arduino “having11” Guy

  • 141 respects

Using the MAX30100 wearable pulse sensor with Arduino

Project tutorial by Team Protocentral

  • 25 respects
Add projectSign up / Login