本帖最后由 少先队大队长 于 2020-10-29 20:23 编辑
摘要
无线运动传感器节点能实时采集使用者的心电信号以及温度和运动信息,并兼具有心率测量和计步的功能,最终将这些信息发送到使用者服务器终端(手机)。 本系统采用ADS1292模块对人体的心电信号进行测量,并在单片机中计算得到心率;使用温度传感器LMT70测量温度信息,使用MPU6050模块采集到使用者的运动信息并且计算出步数,最终将心电信号和心率、温度、步数在显示屏上显示,通过蓝牙模块与服务器终端(手机)进行通信,并最终将这些信息在手机上显示出来。
关键字:心电信号测量 ADS1292 温度传感 无线运动传感
目录
无线运动传感器节点设计(A题) 【本科组】 1系统方案
本系统主要由单片机模块、ADS1292模块、LMT70模块组成,下面分别论证这几个模块的选择。 1.1 单片机模块的论证与选择
方案一:选择STC89C52作为主控芯片,STC89C52周期比较慢,使系统反应比较慢。 方案二:选择MSP430G2553作为主控芯片,这款单片机的虽然周期是比STC89C52快,但是为了实现能够实时显示,电路中的电压和电流,使用端口不够。 方案三:选择STM32F4作为主控芯片,这块芯片不但总线频率能超频到168MHZ,这是一个非常快的反应速度,再加上有100多个引脚,完全可以满足系统控制的要求。 综合以上三种方案,选择方案三。 1.2 LMT70模块电压采集的论证与选择
方案一:使用单片机内部12位AD采集电压 单片机的内部12位AD,由于题目要求的精度比较高,12为的分辨率比较低。 方案二:使用外接16位ADS1118采集电压 首先ADS1118芯片,完全可以达到题目中要求的精度,并且与单片机进行I2C通信,使用起来比较简单方便。 综合以上两种方案,选择方案二。 2理论分析与计算
2.1心电测量方法
心电测量采用ADS1292模块,ADS1292是多通道同步采样 24 位 Δ-Σ 模数转换器 (ADC),它们具有内置的可编程增益放大器 (PGA)、内部基准和板载振荡器。ADS1292包含便携式低功耗医疗心电图 (ECG)、体育和健身应用通常所需的所有功能。 凭借高集成度和出色的性能,ADS1292可在显著减少尺寸、功耗和总体成本的前提下创建可扩展的医疗仪器系统。 ADS1292每通道具有灵活的输入多路复用器,此多路复用器可独立连接至内部生成的信号,实现测试、温度和持续断线检测。此外,可选择输入通道的任一配置生成右腿驱动 (RLD) 输出信号。ADS1292工作时的数据速率高达 8kSPS。通过器件内部激励灌电流或拉电流,可在器件内部执行持续断线检测。 ADS1292模块采用三电极——两路输入电极以及一路右腿驱动输出电极,利用这三个电极可以方便的采集到被测者的心电信号,并且通过SPI通信将数据发送给单片机。
file:///C:/Users/lenovo/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg
2.2体表温度测量方法
体表温度测量采用LMT70芯片,芯片输出电压值与温度有关,呈二次函数关系,利用AD测量出输出电压值,经过校准标定参数,可以很精确的测量出温度值。 LMT70 是一款带有输出使能引脚的超小型、高精度、低功耗互补金属氧化物半导体 (CMOS) 模拟温度传感 ±0.13°C(最大值)器。LMT70几乎适用于所有高精度、低功耗的经济高效型温度感测应用,例如物联网 (IoT) 传感器节点、医疗温度计、高精度仪器仪表和电池供电设备。LMT70也是 RTD 和高精度 NTC/PTC 热敏电阻的理想替代产品。 file:///C:/Users/lenovo/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpg 2.3运动量统计
运动量统计采用MPU6050来测出三轴加速度数据,再经过计算加速度矢量的峰值和谷值的个数来统计步数。通过与单片机进行I2C通信得到步数的数据。 file:///C:/Users/lenovo/AppData/Local/Temp/msohtmlclip1/01/clip_image006.jpg
3电路与程序设计
3.1系统总体框图 3.1.1系统总体框图
file:///C:/Users/lenovo/AppData/Local/Temp/msohtmlclip1/01/clip_image008.jpg 单片机采用STM32F103控制采集ADS1292的信息,使用MSP430F5529来控制陀螺仪MPU6050采集运动信息以及使用ADS1118来采集LMT70的输出的电压值,最终将数据传到STM32F4在显示屏上显示,以及将数据利用蓝牙串口发送到服务器端(手机)中。 2.2电路原理图 2.2.1 部分电路原理图
file:///C:/Users/lenovo/AppData/Local/Temp/msohtmlclip1/01/clip_image010.jpgfile:///C:/Users/lenovo/AppData/Local/Temp/msohtmlclip1/01/clip_image012.jpg 采用外部ADS1118模块,通过I2C与单片机进行通信,16位精度足够,通信协议较为简单。使用起来能够达到要求。 部分电路的PCB
file:///C:/Users/lenovo/AppData/Local/Temp/msohtmlclip1/01/clip_image014.jpgfile:///C:/Users/lenovo/AppData/Local/Temp/msohtmlclip1/01/clip_image016.jpg 3.2程序的设计 3.2.1程序功能描述与设计思路 1、程序功能描述 (1)主控制器:stm32f407:通过UART1和UART2串口读取心电信号数据和体温,步数数据,分析处理心电图信号,在显示屏上显示波形,以及发送给蓝牙 (2)从控制器:msp430f5529和stm32f103,驱动ADS1292,ADS1118,MPU6050模块,读取数据,并发送给主控制器 2、程序设计思路 (1)msp430F5529:依据I2C协议,读取ADS1118采集的LMT70模块输出信号,通过二次函数拟合得到温度数据;驱动MPU6050模块,读取得到数据,计算得步数,并把所有数据按照”CaaaaTbbbb”的格式发送给STM32F4.(aaaa为步数,bbbb为温度数据)。 (2)STM32f103RCT6:依据SPI协议,驱动ADS1292模块,读取得到心电数据信号,将信号减去固定数值,处理得到-10000~10000之间的数据后,转换成六位字节,发送给STM32F4单片机。 (3)STM32F407:首先初始化UART1和UART2两路串口以及两路DMA,并开启UART2的DMA中断,将UART1DMA配置为循环模式。初始化完成后,首先判断UART1DMA是否完成传输,若传输完成,则依次读取800个心电数据,记录基准、幅值,计算波形放大系数。并在显示屏上显示;在UART2DMA中断中,读取温度和步数信号,处理后在显示屏中显示。每次循环中都会把记录的数据全部发送给蓝牙模块。 3.2.2程序流程图
整体流程图: file:///C:/Users/lenovo/AppData/Local/Temp/msohtmlclip1/01/clip_image018.png
4测试方案与测试结果
4.1测试方案
首先分模块搭建硬件电路并分别测试成功,然后将分立的模块搭建在一起测试整体功能。经测试,我们的显示屏显示内容、蓝牙串口接收数据。以及各模块的测量数据都正常 4.2 测试条件与仪器
心电信号发生器 电子体温计 4.3 测试结果及分析
经过测试,系统各部分均工作正常。 4.3.1测试结果(数据)
温度: 作品测试 体温计测试 36.89 37.01 35.18 36.12 34.89 35.32 步数: 作品测试 实际计数 100 102 98 97 76 74 65 66 心率: 作品测试 发生器配置 68 70 78 80 88 90 57 56 110 109 4.3.2测试分析与结论
根据上述测试数据,心率测试误差在5%之内,步数。距离测试均在5%之内,温度测试误差在2oC之内 综上所述,本设计达到设计要求。
|