社区导航

 

搜索
查看: 11124|回复: 42

[原创] 【STM32F7英雄联盟大赛】反射式血氧心率信号采集及监护记录系统-设计总结

  [复制链接]

700

TA的帖子

3

TA的资源

版主

Rank: 6Rank: 6

发表于 2015-12-22 20:30 | 显示全部楼层 |阅读模式
本帖最后由 nemo1991 于 2016-3-5 20:39 编辑

时间好快,开学之初看到论坛F7的活动决心参加,到此时完成比赛历时三个月,我也买好一个月后的车票等待回家,心里微微感叹着一学期又过去了。总体来说本次参赛对自己有相当的挑战,也有很大收获。
回顾比赛,虽不完美,但我们已经尽力做到最好,实现了设想的大部分功能。总结如下,欢迎大家批评指正。



设计名称反射式血氧心率信号采集及监护记录系统

最终实现功能
1.      完成血氧信息的采集,可以计算出人体血氧含量的百分比值;
2.      结合心跳周期内的光吸收率变化,可以提取正相关于心脏脉动的波形,进而提取心率值;
3.      结合F7板卡自带显示屏,可以将血氧心率数据显示在街面上,同时显示心跳的脉动波形;可以进行显示框拖动等简单交互;
4.      数据可以存储到SD卡中,便于后期分析;同时可以将心率血氧等信息通过串口发送到PC端。

以下将对作品背景及设计思路进行完整介绍。

项目简介:
血氧饱和度是人体重要的健康,其为氧合血红蛋白占总蛋白的百分比,对于新生儿、孕妇和老年人等具有重要意义。同时,结合血氧脉冲变化,可以获知另外一个重要参数——心率。本设计通过使用STM32F7处理器与专业级血氧模拟前端方案,DCM03作为光学传感器,结合数字信号处理算法,最终实现了具有高精度与高性能的血氧心率监测功能。同时结合板卡自带显示器、虚拟串口和SD卡等,本设计还具有良好的人机界面和数据存储功能。

设计背景:
血氧饱和度作为人体第五大重要的生理健康指标,能反映人体呼吸功能以及含氧量,对于新生儿、孕妇以及老人的健康监护有着重要的作用。而随着近年来的空气质量的下降,这个指标变得越来越受到重视。通常情况下,人体血氧量的监控是通过血氧仪来实现的。通过测量氧气水平和心率,血氧仪可以在低于预设水平时发出警报声。血氧仪可以用于对运动健康提供科学参考和心脏病、高血压等患者的健康监护仪器。目前市场上专业级血氧仪通常价格高昂,而消费级产品则精度较低,难以保证实用性。
因此,本文设计了基于STM32F746和专业模拟前端的高性能便携式的血氧仪,使用DCM03作为光传感器。实现了方便携带、快速测量,安全报警以及便携存储等一系列功能。
7.png

理论基础:
血氧含量,定义为氧合血红蛋白水平和总的血红蛋白水平(包含含氧和贫氧血红蛋白)的比例,即身体组织对光吸收总量的不同依赖于身体组织的氧含量,所以,身体的含氧量可以通过先测量两种频率的光分别通过身体后的强度,再计算这两个强度间的比率得到,具体如下:
2.png
本次设计采用的两种频率的光分别为波长为660nm的可见红光和波长为940nm的红外光,通过两个发光二极管交替闪烁,两种光分别通过人体,通过感光二极管接收反馈信号,进而达到分别测量的效果,测得数据后,计算公式如下:
3.png
其中,lambda1和lambda2代表使用的两种光的波长。
在测量中有一个直流分量和一个交流分量。直流分量被看作是身体组织和静脉吸收的结果,交流分量是动脉吸收的结果。
光的吸收效果通过比对交流信号的吸收强度获得,这其中需要控制的是入射光的驱动强度需要保持一致。也就是说,透过人体后的光信号其中直流分量需要保持一致,应该将直流信号误差作为反馈信号设置在系统中。
8.png

