您好,欢迎来到华佗健康网。
搜索
您的当前位置:首页脉搏心率测试仪测试及制作报告

脉搏心率测试仪测试及制作报告

来源:华佗健康网
. . -. 成绩

五邑大学

电子系统课程设计

题目:脉搏心率测试仪测试与制作

院系信息工程学院 专业电子信息工程 学号 学生XX

指导教师陈鹏讲师 报告日期2013年1月

. . . 资料.

. . -.

脉搏心率测试仪测试与制作

引 言

脉搏波所呈现出来的形态、强度、速率和节律等方面的综合信息,能反映出人体心血管系统中许多生理疾病的血流特征。本系统是采用STCC52单片机为核心而制作的一种实用型脉搏测量仪。采用红外发射管和接收管对人体的脉搏心率进展数据采集,得到的信号滤波放大整形后送入STCC52单片机进展采集和处理。单片机将采集到的脉搏心率在液晶LCD1602上实时显示出来。本文将首先描述本设计的整体思路,然后介绍各个局部设计中的细节,最后列出完善的计算和处理方式与结果。

1. 设计解析与设计方案介绍

平均心率值是指一分钟内心脏实际跳动的次数,本心率测量仪是测试平均心率值,测量方法主要有两种: 一种是心电测量. 即根据心电图上相邻二次波形之间的间隔时间来计算心率值; 另一种是脉搏测量。通常心脏的跳动与脉搏的跳动是同步的, 因此只需测出脉搏跳动次数就可以知道心率值测量脉搏是通过记录处理脉搏传感器发出的指脉电信号来实现的。本方案选择的比拟简单直接的脉搏测量方式。

目前脉搏波检测系统有以下几种检测方法:光电容积脉搏波法、液体耦合腔脉搏传感器、压阻式脉搏传感器以及应变式脉搏传感器。近年来, 光电检测技术在临床医学应用中开展很快, 这主要是由于光能避开强烈的电磁干扰, 具有很高的绝缘性, 且可非侵入地检测病人各种病症信息。本系统设计了指套式的透射型光电传感器, 实现了光电隔离,减少了对后级模拟电路的干扰。采用指套式的透射型光电传感器模块对人体实行心率数据采集,采集所得信号通过放大电路模块实行电信号放大,然后信号通过滤波电路模块进展滤波〔特别滤除50Hz市电干扰〕,再通过整形稳压电路进展整形后,得到幅值在0~5v的正弦信号,再最后将信号通过斯密特比拟器NE555形成矩形波并送入单片机控制显示电路模块实现平均心率结果显示。

其具体总体构造框架如图1.1:

. . . 资料.

. . -.

图1.1 脉搏测量仪系统框图

信号提取模块 传感器 电压跟随 波形处理模块 滤波 两级放大 波形整形 接收显示模块 时间与心率显示

图1.2脉搏信号提取及处理电路构造图

单片机

2. 脉搏信号提取局部

光敏二极管的特性是将光信号强弱变化转换为电流变化,通过电路转换再转变成变化的电压信号。

此次设计采用的是BPW83 型红外接收二极管和IR333 型红外发射二极管,二极管工作波长都是940 nm。在指夹中,红外接收二极管和红外发射二极管相对摆放以获得最正确的指向特性。红外发射二极管中的电流越大,发射角度越小,产生的发射强度就越大。当红外发射二极管发射的红外光直接照射到红外接收二极管上时,IC1B 的反相输入端电位大于同相输入端电位,Vi 为“O〞。当手指处于测量位置时,会出现二种情况:一是无脉期。虽然手指遮挡了红外发射二极管发射的红外光,但是,由于红外接收二极管中存在暗电流,仍有lμA 的暗电流会造成Vi 电位略低于2.5 V。二是有脉期。当有跳动的脉搏时,血脉使手指透光

. . . 资料.

. . -.

性变差,红外接收二极管中的暗电流减小,Vi 电位上升。由此看来,所谓脉搏信号的拾取实际上是通过红外接收二极管,在有脉和无脉时暗电流的微弱变化,最终输出20mv左右电压信号。二极管夹指方式如图2.1所示。

