一种基于循环队列的脉搏信号纠错方法与流程

文档序号:17154136发布日期:2019-03-19 23:46阅读:420来源:国知局
一种基于循环队列的脉搏信号纠错方法与流程

本发明涉及物联网及医疗设备领域,具体涉及一种基于循环队列的脉搏信号纠错方法。



背景技术:

脉搏信号能够反映人体心脏器官和血液循环系统的生理变化,是人体重要的生理信号之一,而且脉搏的变化情况与心血管疾病的生理、病理信息有密切的联系。中医通过手诊脉的手段历史悠久,但是医生只能主观分析诊测到的脉搏,加上从医经验进行判断,并不能客观的分析,因此,有很大的不确定性。

而用现代的传感器方式测量脉搏信号时。若单片机时钟频率为fmhz,定时器(timer)为16位定时器,选择自动重装功能,分频方式为n分频,开启定时器通道捕获功能,并选择脉冲上升沿捕获。当timer溢出时,产生定时器溢出中断,使用count对溢出次数进行计数,当产生一次定时器溢出中断时,count计数器加1,当timer通道捕获功能捕获到脉冲中断时,计算脉冲周期t如下:

t=count*(216/((f/n)*220))

脉搏每分钟跳动次数:num=60/t

但是在脉搏脉冲信号采集过程当中,由于人为因素:1、传感器未放置正确的位置,无法采集脉搏搏动;2、人体肌肉抖动产生一些异常信号等原因;会造成无法采集到脉冲信号,或者采集到的脉冲信号为异常信号;因此本发明上述过程的基础上对其算法进行补充和改进,引入一种基于循环队列的脉搏信号纠错方法。



技术实现要素:

本发明的目的在于克服现有技术存在的问题,提供一种基于循环队列的脉搏信号纠错方法。

为实现上述技术目的,达到上述技术效果,本发明通过以下技术方案实现:

一种基于循环队列的脉搏信号纠错方法,该方法包括以下步骤:

步骤1)系统启动时对定时器timer和通用输入/输出端口gpio硬件进行初始化,并开启定时器timer溢出中断,开启定时器timer捕获中断,开启系统中断;

步骤2)判断脉冲中断信号是否产生,若否,则进入步骤3),若是,则进入步骤4);

步骤3)判断定时器timer溢出中断是否产生,若是,则计数器count加1并跳转至步骤2),若否,则直接跳转至步骤2);

步骤4)判断脉冲中断信号是否第一次获取,若是,则初始化定时器timer和计数器counter,将定时器timer和计数器count置0,并跳转至步骤2),若否,则关闭通道捕获功能和关闭定时器timer,并进入步骤5);

步骤5)计算心率heartrate,至少连续测量到脉冲中断信号三次以上后,对三次的脉冲中断信号数据进行取平均值,最后得出心率heartrate。

进一步的,所述步骤5)中,预设一个心率heartrate的正常区间值、以及设置一个循环队列;

若步骤5)中得出的心率heartrate在这个正常区间值范围内,则将采集到的心率heartrate放入循环队列中,直至该循环队列中放满经过连续采集到的皆位于正常区间值范围内的心率heartrate,对循环队列中的心率heartrate数据求平均值,将该平均值赋值到最终的心率heartrate,等待发送至终端设备;

若步骤5)中得出的任意一个心率heartrate在这个正常区间值范围外,则判别为异常脉搏信号,并清空循环队列,所有数据重新进行采集,跳转至步骤2)。

进一步的,所述循环队列为一固定长度的数组,当采集到心率heartrate后,将心率heartrate加入至队列末尾,并且队尾指针加1,当周期性“通知”事件触发后,取出队首指针位置的心率heartrate,将心率heartrate通过物联网发送后,队首指针加1,当出现队首指针与队尾指针相同时,则直接发送0。

进一步的,所述步骤5)中的心率heartrate的正常区间值为30-180。

本发明的有益效果是:

本发明能对因传感器位置不准确和人体肌肉抖动产生一些异常信号进行整体剔除纠错,能进行准确的脉搏信号测量,并且测量的脉搏(或心率heartrate)信号连续且准确。

附图说明

图1为本发明的流程示意图。

具体实施方式

下面将参考附图并结合实施例,来详细说明本发明。

参照图1所示,一种基于循环队列的脉搏信号纠错方法,该方法包括以下步骤:

步骤1)系统启动时对定时器timer和通用输入/输出端口gpio硬件进行初始化,并开启定时器timer溢出中断,开启定时器timer捕获中断,开启系统中断;

步骤2)判断脉冲中断信号是否产生,若否,则进入步骤3),若是,则进入步骤4);

步骤3)判断定时器timer溢出中断是否产生,若是,则计数器count加1并跳转至步骤2),若否,则直接跳转至步骤2);

步骤4)判断脉冲中断信号是否第一次获取,若是,则初始化定时器timer和计数器counter,将定时器timer和计数器count置0,并跳转至步骤2),若否,则关闭通道捕获功能和关闭定时器timer,并进入步骤5);

步骤5)计算心率heartrate,至少连续测量到脉冲中断信号三次以上后,对三次的脉冲中断信号数据进行取平均值,最后得出心率heartrate。

所述步骤5)中,预设一个心率heartrate的正常区间值、以及设置一个循环队列;

若步骤5)中得出的心率heartrate在这个正常区间值范围内,则将采集到的心率heartrate放入循环队列中,直至该循环队列中放满经过连续采集到的皆位于正常区间值范围内的心率heartrate,对循环队列中的心率heartrate数据求平均值,将该平均值赋值到最终的心率heartrate,完成操作后开启通道捕获功能,开启定时器,进入下一次计算;

若步骤5)中得出的任意一个心率heartrate在这个正常区间值范围外,则判别为异常脉搏信号,并清空循环队列,所有数据重新进行采集,跳转至步骤2)。

所述循环队列为一固定长度的数组,当采集到心率heartrate后,将心率heartrate加入至队列末尾,并且队尾指针加1,当周期性“通知”事件触发后,取出队首指针位置的心率heartrate,将心率heartrate通过物联网发送后,队首指针加1,当出现队首指针与队尾指针相同时,表明无心率heartrate可以发送,则直接发送0,即直接将心率heartrate置0。

所述步骤5)中的心率heartrate的正常区间值为30-180。

下面的一个例子是本发明根据上述发明构思编辑的一段核心程序代码及标注解释:

上述代码只是一个举例,并不用于限制本发明的构思。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1