压电传感器SC0073脉搏测量仪设计讲解Word文档下载推荐.docx
《压电传感器SC0073脉搏测量仪设计讲解Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《压电传感器SC0073脉搏测量仪设计讲解Word文档下载推荐.docx(11页珍藏版)》请在冰豆网上搜索。
3.2二阶有源滤波电路4.
3.3波形整形电路5.
3.4单片机接口电路6.
4软件设计与实现.7..
4.1主程序7..
5调试及性能分析8.
5.1调试分析8.
总结9..
参考文献10
附录1元器件清单11
附录2调试系统照片12
附录3源代码13
1任务分析和性能指标
1.1任务分析
医院的护士每天都要给住院的病人把脉记录病人每分钟脉搏数,方法是用手
按在病人腕部的动脉上,根据脉搏的跳动进行计数。
为了节省时间,一般不会作1分钟的测量,通常是测量10秒钟时间内心跳的数,再把结果乘以6即得到每分钟的心跳数,即使这样做还是比较费时,而且精度也不高。
为了提高脉搏测量的精确与速度,多种脉搏测量仪被运用到医学上来,从而开辟了一条全新的医学诊断方法。
随着科学技术的发展,脉搏测量技术也越来越先进,对脉搏的测量精度也越来越高,国内外先后研制了不同类型的脉搏测量仪,而其中关键是对脉搏传感器的研究。
动态微压传感器是一种高性能、低成本的压电式小型压力传感器,产品采用压电薄膜作为换能材料,动态压力信号通过薄膜变成电荷量,在经传感器内部放大电路转换成电压输出。
该传感器具有灵敏度高,抗过载及冲击波能力强,抗干扰性好、操作简便、体积小、重量轻、成本低等特点,广泛应用于医疗、工业控制、交通、安全防卫等领域。
但人体的生物信号多属于强噪声背景下的低频的弱信号,脉搏波信号更是低频微弱的非电生理信号,因此必需经过放大和后级滤波以满足采集的要求。
1.2性能指标
系统能准确测量人的脉搏次数,一分钟误差不超过1次,有直观的显示系统系统要求有自己设计电路部分。
2总体方案设计
2.1硬件方案
本系统主要由动态微压传感器、脉搏信号调理模块、51单片机组成。
其中模块信号调理模块包括信号低通滤波电路、基于LM358的信号放大电路、基于LM339的信号整形电路。
2.1.1传感器
SC0073脉搏传感器,该传感器采用压电复合材料作为换能元件,信号通过特殊的匹配层传递到换能元件上变成电荷量,再经传感器内部放大电路转换成电压信号输出。
该传感器是一种高性能低成本的振动传感器,具有灵敏度高、频率
响应范围宽、抗过载及冲击能力强、抗干扰性好、操作简便等特点。
通过测试该型号传感器性能基本满足条件。
2.1.2信号处理
由于从传感器输出的脉搏信号十分微弱而且有用信号容易淹没在噪声信号中,因此需要对采集到的原始脉搏信号进行放大和滤波等处理,将信号转化成TTL电平信号送给单片机处理。
2.1.3单片机
将处理好的信号接到单片机,通过定时器定时对脉冲信号计数,经过计算处理后送给数码管显示。
2.1.4电源
即向脉搏传感器、信号处理电路、单片机提供的电源,可以是5-12V直流的
电源经过稳压电路送给系统。
2.2软件方案
统主程序控制单片机系统按预定的操作方式运行,它是单片机系统程序的框架。
系统上电后,对系统进行初始化。
初始化程序主要完成对单片机内专用寄
进行定时
存器、定时器工作方式及各端口的工作状态的设定。
系统初始化之后器中断、外部中断、显示等工作,不同的外部硬件控制不同的子程序
3硬件设计与实现
3.1前置放大电路
前置放大电路对于脉搏波信号采集来说至关重要,考虑到脉搏信号的特点,为了放大噪声环境中传感器输出的弱信号,对于放大器要求具有:
极高的共模和差模输入阻抗;
很低的输出阻抗;
精确和稳定的增益;
极高的共模抑制比。
基于以上分析,低功耗、高精度放大器LM358作为前置放大的核心器件。
图3.1.1前置放大电路
3.2二阶有源滤波电路
噪声信号来源主要有工频干扰、人为运动肌电干扰、基线漂移等,其中50Hz的肌电干扰最为严重。
为了消除这些干扰信号,在脉搏信号放大器电路中,应加入低通滤波器。
为了达到更好的滤波效果,采用二阶有源滤波器,将截至频率设为5Hz最为理想。
图3.2.1二阶有源滤波电路仿真电路图
吻BodePlot"
?
r-XBF1
图322二阶有源滤波电路仿真幅频特性曲线
3.3波形整形电路
用LM393高精度电压比较器将信号整形为方波,与单片机接口相兼容。
图3.3.1电压比较器电路
3.4单片机接口电路
XTAL1
XTAL2
VCC
vcc
1R?
A
EW-?
B
SI
:
OuT-C5
$
■WV
他Pack]
100
]
rA
AAA二—
16
IK
GND
aTal
信号处理后的电路接到单片机
RgTgXVFF
ALE
Pl.CRxD
PSJ.T^
P3.2Pm>
P25向P3.4TO
P5J.T1_PM匝
P3.nRD~
PSX51KEPX
PO.O.ADO
PO.IjADI
POJ-AD2
P0.3.AD3
P0.AAD4
PO.5.AD5
PO.&
AM
P0.nAD7
PJ.O-T2
P11.T2EX
P12
Pl.3
Pl.4
Pl.5
Pl.6
P1.7
吐DAS
P21A^
P2.2A10
P23All
P2.4A12
P2.5Al3
P2.6A14
PUAl5
4
3
DP
DpyAcnlMf-CA
图3.4.1单片机接口电路
P3.0口,同过软件查询方式来对脉搏信号进行计数。
数
据处理后送给数码管显示。
数码管采用静态显示方式,提高显示亮度。
4软件设计与实现
4.1主程序
图2.2.1主程序流程图
5调试及性能分析
5.1调试分析
由于程序调试是否成功,这是关键的一步,因为单纯的硬件无法实现预期的目的。
因此,对程序的调试就同样重要。
调试这阶段发生过的故障如:
子程序在运行时破坏现场,缓冲单元发生冲突,零位的建立和清除在设计上有失误,堆栈区域有溢出等问题。
采用单步运行方式和断点运行方式对每个子程序进行调试,单步和断点调试后,再进行连续调试,这是因为单步运行只能验证该子程序的正确与否,而不能确定定时精度、CPU的实时响应等问题。
待全部完成后,应反复运行多次观察。
总结
本设计主要是51单片机在脉搏测试系统中的应用。
重点介绍了单片机的最小系统,通过单片机最小系统实现了脉搏的测量系统,由动态微压传感器采集到脉冲信号,经过信号的滤波、放大和整形电路将输出的信号通过单片机的外部中断获取并最终在数码管上显示。
利用单片机自身的定时中断、外部中断、计数等功能,不仅能显示出此次脉搏测量的次数,还能自动储存这个数据。
本次所设计的测量仪系统实现简单、功能稳定、使用方便,应用广泛,具有实际意义。
由于时间比较短,同时本人掌握的知识有限,本次设计虽已完成,但其中有很多不足,如程序不够简练,动态微压传感器灵敏度不够高,数码管显示部分不够完美等,同时此次设计的测量仪功能比较单一,没有如语音系统实现自动读出脉搏次数等人性化功能,且在设计过程中使用的运放数量也较多。
然而科技的进步势必会使测量仪的功能日益强大和完善,其应用领域将不断扩大,将会给我们的生活带来更多的方便和精彩。
为了更好的进行电脉搏测量仪的设计,在近一个学期的时间里,认真收集有关资料,并做相关的整理和阅读,为这次的设计做好充分的准备。
经过这次课设,我收获了很多,具体总结如下:
(1)通过此次的设计,使我知道了无论做什么
事都应该事先做好充分的准备,不应该盲目的只为了完成任务而被动的学习。
(2)通过此次的设计,使我了解了脉搏测量仪在国内外发展之迅速、应用领域之广、市场前景之大。
(3)通过此次的设计,使我对硬件设计和各模块的功能有了更深的了解,同时提高了动手能力。
(4)通过次次的设计,使我体会到坚持不懈的毅力对完成一件事情起着巨大的作用。
(5)通过此次的设计,使我深刻的体会到团队合作精神的重要性及相互讨论过程中的乐趣。
参考文献
[1]郭天祥•新概念51单片机C语言教程[M].北京:
电子工业出版社,2009.
[2]胡汉才.单片机原理与接口技术[M].北京:
清华大学大学出版社,2004.1-505.
[3]邢国泉.LM35温度传感器的温度特性及其应用[J].医疗设备信息.2007,11,25-28.
[4]薛国红,赵修斌,卢艳娥等.零漂与增益控制对量化的影响分析[J].西安:
空军工程大学,2008.
⑸马忠梅,刘滨等.单片机C语言Windows环境编程宝典[M].北京:
北京航空航天大学出版社.2003.
附录1元器件清单
名称
数量(个)
STC89C51
1
LM358
LM393
74HC04
R=100k
R=10k
5
R=68k
10
SC0073脉搏传感器
附录2调试系统照片
附录3源代码
#include<
reg52.h>
#include<
intrins.h>
sbitSTART=P3T;
sbitMB=P1A0;
UnsignedcharcodeLED7[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6
F};
intcouter=0;
unsignedcharmb=0;
unsignedcharmaibo=0;
unsignedchark=0;
unsignedchardis=0;
unsignedcharshi=0;
unsignedcharge=0;
voiddelay_ms(unsignedinti)
{
unsignedcharj;
for(;
i>
0;
i--)
j=1500;
while(j--);
}
voidInit()
ET0=1;
TR0=1;
TMOD=0x11;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
PT0=0;
voidmain()
P0=0x00;
P2=0x00;
Init();
while
(1)
if(START==0)
delay_ms(3);
dis=1;
mb=0;
k=0;
EA=1;
if(dis==1)
if(MB==0)
if(MB==0)mb++;
while(!
MB);
}shi=mb/10;
ge=mb%10;
P2=LED7[ge];
P0=LED7[shi];
if(k==1)
maibo=mb+mb;
shi=maibo/10;
ge=maibo%10;
P0=LED7[shi];
voidtimer0()interrupt1
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
couter++;
if(couter==560)
couter=0;
EA=0;
dis=0;
k=1;