单片机脉搏测量仪
时间:10-02
整理:3721RD
点击:
医院的护士每天都要给住院的病人把脉记录病人每分钟脉搏数,方法是用手按在病人腕部的动脉上,根据脉搏的跳动进行计数。为了节省时间,一般不会作1分钟的测量,通常是测量10秒钟时间内心跳的数,再把结果乘以6即得到每分钟的心跳数,即使这样做还是比较费时,而且精度也不高。本文介绍一种用单片机制作的脉搏测量仪,只要人把手指放在传感器内2秒钟就可以精确测量出每分钟脉搏数,测量结果用三位数字显示。
传感器主要由红外线发射二极管和接收二极管组成,测量的原理如下:将手指放在红外线发射二极管和接收二极管中间,随着心脏的跳动,血管中血液的流量将发生变化。由于手指放在光的传递路径中,血管中血液饱和程度的变化将引起光的强度发生变化,因此和心跳的节拍相对应,红外接收二极管的电流也跟着改变,这就导致红外接收二极管输出脉冲信号。脉冲信号由F1~F3、R3~R5、C1、C2等组成的低通放大器进行放大,再经由F4、R6、R7、C3组成的放大器进一步放大,其输出信号送给由F5、F6、RP1、R8等组成的施密特触发器进行整形后输出,输出的脉冲信号作为单片机的外部中断信号。可变电阻RP1用来调整施密特触发器的阀值电压,从而调整电路的灵敏度。
AT89C2051、X1、R10、C5等组成单片机电路。单片机电路对P3.2输入的脉冲信号进行计算处理后把结果送到数码管显示。发光二极管VD3作脉搏测量状态显示,脉搏每跳动一次发光二极管就点亮一次。
数码管DS1~DS3、VT1~VT3、R12~R21等组成数码显示电路。本机采用动态扫描显示的方式,使用共阳数码管, P3.3-P3.5口作三个数码管的动态扫描位驱动码输出,通过三极管驱动数码管。P1.0-P1.6口作数码显示七段笔划字形码的输出,用以驱动数码管的各字段。
软件设计
程序用C语言编写,由主程序、外部中断0服务程序、定时器T0中断服务程序、延时子程序等模块组成。主程序主要完成程序的初始化,外部中断0服务程序由测量、计算、读数等部分组成,定时中断服务程序由计时、动态扫描显示、无测试信号判断等部分组成。程序中用变量n对时间计数,用变量m对脉搏脉冲信号个数计数。
从P3.2口输入的脉搏脉冲信号作为外部中断0的请求中断信号,外部中断采用边沿触发的方式。由于脉搏脉冲信号的频率很低,所以不适宜使用计数的方法测量,而是采用测脉冲周期的方法进行测量,即用脉冲来控制计时信号,通过计时数计算出脉冲周期,再由脉冲周期计算出频率,从P3.2口每输入一次脉冲信号就能显示一次脉搏数。
定时器T0的中断时间为5mS,每中断一次计时变量n加1,因此计时的基本单位为5mS,例如一个脉搏脉冲周期对应的n的值为240,则对应的时间为1.2S,由此可得每分钟脉搏数为50。如果n的值达到2000即10秒钟仍没有发生外部中断,即没有脉搏脉冲信号输入,则n也被清零,测量结果显示0。
读数采用三位显示,定时器T0每中断一次显示一个位,因此3次中断就可以刷新一次数据,即15mS刷新一次数据。
安装与调试
IC1用CMOS六非门集成电路CD4069,IC2用AT89C2051单片机集成电路,X1用12MHz的石英晶体,DS1-DS3选用共阳LED数码管。制作传感器的元件分别选用红外线发射二极管PH303和红外线接收二极管PH302。
先将C语言源程序用KEILC51编译成目标文件即HEX文件,再用编程器将HEX文件写入AT89C2051芯片。
传感器的制作是一个关键,可将红外线发射二极管和红外线接收二极管分别固定在一个塑料夹子的两侧,用时夹在手指上即可,制作时注意不要让红外线接收二极管在使用时受到外界光线的干扰。
安装后的调试工作主要是通过对RP1的调节来调整电路的灵敏度,RP1的阻值小时灵敏度高,反之灵敏度低。调试时可通过VD3的发光状态来进行,测量中如果脉搏跳动时VD3不跟随发光说明灵敏度偏低,不易检测到脉搏信号;如果VD3在没有脉搏跳动时偶尔也点亮发光说明灵敏度偏高,易受到干扰信号的影响。 吴汉清