胡鈺寬,孫唯證
(湖南科技大學(xué)信息與電氣工程學(xué)院,湖南 湘潭 411100)
目前,由于無線傳感器節(jié)點的資源有限,大部分計算機和通信依靠傳感器之間的網(wǎng)絡(luò)資源管理,并結(jié)合協(xié)同信息處理來自不同傳感器的節(jié)點數(shù)據(jù)[1]。雖然各種數(shù)據(jù)融合方案和技術(shù)已被提出,但跟蹤精度仍然是由于人類高機動性而受到限制的目標。
本文通過采用STM32F103 單片機設(shè)計一個無線運動傳感器節(jié)點,制作了一種人體運動狀態(tài)監(jiān)測裝置,本裝置能夠?qū)⑷梭w的心電信號、運動信息和體溫值在電腦上位機上顯示出來,并且可以把誤差控制在5%以內(nèi)。
本文采用LMT70 傳感器采集人體溫度信號,ADS1292 對傳來的心電信號進行增益放大和數(shù)模轉(zhuǎn)換,姿態(tài)傳感器MPU6050 對人體運動信息進行監(jiān)測,給STM32 單片機輸入溫度模擬信號、心電數(shù)字信號和運動加速度量,STM32 單片機通過分析和記錄,將運算后的數(shù)據(jù)通過藍牙傳輸給上位機顯示,其方案硬件框見圖1。
圖1 硬件框圖
心率為每分鐘內(nèi)出現(xiàn)的心動周期次數(shù),其單位為:次/min,可縮寫為bmp,其測量心率的常用方法有兩種。
2.1.1 測量6 s 內(nèi)P 波或QRS 波群出現(xiàn)的數(shù)目
在心電圖上,以P 波或QRS 波群起始部作為起點,測量至6 s 處作為終點,清點6 s 內(nèi)(在紙速為25 mm/s 時,15 cm 為6 s) P 波或QRS 波群的數(shù)目,乘以10,即為每分鐘的心率。
2.1.2 測量R-R 間期
測量若干個R-R間期(一般要求至少測量5 個或5 個以上),計算其平均值,代表一個心臟激動周期的時間,為兩個R 峰的間隔,以s 為單位,則心率為60/(R-R 間期)。
LMT70 傳感器的輸出特性曲線看起來是線性的[2-3],實際上在它的溫度范圍內(nèi),根據(jù)需求有3 種計算方式。
1) 在20~30 ℃范圍內(nèi),輸出可以用線性函數(shù)來擬合:TM=-0.193×VTAO+212.009 ℃,VTAO的單位是mV,TM的單位是℃。
2) 在-55~150 ℃范圍內(nèi),二階的計算方式會獲得更加精確的效果,這個方法僅在極端溫度(-60 ℃) 時效果不好:TM=a(VTAO)2+b(VTAO)+c。
3) 在整個溫度范圍內(nèi),三階的溫度計算方式都會給出一個最精確的結(jié)果:TM=a(VTAO)3+b(VTAO)2+c(VTAO)+d。
首先要明確,MPU6050 是一款姿態(tài)傳感器,使用它可以得到待測物體三軸的加速度和角速度。通過I2C 讀取到姿態(tài)傳感器MPU6050 的6 個數(shù)據(jù)后,再進行分析,人體每行走一步,水平方向會有加速度變化,重心也會下移,也就是豎直方向上有加速度變化,因此這時就會有z 軸和一個水平方向軸上的加速度發(fā)生較大變化,通過判斷兩個加速度變化的次數(shù),從而判斷人體行走的步數(shù)。
3.1.1 LMT70 阻抗匹配電路
使傳輸線的特性阻抗與所接負載阻抗的大小相等、相位相同,實現(xiàn)阻抗匹配,讓信號源或者傳輸線跟負載之間達到一種適合的搭配,以調(diào)整負載功率和抑制信號反射,其電路見圖2。
圖2 溫度檢測電路
3.1.2 ADS1292 心電檢測電路
呼吸檢測采用阻抗檢測的方法,輸入32 kHz(或者64 kHz) 高頻方波到人體,經(jīng)過電路濾波以后,計算出兩片電極之間的阻抗變化大小。心電信號一般在100 Hz 以下,對于高頻的檢測呼吸的方波是可以通過ADS1292R 里面EMI 電路濾掉的。
右腿的驅(qū)動電路在這里有兩個大的作用,一是去除共模電壓,通過放大器反向放大之后輸入到人體;二是提供了一個電壓抬升,將測量電壓抬升到(AVDD+AVSS)/2 左右,保證了輸入電壓在芯片的最大檢測范圍之內(nèi),第88頁圖3 為心電檢測電路圖。
圖3 心電檢測電路
本裝置的核心程序思路是通過USART 通道,將信息發(fā)送到自定義函數(shù)Len,然后測試步長,將傳感器信息發(fā)送到STM32 單片機,最后把單片機處理后的數(shù)據(jù)傳送到LED 屏,其核心程序如下。
void WriteRegister(unsigned int memoryAddress,
unsigned int Data)
{
unsigned int CrcData,i=0;
Sci_VarTx[0]=0x01;
Sci_VarTx[1]=0x06;
Sci_VarTx[2]=memoryAddress >>8;Sci_VarTx[3]=memoryAddress&0xff;
Sci_VarTx[4]=Data >>8;
Sci_VarTx[5]=Data&0xff;
CrcData=GetCRC16(Sci_VarTx,6);
Sci_VarTx[6]=CrcData >>8;
Sci_VarTx[7]=CrcData&0xff;
USARTx_Send(USART2,Sci_VarTx,8);
Delay(70);
}
void USARTx_Send(USART_TypeDef*USARTx,u8
*Data,u8 Len)
{
u8 i=0;
for(i=0;i <Len;i++)
{
while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!=SET);
USART_SendData(USARTx,Data[i]);
}
}
采用心電發(fā)生儀發(fā)出準確的心電波形,觀察對比在上位機中所顯示波形中的各個波峰波谷特征,同時采用標準溫度計測量出體表溫度,和上位機中顯示的溫度進行比較,移動距離可以利用卷尺進行測量比較[4-5]。
在不同條件下測試,其心電波形符合典型的正常心率波形(見第88頁圖4)。
圖4 心電波形
經(jīng)過測試后,與實際結(jié)果對比(見第89頁表1、表2、表3)。實際溫度與測量溫度誤差百分比不超過4%;實際心率與測量心率誤差百分比不超過5.19%;實際步數(shù)與測量步數(shù)誤差百分比不超過5%,并且大部分誤差為0。說明本裝置自適應(yīng)強,測試結(jié)果精準可靠。
表1 LMT70 實際溫度和測量溫度誤差
表2 實際心率和測量心率誤差
表3 實際步數(shù)和測量步數(shù)誤差
心電信號作為心臟電活動在人體體表的表現(xiàn),信號一般比較微弱,幅度在10 uV~5 mV,頻率為0.05~100.00 Hz,很容易受到外界干擾,如工頻干擾、肌電干擾、基線漂移、電極接觸干擾等,因此即使有右腿驅(qū)動電路能消除大部分共模干擾,仍然有些許誤差。距離由姿態(tài)傳感器MPU605 測量得的加速度二次積分而得,也只有當一次測距所用的時間分段足夠多時,積分所產(chǎn)生的誤差才能忽略不計,而實際應(yīng)用時無法達到此情況,因此距離的誤差就產(chǎn)生了。