设计难点:
1.基本信号的提取:DCM03传感器受到模拟前端的驱动可以发射不同波长的两种光,光经过人体反射后由DCM03中集成的感光二极管接收进而产生一个电流。该电流值的典型直流分量值为uA级别,相对微小。该电流信号需要经过一个跨导放大器转化为一个电压信号,运放的反馈电阻典型值为500kΩ。经过跨到放大器所获得的电压信号含有的直流分量约为1V,而其中含有的交流信号典型值仅有10mV。而控制信号强度的方法为控制发射光LED的驱动强度,这里的控制需要非常精细而准确。如果驱动强度过小,则导致所获得的电压信号过小而无法准确采样;如果驱动强度过大,则会导致通过跨导放大器的电压信号过大,而造成饱和使得信号无法采集。
2.放大电路的设计:由光电二极管产生的初始电流信号经过跨导放大器可以看作是第一级放大,之后,信号需要经过第二级放大以便于ADC采集。而需要注意的是,经过跨导放大器中的信号中包含直流分量和交流分量,其典型值分别为1V和10mV,因此不能直接放大,需要剔除之流信号后再进行放大。理想的放大方案为:差分放大器一端接入来自跨导放大器的信号,另一端接入该信号的直流分量,而放大器放大的只有该信号的交流值。
3.数字滤波器的设计:在第一个跨导放大器反馈电阻和反馈电容构成了一个RC模拟滤波器,除此之外,所有的滤波器均为数字滤波器。滤波器的设置包括:除去50/60Hz噪声的滤波器、滤出经过放大电路放大后信号的直流部分(用于设置二级放大电路中差分放大器的偏置值)、使用截至频率低至几赫兹的低通滤波器进一步提取所获得信号,差分运算得到最终所需要的交直流分量。
4.STM32处理器的使用,本次设计中,使用了该处理器的多种功能,如GPIO、定时器、IO中断、SPI、I2C、USART等多种功能。
5.AFE4400模拟前端的使用。该模拟前端为TI公司专业光学模拟前端,针对血氧应用设计。其内部结构相对复杂,在对血氧测量相对了解之后使用仍然有一定难度。其接口电路、电源设计、等均需要独立完成。寄存器设置等也相对复杂。


硬件设计:
本次设计中基于STM32F7板卡,系统使用了Arduino接口引出了全部控制线。
依照IO的分配,这里简要说明IO资源对用的功能。
GPIO:为系统的按键和LED指示功能;
I2C:驱动MPU9150(仅出于兴趣调试了代码,设计中未使用该模块);
SDIO:驱动SD卡,需要配合若干IO使用;
SPI:驱动AFE4400为核心的血氧探头,需要配合若干IO使用;
UASRT:通过仿真器向PC发送数据;
LCD控制器:驱动LCD进行显示;

原理图设计:
1.系统主板使用F7板卡,原理图官方提供;
2.血氧仪探头原理图



软件设计:
软件内容较为繁杂,这里把程序的主流程贴出来:
系统初始化流程:
1.png
系统中断流程图:
5.png

源代码部分:
针对各个模块的驱动,我们组全部写出了教程帖子,按照相应代码可以重现工作。但是基于STM32CUBE生成的工程文件很大,因此考虑整理后上传源代码。
关于个模块代码的详细说明

进度贴:
nemo1991主要负责信号链设计,信号链设计包括初始信号采集和信号调理,从传感器得到的最初信号为一个光电流信号,调理放大等通过控制AFE4400实现。
首先看一下AFE4400的系统框图:
9.png
后期调理包括:
a:经过一个跨阻放大器转变为电压信号,跨阻放大器最终选择值为500K;
b:第二级放大电路设计,对初始电压信号进行第二级放大,该信号经过滤波后提供给ADC采集,放大过程中通过动态设置偏置电流去除共模电压,使之最佳地放大差模信号;
c:信号需要滤除50/60Hz干扰;
c:因为最终需要提取交流信号,需要使用高效直流滤波器对ADC采样值进行直流追踪,并最终减去直流获得交流值;
综合源代码见附件!

底层驱动:

为半导而生:
01:虚拟串口的使用
02.  GPIO中断的使用

03.  SPI的使用
04. I2C的使用

义剑仗乾坤:
01:学习使用SDIO

shileleyuqi:
01:移植 FATFS 文件系统