因此,在接收电路中应采用电流电压转换电路,将变化的电流信号转换为电压信号。转换电路如图2.2所示。

图2.1指甲式脉搏传感器图2.2红外传感连接电路

3. 脉搏信号处理局部

LM324运放1用于电压跟随器,如图3.1所示;

其主要作用有:

(1) 增大输入阻抗。电压跟随器具有输入阻抗高,输出阻抗低的特点,这

也使得传感器局部输入的微弱电压信号得以有效输入,为下面的滤波放大提供保障

(2) 起到做缓冲级,隔离电路干扰作用。电压跟随器作缓冲级,能有效防

止后级对于前级的干扰,从而隔离了后级的可能存在的干扰。因为脉搏信号本身稳定性很差,极易受到外界或是来自电路本身的干扰,电压跟随器的存在能有效防止来自电路的干扰

. . . 资料.

. . -.

LM324运放2用于二阶低通滤波放大电路,如图3.2所示。

通带电压增益为:

Aup1R22 R3总增益为:

Au截止频率为:

Aup1(f/fH)2jQ(f/fH)

fH11Hz4.823Hz 2RC2100003.30.000001

由滤波电路可知,滤波局部为二阶低通滤波电路;由所求截止频率可知,该局部电路在输入信号频率为4.8HZ及以下时,信号正常放大Au倍后输出;在输入信号频率大于4.8HZ时,信号将快速衰减,最终无法导通。因而,滤波局部电路最多能检测脉搏信号近300次每分钟,使得使用者有较大的测量空间,且能有效地拦截市电的50HZ干扰信号。

. . . 资料.

. . -.

图3.1电压跟随器电路 图3.2二阶低通滤波电路

LM324运放3、4用于同相放大电路,如图3.3所示;NE555芯片用于电压比拟和信号波形整形,如图3.4所示。信号提取模块电路总的原理图见附录图一。

放大倍数为:

Au1R11220k123 R1010k双同相放大器的放大倍数为:

23 * 23 = 529

电路总的放大倍数为:

2 * 529 = 1058

因而,在输入信号低至5mV时,放大后输出波形峰峰值近5mV*1058=5290mV≈5V。而NE555整形芯片在+5V电源供给下,其比拟阀值为向上2/3Vcc向下1/3Vcc,所以输入信号完全符合整形要求,且其输出高电平为4.7V左右,完全能被STCC52采集识别。因而,总体设计符合要求

. . . 资料.

. . -.

图3.3同相比例放大电路 图3.4 NE555整形电路

4.单片机显示控制局部

此次设计中的控制显示局部主要由STCC52单片机和LCD1602液晶显示器共同构成。

〔1〕STCC52单片机介绍

STCC52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STCC52为众多嵌入式控制应用系统提供高灵活、有效的解决方案。具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位 定时器/计数器,一个6向量2级中断构造,全双工串行口。单片机运作的根本电路需复位电路和振荡电路〔所用晶振为12MHz〕。

〔2〕LCD1602液晶模块介绍

LCD1602液晶为5V电压驱动,带背光,可显示两行,每行16个字符,不能显示汉字,内置含128个字符ASCII字符集字库。将1602的8位数据口与单片机的P0口相连接。当R/W脚〔1602第5脚〕为低电平时为写操作状态,这里可以一直让其为低电平。而当RS〔第4脚〕为低电平时为写指令,当RS〔第

. . . 资料.

. . -.

4脚〕为高电平时为写数据。1602的程序是根据PDF资料的写操作时序图进展编写的,通过对1602写入指令和写入数据来进展显示。引脚3所接的可变电阻是作为1602的背光调节。其液晶显示电路的具体电路,如图4.1所示。

图4.1LCD1602显示控制电路

5.单片机软件设计局部

