欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    基于MATLAB设计IIR滤波器之BH1790GLC心率传感器.doc

    • 资源ID:3411110       资源大小:20KB        全文页数:4页
    • 资源格式: DOC        下载积分:2
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要2
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于MATLAB设计IIR滤波器之BH1790GLC心率传感器.doc

    基于MATLAB设计IIR滤波器之BH1790GLC心率传感器      一个很有意思的传感器,BH1790GLC心率传感器,这个传感器是ROHM生产的,一个日本的厂家。其他的不说,就说说这个传感器吧。作为一名硬件开发设计人员,我拿到这个模块第一反映是去官网下载其数据手册,通过数据手册去了解这个传感器的特性。当有一个脉搏信号传递过来时,会造成血管的体积发生变化,如上图所示。传感器就通过采集血管的变化来检测脉搏。整个传感器框图如下:传感器需要外接两个绿色的LED灯珠,这个LED普通的还真不行,模块使用的是SML-M13MT这个型号,它与普通的LED的区别是,其通过反射的方式,将光强在一定范围内实现等效分布。芯片内部有绿色LED的驱动电路,另外在传感器的外部,有一组IRCUT滤波器,将外部的其它光线以及红外光线滤除,让绿光通过IRCUT,进入ADC去采集。最后数据通过IIC传输出来。整个传感器也没有几个用到几个器件,但是我查了,这个模块还真不便宜,网上报价是在100左右。模块的电路如下:其他参数就不多少了,详情可以查看传感器的数据手册,整个传感器的寄存器也没有几个,除了ID寄存器外,剩下就是控制寄存器,采集到的数据也是保存到DATOUT_LEDON 、DATOUT_OFF这两组数据寄存器中。还在手册上有测量控制说明,不至于让我感到太迷茫:按照这个时序,我对0x41 0x43寄存器进行了如下设置。最后按照时序要求就,读出DATOUT_LEDON 、DATOUT_OFF我将读出的DATOUT_LEDON 、DATOUT_OFF值通过串口打印出来,并画了线。下图为我手指没有放上去的时候的数据波形:DATAOUT_LEDOFF(红色)、DATAOUT_LEDON(蓝色)的值几乎保持稳定,在室内数据处在260左右。放上手指,波形马上发生了变化。DATAOUT_LEDOFF(红色)马上下降到20附近、而DATAOUT_LEDON(蓝色)有了很明显跳动,跳动的幅度很小,而且DATAOUT_LEDON(蓝色)值一直上升。这样的一个波形,当然如何去提取出脉搏数据?又需要一个怎样的算法?IIR滤波器应该是比较适合的一种方案。说到IIR滤波器,那就不得不说FIR滤波器,这两个都是一种数字的线性滤波器,其两者最大的区别是:1、在相同的技术指标下, IIR滤波器由于存在着输出对输入的反馈,因而可用比FIR滤波器需要更少的参数和资源。2、FIR滤波器可得到严格的线性相位, 而IIR滤波器则做不到这一点。3、IIR滤波器可以设计成标准低通、高通、带通、带阻、全通滤波器,而FIR滤波器则要灵活得多,可以设计出理想正交变换器、理想微分器、线性调频器等所以在我们的应用中,考虑IIR滤波器就可以了。相位移位对我来说,没有任何问题。针对上图中,当手指按下时的波形,需要对这个波形进行低通+高通的滤波。人体的脉搏正常范围在60-100之间。考虑到极端情况下,所以设置一个3.5HZ的低通滤波器和0.5HZ的高通滤波器,只需要截取0.5HZ - 3.5HZ范围的信号。先说说IIR滤波器,我这里选择的是直接I型IIR滤波器,其基于二阶Biquad级联的方式来实现的。每个Biquad由一个二阶的滤波器组成:yn = b0 * xn + b1 * xn-1 + b2 *xn-2 + a1 * yn-1 + a2 * yn-2直接 I 型算法每个阶段需要 5 个系数和 4 个状态变量,如下图。xn就是输入变量,yn就是基于IIR滤波之后的输出值。按照这样的公式,就是可以实现一个1阶的IIR滤波器,如果你在这个滤波器后面多加几个这样的滤波器,就可以实现多阶的IIR滤波器。公式有了,但是上面公式中的b0 、b1、 b2、a1、a2这些参数当怎么确定?答案是:使用MATLAB使用fdatool打开滤波器设计工具箱设置滤波器参数:注意的是:我们配置的BH1790GLC心率传感器输出数据是按照32HZ的,所以滤波器的采样频率是32HZ,截至频率是3.5HZ,滤波器参数使用MATLAB输出如下:得到了滤波器的参数,开始写代码吧。定义IIR滤波器参数结构体:IIR滤波器初始化IIR滤波器计算实现代码如下:关于滤波器的部分基本上 就是这么回事。剩下的就是使用IIR滤波器。程序按照32HZ的频率去读取传感器的数据。pw_GetMeasureData(读取传感器的数据保存到s_pwDatapwCalc(      数据经过IIR滤波之得到PW数据滤波方式如下: 首先原始数据先经过滑动求平均之后,经过高通滤波器之后,在经过低通滤波器,最后输出dataOut现在我将原始数据和滤波之后的数据通过串口传出来,波形显示如下:红色DATAOUT_LEDON,蓝色DATAOUT_LEDOFF,以及经过IIR滤波之后的数据 pw绿色将PW波形放大之后:可以看到,经过IIR滤波之后,pw几乎呈现很规律的正弦波,这样就可以很方便的统计出传感器的脉搏心跳。最后统计心跳,通过串口显示如下:当前心率为71,反复测试几次,数值都在70-75,看来一致性还是不错。

    注意事项

    本文(基于MATLAB设计IIR滤波器之BH1790GLC心率传感器.doc)为本站会员(白大夫)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开