当前位置:文档之家› 脉搏心率测试仪测试与制作报告

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

五邑大学电子系统课程设计题目:脉搏心率测试仪测试与制作院系信息工程学院专业电子信息工程学号学生XX指导教师陈鹏讲师报告日期2013年1月脉搏心率测试仪测试与制作引言脉搏波所呈现出来的形态、强度、速率和节律等方面的综合信息,能反映出人体心血管系统中许多生理疾病的血流特征。

本系统是采用STC89C52单片机为核心而制作的一种实用型脉搏测量仪。

采用红外发射管和接收管对人体的脉搏心率进行数据采集,得到的信号滤波放大整形后送入STC89C52单片机进行采集和处理。

单片机将采集到的脉搏心率在液晶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所示。

通带电压增益为:2321A up =+=R R 总增益为:)/()/(1A 2uH H upf f jQ f f A +-=截止频率为:Hz 823.4000001.03.31000021RC 21=⨯⨯⨯==Hz f Hππ由滤波电路可知,滤波部分为二阶低通滤波电路;由所求截止频率可知,该部分电路在输入信号频率为4.8HZ 及以下时,信号正常放大Au 倍后输出;在输入信号频率大于4.8HZ 时,信号将快速衰减,最终无法导通。

因而,滤波部分电路最多能检测脉搏信号近300次每分钟,使得使用者有较大的测量空间,且能有效地拦截市电的50HZ 干扰信号。

图3.1电压跟随器电路 图3.2二阶低通滤波电路LM324运放3、4用于同相放大电路,如图3.3所示;NE555芯片用于电压比较和信号波形整形,如图3.4所示。

信号提取模块电路总的原理图见附录图一。

放大倍数为:2310220110R111A u =+=+=kkR 双同相放大器的放大倍数为:23 * 23 = 529电路总的放大倍数为:2 * 529 = 1058因而,在输入信号低至5mV 时,放大后输出波形峰峰值近5mV*1058=5290mV ≈5V 。

而NE555整形芯片在+5V 电源供应下,其比较阀值为向上2/3Vcc 向下1/3Vcc ,所以输入信号完全符合整形要求,且其输出高电平为4.7V 左右,完全能被STC89C52采集识别。

因而,总体设计符合要求图3.3同相比例放大电路图3.4 NE555整形电路4.单片机显示控制部分此次设计中的控制显示部分主要由STC89C52单片机和LCD1602液晶显示器共同构成。

(1)STC89C52单片机介绍STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。

在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、有效的解决方案。

具有以下标准功能: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秒为周期计算接受整形后波形的低电平个数,即得出我们需要脉搏数。

以下便是ATC89C52单片机信号采集和LCD1602显示控制的具体程序:/*头文件部分*///头文件maibo.h#ifndef _MAIBO_H_#define _MAIBO_H_#include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit 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<maibo.h>#include<intrins.h>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){TF0=0;counter+=1;if(counter==16){counter=0 ;timer+=1 ;dis_data();}if(timer==60){EX0=0;TR0=0;LCD_wcmd(0x01);LCD_pos(1,1) ;LCD_dis(dis5) ;dis_data() ;delay(3000);}}if(maibo==0){delay(6);while(~maibo);if(TR0==0){TR0=1;}test_data+=1;}}}6.实践过程中问题及处理方案(1)信号采集电路部分,红外对的灵敏性不够。

相关主题