基于32的无线运动传感器节点设计

    罗锦 李晓 李昀澄 谭铭

    

    

    摘 要 本设计制作的是无线运动传感器,采用STM32RCT6为控制核心板,通过多个种类的传感器将采集来的信息送入主控单片机。使用TI模拟前端芯片ADS1292实现两路心电信号的采集、存储及显示心电图,分析计算得出心率其误差不大于2%。设计采用右腿驱动电路和低通滤波及软件IIR滤波抑制干扰措施,提高放大器共模抑制比;基于LMT70温度传感器测得使用者体表温度,MPU6050通过姿态解算检测使用者运动信息,得出运动步数和运动距离。并且将数据通过NRF24L01传输给电脑,上位机显示动态心电图、体表温度和运动信息。各个模块应功能完整,测量精度误差不大于各自要求。

    关键词 心电采集 滤波 运动监测 无线传输

    中图分类号:TP212.9 文献标识码:A 文章编号:1007-0745(2020)02-0001-03

    1 方案设计

    1.1 总方案

    本系统可实现实时采集心电体表和运动信息。使用ADS1292作为采集心电模块主要芯片,通过IIR滤波滤去多余信号,在体表测量电路LMT70中加入去耦电路。使用MPU6050对使用者进行姿态检测。通过单片机控制各个模块,采集分析数据计算得出心率、步数、运动距离。通过NRF24L01无线传输通信传送运动节点数据到上位机,可实时显示心电图等信息。

    1.1.1 滤波方案

    方案一:通过二阶的50Hz双T陷波器对人体内产生的50Hz的天线噪声和电源供电引入的工频干扰进行滤波。

    方案二:使用数字滤波器同样对人体噪声和工频干扰进行滤波,在matlab做出IIR四阶滤波器对心电数据进行滤波。

    对比以上两种方案通过陷波器后仍有较大工频干扰,且陷波器自带噪声也夹杂在所需ECG信号中。而数字滤波设计更方便,可及时纠错从而降低成本,且效率更高。

    1.1.2 运动状态检测方案

    方案一:使用MPU6050加速度传感器的自适应采样。MPU6050具备三轴加速度和三轴姿态角。将三轴加速度ax、ay、az采用三轴合一得到向前加速度,进行加速度积分得到速度,计算得出运动状态步数,并计算得出运动步距。

    方案二:或者采用四元数法,虽然要比解欧拉微分方程多一个方程,但其优越性在于计算量小、精度高、可避免奇异性。与方向余弦法相比,四元数法的优点在于,不仅歪斜误差等于零而且刻度误差的推导很简单,能得出便于进一步分析的解析表达式。

    对于两个方案,由于在微处理器中运算速度受到限制,且浮点运算会消耗大量的计算资源,所以方案二并不适合本设计。

    1.1.3 无线传输方案

    方案一:E34-2G4H27D是EBYTE公司的无线串口模块,连上后无需其他的操作就可直接让单片机向串口发送数据,同电脑读取串口的数据。

    方案二:NRF24L01芯片,让NRF24L01再与电脑相连,MCU也与NRF24L01相连,单片机先与NRF24L01相连再与电脑相连,将数据发送向单片机再发往上位机。

    对比两个方案由于串口模块并不稳定且传输速度比无线模块慢,所以选用方案。

    2 理论分析及器件选择

    2.1 理论分析

    2.1.1 心电信号采集

    心脏工作时在体内不同位置产生不同电势,伴随心跳律动的电势而变化,通过电位差测试记录画下的就是心电图(ECG)。心电信号频率低于0.05Hz至100Hz,是幅度在10?V~5mv的微弱交流信号,且夹杂着肌电信号及外界工频干扰。如何从环境噪声中提取微弱的心电信号是采集的难点和要点,此点属于小信号放大。系统采用常见电池供电,采集左右信道心电信号,右腿驱动负反馈消除共模干扰,通过放大、滤波得到模拟心电信号,并能利用液晶实时显示心率并在上位机存储回放ECG波形。

    心电信号主要芯片采用TI专用的近医疗级心电采集芯片。网络标号ADS1292_ERA、ADS1292_ELA和ADS1292_RLD分别接三导联心电传感器,其中ADS1292_RLD用于消除共模干扰信号,确保心电信号输入电压在正常的监测范围内。原始心电信号从网络标号ADS1292_ERA、ADS1292_ELA接入一阶微分电路滤除部分干扰,从IN1P、IN1N引脚进入采集芯片ADS1292,芯片对采集的原始数据进行A/D转换、放大,通过ADS1292_DIN、ADS1292_DOUT两个引脚,在特定的时序下以其自身帧格式将数据发送给主控模块的单片机(MCU),3B的帧头、3B的状态帧及3B心电信号,组成每帧9B的数字信号。每处理结束一帧数据后,向单片机STM32F103C8T6发送请求,单片机响应后进行数据传输。

    2.1.2 体表温度采集

    LMT70是TI公司的半导体模拟温度传感器。LMT70的输出特性曲线看起来是线性的,实际上在它的温度范围内,根据需求又有三种计算方式:

    (1)在20℃-30℃范围内,输出线性拟合:

    (2)在-55℃到150℃的范围内,二阶的计算方式会获得更加精确的效果,特别提醒于极端温度(零下低温-60℃时)效果不好。

    2.1.3 步距测量

    人体处于动态时会产生侧向、前向和竖向的加速度分量,这3个加速度分量相互正交,对应加速度传感器3个轴—x、y、z轴上的加速度。6050获得的三轴加速度不可以直接使用,需先采用高斯滤波器对信号进行预处理。用a(xt)、a(yt)、a(zt)分别表示t时刻x轴、y轴、z轴的加速度信号,记A(t)=[a(xt),a(yt),a(zt)],則高斯滤波公式为:

    采用三轴合一的方法,计算三轴加速度的信号矢量幅值SVM来确定加速度,以提高计步的准确性,计算公式如下:

    其中,a(xt)、a(yt)、a(zt)分别为t时刻加速度传感器在x、y、z轴所测得的数据。三轴合一后的SVM数据波形与实际步数相对应,一个波峰的变化正好对应一个步伐。

    计算距离用现有加速度已经得出后计算加速度的积分得到速度,则可得到运动步距。

    2.1.4 无线传输

    采用SPI通信。SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根線,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共有的,它们分别是SDI(数据输入)、SDO(数据输出)、SCK(时钟)、CS(片选)。通讯是通过数据交换完成的,这里先要知道SPI。

    2.2 器件选择

    心电采集器件选择TI公司的ADS1292。由于人体心电信号具有微弱、易受生物体内与体外信号干扰等的特点。故选用TI公司生产的用于生物电势测量的ADS129x。其24位模拟前端能有效保证采集到的数据的准确性。同时,可通过配置将其三路输入中任意一路输入连接到片内集成的右腿驱动电路上,形成负反馈,能有效消除共模干扰。ADS1292既能满足对数据精度的要求,又具有极高的集成度、功耗低、同步采样、数字接口SPI兼容串口通信、信息收发方便等优点。

    体表温度测量选择LMT70,它的应用几乎包括任何需要高性价比、高精度和低功耗的温度检测,足以满足系统设计要求。LMT70具有出色的温度匹配性能,超线性温度模拟传感器可以保证数据的准确性。

    运动状态测量选择MPU6050。MPU6050内部整合了三轴陀螺仪和三轴加速度传感器。自带数字运动处理器DMP,可以使用已有的运动处理资料库,进行非常方便的姿态解算,降低运动处理运算对操作系统的负荷。

    无线传输选择NRF24L01。它采用spi通信,可设置自动应答,相比起IIC的半双工通信,同步全双工的通信方式使得数据传输更加稳定,相比并行通信方式而言,更加节约GPIO口,且该模块的成熟度与稳定性都非常好,能满足系统稳定性的要求。

    MPU模块选择STM32F103RCT6。TM32F系列属于中低端的32位ARM微控制器,该系列芯片是意法半导体(ST)公司出品,其内核是Cortex-M3。STM32F103RCT6与C8T6相比具有更多的寄存器,更多的IO口以及更大的内存容量。

    3 电路与程序设计

    3.1 电路的设计

    3.1.1 系统总体框图

    系统总体框图如图1所示

    3.1.2 电源模块

    出于便携和稳定的原因,选用干电池独立为系统供电。其中,经过稳压模块LM2596,将电压降到3.3v。同时,稳压模块起到了一定程度的滤波作用,使输入系统的电压更加稳定、纯净。

    3.1.3 心电模块

    心电模块内部集成了低压差线性稳压器(即LDO)电路,即便压降电压小,仍然能稳定、准确供电。并且LDO电路的噪声低,适用于心电信号的特性。其次,模块内部将一路输入连接到右腿驱动上,形成负反馈,能够有效消除共模干扰。由于心电信号极易受到来自外界、人体自身以及电路的干扰,如基线干扰、工频干扰等,干扰信号混杂于心电及呼吸信号中,导致有用信号畸变,甚至有时有用信号会完全淹没在噪声中,所以相应的滤波去噪处理十分必要。用在1292模块输入信号的低通滤波电路[1]。

    3.1.4? LMT70测温模块

    本系统中,直接在硬件上对LMT70芯片进行使能。但由于LMT70向MCU传输一个模拟量,对于外部电路要求较高,其供电的噪声需要尽量减小,故外接了一个LDO电路对其供电,以尽量减小电源噪声可能存在的干扰,并加上去耦电路缓冲、滤波。

    3.1.5 运动状态监测模块

    MPU6050模块中集成了一个稳压电路。采用IIC与外部通讯,其中IIC_SDA和IIC_SCL带了4.7K上拉电阻,另外MPU_AD0自带了10K下拉电阻,当AD0悬空时,默认IIC地址为(0x68)。

    3.2 程序的设计

    3.2.1 程序功能描述与设计思路

    程序功能描述:(1)监测:可以实时监测心电数据、体表温度、运动状态、输出心电信号、体表温度步数和步距。(2)显示部分:在OLED显示心率、步数、步距、温度,在上位机实时更新心电数据和步数。

    上位机使用QT进行开发,对串口的数据进行读取,并将下位机的数据进行解包,绘制心电曲线图,显示出从下位机发回的心率等数据[2]。

    4 测试结果

    4.1 测试条件与仪器

    测试条件:要求进行多次检查,仿真电路和硬件电路必须与系统原理图完全相同,并且检查无误,硬件电路保证无虚焊。

    测试仪器:高精度的数字毫伏表、模拟示波器、数字示波器、数字万用表、指针式万用表、心电信号模拟器、测温计。

    4.2 测试结果及分析

    4.2.1 测试结果(数据)

    心率显示:(如表1)

    步数显示:(如表2)

    温度显示:(如表3)

    4.2.2 测试分析与结论

    根据上述测试数据,分析计算可得出以下结论:

    (1)上位机显示正确的心电图,可看到明显的R图以及心率和步数显示;

    (2)心率计算较为准确,误差不大于1%;

    (3)步数以及步距的测量亦较为精准,误差不大于0.5%;

    (4)温度显示在误差范围之内;

    综上所述,本设计达到设计要求。

    5 结论

    在本系统中,心率的测算以及心电图的绘制较为精准,能在上位机上有效地、低误差地描绘心电图,且心率的误差不大于1%。同时,步数以及步距的测量亦较为精准,误差不大于0.5%。本设计体积较小,额外加入一个OLED显示屏可实时监测步数、步距以及心率的变化。控制板与上位机之间传输高效并且准确,能够在上位机中准确绘制出心电图,且系统功耗较低,效率较高[3]。

    参考文献:

    [1] 郑忠楷,蒋学程,罗志灶.基于QT的串口通信程序设计[J].电子技术与软件工程,2019(24):236-238.

    [2] 肖军,涂强,林月桦,黄静敏,罗一立.基于STM32的便携式混合信号示波器设计[J].工业控制计算机,2019,32(07):140-141+144.

    [3] 王仪,罗涛,张宏桥,何湘艳,蒋纯志.基于MPU6050传感器的人体哑铃动作识别系统的设计[J].湘南学院学报,2020,41(02):121-124.

    西华大学,四川 成都