基于单片机的脉搏测量仪.docx
《基于单片机的脉搏测量仪.docx》由会员分享,可在线阅读,更多相关《基于单片机的脉搏测量仪.docx(17页珍藏版)》请在冰豆网上搜索。
基于单片机的脉搏测量仪
基于单片机的脉搏测量仪
前言
脉搏携带有丰富的人体健康状况的信息,自公元三世纪我国最早的脉学专著《脉经》问世以来,脉学理论得到不断的发展和提高。
在中医四诊(望、闻、问、切)中,脉诊占有非常重要的位置。
脉诊是我国传统医学中最具特色的一项诊断方法,其历史悠久,内容丰富,是中医“整体观念”、“辨证论证”的基本精神的体现与应用。
脉诊作为“绿色无创”诊断的手段和方法,得到了中外人士的关注。
但由于中医是靠手指获取脉搏信息,虽然脉诊具有简便、无创、无痛的特点易为患者接受,然而在长期的医疗实践中也暴露出一些缺陷。
首先,切脉单凭医生手指感觉辨别脉象的特征,受到感觉、经验和表述的限制,并且难免存在许多主观臆断因素,影响了对脉象判断的规范化;其次,这种用手指切脉的技巧很难掌握;再则,感知的脉象无法记录和保存影响了对脉象机理的研究。
脉诊的这种定性化和主观性,大大影响了其精度与可行性,成为中医脉诊应用、发展和交流中的制约因素。
为了将传统的中医药学发扬光大,促进脉诊的应用和发展,必须与现代科技相结合,实现更科学、客观的诊断。
目前脉搏测量仪在多个领域被广泛应用,除了应用于医学领域,如无创心血管功能检测、妊高症检测、中医脉象、脉率检测等等,商业应用也不断拓展,如运动、健身器材中的心率测试都用到了技术先进的脉搏测量仪。
随着科学技术的发展,脉搏测量技术也越来越先进,对脉搏的测量精度也越来越高,国内外先后研制了不同类型的脉搏测量仪,而其中关键是对脉搏传感器的研究。
起初用于体育测量的脉搏测试集中在对接触式传感器的研究,利用此类传感器所研制的指脉、耳脉等测量仪各有其优缺点。
指脉测量比较方便、简单,但因为手指上的汗腺较多,指夹常年使用,污染可能会使测量灵敏度下降:
耳脉测量比较干净,传感器使用环境污染少,容易维护。
但因耳脉较弱,尤其是当季节变化时,所测信号受环境温度影响明显,造成测量结果不准确。
过去在医院临床监护和日常中老年保健中出现的日常监护仪器,如便携式电子血压计,可以完成脉搏的测量,但是这种便携式电子血压计利用微型气泵加压橡胶气囊,每次测量都需要一个加压和减压的过程,存在体积庞大、加减压过程会有不适、脉搏检测的精确度低等缺点。
近年来国内外致力于开发无创非接触式的传感器,这类传感器的重要特征是测量的探测部分不侵入机体,不造成机体创伤,能够自动消除仪表自身系统的误差,测量精度高,通常在体外,尤其是在体表间接测量人体的生理和生化参数。
1脉搏测量仪系统结构
脉搏测量仪的设计,必须是通过采集人体脉搏变化引起的一些生物信号,然后把生物信号转化为物理信号,使得这些变化的物理信号能够表达人体的脉搏变化,最后要得出每分钟的脉搏次数,就需要通过相应的硬件电路及芯片来处理物理变化并存储脉搏次数。
在硬件设计中一般的物理信号就是电压变化,有了这个系统的设计思路,本课题就此开始实施。
1.1光电脉搏测量仪的结构
光电脉搏测量仪是利用光电传感器作为变换原件,把采集到的用于检测脉搏跳动的红外光转换成电信号,用电子仪表进行测量和显示的装置。
本系统的组成包括光电传感器、信号处理、单片机电路、数码显示、电源等部分。
●光电传感器
即将非电量(红外光)转换成电量的转换元件,它由红外发射二极管和接收三极管组成,它可以将接收到的红外光按一定的函数关系(通常是线性关系)转换成便于测量的物理量(如电压、电流或频率等)输出。
●信号处理
即处理光电传感器采集到的低频信号的模拟电路(包括放大、滤波、整形等)。
●单片机电路
即利用单片机自身的定时中断计数功能对输入的脉冲电平进行运算得出心率(包括AT89C51、外部晶振、外部中断等)。
●数码显示
即把单片机计算得出的结果用8位LED数码管静态扫描来显示,便于直接准确无误的读出数据。
●电源
即向光电传感器、信号处理、单片机提供的电源,可以是5V-9V的交流或直流的稳压电源。
1.2工作原理
本设计采用单片机AT89C51为控制核心,实现脉搏测量仪的基本测量功能。
脉搏测量仪硬件框图如下图1.2-1所示:
图1.2-1脉搏测量仪的工作原理
当手指放在红外线发射二极管和接收三极管中间,随着心脏的跳动,血管中血液的流量将发生变换。
由于手指放在光的传递路径中,血管中血液饱和程度的变化将引起光的强度发生变化,因此和心跳的节拍相对应,红外接收三极管的电流也跟着改变,这就导致红外接收三极管输出脉冲信号。
该信号经放大、滤波、整形后输出,输出的脉冲信号作为单片机的外部中断信号。
单片机电路对输入的脉冲信号进行计算处理后把结果送到数码管显示。
2硬件系统
2.1控制器
本系统基于51系列单片机来实现,因为系统没有其它高标准的要求,我们最终选择了AT89C51通用的比较普通单片机来实现系统设计。
AT89C5l是美国ATMEL公司生产的低电压、高性能的CMOS8位单片机,片内含4kbytes的可反复擦写的只读程序存储器(PEROM)和128bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大AT89CSl单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。
2.2脉搏信号采集
目前脉搏波检测系统有以下几种检测方法:
光电容积脉搏波法、液体耦合腔脉搏传感器、压阻式脉搏传感器以及应变式脉搏传感器。
近年来,光电检测技术在临床医学应用中发展很快,这主要是由于光能避开强烈的电磁干扰,具有很高的绝缘性,且可非侵入地检测病人各种症状信息,具有结构简单、无损伤、精度高、可重复好等优点。
用光电法提取指尖脉搏光信息受到了从事生物医学仪器工作的专家和学者的重视。
2.2.1光电传感器的原理
根据朗伯一比尔(Lamber—Beer)定律,物质在一定波长处的吸光度和他的浓度成正比。
当恒定波长的光照射到人体组织上时,通过人体组织吸收、反射衰减后,测量到的光强将在一定程度上反映了被照射部位组织的结构特征。
脉搏主要由人体动脉舒张和收缩产生的,在人体指尖组织中的动脉成分含量高,而且指尖厚度相对其他人体组织而言比较薄,透过手指后检测到的光强相对较大,因此光电式脉搏传感器的测量部位通常在人体指尖。
2.2.2光电传感器的结构
传感器由红外发光二级管和红外接收三极管组成。
采用GaAs红外发光二极管作为光源时,可基本抑制由呼吸运动造成的脉搏波曲线的漂移。
红外接收三极管在红外光的照射下能产生电能,它的特性是将光信号转换为电信号。
在本设计中,红外接收三极管和红外发射二极管相对摆放以获得最佳的指向特性。
从光源发出的光除被手指组织吸收以外,一部分由血液漫反射返回,其余部分透射出来。
光电式脉搏传感器按照光的接收方式可分为透射式和反射式2种。
其中透射式的发射光源与光敏接收器件的距离相等并且对称布置,接收的是透射光,这种方法可较好地反映出心律的时间关系。
因此本系统采用了指套式的透射型光电传感器,实现了光电隔离,减少了对后级模拟电路的干扰。
结构如图2.2-1所示
图2.2-1透射式光电传感器
2.2.3光电传感器检测原理
检测原理是:
随着心脏的搏动,人体组织半透明度随之改变:
当血液送到人体组织时,组织的半透明度减小,当血液流回心脏,组织半透明度则增大;这种现象在人体组织较薄的手指尖、耳垂等部位最为明显。
因此本设计将红外发光二极管产生的红外线照射到人体的手指部位,经过手指组织的反射和衰减由装在该部位旁边的光敏三管来接收其透射光并把它转换成电信号。
由于手指动脉血在血液循环过程中呈周期性的脉动变化,所以它对光的反射和衰减也是周期性脉动的,于是红外接收三极管输出信号的变化也就反映了动脉血的脉动变化。
故只要把此电信号转换成脉冲并进行整形、计数和显示,即可实时的测出脉搏的次数。
2.2.4信号采集电路
图2.2.4-1是脉搏信号的采集电路,U3是红外发射和接收装置,由于红外发射二极管中的电流越大,发射角度越小,产生的发射强度就越大,所以对R21阻值的选取要求较高。
R21选择270Ω同时也是基于红外接收三极管感应红外光灵敏度考虑的。
R21过大,通过红外发射二极管的电流偏小,红外接收三极管无法区别有脉搏和无脉搏时的信号。
反之,R21过小,通过的电流偏大,红外接收三极管也不能准确地辨别有脉搏和无脉搏时的信号。
当手指离开传感器或检测到较强的干扰光线时,输入端的直流电压会出现很大变化,为了使它不致泄露到U2B输入端而造成错误指示,用C8、C9串联组成的双极性耦合电容把它隔断。
当手指处于测量位置时,会出现二种情况:
一是无脉期。
虽然手指遮挡了红外发射二极管发射的红外光,但是由于红外接收三极管中存在暗电流,会造成输出电压略低。
二是有脉期。
当有跳动的脉搏时,血脉使手指透光性变差,红外接收三极管中的暗电流减小,输出电压上升。
但该传感器输出信号的频率很低,如当脉搏只有为50次/分钟时,只有0.78Hz,200次/分钟时也只有3.33Hz,因此信号首先经R22、C10滤波以滤除高频干扰,再由耦合电容C8、C9加到线性放大输入端。
图2.2.4-1信号采集电路
2.3信号放大
2.3.1放大器的介绍
LM324是四运放集成电路,它采用14脚双列直插塑料封装.它的内部包含四组形式完全相同的运算放大器,除电源共用外,四组运放相互独立。
每一组运算放大器可用图3.4所示的符号来表示,它有5个引出脚,其中“+”、“-”为两个信号输入端,“V+”、“V-”为正、负电源端,“Vo”为输出端。
两个信号输入端中,Vi-(-)为反相输入端,表示运放输出端Vo的信号与该输入端的相位相反;Vi+(+)为同相输入端,表示运放输出端Vo的信号与该输入端的相位相同。
LM324的引脚排列见图2.2.1-2。
图2.3.1-2引脚排列图
由于LM324四运放电路具有电源电压范围宽,静态功耗小,可单电源使用,
价格低廉等优点,因此被广泛应用在各种电路中。
2.3.2放大电路
按人体脉搏在运动后跳动次数达200次/分钟的计算来设计低通放大器,如图2.3.2-1所示。
R23、C6组成低通滤波器以进一步滤除残留的干扰,截止频率由R23、C6决定,运放U2B将信号放大,放大倍数由R23和R27的比值决定。
图2.3.2-1低通放大电路
根据一阶有源滤波电路的传递函数,可得:
放大倍数为:
截止频率为:
按人体的脉搏跳动为200次/分钟时的频率是3.3Hz考虑,低频特性是令人满意的。
经过低通放大后输出的信号是叠加有噪声的脉动正弦波。
2.4单片机处理电路
如图2.4-1所示,本部分运用了ATMEL公司的89C51单片机作为核心元件,在这里运用单片机能更快更准确地对数据进行运算,而且可以根据实际情况进行编程,所用外围元件少,轻巧省电,故障率低。
来自传感和整形输出电路的脉冲电平输入单片机89C51的/INTO脚,单片机设为负跳变中断触发模式,故每次脉冲下降沿到达时触发单片机产生中断并进行计时,来一个脉冲脉搏次数就加一;定时器中断主要完成一分钟的定时功能。
单片机对一分钟内的脉冲次数进行累加,通过P0、P2口把测量过程和结果送到数码管显示出来。
图2.4-1单片机处理电路
2.5显示电路
本设计的显示采用LED数码管动态扫描来显示。
两个4位的共阳极LED数码管组成8位显示,其中0、1两位显示测量中的时间,3、4两位显示测量中的脉搏次数,6、7两位用来显示上次测量的数据。
单片机的P0口控制显示字型,P2口控制显示字位。
显示电路如图2.5-1。
图2.5-1显示电路
2.5.1LED数码管的显示方法
静态显示方式是指当显示器显示某一字符时,发光二极管的位选始终被选中。
在这种显示方式下,每一个LED数码管显示器都需要一个8位的输出口进行控制。
由于单片机本身提供的I/O口有限,实际使用中,通常通过扩展I/O口的形式解决输出口数量不足的问题。
静态显示主要的优点是显示稳定,在发光二极管导通电流一定的情况下显示器的亮度大,系统运行过程中,在需要更新显示内容时,CPU才去执行显示更新子程序,这样既节约了CPU的时间,又提高了CPU的工作效率。
其不足之处是占用硬件资源较多,每个LED数码管需要独占8条输出线。
随着显示器位数的增加,需要的I/O口线也将增加。
动态显示方式是指一位一位地轮流点亮每位显示器(称为扫描),即每个数码管的位选被轮流选中,多个数码管公用一组段选,段选数据仅对位选选中的数码管有效。
对于每一位显示器来说,每隔一段时间点亮一次。
显示器的亮度既与导通电流有关,也与点亮时间和间隔时间的比例有关。
通过调整电流和时间参数,可以既保证亮度,又保证显示。
若显示器的位数不大于8位,则显示器的公共端只需一个8位I/O口进行动态扫描(称为扫描口),控制每位显示器所显示的字形也需一个8位口(称为段码输出)。
通过比较,我们可以发现LED动态显示更加适合本设计,所以就采用此方法。
2.5.2脉搏测量仪电路原理图
图2.5.2-1电路原理图
3软件系统
3.1主程序流程
系统主程序控制单片机系统按预定的操作方式运行,它是单片机系统程序的框架。
系统上电后,对系统进行初始化。
初始化程序主要完成对单片机内专用寄存器、定时器工作方式及各端口的工作状态的设定。
系统初始化之后,进行定时器中断、外部中断、显示等工作,不同的外部硬件控制不同的子程序。
流程如图4.1-1所示。
图3.1-1主程序流程图
3.2定时器中断程序流程
定时器中断服务程序由一分钟计时、按键检测、有无测试信号判断等部分组成。
当定时器中断开始执行后,对一分钟开始计时,1s计时到之后继续检测下1s,直到60s到了再停止并保存测得的脉搏次数。
同时可以对按键进行检测,只要复位测试值就可以重新开始测试。
主要完成一分钟的定时功能和保存测得的脉搏次数。
流程如图3.2-1所示。
图3.2-1定时器中断程序流程图
4结束语
单片机近20年的飞速发展,俨然已成为计算机发展和应用的一个重要方面。
另一方面,单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。
从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。
这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。
而51单片机作为单片机的主流,随着集成技术的发展,51系列单片机继承和发展了MCS-51系列的技术特色,有逐渐取而代之之势。
本设计主要是51单片机在脉搏测试系统中的应用。
重点介绍了单片机的最小系统,通过单片机最小系统实现了脉搏的测量系统,由光电传感器采集到脉冲信号,经过信号的放大、滤波和整形电路将输出的信号通过单片机的外部中断获取并最终在数码管上显示。
利用单片机自身的定时中断、外部中断、计数等功能,不仅能显示出此次脉搏测量的次数,还能自动储存这个数据。
本次所设计的测量仪系统实现简单、功能稳定、使用方便,应用广泛,具有实际意义。
由于时间比较短,同时本人掌握的知识有限,本次设计虽已完成,但其中有很多不足,如程序不够简练,电路板不够美观,光电传感器灵敏度不够高,数码管显示部分不够完美等,同时此次设计的测量仪功能比较单一,没有如语音系统实现自动读出脉搏次数等人性化功能,且在设计过程中使用的运放数量也较多,加大了电源管理的复杂度。
然而科技的进步势必会使测量仪的功能日益强大和完善,其应用领域将不断扩大,将会给我们的生活带来更多的方便和精彩。
为了更好的进行电脉搏测量仪的设计,在近一个学期的时间里,认真收集有关资料,具体总结如下:
第一,通过此次的设计,使我知道了无论做什么事都应该事先做好充分的准备,不应该盲目的只为了完成任务而被动的学习。
第二,通过此次的设计,使我了解了脉搏测量仪在国内外发展之迅速、应用领域之广、市场前景之大。
第三,通过此次的设计,使我对硬件设计和各模块的功能有了更深的了解,同时提高了动手能力。
第四,通过次次的设计,使我体会到坚持不懈的毅力对完成一件事情起着巨大的作用。
附录
#include
#defineuint8unsignedchar
#defineuint16unsignedint
#defineTIMER0_HIGHT0xDC//设置定时器0工作方式1自动装载初值,定时10ms,Fosc=11.059200MHZ
#defineTIMER0_LOW0x00
sbitkeyin=P3^1;//按键输入
bitstarttest;//启动测脉搏标志
uint16cnt10ms;//10ms计数器
uint8cnt1s;//1秒计数器
uint8Pulsecnt;//脉搏次数,计数器
uint8Pulsenum;//上次测试脉搏的次数
uint8codeDispCode[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//共阳数码管段码表
voidInit_Extint(void);
voidTimerInitProc();
voidinitvar();
voidInit_System(void);
voidDisplay(uint8chose_dat,uint8dat);
voidShowDisp(uint8tPulsenum,uint8tPulsecnt,uint8tcnt1s);
voidDelayMs(uint8Ms);
voidmain()
{
Init_System();//初始化
while
(1)
{
ShowDisp(Pulsenum,Pulsecnt,cnt1s);//显示
}
}
/*******************************************************************************
voidTimer0IntProc()interrupt1
{
TH0=TIMER0_HIGHT;//设置定时器0高字节初值
TL0=TIMER0_LOW;//设置定时器0低字节初值
if(++cnt10ms==100)//1s计时到
{
cnt10ms=0;
if(starttest==1)//处在测试状态
{
if(++cnt1s==60)//一分钟时间到
{starttest=0;//一次检测完毕,等待下一次检测
Pulsenum=Pulsecnt;//保存测得脉搏值}
}
if(keyin==0)//检测按键
{
if(starttest==1)//处在测试状
else//不在测试状态,开始新的一次测试
{
starttest=1;
cnt10ms=0;
}
}
/////////////////////////EndofTimer0IntProc////////////////////////
voidInit_Extint(void)
{
IT0=1;//外部中断1设置为下降沿触发
IE0=0;//标志位清0
EX0=1;//允许外部中断1
}
/********************************************************************
voidShowDisp(uint8tPulsenum,uint8tPulsecnt,uint8tcnt1s)
{
Display(6,DispCode[tPulsenum%10]);//显示上次测量的脉搏
tPulsenum=tPulsenum/10;
Display(7,DispCode[tPulsenum%10]);
Display(3,DispCode[tPulsecnt%10]);//显示测试中的脉搏
tPulsecnt=tPulsecnt/10;
Display(4,DispCode[tPulsecnt%10]);
Display(0,DispCode[tcnt1s%10]);//显示测试中的时间
tcnt1s=tcnt1s/10;
Display(1,DispCode[tcnt1s%10]);
}
voidDelayMs(uint8Ms)
{
unsignedchari,j;
do
{for(i=5;i>0;i--)
for(j=98;j>0;j--);
}while(--Ms);
//Testfor12M
}
参考文献:
[1]欧阳俊、谢定:
基于BL-410的指端脉搏波采集系统应用研究,实用预防医学,2004.2,P2-P4
[2]韩文波、曹维国、张精慧:
光电式脉搏波监测系统,长春光学精密机械学院学报,1999.4,P2
[3]朱国富,廖明涛,王博亮:
袖珍式脉搏波测量仪,电子技术应用,1998,P1-P3
[4]刘云丽:
微功耗光电式脉搏测量仪,电子测量技术,2005.2,P2-P5
[5]程咏梅、夏雅琴、尚岚:
人体脉搏波信号检测系统,北京生物医学工程,2006.5,P1-P3
[6]刘文、杨欣、张铠麟:
基于AT89C2051单片机的指脉检测系统的研究,医疗装备,2005.5,P2-P14
[7]郁道银,谈恒英:
工程光学,机械工业出版社,1998.11,P279-P281
[8]张福学:
传感器应用及其电路精选(下册),机械工业出版社,P122-P134
[9]李林功、丁晓:
单片机原理及应用,机械工业出版社,2007.8,P63-P128
[10]程光、赵崇侃:
指动脉搏波光电传感器的研制,南京医学院学报,1991.4,P329-P330
[11]肖洪兵:
跟我学用单片机,北京航空航天大学出版社,2002.8,P20-P30
[12]何立民:
单片机高级教程,北京航空航天大学出版社,2001,P52-P57
[13]赵晓安:
MCS-51单片机原理及应用,天津大学出版社,2001.3,P31-P42
[14]李广第:
单片机基础,北京航空航天大学出版社,1999,P15-P27
[15]徐惠民:
单片微型计算机原理接口,北京邮电大学出版社,1996,P21-P28
[16]何立民:
从Cygnal80C51F看8位单片机发展之路,单片机与嵌入式系统应用,2002.5,P5—P8
[17]夏继强:
单片机实验与实践教程,北京航空航天大学出版社,2001,P21-P28
[18]陈堂敏、刘焕平:
单片机原理与应用,北京理工大学出版社,2007,P3-P7
[19]沈美明、温动蝉:
C语言程序设计,清华大学出版社,1994,P21-P30
[20]张仰森:
微型计算机常用软硬件技术速查手册,北京希望电脑公司,1994,P135-P14