基于MAX30100传感器心率检测实现的作品报告解答_第1页
基于MAX30100传感器心率检测实现的作品报告解答_第2页
基于MAX30100传感器心率检测实现的作品报告解答_第3页
基于MAX30100传感器心率检测实现的作品报告解答_第4页
基于MAX30100传感器心率检测实现的作品报告解答_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、学年度实践学期学生实践报告年 月 日一年 月 日项目名称:指导教师:课 题:系另比专业班级:学 号:学生姓名:摘要本学期的小学期实践设计项目作品, 为基于单片机 MCI开发箱的心率传感器开发, 该主 体采用IAP15W4K58S4型号MCU单片机作为本项目的开发系统,以及基于 MAX30100芯片的 传感器。电源供配采用 MCI开发箱自带的恒压电源, 数据显示采用由两片 HC595动态驱动的 8 个数码管。考虑到对本项目作品的使用与数据采样处理,本人采用最高具有16 位精度的MAX30100芯片传感器作为主要的心率数据采集模块,MAX30100芯片内部集成 ADC数据转换,以及多个可读写寄存器

2、,本作品主要操作其中的FIFO寄存器进行数据采集。同时 MAX30100芯片传感器属于 I2C 接口器件,故在程序开发中,采用 I2C 接口协议进行。关键词:单片机MCI开发箱;MAX3O1O0传感器;HC595 FIFO寄存器;I2C ;免责申明:本报告为本人作为学生所作报告,报告中个别部分(图片、伪代码、芯片介 绍等)存在局部摘取他人成果,本人已做出作品后现发出本报告纯为分享学习, 不做他途,故请大家善取善用。目录一、项目目的 31.1、项目目的 31.2、项目目标 3二、项目内容及硬件设计 42.1、系统器件介绍 42.2、各电路模块 4三、软件设计 53.1、程序开发使用软件 53.2

3、、程序流程图 53.3、代码示例(ma in函数部分) 63.4、算法问题及分析 83.4.1、关于整体代码框架中存在的问题 83.4.2、关于对MAX30100芯片的硬件驱动 83.4.3、关于在驱动FIFO时需要注意的细节 93.4.4、关于对项目硬件调试 9四、总结与展望 10五、附录 11作品图片 11 一、项目目的及目标1.1 、项目目的: 随着人类的科技文明发展的进步,人们越发开始关注人们自身生活的质量及健康安全, 而随可穿戴设备及物联网的发展, 心率统计也从此开始全面进入人们的视野及生活。 为何人 们关注心率统计 ?事实上,心率数据可以反映人身的多项健康指标,诸如在睡眠情况、运动

4、 时所处状态,甚至也能根据对人身实时的心率数据来跟踪人的内心情绪的波动。本项目的选题方向, 紧扣时代及社会热点,在设计研究上,对算法的深入, 也同时揭开 了可穿戴设备的神秘面纱,让我们更接近实际学习应用的学习及实践。1.2 、项目目标:在本项目的设计实践中, 本小组成员都期待在硬件设计完备的基础上, 通过对 MAX30100 芯片的深入,进而自主设计心率算法及软件框架来实现较为准确的心率检测。、项目内容及硬件设计2.1、系统器件介绍:本次项目作品,主体采用MAX30100传感器芯片模块,及MCU单片机开发箱,其中MAX30100是一款集成有脉搏血氧仪和心率监测传感器的模块。该器件集成有两个 L

5、ED 一个光电探测器,经过优化的光学器件和低噪声模拟信号处理器,可检测脉搏血氧及心率信号。MAX30100采用1.8V和3.3V的电源电压。可通过软件来关断电源,待机模式下的电流消耗量可忽略不计,因而可以始终保持电源连接。典型应用有健身辅助设备、医疗监控设备和可 穿戴设备。其中,MAX30100电路整体视图如下:ccm HW J1FV 1 9Q* * *MCU单片机开发箱,是具备 IAP15W4K58S4型号MCU芯片的单片机开发箱,箱上具有由 两片HC595动态驱动的8个数码管,及4*4物理按键,及两个中断物理按键。以上两个都支持I2C接口。2.2、各电路模块:三、软件设计3.1、程序开发使

6、用软件:本项目程序开发所使用软件为Keil for C51 的v4版本,及STC公司所提供的芯片烧写软件。其中,本小组在此提出几点注意事项。在本项目的程序开发过程中,本小组成员发现,在程序的功能扩展中,对所使用的程序开发软件有一定要求。本程序代码基本超出未激活版本Keil for C51所给的空间,所以在程序开发中,既要求程序开发人员对程序空间要节约使用,对代码多进行优化,同时即使节约使用,在程序开发末期也可能出现空间溢出,所以也要求程序开发软件处于激活状态,如此才能得到更多的空间资源。另外在程序烧写过程中,要求操作开发人员依据程序烧写流程进行,由此避免硬件不必要的损坏,及实验错误等。3.2、

7、程序流程图:3.3 、软件设计 (main 函数部分 ) :int main() u8 i;P0M1 = 0; P0M0 = 0; / 设置为准双向口P1M1 = 0; P1M0 = 0; / 设置为准双向口P2M1 = 0; P2M0 = 0; / 设置为准双向口P3M1 = 0; P3M0 = 0; / 设置为准双向口P4M1 = 0; P4M0 = 0; / 设置为准双向口P5M1 = 0; P5M0 = 0; / 设置为准双向口P6M1 = 0; P6M0 = 0; / 设置为准双向口P7M1 = 0; P7M0 = 0; / 设置为准双向口display_index = 0;IE1=

