低功耗心率检测仪设计
4.1 心率算法描述
本文引用地址:https://www.eepw.com.cn/article/266044.htm计算心率也就是计算每两个R峰之间的时间,所以找到R峰的准确位置则是关键。我们在连续信号通过找到倒数为0的值来找到峰值,而在采样得到的离散信号理中则通过差分来找到峰值。为了显示的心电波形更真实,我们的采样率为100Hz。为了配合手机显示模块,每次采样700个点,而计算的心率则为在这段时间内的平均心率。在显示结束后再立刻开始采样,刷新现有数据。然后一直重复执行来获得相对的实时心率。通过差分求极点的算法较为准确,可以有效地算出心率。首先进行预处理:用简单的5点平滑滤波法,去除采样数据的小误差。为了排除干扰,我们将R峰幅值的70%作为一个阈值,小于这个值的都置为0,不影响后面的判断。接着进行心率计算:将信号进行两次差分,将每个值为-2的点(若某个点的值为-2,则表示该点相对于前一个点呈增加趋势,而后一个点相对于该店呈减少趋势,可知这个点是我们寻找的峰值)的下标储存且标记。
心率 = [1÷(RR峰间隔/采样率)]*60
4.2 手机端 Android 应用
1.使用说明:
(1)点击开启蓝牙开启手机蓝牙并连接使用的蓝牙模块,点击波形显示在中央的白色画布显示波形,点击开始采样可以向蓝牙模块发送开始信息。
(2)当所连接的蓝牙模块有数据传输时,心率会显示心率数值,如果心率低于50字体变为黄色并闪烁,若高于90字体变为红色并闪烁以起到报警作用。
(3)若有数据传入的同时正在显示波形,则画布上会显示经蓝牙模块传输的波形。
2.系统设计如图7。
3.具体实现:
(1)使用Eclipse平台进行手机端Android程序编写,使用Android4.2.2系统华为手机进行调试。
(2)蓝牙线程:采用输入输出流操作,将蓝牙模块传输的信号读取到一个字节(Byte)数组存储,第一位为心率数值可显示为0~255,后面数据为波形数据,传输到绘图线程进行波形的绘制。心率数值通过信息句柄传输到UI线程,显示心率并对超限心率进行报警。
(3)绘图线程:先对背景坐标轴进行绘制,使用打点的方法将读入的波形数据绘制在画布上,并且对横坐标计数,当运行到屏幕最后时再从头开始逐步刷新波形。
4.3 单片机软件模块
4.3.1 AD采样模块
因为要将模拟信号转换为数字信号,再进行数据处理,所以AD采样十分重要。5529内部有高性能的12位的ADC,转换速率快,采样值精确。使用单通道重复采样模式,我们运用定时器B来触发采样,为了波形显示的完整和信号的准确我们将采样率设为100Hz。因为手机屏幕一次能显示700个点,所以我们每次采样700个点来显示波形并且计算心率。在中断中将采样值存储到数组中,以采样次数来控制采样的结束,到达700个点后,关闭中断,终止采样。等待手机接收完数据,再次采样重复上述步骤。
模拟信号相关文章:什么是模拟信号
高通滤波器相关文章:高通滤波器原理
评论