单片机脉搏测量仪Word文档下载推荐.docx
《单片机脉搏测量仪Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《单片机脉搏测量仪Word文档下载推荐.docx(26页珍藏版)》请在冰点文库上搜索。
心率(英语:
HeartRate),是指心脏每分钟跳动的次数。
在正常情况下,脉率和心率是一致的。
正常成年人安静时的心率有显著的个体差异,一般为60—100次/分之间,平均约72次/分。
脉搏的频率还受年龄和性别的影响,成年女性的心率一般比成年男性稍快,婴儿每分钟120-140次,幼儿每分钟90-100次,老年人较慢,为55—60次/分。
另外,运动和情绪激动时可使脉搏增快,而休息、睡眠则使脉搏减慢。
成人脉率每分钟超过100次,称为心动过速;
每分钟低于60次,称为心动过缓。
正常人的脉率规则且脉搏强弱均等,不会出现脉搏间隔时间长短不一的现象。
临床上有许多疾病,特别是心脏病可使脉搏发生变化。
因此,测量脉搏对病人来讲是一个不可缺少的检查项目。
随着科学技术的进步,人民生活水平的提高,人们尤其是老人、病人希望能够方便快捷地了解自身身体状况,以便及时改善生活方式。
人体生理参数采集和监护系统的广泛使用,可以提高人民生活质量,延长人类寿命。
脉搏是人体重要的生命特征,人们需要适时的了解自身的脉搏信息,基于此,本文将对有关脉搏的测量与分析开展研究。
1.2脉搏测量仪的发展与应用
随着脉搏测量技术对脉搏的测量精度越来越高,很多不同类型的脉搏测量仪被研制出来,而其中关键是对传感器的研究。
起初用于体育测量的脉搏测试集中在对接触式传感器的研究,利用此类传感器所研制的指脉、耳脉等测量仪各有其优缺点。
指脉测量比较方便、简单,但因为手指上的汗腺较多,指夹常年使用,污染可能会使测量灵敏度下降:
耳脉测量比较干净,传感器使用环境污染少,容易维护。
但因耳脉较弱,尤其是当季节变化时,所测信号受环境温度影响明显,造成测量结果不准确。
近年来国内外致力于开发无创非接触式的传感器,这类传感器的重要特征是测量的探测部分不侵入机体,不造成机体创伤,能够自动消除仪表自身系统的误差,测量精度高,通常在体外,尤其是在体表间接测量人体的生理和生化参数。
其中光电式脉搏传感器是根据光电容积法制成的脉搏传感器,通过对手指末端透光度的监测,间接检测出脉搏信号。
具有结构简单、无损伤、精度高、可重复使用等优点。
通过光电式脉搏传感器所研制的脉搏测量仪已经应用到临床医学等各个方面并收到了理想效果。
如今医生常用的听诊器由于是依靠人体感官进行测量,其精度较低、可靠性差、功能也比较单一、受外界影响很大,而由于微电子技术的发展,单片微处理器功能强大而价格低廉,具有很高的性价比。
基于单片机的红外脉搏仪,具有可靠性高、控制精度高,功能易扩展,有较强的通用性等优点。
第二章脉搏测量仪的硬件结构
2.1工作原理
脉搏测量仪的组成包括光电传感器、信号处理、单片机电路、数码管显示电路、串口电路、电源等部分。
光电传感器,是将非电量转换成电量的转换元件,它由红外对管(红外发射二极管和接收三极管)组成,可以将接收到的红外光转换成便于测量的物理量输出。
信号处理部分就是将光电传感器采集到的低频信号进行放大、整形、滤波处理的模拟电路。
单片机电路,包含STC89C51、晶振电路、复位电路在内,组成单片机最小系统。
电源,即向光电传感器、信号处理、单片机电路进行供电的电源。
这里为了减小交流电对电路的干扰影响,采用9V的电池对上述电路进行供电。
人的血液中含有大量的血红细胞,可以大量吸收红外线。
因此,红外线在血液中的穿透性要比在其它组织中小得多。
当人体动脉血管随心脏周期性地收缩和舒张,动脉血管的血液容积随之发生变化时,动脉所在部分的人体组织对于红外光的透射性就会发生变化。
手指将放在红外线发射接收对管中间,血管中血液的流量会随着心脏的跳动发生变换。
由于手指放在光的传递路径中,血管中血液饱和程度的变化将引起光的强度发生变化,因此和心跳的节拍相对应,红外接收三极管的电流也跟着改变。
该信号经放大、滤波、整形后输出,最后进入单片机。
通过外部按键选择模式,模式一是单片机对输入的信号计数并把结果送到数码管显示,模式二是单片机将信号传送到电脑上。
2.2基本元器件的介绍
2.2.1STC89C52简介
STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8k字节Flash和512字节RAM。
拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
此次STC单片机所使用的封装是PDIP40。
如图2.1所示:
图2.1STC89C52引脚
STC89C52引脚功能说明:
1、VCC(40引脚):
电源电压
2、VSS(20引脚):
接地
3、P0端口(P0.0~P0.7):
P0口是一个漏极开路的8位双向I/O口。
可作为输出端口和总线扩展。
P1端口(P1.0~P1.7),P2端口(P2.0~P2.7),P3端口(P3.0~P3.7):
它们分别是一个带内部上拉电阻的8位双向I/O口。
但P3口除作为一般I/O口外,还有其他一些复用功能,如下表2.1所示:
表2.1P3口引脚复用功能
引脚号
复用功能
P3.0
RXD(串行输入口)
P3.1
TXD(串行输出口)
P3.2
外部中断0
P3.3
外部中断1
P3.4
T0(定时器0的外部输入)
P3.5
T1(定时器1的外部输入)
P3.6
外部数据存储器写选通
P3.7
外部数据存储器读选通
5、RST(9引脚):
复位输入。
当输入连续两个机器周期以上高电平时为有效,用来完成单片机的复位初始化操作。
6、XTAL1(19引脚):
振荡器反相放大器和内部时钟发生电路的输入端。
7、XTAL2(18引脚):
振荡器反相放大器的输入端。
2.2.2光电传感器简介
光电传感器是采用光电元件作为检测元件的传感器。
它首先把被测量的变化转换成光信号的变化,然后借助光电元件进一步将光信号转换成电信号。
光电传感器在一般情况下,由三部分构成,它们分为:
发送器、接收器和检测电路。
发送器对准目标发射光束,发射的光束一般来源于激光二极管、发光二极管(LED)和红外发射二极管等。
发送器不间断地发射光束,或者改变光束的脉冲宽度。
接收器由光电二极管或光电三极管组成。
检测电路一般就在接收器的后面,它可以滤出有效信号,并且应用该信号。
2.2.3LM324简介
LM324是带有差动输入的四运算放大器,它采用14脚双列直插塑料封装,内部包含四组形式完全相同的运算放大器,除电源共用外,四组运放相互独立。
每一组运算放大器可用图2.2(a)所示的符号来表示,它有5个引出脚,其中“V+”、“V-”为正、负电源端,“Vo”为输出端。
两个信号输入端中,Vi-(-)为反相输入端,表示运放输出端Vo的信号与该输入端的相位相反;
Vi+(+)为同相输入端,表示运放输出端Vo的信号与该输入端的相位相同。
LM324的引脚排列见图2.2(b)。
图2.2LM324符号图2.3LM324引脚图
由于LM324四运放电路具有电源电压范围宽,静态功耗小,高增益、可单电源使用,价格低廉等优点,因此被广泛应用在各种领域中,包括应用在传感器放大器,直流增益模块和所有传统的运算放大器等。
2.2.4AD0832简介
AD0832是8位逐次逼近模数转换器,支持两个单端输入通道和一个差分输入通道。
它的引脚功能图如图2.4所示:
◆
片选引脚,低电平芯片使能。
◆CH0模拟输入通道0,或作为IN+/-使用。
◆CH1模拟输入通道1,或作为IN+/-使用。
◆GND参考地电位。
◆DI数据信号输入,选择通道控制。
◆DO信号输出,转换数据输出。
◆CLK芯片时钟输入。
VCC(VREF)工作电压或参考电压图2.4AD0832引脚图
2.3信号采集电路
如图2.5就是脉搏信号的采集电路,采用红外对管作为红外发射和接受装置。
如果R1过大,通过红外发射二极管的电流就会过小,发射强度就会过小,红外接收二极管就难以判断是否有无脉搏。
如果R1过小,通过红外发射二极管的电流就会过大,发射强度就会过大,红外接收二极管也无法区分是否有无脉搏。
所以R1选择了220Ω。
图2.5信号采集电路
另外,C1、C2串联组成的双极性耦合电容起到了“隔直流,通交流”的作用,当手指离开传感器或检测到较强的干扰光线时,输入端的直流电压会出现很大变化,C1、C2可以对此隔断。
2.4信号放大电路
图2.6是二阶放大电路,可以对信号进行两级的放大作用。
第一部分即是第一级放大电路。
这是个反相输入式交流放大电路,电源VCC通过R4和R5分压,使运放同相输入端的电位为
。
另外,为了避免电源的纹波电压对V+电位的干扰,在R5两端并联滤波电容C3,消除谐振。
该电路的增益为:
图2.6信号放大电路
图2.6中第二部分就是第二级放大电路。
这个电路也同样是反相输入式放大电路,参考前面,可以算出该电路的增益为:
总的电压增益为:
2.5低通滤波电路
信号经过两级放大后,进入滤波电路对其进行滤波。
如图2.7中,是一个二阶低通滤波器。
图2.7二阶低通滤波电路
其中,电路的增益为1,特征角频率为
,特征频率
,等效品质因数为
传递函数为
第三章脉搏测量仪的软件系统
3.1主程序流程
系统主程序控制单片机系统按预定的操作方式运行,它是单片机系统程序的框架。
系统上电后,对系统进行初始化。
初始化程序主要完成对单片机内专用寄存器、定时器工作方式及各端口的工作状态的设定。
系统初始化之后,通过外部按键进行判断选择哪种工作方式,从而开启定时器中断、外部中断、数码管显示或是选择串口通信。
不同的外部硬件控制不同的子程序。
流程如图3.1所示。
图3.1主程序流程图
图3.1主程序流程图
第四章实验与结果分析
4.1单片机计时测量方法
单片机上电等待测试的状态,如图4.1所示:
图4.1脉搏测量实物图
选择测量模式1。
单片机定时器定为30s。
同时,脉搏信号通过下降沿不断触发单片机外部中断,对中断进行计数,当到了30s,执行定时器中断。
计数值*2=60s内的脉搏数。
随机找六个同学分别进行5次检测,记录下数码管上显示的结果于表4.1:
表4.1数码管数值记录表
单片机计时脉搏个数(min)/状态
平均值
小林
104/静止
94/静止
98/静止
102/静止
100/静止
100/运动
98/运动
99/运动
101/运动
小杨
76/静止
82/静止
80/静止
81/静止
114/运动
116/运动
110/运动
120/运动
115/运动
小王
75/静止
70/静止
86/静止
小陆
72/静止
84/静止
78/静止
小苏
88/静止
66/静止
62/静止
77/静止
可以看到,在同一个人连续5次的测量中,即使人的状态和所处环境保持不变,但每次测量结果仍有大到几十的差距,这种差距不可谓不大,说明这种测量方法并不是十分可靠。
4.2波形处理计数法
按下key2键,选择模式二,单片机下载器插入电脑USB口,通过“串口猎人”软件,可以实时观察波形,并将60s内的数据保存。
界面如下图4.2:
图4.2串口猎人波形显示图
由于串口猎人的波形是动态的,是实时显示的,为了能够对波形进行分析,我们还是把数据转到matlab里面进行分析。
下面,我们对小陆同学静止状态下的脉搏信号S进行测量。
对信号S进行快速傅里叶(FFT)变换,得到频谱图如下:
图4.3S信号频谱图
可以观察到上述信号的主要频率在50—100HZ之间。
由国内大样本健康人群调查发现,健康成人的平均心跳在72次左右,因此设计一个带宽为60—90Hz,中心频率为75Hz的带通滤波器,将在此频率范围外的信号杂波滤掉。
如图4.4所示的带通滤波器的带宽就在60—100Hz之间,也就是在此频率范围内没有衰减,而在此频率范围之外的衰减DB值将逐渐增大。
图4.4带通滤波器幅频响应
经过滤波后的时域波形与滤波前相比较,如图4.5:
图4.5滤波前后时域波形
经过滤波后的信号频谱,如图4.6:
图4.6滤波后频谱图
观察图4.6,说明频率超过60—90HZ的杂波都已经被滤波器滤掉,我们已经得到了较为满意的信号Y。
我们可以通过对Y信号的波峰个数进行计数得到脉搏数。
借助findpeaks函数可以计算出Y信号的波峰个数为74个,说明此次测量的脉搏个数为74个/min。
通过上述方法,在相同的条件下陆续测出每个同学的脉搏个数,与第一种方法测量得出的结果进行比较,并记录到表4.2:
表4.2测量结果表
样本
波形处理后脉搏个数(min)/状态
80/运动
83/运动
74/静止
83/静止
4.3两种方法的比较
单片机计数方法比较简单方便,但相同条件下每次测量结果尽不相同,误差较大。
究其原因,是光电传感器难免受到外界光线的影响,导致信号产生毛刺。
如图4.7中小圆点处,就是一些毛刺,本来一个脉冲只能触发一个中断,但这些毛刺使中断次数增加,导致计数偏大。
如果信号中的谐波较多,那么计数值就要比实际值大的多了,这也就是每次测量结果相差较大的原因了。
图4.7波形毛刺图
波形处理法能对将不必要的杂波滤去,使得波形毛刺减少,更为平滑,得出的测量值也就更接近于实际值。
目前波形处理法的缺点是操作较为复杂,而且本文设计的带通滤波器带宽为60—90HZ,不能准确计算频率远超于这个带宽的信号的脉率。
就例如运动的时候脉搏跳动比较快,但是滤波器将高频成分滤掉了,所以在运动的条件下测量脉搏就需要改变滤波器的带宽了。
附录
1、脉搏测量仪电路原理图
2、带通滤波器程序
x=inputsignal;
%x为输入信号
fp=[6090];
fs=[40110];
%fp:
通带边界;
fs:
衰减截止边界
ap=10;
as=25;
%ap:
通带区衰减DB数设置;
as:
截止区衰减DB数设置
fsa=500;
%fsa:
序列x的采样频率
wp=fp/fsa*2;
ws=fs/fsa*2;
%设计巴特沃茨滤波器
[n,wn]=buttord(wp,ws,ap,as);
[b,a]=butter(n,wn);
%查看设计滤波器的曲线
[h,w]=freqz(b,a,256);
%求出幅频响应
figure
(1);
plot(w*fsa/(2*pi),abs(h));
xlabel('
频率Hz'
);
ylabel('
响应幅度'
title('
带通滤波器的幅频特性曲线'
gridon;
y=filter(b,a,x);
%对x信号进行滤波
figure
(2);
subplot(211);
plot(x);
t'
x(t)'
grid;
滤波前时域波形'
subplot(212);
plot(y);
y(t)'
滤波后时域波形'
%xx=fft(x,512);
Y=fft(y,512);
w=(0:
255)/256*fsa;
figure(3);
hua_fft(x,fsa);
幅值'
滤波前频谱'
hua_fft(y,fsa);
滤波后频谱'
n=size(findpeaks(10*y));
%计算得出y的波峰个数
%画频谱程序
functionhua_fft(y,fs)
nfft=2^nextpow2(length(y));
%找出大于y的个数的最大的2的指数值
y=y-mean(y);
%去除直流分量
y_ft=fft(y,nfft);
%对y信号进行DFT,得到频率的幅值分布
y_p=y_ft.*conj(y_ft)/nfft;
y_f=fs*(0:
nfft/2-1)/nfft;
%T变换后对应的频率的序列
plot(y_f,abs(y_ft(1:
nfft/2)));
%论坛上画FFT的方法
频率'
信号幅值谱'
3、脉搏测量仪软件部分
(1)定时器中断流程图:
定时器定为30s,外部中断采用边沿触发的方式,当处于测量状态的时候,来一个脉冲脉搏次数就加一,由单片机累加得出30s内的脉搏次数。
通过计数30s中脉冲个数*2换算到一分钟的脉搏数。
(2)单片机程序
#include<
reg52.h>
#include"
ad0832.h"
#defineucharunsignedchar
#defineuintunsignedint
sbitTX=P3^1;
/************0~9数字显示**************/
ucharcodeDisp[11]=
{0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x00};
/************变量声明********************/
ucharnumber;
ucharmode;
//0:
单片机计数1:
异步通信
ucharMbcount;
//脉搏次数计数
ucharsuccess;
intMbvlaue;
ucharmb=0,m,counter;
uintn;
unsignedintOldcount,Newcount;
unsignedcharFlag=0;
/************延时程序********************/
voiddelay(uchart)//延时程序
{
inti,j;
for(j=0;
j<
t;
j++)
for(i=0;
i<
110;
i++);
}
voiddel