资源描述
光电脉搏测量仪设计报告
一、 设计意义
从脉搏波中提取人体的生理病理信息作为临床诊断和治疗的依据,历来都受到中外医学界的重视。目前医院的护士每天都要给住院的病人把脉记录病人每分钟脉搏数,方法是用手按在病人腕部的动脉上,根据脉搏的跳动进行计数。为了节省时间,一般不会作1分钟的测量,通常是测量10秒钟时间内心跳的数,再把结果乘以6即得到每分钟的心跳数,即使这样做还是比较费时,而且精度也不高,因此,需要有使用更加方便,测量精度更高的设备。
二、 关键技术
脉搏检测中关键技术是传感器的设计与传感器输出的微弱信号提取问题, 本文设计的脉搏波检测系统以光电检测技术为基础,并采用了脉冲振幅光调制技术消除周围杂散光、暗电流等各种干扰的影响。并利用过采样技术和数字滤波等数字信号处理方法,代替实现模拟电路中的放大滤波电路的功能。本系统模拟电路简单,由ADC841芯片实现脉搏信号采集,信号处理和脉搏次数的计算等功能,因此体积小,功耗低,系统稳定性高。本系统可实现脉搏波的实时存储并可实现与上位机(PC 机)的实时通讯, 因此可作为多参数病人中心监护系统的一个模块完成心率检测和脉搏波形显示。
三、 硬件设计
3.1 设计框图
外部中断信号
光电传感器
低通放大器
比较和整形
单片机
STC89C51
液晶显示电路
外部晶振
光电脉搏测量仪是利用光电传感器作为变换原件,把采集到的用于检测脉搏跳动的红外光转换成电信号,用电子仪表进行测量和显示的装置。本系统的组成包括光电传感器、信号处理、单片机电路、数码显示、电源等部分。脉搏测量仪硬件框图如图1所示。
图1 光电脉搏测量仪方框图
当手指放在红外线发射二极管和接收三极管中间,随着心脏的跳动,血管中血液的流量将发生变换。由于手指放在光的传递路径中,血管中血液饱和程度的变化将引起光的强度发生变化,因此和心跳的节拍相对应,红外接收三极管的电流也跟着改变,这就导致红外接收三极管输出脉冲信号。该信号经放大、滤波、整形后输出,输出的脉冲信号作为单片机的外部中断信号。单片机电路对输入的脉冲信号进行计算处理后把结果送到数码管显示。
3.2脉搏信号采集与放大整形
目前脉搏波检测系统有以下几种检测方法:光电容积脉搏波法、液体耦合腔脉搏传感器、压阻式脉搏传感器以及应变式脉搏传感器。近年来, 光电检测技术在临床医学应用中发展很快, 这主要是由于光能避开强烈的电磁干扰, 具有很高的绝缘性, 且可非侵入地检测病人各种症状信息,具有结构简单、无损伤、精度高、可重复好等优点。用光电法提取指尖脉搏光信息受到了从事生物医学仪器工作的专家和学者的重视。
3.2.1脉搏信号介绍
由于光电传感器所输出的信号波源强度比较弱,且为类似于正弦波波形,如图2所示,所以对信号进行放大整形处理,使其以较强方波形式输出。
图2 脉搏仿真信号正弦波
3.2.2 放大整形电路
图3 信号采集放大整形电路
图4为正弦信号通过放大整形电路之后得到的方型波。
图4整形后的方波
图5 脉搏信号对比
3.3单片机处理电路
如图6所示,本部分运用了89C51单片机作为核心元件,在这里运用单片机能更快更准确地对数据进行运算,而且可以根据实际情况进行编程,所用外围元件少,轻巧省电,故障率低。
来自传感和整形输出电路的脉冲电平输入单片机89C51的P3.5/T1引脚,单片机设为下降沿中断触发模式,故每次脉冲下降沿到达时触发单片机产生中断并进行计时,来一个脉冲脉搏次数就加一;定时器中断主要完成十秒钟的定时功能。单片机对十秒钟内的脉冲次数进行累加并进行计算得出所测人一分钟的脉搏次数,通过P0、P2口把测量过程和结果送到数码管显示出来。
图6 单片机处理电路
3.4显示电路
显示部分采用SMC 1602液晶屏进行数据显示,其主要技术参数如表1所示。
表1 液晶屏技术指标
接口信号说明如表2所示。
表2 液晶屏接口信号说明
与单片机接口电路如图7所示。其中J2的3脚为背光引脚,R9和R10电阻用于调节背光亮度。J2的4、5、6引脚分别接液晶的RS、E/W和E控制引脚,J2的7—14引脚为数据引脚。
开始
初始化
外部中断计数
显示程序
图7 LCD与单片机接口电路 图8主程序流程图
四、软件编程
4.1 软件流程图
系统初始化之后, 进行定时器中断、外部中断、显示等工作,不同的外部硬件控制不同的子程序。流程如图8所示。
4.2 定时器中断程序流程
定时器0中断进入
定时器初始值设置
到1S?
到10S?
处于检测?
保存脉搏数
返回
继续计时
按键检测
N N
Y
Y
Y
定时器中断服务程序由十秒钟钟计时、按键检测、有无测试信号判断等部分组成。当定时器中断开始执行后,对十秒钟开始计时,50ms计时到之后继续检测下50ms,直到10s到了再停止并保存测得的脉搏次数。同时可以对按键进行检测,只要复位测试值就可以重新开始测试。主要完成一分钟的定时功能和保存测得的脉搏次数。流程如图9所示。
图 9 定时器中断程序流程图
4.3 INT中断程序流程
外部中断服务程序完成对外部信号的测量和计算。外部中断采用边沿触发的方式,当处于测量状态的时候,来一个脉冲脉搏次数就加一,由单片机内部定时器控制十秒钟,并通过计算得出一分钟内的脉搏次数。流程如图10所示。
外部中断0进入
处于检测?
脉搏数+1
返回
等待按键按下
Y
图10 INT中断程序流程图
4.5 源程序
#include<reg52.h> //头文件
#define uchar unsigned char
#define uint unsigned int
uchar code table[]="Your Pulse-Rate";//15字符
uchar code table1[]=" About "; //7字符
uchar code table2[]="0123456789"; //显示3字符
uchar code table3[]=" /Min";//5字符
sbit lcden=P3^4; //液晶使能端
sbit lcdrs=P3^5; //液晶数据命令选择端
sbit key=P3^3;
uchar count,num; //定义计数值
uint n;
void delay(uint z) //延时子函数
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_com(uchar com) //液晶显示器写命令函数
{
lcdrs=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_data(uchar date) //液晶显示器写数据函数
{
lcdrs=1;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void init() //初始化函数
{
TMOD= 0x21; //设置定时器模式
TL0 = 0x00; //设置定时初值
TH0 = 0xDC; //设置定时初值
TL1=0xFd; //9600波特率的初值,板子使用12M晶振,初值=256-11059200/32/11.0592/9600
TH1=0xFd; //
EA=1;
TR1=1; //启动波特率发生
SCON=0x50; //设置串口方式2
ET0=1;
lcden=0;
write_com(0x38);//设置16X2显示,5X7点阵,8位数据接口
write_com(0x0c);//设置开显示,不显示光标
write_com(0x06);//写一个字符后地址指针加1
write_com(0x01);//显示清零,数据指针清零
write_com(0x80);
for(num=0;num<15;num++)
{
write_data(table[num]);
delay(5);
}
write_com(0x80+0x40);
for(num=0;num<7;num++)
{
write_data(table1[num]);
delay(5);
}
write_com(0x80+0x4A);
for(num=0;num<5;num++)
{
write_data(table3[num]);
delay(5);
}
}
void display(uint shu) //显示函数
{
uint ge,shi,bai;
ge=shu%10;
shi=shu%100/10;
bai=shu/100;
write_com(0x80+0x47);
write_data(table2[bai]);
delay(5);
write_data(table2[shi]);
delay(5);
write_data(table2[ge]);
delay(5);
}
void send(uint k) //串口发送函数(可选)
{
uint ge,shi,bai;
ge=k%10;
shi=k%100/10;
bai=k/100;
SBUF=table2[bai];
while(!TI);
TI=0;
SBUF=table2[shi];
while(!TI);
TI=0;
SBUF=table2[ge];
while(!TI);
TI=0;
}
void T0_time() interrupt 1 //定时器中断,定时时间为1ms
{
n++;
TL0 = 0x00; //重装定时初值
TH0 = 0xDC; //重装定时初值
}
void main() //主函数
{
uint pulse;
init();
delay(5000);
TR0 = 1; //定时器1开始计时
while(1)
{
if(count==0&n!=0)n=0;
if(key==1) //接收到脉搏高电平就计数
{
delay(400);
count++;
}
if(count==8)//每接收到8次就计算显示
{
TR0=0;
pulse=48000/n;//n的值即为n毫秒,由于是计数8个就显示一次数,所以用48000毫秒除以n即可得到每分钟脉搏数
display(pulse);//送去显示
send(pulse); //发送每分钟脉搏数(可选)
pulse=0;
n=0;
count=0;
TL0 = 0x00; //重装定时初值
TH0 = 0xDC; //重装定时初值
TR0=1;
}
}
}
五、抗干扰措施及使用方法
5.1抗干扰措施
为了提高测量仪的精确度,系统首先要解决的是硬件方面的干扰问题。光电式脉搏测量仪的测量过程中,前端测量到的脉搏信号十分微弱,容易受到外界环境干扰,其中主要的干扰源有测量环境光干扰、电磁干扰、测量运动噪声。
5.2环境光对脉搏传感器测量的影响
在光电式脉搏传感器中,光敏器件接收到的光信号不仅包含脉搏信息的透射光的信号,而且包含测量环境下的背景光信号,由于动脉波动引起的光强变化比背景光的变化微弱得多,因此在测量过程当中要保持测量背景光的恒定,减少背景光的干扰。
测量环境下的背景光包含环境光和在测量过程中引起的二次反射光。为了减少环境光对脉搏信号测量的影响,同时考虑到传感器使用的方便性,采用密封的指套式包装方式,整个外壳采用不透光的介质和颜色,尽量减小外界环境光的影响,为了避免测量过程中的二次反射光的影响,在指套式传感器的内层表面涂上一层吸光材料,这样能有效减少二次反射光的干扰。
加上指套式外壳后的脉搏传感器测量到的脉搏波形比较平滑。这是因为加指套式的脉搏传感器中环境光在测量过程中基本不受外界环境光的影响,而且能够有效减少二次反射光,使照射到手指上的光波长单一,所以得到的脉搏信号较为稳定,没有明显的重叠杂波信号,能够很好的体现出脉搏波形的特征。
5.3电磁干扰对脉搏传感器的影响
通过光电转换得到的包含脉搏信息的电信号一般比较微弱,容易受到外界电磁信号的干扰,在传统的光电式脉搏传感器电路中,由于光敏器件和放大电路是分离的,那么在信号的传递过程就很容易受到外界电磁干扰,通常在一级放大电路采用电磁屏蔽的方式来消除电磁干扰。本系统采用了新型的光敏器件,在芯片内部集成光敏器和一级放大电路,有效地抑制了外界电磁信号对原始脉搏信号的干扰。
工频干扰是电路中最常见的干扰,脉搏信号变化缓慢,特别容易受到工频信号的干扰,因此对工频信号干扰的抑制是保证脉搏信号测量精度的主要措施之一。通常脉搏信号的频率范围在0.3-30Hz之间,小于工频50Hz,因此通过低通滤波器可以有效滤除工频干扰,这在信号调理电路中容易实现;同时可以在控制电路中对光源进行脉冲调制,这样不但能够降低系统的功耗,而且能够在一定程度上减小外界的电磁干扰,在脉搏信号数据采集后,可以通过数据处理法方法进一步滤除工频信号的干扰。
5.4 测量过程中运动噪声的影响
测量过程当中,通常情况下手指和光电式脉搏传感器可能产生相对的运动,这样对脉搏测量产生误差,可以通过2个方面减少运动噪声误差:一是改善指套式传感器的机械抗运动性,比如说使指套能够更紧的套在手指上,不易松动;二是从脉搏信号处理的角度,通过算法来减小误差。对于传感器的设计,现在采用的主要是第一个途径。
展开阅读全文