Professional Documents
Culture Documents
Guide
Prof. S.P Mahajan
( E & TC Dept, C.O.E.P)
Acknowledgements:
The diagram above shows how our device is operated. The user will use
buttons to control the operations of the whole system. The MCU is the main
component that controls all the operations such as motor and valve control, A/D
conversion, and calculation, until the measurement is completed. The results are
outputted through the LCD screen for the user to see.
Concept of Blood Pressure:
Usually when the doctor measures the patient's blood pressure, he pumps air
into the cuff and uses stethoscope to listen to the sound of flow of blood in the
artery of the patient's arm. At the start, the air is pumped until the pressure inside
the cuff blocks the artery completely and no blood flows through it. Now, the
doctor opens the valve manually and releases the air inside the cuff at a steady rate.
Systolic pressure point: The pressure point at which the blood starts flowing
through the artery ‘in pulses’, when the air in the handcuff is released gradually is
called Systolic Blood pressure. Normal systolic reading is 120mm of Hg.
Diastolic pressure point: The pressure point at which the blood flow in the
artery becomes streamline (i.e. smooth flow) is called Diastolic Blood pressure.
Normal diastolic reading is 80mm of Hg.
1) Pressure Transducer
2) DC Amplifier
Since the output voltage of the pressure transducer is very small, we have to
amplify the signal for further processing. We use the instrumentation amplifier
AD620 from Analog Devices. The resistor RG is used to determine the gain of the
3) Band-pass Filter
The band-pass filter stage is designed as a cascade of the two active band-
pass filters. The reason for using two stages is that the overall band-pass stage
would provide a large gain and the frequency response of the filter will have
sharper cut off than using only single stage. This method will improve the signal to
noise ratio of the output. The schematics for both filters are shown in figure 3.
Band-pass filter :
Thus, the overall gain is 360. Combining this gain with the gain from the
DC amplifier, the total AC gain for the circuit is 64,800.The choice of high and
low cut-off frequency is good enough to give us very clean AC waveform.
4) AC coupling stage
The ac coupling stage is used to provide the DC bias level. We want the DC
level of the waveform to locate at approximately half Vcc, which is 2.5 V. The
schematic for AC coupling stage is shown in figure 4. Given this bias level, it is
easier for us to process the AC signal using the on-chip ADC in the micro-
controller.
The block diagram for the operating control is consisted of a total of 4 states.
We first start at the START state where the program waits for the user to push the
button-1 of the device. Once the button-1 has been pushed, the measurement
process begins by inflating the hand cuff. While the cuff is being inflated
smoothly, the air will be pumped into the cuff until the pressure inside the cuff
reaches 160 mmHg. After that, the motor will be stopped and the air will be slowly
released from the cuff. Once the MCU has obtained the values of systolic, diastolic
and heart rate, the valve will be open to release air from the cuff quickly. Then it
will report the result of the measurement by displaying the obtained data on the
LCD screen. After that if the Button-1 is pushed the program will return to the
START state again waiting for the next measurement. Note that if the emergency
button is pushed, the black button needs to be pushed in order to return to the start
state.
Once the motor pumps the air into the cuff until the pressure exceeds 160
mmHg, the motor then stops pumping more air and the cuff is deflated through the
slightly-opened valve. The pressure in the cuff starts decreasing approximately
linearly in time. At this point, the program enters the measurement mode. The
MCU will looks at the AC signal through the ADC0 pin and determines the
systolic, diastolic pressure values and the heart rate of the user respectively. For
this project, we perform the measurement using the oscillometric method, in which
the program monitors the tiny pulsations of the pressure in the cuff. The state
diagram of the measurement is shown in figure 6
The way we program this is that we set a threshold voltage of 3.25V for the
AC waveform. At the start, there is no pulse and the voltage at the ADC0 pin is
constant at approximately 2.5 V. Then when the pressure in the cuff decreases until
it reaches the systolic pressure value, the oscillation starts and grows. We then
count the number of pulses that has maximum values above the threshold voltage.
If the program counts up to 4,it records the DC voltage from pin ADC1. Then it
converts this DC voltage value to the pressure in the cuff to determine the systolic
pressure of the patient.
From the transfer characteristic of the pressure transducer and the measured
gain of the DC amplifier, we can determine the systolic pressure by looking at the
DC voltage of the ADC1 pin. We will explain the conversion procedure here. Let's
the DC voltage that we read off of the ADC1 pin be ‘DC_voltage', and the gain of
the DC amplifier be ‘DC_gain'. Then the differential voltage that comes out of the
DC amplifier is calculated as
From the pressure transducer's transfer characteristic given in figure 1 in the circuit
design part, we can calculate the pressure based on the transducer_voltage. The
slope of the typical curve is calculated as
Thus, the pressure in the cuff in the unit of kPa can be calculated as
.
Combining these conversions all together, we obtain the formula for converting the
DC voltage to the pressure in the cuff as
After the program finishes this calculation, it enters the Rate measure state
to determine the pulse rate of the patient.
After the pulse rate is determined, the program enters the Diastolic Measure
state. Here we define the threshold for the diastolic pressure. While the cuff is
deflating, at some point before the pressure reaches diastolic pressure, the
amplitude of the oscillation will decrease. To determine the diastolic pressure, we
record the DC value at the point when the amplitude of the oscillation decreases to
below the threshold voltage. This is done by looking at the time interval of 2
seconds. If the AC waveform does not go above the threshold in 2 seconds, it
means the amplitude of the oscillation is actually below the threshold. The DC
value can then be converted back to the pressure in the arm cuff using the same
procedure as described in the Systolic Pressure Measurement section.
After the program finishes calculating the diastolic pressure, it will display
the information acquired from the measurement on the LCD. Then the program
will open up the valve and the cuff will deflate quickly. The measurement ends at
this point of execution.
Component selection criteria:
Parameters we considered:
2) Offset voltage:
We want offset voltage of sensor very low compared to its full scale
output voltage. MPX2053 has offset voltage value of 0.1mv, which is tolerable
in our case.
4) Sensitivity:
Parameters considered
1) Maximum Gain:
2) Offset voltage:
C) Selection of op-amp:
Ic selected- 741
Parameters considered:
1) Cost:
This ic is very cost effective as substitute for this ic i.e. opa277 costs
around Rs.550. approximately 100 times more than 741 which also gives
desired output.
1) Pressure sensor:
2) AD620:
Aesthetic consideration:
Location of motor:
1) Switches:
a) power on
b) reset
2) LCD display :
/*****************************************************
Project :
Version :
Date : 27/03/2008
Author : F4CG
Company : F4CG
Comments:
*****************************************************/
#include <mega32.h>
#include<stdio.h>
#include<stdlib.h>
#asm
#endasm
#include <lcd.h>
#include <delay.h>
delay_us(10);
ADCSRA|=0x40;
ADCSRA|=0x10;
return ADCH;
int c4,c5,c6;
int threshold1,j;
int temp,threshold2,dia;
unsigned char adc0,adc1;
float p,p1,p2,p3,p4;
char lcd_output[17];
int sys,state;
void init();
void rate();
void diastolic();
void systolic();
void deflate();
void main(void)
// Port A initialization
PORTA=0x00;
DDRA=0x00;
// Port B initialization
PORTB=0x00;
DDRB=0xff;
// Port C initialization
PORTC=0x00;
DDRC=0x00;
// Port D initialization
PORTD=0x00;
DDRD=0xff;
// Timer/Counter 0 initialization
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
TIMSK=0x00;
ACSR=0x80;
SFIOR=0x00;
// ADC initialization
ADCSRA=0x84;
lcd_init(16);
init();
while (1)
{
p1=0;
p2=0;
PORTB=0x03;
lcd_clear();
// while ((int)p2<170)
for(c4=0;c4<50;c4++)
delay_ms(19);
if(c4%5!=0)
adc1=read_adc(1);
p2=(int)adc1;
//p=p2*5/256;
p3=p2*1.25;
if(p1<=p2)
lcd_gotoxy(0,0);
lcd_puts(lcd_output);
// sprintf(lcd_output," p= %-i",p);
// lcd_gotoxy(1,1);
// lcd_puts(lcd_output);
//
sprintf(lcd_output,"%-i",(int)p3);
lcd_gotoxy(1,5);
lcd_puts(lcd_output);
p1=p2;
else
p2=p1+1;
sprintf(lcd_output,"%-i",(int)p2);
lcd_gotoxy(1,1);
lcd_puts(lcd_output);
p1=p2;
PORTB=0x02;
delay_ms(50);
// adc_data1=(float)(((float)adc1)/256*5)+ 10;
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("deflating");
for(j=0;j<370;j++)
switch(state)
case 1: systolic();
break;
case 2 : rate();
break;
case 3: diastolic();
break;
case 4:deflate();
PORTB=0x00;
delay_ms(500);
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts(lcd_output);
lcd_gotoxy(0,1);
lcd_puts(lcd_output);
delay_ms(250);
};
void deflate()
PORTB=0x00;
delay_ms(5);
void init()
state=1;
p4=0;
temp=100;
threshold1=135;
sys=830;
threshold2=120;
dia=840;
c5=0;
c6=0;
lcd_clear();
lcd_gotoxy(0,0);
delay_ms(10);
}
void systolic()
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("systolic");
delay_ms(100);
adc0=read_adc(0);
p=(int)adc0;
while(c5<4)
if(p>threshold1)
c5++;
if(c5>=4)
adc1=read_adc(1);
temp=(int)adc1;
sys=temp*1.25;
state=2;
}
}
void diastolic()
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("diastolic");
delay_ms(4);
adc0=read_adc(0);
p4=(int)adc0;
if(p4<threshold1)
c5++;
if(c5>=10)
adc1=read_adc(1);
temp=(int)adc1;
dia=temp*1.25;
state=4;
void rate()
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("rate");
delay_ms(4);
c6++;
if(c6>200)
state=3;
// void rate()
// {
// c6++;
// delay_ms(4);
//
// if (p>treshold)
// {
// count++;
// }
//}
Results:
The results of the project are as expected. If the user maintains a correct
posture, during the operation, the device can measure blood pressures (both
systolic and diastolic) and heart rate without any problem.
1) Duration of measurement
From the start until all the measurements are done, it takes about 1.5
minutes. However, this also depends on each individual and how the cuff is worn.
For each person, the amplitude of the waveforms may differ causing the
operating time to vary. Still, the difference is small and is usually within 10
seconds.
2) Accuracy
Regarding the three result values (systolic, diastolic and heart rate),
some of them have more success rate than the others. For the heart rate, the
success rate is very high for getting an accurate value. To find the heart rate, we
need to find the period of the AC waveform. And since the period of heart rate
stays pretty much constant through out the measurement, it is relatively easy to
obtain an accurate result. To find the pressure values, however, are harder
because they depend on the amplitude of the waveform, and the amplitude
varies a lot during the measurement. However, if the user stays still and wears the
cuff right, the measurement are usually successful 8 time out of 10 tries (80%
success rate).
3)Safety in Design
5) Usability
The cuff that we use is appropriate for the average adult arm size (9-
13 inches in circumference). Thus the arm size that is out of this range may not
give the accurate measurement. Due to our budget constraints, we do not have
many cuff size for our project
Conclusions:
1) Analysis and expectations
So we fixed this problem by separating the battery that runs the valve
and motor from the rest of the circuit. Then we use the battery that supplies the
MCU board to power the circuit instead. Now that the battery that supplies the
valve and the motor is separated, it ensures that there will be no voltage drop in
the circuit while the motor is running. This way, the power consumption of the 2
batteries will be more balanced, since the circuit and the MCU do not consume
much power.
All the circuits and the codes are originally designed by us. The
topologies of the circuits are the one discussed in standard textbooks.
Cost:
Data Sheets