微波EDA网,见证研发工程师的成长!
首页 > 应用设计 > 医疗电子 > 基于光电对射管的健身器心率测量系统设计

基于光电对射管的健身器心率测量系统设计

时间:01-13 来源:互联网 点击:
本文介绍了基于光电对射管的健身器心率测量的硬件及软件系统设计。通过获取位于光电对射管中间的人耳垂部分的血液浓度的变化信号,经过滤波放大等信号调理,使心率信号转化为单片机可直接计量的方波信号。本文介绍的心率测量系统已在作者研制的健身器系统中得到了大量的应用,应用效果理想。

心率在健身器系统中是一个重要的反馈信号,它反映了人们在锻炼时的身体状况,对人的生命系统起着重要的监护作用。心率测量的准确与否,直接影响着人们在锻炼时的心理状态,因而心率测量是健身器系统中重要的组成部分。本文应用光电对射管研制了基于血液浓度变化的心率测量系统,应用简单的滤波和放大电路,使健身器的心率测量准确可靠。

1光电对射管的特点及其应用

光电对射管是一种光电转换的器件。它可以将外界光的信号转换成电压信号,以便于系统识别。因此光电对射管在测速、测距、信号转换等各种场合得到广泛应用。光电对射管由发光管和接收管两部分构成。在应用中可以给发光管加上适当的恒定电流,使其发出均匀稳定的光。接收管串入合适的电路,系统可以从接收管上获取电压信号。当发光管和接收管之间的透光状况发生变化时将引起通过接收管的电流的变化。

本文将光电对射管做成夹子形状,夹在耳垂、手指等皮肤表面,随着心脏的跳动,血管内的血液浓度发生周期性的变化。血液浓度的变化引起接收管上接收的光强变化,从而系统就可以采集到周期变化的脉动信号。采用合适的电路将信号放大、滤波、整形后输出标准方波信号送到单片机中。

2信号分析和信号调理电路

2.1 信号分析

光电对射管接收管接收到的信号非常微弱,采集到的心率信号变化量只有50mV,并且带有一定的电压偏置量,同时存在大量的电压噪声。通过示波器采集从图2所示的电路图中的a点采集到的信号波形如图1所示。



2.2 信号调理电路

由于通过光电接收管接收到的信号极其微弱(变化幅值在±10mV之间),因而容易被其外围电路所干扰,因此系统必须单独为信号调理电路提供电源,同时,系统的线路板布线也会对信号产生较大的影响,因此在设计线路板时要主要信号线与电源地线的设计。信号经过LM324的两级放大后仍存在较大的偏置电压,因此必须在信号输入端加滤波电容,将电路中的直流成份滤掉并保证不影响交流信号的传递,光电对射管采集信号和信号调理电路如图2所示。



从图1的原始信号波形图中基本可以看到波形整体的变化趋势,但是其中有很强的杂波和干扰信号。因此将信号放大后必须进行滤波处理。经过LM324的一级放大和整形滤波后的信号已经很平滑。经图2电路中的b点即可采集得到很好的心率信号波形,此时信号的变化幅值为0.8V,但还存在一定程度的电压偏置量,经过图2所示的再一级放大就得到了0~4V的脉冲信号。从图2电路中的c点测量到信号波形中已无干扰,信号已经相对稳定,并且也去掉了电压偏置。该信号经过施密特反向触发器74LS14反向后,就得到了标准的方波信号。从图2所示电路中的d点测量的信号波形如图3所示。从图3中可以看出信号的上升沿和下降沿很好,电压变化量为标准的0~5V。此时即得到了完整的心率信号。此信号变化稳定,和心脏同步,是心脏跳动的真实反映,将此信号直接连接到单片机中以进行心率信号的测量。




3心率算法和软件编程

系统采用ATMEL公司的AT89S52单片机。该单片机对各种恶劣的工作环境有较强的适应性,并且内部带有看门狗。心率信号连接到单片机的外部中断INT0口,通过计算相邻两次心率之间的时间差换算出心率。通过定时器计时,得到相邻两次中断之间的时间差T。设定定时器的计时单位为 秒,即每 秒计数字节增加1,通过计算可得到两次中断之间的时间和计数器n的关系为: ,再根据心率的计算公式:心率=心跳次数/分钟,得到的计算公式如下: 从而得出每分钟的心率值。

部分程序流程框图如图4所示。



部分程序如下:

主程序:ORG 0000H

AJMP MAIN

ORG 0003H

AJMP INTX

ORG 000BH

AJMP INTT0

ORG 0040H

MAIN:MOV SP,#60H

SETB EA

SETB EX0

SETB TR0

SETB IT0

MOV TH0,#0BEH

MOV TL0,#0E4H

MOV TMOD,#11H

MOV 30H,#0;心率存放的地址

MOV 31H,#0; 计数器

MOV 32H,#0;

DISPLAY: ?

? ;显示程序

?

AJMP DISPLAY

END

主程序里打开外部中断,并且外部中断0设为下降沿有效。信号每出现一次下降沿,程序将自动进入中断,将计数器内的数据读出并且将计数器清零。把读出的数据放到30H地址内,31H为数据存储的中转字节,在主程序里就将此数据显示出来。

外部中断的子程序如下:

INTX:MOV 30H,31H

MOV 31H,#0

RETI

定时器0的中断子程序如下:

INTT0:INC 31H

MOV TH0,#0BEH

MOV TL0,#0E4H

RETI

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top