8、 0; / 外中断 1 标志位IE0= 0; / 外中断 0 标志位EX1 =1; /INT1 EnableEX0 =1; /INT0 EnableIT0 =; /INT0 下降沿中断IT1 =; /INT1 下降沿中断EA = 1;/允许总中断AUXR= 0x80; /Timer0 set as 1T, 16 bits timer auto-reload,/使用 Timer0 的 16位自动重装来产生 1ms 节拍 ,程序运行于这个节拍下 , 用户修改U 主时钟频率时 ,自动定时于 1ms.TH0 =(u8)(Timer0_Reload / 256);/Timer0_Reload Timer

9、 0 中断频率, 1000 次 / 秒 1msTL0 =(u8)(Timer0_Reload % 256);/通过 % / 分别获取高低位时钟值u8 无符号 8 字节整型ET0 =1; /Timer0 interrupt enable/时钟中断使能TR0 =1; /Timer0 run/时钟运行EA = 1;/允许总中断for(i=0; i= 10) /20ms 扫描一次行列键盘 cnt50ms = 0; IO_KeyScan();if(KeyCode != 0)/有键按下 if(KeyCode = 17) K = 0; if(KeyCode = 21)K = 1; if(KeyCode =

10、25) K = 2;KeyCode = 0;/*if(+msecond = 200 & K = 0) msecond = 0;ReadMAX30100_Temp(); DisplayMAX30100_Temp();if(+msecond = 200 & K = 1) msecond = 0;ReadMAX30100_SpO2();DisplayMAX30100_SpO2();*/if(f & Hr_state)f = 0;ReadMAX30100_Hr();DisplayMAX30100_Hr();3.4 、算法问题及分析:在本项目中, 由于在硬件的设计及准备上的完备, 在项目进行的过程中,

11、所遇见的问题 基本集中于本项目的算法设计及软件程序的框架设计之上。在以下的问题列举与分析中,主要提及重要部分。3.4.1 、 关于整体代码框架中存在的问题 :在整体代码框架中, 如 3.2 中的程序流程图所示, 基本采用分段式的各部分模块执行而 行进,再通过时钟及外设(诸如键盘,或心率采样行为)的中断来响应及作出反馈。其中, 在时钟中断中,由于MAX30100芯片的硬件设计,基本都存在对时钟延时的需要,一为确保采样准确,二为实现硬件的时钟响应兼容。而正由于此,当时钟延时积累超出一定范围时, 对时钟中断的设计要求则不得不通过补偿方式, 不断调试修正。 另外, 时钟延时也在一定程 度上影响外设的响

12、应。所以,在整体代码框架中,非常需要注意在循环、中断、反馈及实际 硬件影响。342、关于对MAX30100芯片的硬件驱动:通过查看MAX30100芯片手册,以下给出关于对MAX30100关键部分的FIFO读写的伪代码。伪代码,示例如下:Pseudo-Code Example of Reading Data from FIFO/ 从 FIFO 中读取数据的伪代码示例First transaction: Get the FIFO_WR_PTR:/ 第一次交易:获得 fifo_wr_ptr :START;Send device address + write modeSend address of

13、FIFO_WR_PTR;REPEATED_START;Send device address + read modeRead FIFO_WR_PTR;STOP;The central processor evaluates the number of samples to be read from the FIFO: / 中央处理器评估从 FIFO 读取的样本数量:NUM_A VAILABLE_SAMPLES = FIFO_WR_PTR - FIFO_RD_PTR(Note: pointer wrap around should be taken into account)NUM_SAMPLE

14、S_TO_READ =Second transaction: Read NUM_SAMPLES_TO_READ samples from the FIFO:/ 第二次交易:从 FIFO 读取 num_samples_to_read 样品:START;Send device address + write modeSend address of FIFO_DATA;REPEATED_START;Send device address + read modefor (i = 0; i NUM_SAMPLES_TO_READ; i+)Read FIFO_DATA;Save IR15:8;Read F

15、IFO_DATA;Save IR7:0;Read FIFO_DATA;Save R15:8;Read FIFO_DATA;Save R7:0;STOP;Third transaction: Write to FIFO_RD_PTR register. If the second transaction was successful,/ 第三次交易:写 fifo_rd_ptr 寄存器。如果第二次交易成功,FIFO_RD_PTR points to the next sample in the FIFO, and this third transaction is not necessary./

16、fifo_rd_ptr 指向 FIFO 的下一个样品,这第三次交易不是必要的。Otherwise, the processor updates the FIFO_RD_PTR appropriately, so that the samples are reread./ 另外,处理器适当地更新 fifo_rd_ptr ,使得样品得以重读。START;Send device address + write modeSend address of FIFO_RD_PTR;Write FIFO_RD_PTR; STOP;3.4.3 、关于在驱动 FIFO 时需要注意的细节:在写MAX30100芯片硬

17、件驱动时主要问题在于对FIFO的操作上,在此需要注意的细节主要体现在,在使用IIC协议对FIFO的寄存器进行操作时,首先根据项目需求,如采集样本 数及精度等,配置 config寄存器,接着需要对 FIFO的各个寄存器进行清零(写 0x00),其 中包括写寄存器、读寄存器、计数寄存器和数据寄存器,最后才进行写操作或读操作。3.4.4 、关于对项目硬件调试 : 在程序基本完成时, 由于要在实际环境下完成心率数据的采集及处理, 所以在硬件调试 中,必然根据实际测得数据,计算出实际测量误差,再由此修改调节在中断、延时、反馈、 采集数量、样本精度等过程中的数据参数。硬件调试中,重点注意误差分析。本项目的实验误差,一体现在实验操作,二体现在数据处理及算法优化上。所以,在实验操作上,要求实验人员多次重复,控制操作流程;在数 据处理及算法优化上, 要求程序开发人员对数据误差进行分析并由此进行修正

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论