该脉搏测量仪的单片机程序,主要是LCD1602液晶的操作和显示程序,采用C语言进展编程。主要用到的单片机定时器。当矩形波信号由P3.2口输入时,由单片机记录每一个低电平并通过定时显示程序输出显示。除此外,需要借助定时器进展计时,这里以60秒为周期计算承受整形后波形的低电平个数,即得出我们需要脉搏数。

以下便是ATCC52单片机信号采集和LCD1602显示控制的具体程序:

/*头文件局部*/

//头文件maibo.h #ifndef _MAIBO_H_ #define _MAIBO_H_ #include #define uchar unsigned char #define uint unsigned int

. . . 资料.

. . -.

sbit key1=P1^0; sbit key2=P1^1;

sbit LCD_RS = P2^5; sbit LCD_RW = P2^6; sbit LCD_EN = P2^7; sbit maibo = P3^2; #define LCD_data P0 #endif

/*主程序局部*/

//主程序maibo.c #include #include

uchar code dis1[] = {\"Wele To!!!\uchar code dis2[] = {\"Pulse Counter\uchar code dis3[] = {\"Start Testing?\uchar code dis4[] = {\"(1)Yes (2)No\uchar code dis5[] = {\"Test Results: \uchar code dis6[] = {\"Please Wait!!\uchar test_res[] = {\"00---000\int test_data; uint timer;

//延时函数 void delay(float xms) { uchar i; while(xms--) { for(i=0;i<110;i++)

{ _nop_(); _nop_(); _nop_(); _nop_();

}

}

}

. . . 资料.

. . -.

//忙检测函数 bit LCD_busy() { bit result; LCD_RS = 0; LCD_RW = 1; LCD_EN = 1; _nop_(); _nop_();

result=(bit)(LCD_data&0x80); LCD_EN = 0; return result;

}

//写指令函数

void LCD_wcmd(uchar cmd) { while(LCD_busy()); LCD_RS = 0; LCD_RW = 0; LCD_EN = 0; _nop_(); _nop_(); LCD_data=cmd; _nop_(); _nop_(); LCD_EN = 1; _nop_(); _nop_(); LCD_EN = 0; delay(100); }

//写数据函数

void LCD_wdat(uchar dat) { while(LCD_busy()); LCD_RS = 1; LCD_RW = 0; LCD_EN = 0; _nop_(); _nop_(); LCD_data=dat;

_nop_();

. . . 资料.

. . -.

_nop_(); LCD_EN = 1; _nop_(); _nop_(); LCD_EN = 0;

}

//液晶初始化函数 void LCD_init()

{ LCD_wcmd(0x38); //16*2显示,5*7点阵,8位数据 LCD_wcmd(0x0c); //显示开,关光标 LCD_wcmd(0x06); //移动光标

LCD_wcmd(0x01); //去除LCD的显示内容

}

//液晶行定位函数

void LCD_pos(uint row,uint col) { uchar pos;

pos=0x80|(uchar)(0x40*(row-1)+(col-1)); LCD_wcmd(pos);

}

//数组显示函数 void LCD_dis(uchar dis[]) { uchar i,arra; for(i=0;i<16;i+=1) { arra=dis[i];

if(arra=='\\0')//字符串结尾标志 { break;

} else { LCD_wdat(arra); }

}

}

//人机界面初始化 void dis_init()

. . . 资料.

. . -.

{ maibo=1;

EA = 1 ;//单片机开中断设置 TMOD=0X01;

TH0=(65535-50000)/256; TL0=(65535-50000)%256; ET0 = 1;

TR0 = 0; PT0 = 1;//定时器0设置 /* IT0 = 1;

EX0 = 0; PX0 = 0;//外部中断0设置 */

LCD_init(); timer=0; test_data=0; LCD_pos(1,2); LCD_dis(dis1); delay(3000); LCD_wcmd(0x01); LCD_pos(1,2) ; LCD_dis(dis2);

}

void dis_data() { test_res[0]='0'+(uint)(timer/10); test_res[1]='0'+(uint)(timer%10);

test_res[5]='0'+(uint)(test_data/100); test_res[6]='0'+(uint)((test_data%100)/10); test_res[7]='0'+(uint)(test_data%10); LCD_pos(2,5); LCD_dis(test_res);

}

