本文介绍一种用单片机制作的脉搏测量仪,只要把手指放在传感器内,很快就可以精确测出每分钟脉搏数,测量的结果用三位数字显示出来。
一、电路工作原理
电路原理见附图。电路由传感器电路、信号放大和整形电路、单片机电路、数码显示电路等四部分组成。
传感器由红外线发射二极管和接收二极管组成,测量原理如下:将手指放在红外线发射二极管和接收二极管之间,血管中血液的流量随着心脏的跳动变化,由于手指放在光的传递路径中,血管中血液饱和度的变化将引起光的传递强度变化,此变化和心跳的节拍相对应,因此红外接收二极管的电流也跟着心跳的节拍改变,使得红外接收二极管输出与心跳节拍相对应的脉冲信号。该脉冲信号经F1~F3、R3~R5。C1、C2等组成的低通放大器放大,F4、R6、R7、C3组成的放大器进一步放大后,送给由F5、F6、RP1、R8等组成的施密特触发器整形后输出,作为单片机的外部中断信号。电路中的可变电阻RP1用来调整施密特触发器的阈值电压,即调整电路的灵敏度。IC2、X1、R10、C5等组成单片机电路。单片机对由P3.2输入的脉冲信号进行计算处理后,送到数码管显示。发光二极管VD3作脉搏测量状态显示,脉搏每跳动一次,VD3点亮一次三只数码管VT1~VT3、R12-R21等组成数码显示电路。本机采用动态扫描显示方式,使用共阳数码管,P3.3-P3.5口作三只数码管的动态扫描位驱动码输出,通过三极管VT1-VT3驱动数码管。P1.0-P1.6口作数码管段码输出
二、软件设计 程序用C语言编写,由主程序、外部中断服务程序、定时器TO中断服务程序、延时子程序等模块组成。主程序主要完成程序的初始化。外部中断0服务程序由测量、计算、读数等部分组成。定时中断服务程序由计时、动态扫描显示、无测试信号判断等部分组成。程序中用变量n对时间计数,用变量m对脉搏脉冲信号个数计数 从P3.2口输入的与脉搏相对应的脉冲信号作为外部中断0的请求中断信号,外部中断采用边沿触发的方式。由于脉冲信号的频率很低,所以不适宜用计数的方法进行测量,故而采用测脉冲周期的方法进行测量,即用脉冲来控制计时信号,通过计时数计算出脉冲周期,再由脉冲周期计算出频率,从P3.2口每输入一次脉冲信号就能显示一次脉搏数。
定时器TO的中断时间为5ms,每中断一次计时变量n加1,因此计时的基本单位为5ms,例如一个脉搏脉冲周期对应的n值为240,则对应的时间为1.2s,由此可得每分钟脉搏数为50。如果n的值达到2000,即10秒钟仍没有发生外部中断,则表示没有脉搏脉冲信号输入,于是n被清零,测量结果显示也为0。
读数采用三位数码显示。定时器TO每中断一次显示一个位,因此3次中断就可以刷新一次数据,即15ms刷新一次数据。
三、安装与调试
传感器的制作是一个关键。可将红外线发射二极管和接收二极管分别固定在一个塑料夹子的两侧,用时只需将夹子夹在手指上即可。制作时注意保证红外线接收二极管在使用时不要受到外界光线的干扰。
调试的主要工作是通过对RP1的调节来调整电路的灵敏度,RP1的阻值越小灵敏度越高,反之灵敏度越低。调试时可通过VD3的发光状态进行观察,如果脉搏跳动时VD3不跟随发光,则说明灵敏度偏低,不易检测到脉搏信号;如果在没有脉搏跳动时VD3偶尔也点亮发光,说明灵敏度偏高,容易受到干扰。