(西华大学,四川 成都 610039)
本设计达成了对人体心率、体温和运动状态的实时监控,通过无线传输将数据传输到上位机加以处理和显示。通过对单个方案的改进,来实现以下特点:
(1)具有低功耗和便携性,以方便长时间的穿戴。
(2)达到高精度的心率和温度测量,具有很好的抗干扰能力。
(3)实现低延时高功率的无线传输,已实现实时显示的目的。
方案所需的温度采集芯片、心电信号采集芯片以及运动传感监测都需要3.3V 的电压保障其正常工作,所以我们通过LM2596 稳压芯片将12V 的电池输入调节成稳定的3.3V输出电压,用来供给整个系统。
同时注意到由于本设计采用的温度采集芯片为TI 公司的LMT70,其特点是高精度的16 位AD 采样。为避免LM2596产生的电压波动影响温度的精准性,需使用3.3V 的基准电压给LMT70 以实现温度补偿,达到测量人体体温高精度的目的。
采用AgCl 电极片,减小基线漂移。心电信号通过二级放大,放大倍数1000 倍以上,第一级采用仪表放大器AD620 进行放大,二级电路用LM358 和OP07 构成放大。通过ebyte 串口透传,用于STM32 与电脑串口通信,附加MPU6050 用于测步和测距以及跌倒检测。心电部分采用右腿驱动,减小工频干扰。通过RC 与运算放大器构成有源带通滤波器,0.3HZ-106Hz 的频率可以通过。电源部分采用AMS11175.0V 和7660s 构成一对正负5 的电压为运放供电。通过AMS11173.3V 稳压到3.3V 为STM32 进行供电。[1]
2.4.1 主控单元选取
由于心电采集芯片使用了TI 公司的ADS1292 芯片,具有24 位的高精度AD 采样。STM32 系列的单片机具有片内的AD 转换器和多个外设接口,具有很好的扩展和移植性,因此适合完成IIR 实施滤波和应用扩展。
2.4.2 配置关键的Ads1292 芯片的寄存器
ADS1292_REG[CONFIG1]=0x00;//连续转换模式
ADS1292_REG[CONFIG1]|=Ads1292_Config1.Data_Rate;//设置采样率125HZ
ADS1292_REG[CONFIG2]=0x00;//设置测试信号
ADS1292_REG[CONFIG2]|=Ads1292_Config2.Pdb_Loff_Comp<<6;//是否脱落
ADS1292_REG[CONFIG2]|=Ads1292_Config2.Pdb_Refbuf<<5;//缓冲器是否掉电ADS1292_REG[CONFIG2]|=Ads1292_Config2.Vref<<4;//参考电压2.4v
ADS1292_REG[CONFIG2]|=Ads1292_Config2.Clk_EN<<3;//时钟脉冲
ADS1292_REG[CONFIG2]|=Ads1292_Config2.Int_Test<<1;//是否打开测试信号
ADS1292_REG[CONFIG2]|=0x81;//默认位
2.4.3 配置关键的MPU6050 寄存器
MPU_Write_Byte(MPU_PWR_MGMT1_REG,0X80);//复位MPU6050
MPU_Write_Byte(MPU_PWR_MGMT1_REG,0X00);//唤醒MPU6050
MPU_Set_Gyro_Fsr(3);//陀螺仪传感器,±2000dps
MPU_Set_Accel_Fsr(0);//加速度传感器,±2g
MPU_Set_Rate(50);//设置采样率50Hz
MPU_Write_Byte(MPU_INT_EN_REG,0X00);//关闭所有中断
MPU_Write_Byte(MPU_USER_CTRL_REG,0X00);//I2C 主模式关闭
MPU_Write_Byte(MPU_FIFO_EN_REG,0X00);//关闭FIFO
MPU_Write_Byte(MPU_INTBP_CFG_REG,0X80);//INT 引脚低电平有效
2.5.1 干扰来源
通常由于电源线产生的50hz 的工频干扰以及被测对象人体产生的热噪声干扰。[2]
图1
工频干扰多数是因为空间辐射、电源、电路与外界的接触所产生的50hz 信号,一般采用屏蔽、滤波、使用差分信号(提高共模抑制)来减低其对信号的影响。人体干扰常见的是肌肉震颤,其产生是因为人体肌肉颤动所造成的噪声信号(寒冷导致的战栗以及紧张引起的肌肉抽搐)。
2.5.2 基于MATLB 的数字陷波
用陷波器来过滤50hz 信号,高通滤波器来过滤人体产生的0.5hz 以下的频率干扰。通常在设计中使用IIR 或FIR滤波器,其中FIR 虽然具有良好的线性相位,但是其运算量和阶数都比IIR 更大,因此无论是陷波器还是高通滤波都采用IIR 来设计。[3]
借助MATLAB 可以帮助我们快速的生成相关的参数。再将其翻译成c 语音形式即可直接应用于单片机平台。
导出滤波系数得到转移函数:[4]
再根据滤波器直接II 型实现框图,翻译成c 语言代码并烧录到主控芯片中运行。
c 语言响应代码:
2.5.3 基于MATLAB 的高通滤波器
同样采用MTLAB 生成的IIR 的II 阶高通滤波器来过滤掉人体产生的0.5hz 以下的频率干扰,我们配置好相应参数后即可导出滤波系数。
得到响应函数:[5]
2.6.1 基于MPU6050 六轴模块设计运动状态监测
通过读取MPU6050 内置的x、y、z 轴上的加速度,通过高斯滤波将其3 个方向的数值合一得到一个预算的峰值,一个峰值变换对应一步数,同时将所得加速度经过积分得到速度,即可计算出运动步伐。
由于产品佩戴于胸前,所以选取X 轴方笔直朝下,使用I2C 通讯协议,提取MPU6050 各轴数据,消除零点漂移之后,对加速度计的数据进行均值滤波,通过加速度计数据得到x 轴与重力加速度方向的角度,然后通过卡尔曼滤波融合陀螺仪的加速度,得到修正之后X 轴与重力加速度方向的倾角,实际实验测试出临界阈值。
2.6.2 加速度的C 语言计算代码
表1
表2
表3
TI 公司的LMT70 是低功耗高精度的模拟温度传感器。其16 位精度的AD 采样使其工作在20°C-42°C 范围时,误差为±0.05°C。由于人体温度刚好囊括在这一范围,因此在确保其基准电压的精准时,能准确的返回所需的数据。
由于LMT70 电压传递函数不是标准的线性,所以采用三阶传递函数方程来确保其工作在所需的最佳拟合中。
三阶传递函数C 语言如下:
double a=-1.064200E-09;
double f=-5.759725E-06;
double c=-1.789883E-01;
double m= 2.048570E+02;
temp=a*(temp)*(temp)*(temp)+f*(temp)*(temp)+c*(temp)+m;//temp 初始温度值
方案一:使用蓝牙3.0 模块搭建单片机--手机或者单片机---单片机通讯,完成数据传输。
方案二:使用Nrf24L-01 模块搭建单片机--手机或者单片机---单片机通讯,完成数据传输。
方案三:使用串口无线透传完成单片机---电脑的无线通讯,使用串口传输发送与接收数据。
由于蓝牙模块传输速率为24Mb/s,而ECG 要求传输数据大,所以使用蓝牙传输会有一定的延时接收,同时由于蓝牙的传输距离有限,无法实现远距离的传输,因此不采用。Nrf 模块在传输速率上达到了1ms 一包,一包大概32 字节,完全能满足ECG 庞大的数据量。但是Nrf 需要与单片机搭配才能接收数据,提高了成本和电路复杂性,不予考虑。
而Ebyte 公司的串口透传具有自动调频功能,抗干扰能力强,传输效率高,传输距离远。且减少了接收端的电路复杂性(只需要将usb 插上电脑即可)和发送端的操作难度(只需将数据通过printf 传输即可)。
图2
设计通过NRF24L01 无线串口透传来实现人机无线传输。搭建的系统由下位机与上位机人机界面2 部分组成:先使下位机主机板STM32 控制芯片将采集的人体信息发送给无线透传模块,然后无线传送到下位机从机板无线接收模块,无线接收系统结合串行通信接口,把数据送往上位机PC 端实现数据的显示并在上位机界面上实现无线视屏监控,并且不需要无线路由器构建的局域网环境进行通讯,摆脱了传统有线传输的束缚,实现了无线实时监测数据和人机互动功能。
系统流程图:(如图2)
采用QT 对上位机进行开发,通过串口读取数据。由于使用的是串口透传模块进行单片机与PC 端的通信,所以只需要区分每段数据的数据类型即可。
传输的数据格式如下:printf("<%d,%d,%d,%d,%d,%d,%d,%d>",nrfSendData.bytes.heartRate,
nrfSendData.bytes.stepNum,
nrfSendData.bytes.tempture,
nrfSendData.bytes.adsData[0],nrfSendData.bytes.adsData[1],
nrfSendData.bytes.adsData[2],
nrfSendData.bytes.adsData[3],
nrfSendData.bytes.adsData[4],
nrfSendData.bytes.adsData[5]);
一个数据包有32Byte 的大小,传输顺序按照心率、步数、温度、和ECG,大小分别为2Byte、2Byte、4Byte 以及24Byte。当数据传输到上位机后,PC 端上位机按照传输方式提取数据,并把数据转换为十进制显示到QT 编写的页面中。
距离显示:(如表1)
温度显示:(如表2)
心率显示:(如表3)
(1)心率精度高,误差不超过1%;
(2)温度精度受基准电源影响,在±2℃内;
(3)距离显示受摆动加速度影响,误差不大于10%;
在完成简易穿戴和低功耗要求前提下,保证了低延迟的传输。同时完成了人体运动的监测、体温和心率的实时显示,已达到测试要求。