实物图:
最后,上一张最终作品的实物图!
6.jpg

视频观看地址:
观看密码:F72015



最后:
提供主芯片的datasheet以及血氧探头的设计原理图:


此帖出自stm32/stm8论坛

AFE4400.pdf

2.08 MB, 阅读权限: 10, 下载次数: 34

DCM03.pdf

226.16 KB, 阅读权限: 10, 下载次数: 16


回复

使用道具 举报

85

TA的帖子

1

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2015-12-22 21:07 | 显示全部楼层
强势围观!

回复

使用道具 举报

916

TA的帖子

5

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

发表于 2015-12-22 21:18 | 显示全部楼层
牛逼霸气!
作为一个菜逼,干货并没有多少。唯一会的就是水,所以回帖水分大。望见谅!

回复

使用道具 举报

2940

TA的帖子

0

TA的资源

纯净的硅(初级)

Rank: 4

发表于 2015-12-22 21:23 | 显示全部楼层
谢谢分享学习一下

回复

使用道具 举报

360

TA的帖子

2

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

发表于 2015-12-22 23:07 | 显示全部楼层

回复

使用道具 举报

3386

TA的帖子

0

TA的资源

纯净的硅(高级)

Rank: 6Rank: 6

发表于 2015-12-22 23:09 | 显示全部楼层
强力插入
So what......

回复

使用道具 举报

1530

TA的帖子

18

TA的资源

纯净的硅(高级)

Rank: 6Rank: 6

发表于 2015-12-22 23:41 | 显示全部楼层
前排围观
http://weibo.com/u/1391449055

回复

使用道具 举报

700

TA的帖子

3

TA的资源

版主

Rank: 6Rank: 6

 楼主| 发表于 2015-12-23 10:55 | 显示全部楼层

感谢支持!

回复

使用道具 举报

700

TA的帖子

3

TA的资源

版主

Rank: 6Rank: 6

 楼主| 发表于 2015-12-23 10:55 | 显示全部楼层
suoma 发表于 2015-12-22 21:23
谢谢分享学习一下

谢谢支持!

回复

使用道具 举报

700

TA的帖子

3

TA的资源

版主

Rank: 6Rank: 6

 楼主| 发表于 2015-12-23 10:56 | 显示全部楼层

回复

使用道具 举报

700

TA的帖子

3

TA的资源

版主

Rank: 6Rank: 6

 楼主| 发表于 2015-12-23 10:56 | 显示全部楼层

感谢支持!

回复

使用道具 举报

700

TA的帖子

3

TA的资源

版主

Rank: 6Rank: 6

 楼主| 发表于 2015-12-23 10:56 | 显示全部楼层

睡得好晚!
谢谢支持!

回复

使用道具 举报

71

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2015-12-23 15:03 | 显示全部楼层
现在已经做到这么成熟啦?学弟霸气!
读万卷书,行万里路

回复

使用道具 举报

700

TA的帖子

3

TA的资源

版主

Rank: 6Rank: 6

 楼主| 发表于 2015-12-23 15:06 | 显示全部楼层
zhang1014 发表于 2015-12-23 15:03
现在已经做到这么成熟啦?学弟霸气!

哈哈,学长好。
比430那个好一些,做着玩玩。

回复

使用道具 举报

360

TA的帖子

2

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

发表于 2015-12-23 22:47 | 显示全部楼层

哪里哪里,大家都不容易呢

回复

使用道具 举报

2

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2016-1-25 09:19 | 显示全部楼层
学习了!!!

回复

使用道具 举报

1

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2016-2-3 09:55 | 显示全部楼层

回复

使用道具 举报

16

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2016-3-3 09:45 | 显示全部楼层
牛,谢谢分享

回复

使用道具 举报

4

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2016-3-5 13:46 | 显示全部楼层
很好的设计和想法,还可以用做更多的扩展

回复

使用道具 举报

2

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2016-3-11 17:48 | 显示全部楼层
这东西我也有做的,哎可惜还没做出来。。。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

关闭

站长推荐上一条 1/6 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2020-6-1 09:47 , Processed in 0.586042 second(s), 43 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表