uint key_coding() { uint cod; cod=0; if(key1==0) { delay(8); while(~key1); cod=1;

}

. . . 资料.

. . -.

if(key2==0) { delay(8); while(~key2); cod=2;

}

return cod;

}

void main()

//主函数

{ uint counter=0; dis_init(); while(1) { if(key_coding()==1) { LCD_wcmd(0x01); LCD_pos(1,2) ; LCD_dis(dis3) ; LCD_pos(2,1) ; LCD_dis(dis4); timer=0; test_data=0; TR0=0; while(1) { if(key_coding()==1) { LCD_wcmd(0x01); LCD_pos(1,2) ; LCD_dis(dis6) ; dis_data() ;

break;

}

if(key_coding()==2) { LCD_wcmd(0x01); LCD_pos(1,2) ; LCD_dis(dis2) ; break;

}

}

}

. . . 资料.

. . -.

}

}

if(TF0==1) { }

if(maibo==0) { }

delay(6); while(~maibo); if(TR0==0) { }

test_data+=1;

TR0=1; TF0=0; counter+=1; if(counter==16) { }

if(timer==60) { }

EX0=0; TR0=0;

LCD_wcmd(0x01); LCD_pos(1,1) ; LCD_dis(dis5) ; dis_data() ; delay(3000); counter=0 ; timer+=1 ; dis_data();

6.实践过程中问题及处理方案

(1) 信号采集电路局部,红外对的灵敏性不够。解决方法:直接使用信

号发生器来模拟红外对管生成44mV输入电压。

(2) 信号放大电路局部,实际放大增益与理论计算值有较大的差异。解

决方法:通过更换电阻改变增益系数,以到达最正确输出电压增益以及波形输出。

. . . 资料.

. . -.

(3) 控制显示电路局部,这一局部主要出现在软件编程中,外部中断0

与定时器0中断同时应用时发现单片机出现工作异常,最终通过采集低电平个数的方式省掉外部中断0的使用。

(4) 调试过程中,示波器不能正确显示方波。解决方法:将单片机局部

与整形放大局部电路板共地端,并调整示波器的耦合方式为直流。

7.个人心得总结

此脉搏技术其中关键技术是单片机编程与传感器输出的信号波形采集。

本文中设计的系统整体构造简单,控制显示局部由STCC52芯片实现脉搏信号采集与处理,脉搏计数、显示等功能,因此体积小,功耗低,系统稳定性高;放大局部采用根底同相放大电路,效率高,计算方便;滤波局部采用二阶同相低通滤波,有效地屏蔽了市电干扰,且通过电阻电容值的选择获取较大的测量空间。

通过本次课程设计,使得之前模电学习的运算放大器局部理解的更加深刻,以及对于该局部的理论计算更加熟练;同时,在动手做多块电路板的实践下,使得自身对altium designer6.0 PCB制作软件的使用更加熟练。

参考文献

[1] 廖惜春主编.模拟电子技术根底.华中科技大学.2008 [2] X秀平主编.数字电路与逻辑设计.2010 [3] 廖惜春主编.高频电子线路〔第3版〕.2010 [4] X焕成. 工程背景下的单片机原理及系统设计 2008 [5] 周静.?基于单片机设计的脉搏测量仪?毕业设计论文2009

[6] X云丽,X可欣,王玉祥,蒋诚志.微功耗光电式脉搏测量仪.中国科学院XX冶金研究所, 材料

物理与化学(专业) 博士论文.2000

. . . 资料.

. . -.

附录图一:信号提取及处理模块电路总原理图

. . . 资料.

. . -.

附录图二:控制显示模块总的原理图:

. . . 资料.

. . -.

附录图三:信号提取及处理模块电路PCB

. . . 资料.

. . -.

附录图四:控制显示模块电路PCB

. . . 资料.

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.com 版权所有 湘ICP备2023021991号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务