武昌首义学院信科院 刘雯娟 陈 青 刘 丽
基于光电实验平台的创新探索
武昌首义学院信科院 刘雯娟 陈 青 刘 丽
本文主要介绍了在光电实验平台上利用已有的红外光电传感模块及外围电路搭建快速心率测试仪系统,其中介绍了心率测试仪设计构成及工作原理,分析了光电采样及滤波放大电路,给出软件设计思想流程图,并进行了实验数据分析得出结论。
光电传感器;滤波放大;脉搏测量;心率
本系统以光电实验平台中的单片机为核心,利用反射式红外光电传感器模块作为信号测量器件,测量脉搏时人把手指的放在光电传感器上方,由传感器获取脉搏信号,经过带通滤波器过滤掉不需要的杂波,然后经过放大器和比较器得到与脉搏相关的直流脉冲信号,该脉冲信号作为中断信号经过单片机定时计数,从而算出心率周期,最终得到每分钟心脏的跳动次数(即心率)并在LCD液晶屏上进行显示,同时还可以设定上限次数和下限次数,当测量的结果超过预设的范围则驱动蜂鸣器报警,二极管发出亮光提醒用户。
图1 心率测量仪构成
系统由STC89C52、按键、LCD1602、红外光电传感器、运算放大器等部分构成,如图1所示,脉搏测量的时候将手指放在光电传感器上方(可以不用接触)。人脉搏跳动的时候,血管中的动脉舒张和收缩的变化将会引起血液流速的改变,由于静脉血和动脉血对光的透过率是不一样的,在光的路径中就表现为光强的改变,红外二极管的集电极产生的电流也会因此而变化,这样将二极管获取到的直流信号,通过后续电路对其进行带通滤波、放大、对比整形后,再通过主控系统对其进行计数处理,最终得到的结果就是人体每分钟心率的次数,测量结果在液晶屏上显示出来。另外本系统还设置有按键模块,方便用户调整时间,以便记录测量时间,还可以设置心率最大值和最小值,当超过预设范围的时候,单片机会触发蜂鸣器和发光二极管发出警报和提醒。
信号采集电路的功能是利用传感器获取脉搏信号再转换为电信号,但是要获得系统能识别的电信号还必须进行带通滤波,将不规则的干扰信号过滤掉。这是得到的电信号是十分微弱,通常为几十毫伏,就必须经过放大电路加以放大,以满足整形电路所需的电压,通常为几伏。然后再通过整形电路对信号进行修正或变换,经过整形之后输出直流的高低电平,这时信号就符合计数器的要求了。具体电路如图2所示:ST188为光电传感器,R7、R8、R12、C5、C6构成带通滤波电路,LM358完成小信号放大功能,并通过7脚提供单片机P3.2外部中断0的脉冲读入。
系统软件程序是用C语言编写和调试的。软件部分包括显示模块、按键模块、红外传感器检测模块、采样后信息处理模块。通电后单片机首先进行初始化,等待脉搏测量启动,当用户按下开始键后则进入检测,当检测到经电路滤波、放大、整形后的红外传感器信号时,判断是否属于正常的脉搏信号,这里选用150次/分的脉搏值作为比较值,因为人的正常脉搏不会超过150次/分,然后程序进入中断,测出每次脉搏跳动的时间,测量五次后取平均值,再用60000除以所测的值,就换算出对应的真实的脉搏次数,然后在液晶屏幕上显示。其总体流程图如图3所示。
图2 信号采集滤波电路
图3 系统流程图
在进行在线调试观察时,发现按键扫描函数没有添加软件防抖,造成按键读取不灵活,添加防抖程序如下:
delay_1ms(1);
if(((P3 & 0x78)!= 0x78) && (key_new == 1))
在调试过程中还发现系统只能测量一次心率,即当手指第二次离开传感器检测范围时,屏幕上仍然显示前一次所测的心率值,且一直不变,无法进行下一次测量。通过对程序软件的检查,发现没有重新装载定时器的预装载值,中断服务函数里面少了两行TH0=0x3c; TL0=0xb0;导致定时器无法进入下一次中断,在添加了预装载值后,这个问题就得到了解决。
经过一系列的调试和修改,对心率仪的测量准确度做了一个检测分析。先用听诊器测量一分钟的实际心率作为参考值,然后使用心率仪先后检测五次,每测量一次重新复位系统,这样算出一个平均值与实际值进行比较,然后重复上述操作五次,共得到五组数据如表1所示。
表1 误差分析表
然后由均方差公式计算得:
误差分析:在误差允许的范围内,心率测试仪的设计符合测量要求。
本设计是一种无创非接触式便携心率测试系统,其特点就是体外间接测量人体生理参数,不伤害人的身体,测量精度要比依靠手工脉诊要高,还能够自动消除仪表自身系统的误差。该设计体积小,集成度高,实时可视,易于使用等优点,设计完成后通过实际测试证明系统己能达到设计要求,具有实际应用价值。