Introduction: Mean Arterial Pressure Sensor

The goal of this project was to build a blood pressure cuff that inflates and deflates automatically and sends pressure readings from a pressure transducer through an Arduino to a CPU. These pressures can then be used in a MATLAB script to calculate mean arterial pressure based on pulsatile waveforms read from the pressure in the cuff.

Mean arterial pressure (MAP) is defined as the average arterial pressure during a single cardiac cycle, and it is a good indicator of blood perfusion to vital organs. The normal range for MAP is 70-110 mmHg, and if an individual has a blood pressure of 120/80, their MAP would be 93 mmHg. MAP can be determined from the pulsatile waveform collected from the pressure transducer because as the cuff is slowly deflated, the blood flowing through the brachial artery under the cuff creates a small increase in pressure in the cuff. This waveform reaches a maximum amplitude at the mean arterial pressure, so we can perform signal analysis in MATLAB to determine at what point the amplitude of the waveform reaches a maximum value.

Step 1: Purchase Materials

Arduino Uno

Pressure Transducer: Honeywell ASDXRRX005PG2A5

Blood Pressure Cuff

5 mm Tubing and compatible Y connector


Voltage Controlled Release Valve



Step 2: Block Diagram

The block diagram represents an overview of the device. The flow of information and signals is indicated by the arrows. More specific discussions of the elements in the block diagram are in the following sections.

Step 3: Set Up the Blood Pressure Cuff, Motor, and Voltage Controlled Release Valve

Use the Y connector to attach the voltage controlled valve, pressure transducer, and on of the blood pressure cuff tube. Connect the motor to the other blood pressure cuff tube. Use a power source to verify that the motor inflates the blood pressure cuff and the release valve slowly deflates it.

Step 4: Set Up the Pressure Transducer

Place the pressure transducer in the breadboard. Connect the pressure transducer to the arduino as shown. Connect the motor (air pump) and release value to the breadboard as depicted.

Step 5: Code for Pressure Transducer

This is the arduino code for converting the output of the pressure transducer into pressures in mmHg. These pressures are then displayed in the serial monitor.

Step 6: Code for Calculating Mean Arterial Pressure

MATLAB code:

My MATLAB code takes the data copied from the output of the serial monitor and assigns it to a vector named “BPdata,” and then plots the waveform. In order to remove the DC effect, we need to run it through a high pass filter. We used a bandpass filter in case there was any high-frequency noise that we wanted to eliminate. We chose cutoff frequencies of 0.5 and 5 Hertz because the frequency of our signal is at the frequency of the patient’s heart rate which is close to 1 Hz. We then applied this filter to the data, and then found the peaks of the filtered data. The maximum amplitude of the waveform occurs at the highest peak, so we found the index of the highest peak and used it to find the mean arterial pressure from our original data.