李 皓,胡曉娟,朱洪海,董 軍
(1.華東師范大學(xué),軟件學(xué)院,上海200062;2.中國科學(xué)院蘇州納米技術(shù)與納米仿生研究所,江蘇蘇州215123)
中醫(yī)是中華民族醫(yī)學(xué)發(fā)展中的一份瑰寶,盡管數(shù)字醫(yī)療技術(shù)不斷發(fā)展,但中醫(yī)脈象的采集和客觀化一直以來都是一個難題,復(fù)雜和抽象的脈象信息給中醫(yī)切脈的計算機模擬帶來極大的困難。傳統(tǒng)單點的壓力傳感器已難以滿足脈象采集的需要。本文提出一種基于電容陣列式觸覺傳感器的多點脈象采集系統(tǒng),可以同時采集一定面積下的多路壓力信號,為進一步的脈象分析提供新的思路。
系統(tǒng)框圖如圖1所示,由3個傳感器模塊、主控器、通信接口模塊以及電源管理模塊組成。傳感器模塊分別采集人體橈動脈寸、關(guān)、尺三部脈象信號。每只傳感器在不足0.7 cm2的面積內(nèi)提供3×4共12點的壓力信息。主控器通過通信接口對每個傳感器模塊進行初始配置并以一定采樣率讀取其中的壓力信號值,再通過RS—232串行接口傳輸給PC機。PC機將三部脈象信號顯示出來并存入數(shù)據(jù)庫,通過特征提取算法可提取脈象信號的起始點和主波峰值點等特征參數(shù)。圖2為采集系統(tǒng)實物圖。
圖1 系統(tǒng)框圖Fig 1 System block diagram
脈象傳感器是整個系統(tǒng)的關(guān)鍵,目前廣泛采用PVDF壓電薄膜為主的脈象傳感器,通過壓電材料的特性將脈搏跳動的微弱壓力變化轉(zhuǎn)換為電信號[1],常見的以單點為主,采集過程中易受干擾,由于人體皮下動脈的位置會因外力而移動,因此定位困難,采集信號的可重復(fù)性差[2]。本系統(tǒng)選擇的電容陣列式觸覺傳感器模塊由美國PPS傳感器公司生產(chǎn)[3],其高集成度可同時采集小面積下的多路壓力信號。
圖3為此傳感器的結(jié)構(gòu)示意圖,將兩塊小電極平行布置,中間留有一定的空隙,上下電極間構(gòu)成一個分離電容,當(dāng)施加于電極上的壓力變化時,對應(yīng)兩電極間的電容值也相應(yīng)改變。基于這種介質(zhì)的壓力傳感器體積小,靈敏度極高。將電極做成帶狀,相互垂直并部分重疊,通過有選擇地掃描一個單獨的行和列交匯處的電容,該處的壓力即被測出。將3只傳感器分別置于人體橈動脈的寸、關(guān)、尺三部既能全方位地獲得脈象信息。該傳感器模塊中還包含了ADI公司的電容/數(shù)字量轉(zhuǎn)換器(capacitance/digital converter,CDC),其型號為AD7147,將電容值轉(zhuǎn)換為16位的數(shù)字量。通過主控器與CDC通信讀取傳感器上的壓力值。
圖2 采集系統(tǒng)實物圖Fig 2 Entity picture of collection system
圖3 傳感器結(jié)構(gòu)示意圖Fig 3 Structure diagram of the sensor
主控器(MCU)的任務(wù)是完成CDC芯片的初始化設(shè)置,并以一定的采樣率讀取每個傳感器12路,寸、關(guān)、尺三部共36路的CDC的轉(zhuǎn)換值,并將其以一定的通信格式發(fā)送給PC機。主控模塊的選擇需考慮時鐘、功耗以及成本等因素。本系統(tǒng)選擇AVR公司的高檔8位微處理器ATmega 32。該MCU擁有32 k可編程Flash,2 k字節(jié)片內(nèi)SRAM,2個8位一個16位定時器,支持JTAG在線調(diào)試功能[4]。Atmega 32可選用高精度的外部時鐘源,最高工作頻率16 MHz;內(nèi)部集成SPI通信接口和UATR串行接口,與外部電平轉(zhuǎn)換芯片連接即可實現(xiàn)RS—232通信。
MCU與CDC的通信接口采用AD7147兼容的SPI串行通信,4線傳輸方式。MCU為主機模式,3個傳感器模塊作為從機。SPI時鐘線與數(shù)據(jù)線采用總線復(fù)用。MCU用3個獨立的I/O口作為從機的片選信號,以分別選通所需要通信的從機并占用總線,而沒有被選中的從機SPI接口呈高阻態(tài)。通過上述方式MCU就可以分別與3個傳感器模塊進行通信,完成CDC的配置和壓力數(shù)據(jù)的讀取。由于MCU的5V電平與AD7147的3.3 V電平不兼容,故采用開漏輸出的緩沖器74HC07隔離并實現(xiàn)電平轉(zhuǎn)換。圖4為串行接口與電平轉(zhuǎn)換模塊原理圖。
圖4 SPI串行接口與電平轉(zhuǎn)換模塊原理圖Fig 4 Principle diagram of the SPI serial interface and the level conversion module
電源管理模對MCU以及傳感器模塊進行供電。MCU和傳感器模塊采用5 V電平(傳感器模塊集成了5~3.3 V的穩(wěn)壓模塊用于AD7147的供電)。由于MCU的SPI電平為5 V而AD7147的SPI電平為3.3 V,因此,需要進行2個模塊間的電平轉(zhuǎn)換。5,3.3 V的電源電壓均采用三端穩(wěn)壓器LM1117,外部提供9V的直流電源電壓輸入或采用USB接口直接由PC機供電。
整個系統(tǒng)的軟件部分包括主控模塊程序和PC機程序。主控模塊軟件主要完成對AD7147芯片的通信設(shè)置,并以固定的采樣頻率讀取片內(nèi)的數(shù)據(jù)寄存器數(shù)值即實現(xiàn)對脈象信號的采樣。PC機軟件部分主要接收主控器發(fā)出的數(shù)據(jù)包并對其進行解析,同時將采集到的脈象信號數(shù)據(jù)存貯在本地數(shù)據(jù)文件中,并實時繪制出脈象信號的波形,完成對數(shù)據(jù)的實時分析、特征提取等工作。
圖5(a)為主控模塊程序流程圖。當(dāng)主控器上電時,首先對I/O口、定時器、UART串口以及SPI接口進行設(shè)置,系統(tǒng)時鐘采用外部高速7.3728 MHz晶振。MCU下一步對AD7147進行初始化。AD7147內(nèi)部包含12個轉(zhuǎn)換單元,最多支持13個外部輸入引腳,具體可參閱AD7147數(shù)據(jù)手冊[5,6]。AD7147 初始化時,先關(guān)閉 CDC 轉(zhuǎn)換,選用全功率的工作模式,每個傳感器外部12路信號分別連接一個轉(zhuǎn)換模塊,然后依次對各工作寄存器進行配置,最后打開CDC轉(zhuǎn)換。
由于AD7147工作于全通道打開模式時的轉(zhuǎn)換速率約為9 ms,因此,本系統(tǒng)的采樣頻率為100 Hz,定時器每10 ms讀取AD7147轉(zhuǎn)換結(jié)果寄存器的數(shù)值。串行發(fā)送前需要將數(shù)據(jù)打包編碼,AD7147是16位數(shù)字CDC,3個模塊共36路信號將占用72個字節(jié),加上一個字節(jié)的包頭及包尾標(biāo)識,共74個字節(jié)組成一個數(shù)據(jù)包。
圖5(b)為PC機部分程序流程圖。PC端的程序主要包含兩個線程,串口線程專門負(fù)責(zé)監(jiān)聽串口上的數(shù)據(jù)包并將其解析存入緩沖區(qū),當(dāng)成功接收完成一個數(shù)據(jù)包后再由繪圖線程將信號波形顯示在屏幕上。
PC端通過控制還可對脈象信號進行基線校準(zhǔn)?;€校準(zhǔn)的目的是得到傳感器在無壓力狀況下的輸出值,并將其作為零輸入基線,之后的讀數(shù)都與其相減后才作為實際壓力數(shù)值。這樣可以最大程度的消除傳感器感應(yīng)區(qū)污垢、環(huán)境濕度以及溫度等的干擾。
圖5 系統(tǒng)軟件流程圖Fig 5 Flow chart of system software
PC端的人機交互接口基于Microsoft MFC界面設(shè)計,包括采集的啟動、基線的設(shè)置、顯示速度的控制以及一些相關(guān)的基本操作,并且提供數(shù)據(jù)的導(dǎo)入導(dǎo)出以及數(shù)據(jù)分析的功能,可根據(jù)特征提取算法獲得脈搏波的起始點與主波峰值點等參數(shù)。
關(guān)于脈象信號的特征提取,目前有基于局部最大最小值的方法來檢測脈象信號[7],但是由于不同體征人的脈象信號差別很大(中醫(yī)有28種脈象之說),不同脈象信號在形態(tài)上的差異也比較大,僅僅基于局部最大最小值的檢測方法往往會造成較大的誤差。本文嘗試一種基于斜率閾值的脈象信號檢測算法,其過程主要包括以下幾個步驟:
1)信號處理:將信號通過一個帶通濾波器以濾除基線漂移和高頻噪聲,并對濾波后對的信號進行差分運算,得到其對應(yīng)的斜率成分。
2)學(xué)習(xí)過程:對每一路信號進行預(yù)先學(xué)習(xí),確定檢測的閾值。
3)檢測過程:使用確定的閾值對脈象信號進行特征檢測,找出脈搏波的起始點與主波峰值點。
信號處理包括帶通濾波器和信號的差分。帶通濾波器又由一個高通濾波器與一個低通濾波器串聯(lián)組成[8]。圖6為經(jīng)過處理后的信號波形,其中,(a)與(b)分別為原始信號與通過高、低通濾波器后濾除基線漂移及高頻噪聲的效果,(c)與(d)為2種不同的脈象信號差分后的斜率波形,從圖中可以看出,盡管信號的波形差異性很大,但每一個搏動周期的上升沿對應(yīng)到斜率波形都表現(xiàn)為一個明顯的峰值,而降支段及其他區(qū)域則相對比較平緩,維持在零線附近。由此,可以將斜率波形的峰值作為檢測到一個脈搏周期開始的依據(jù)。
學(xué)習(xí)過程是指對一段時間內(nèi)的差分斜率信號進行幅值估計,目的是確定檢測時的閾值大小。取20 s的數(shù)據(jù)用于學(xué)習(xí),以3 s的信號作為一個檢測窗口,確保窗口中至少出現(xiàn)一個脈搏周期。為了最大程度地排除個別不穩(wěn)定信號的干擾,檢測每個窗口中信號斜率的最大值Dmaxi,對其進行累計并計算其均值Davrg,見式(1)、式(2)
其中,dx為原始信號。
最后,取每個窗口中斜率峰值均值的60%作為最終的檢測閾值。
確定閾值之后開始檢測過程,從檢測起始點開始對原始信號的差分斜率信號進行掃描,一旦斜率值超過檢測閾值,就認(rèn)為找到一個脈搏波形的上升沿,波形計數(shù)器加1。從這一位置分別向前、向后搜索。圖7上、下分別為差分之前與差分之后的信號波形,斜率信號峰值點前后所對應(yīng)的上升沿過零點與下降沿過零點即為原始信號的起始點與主波峰值點。當(dāng)完成一個脈搏周期的檢測之后,延遲0.2 s以排除干擾,然后繼續(xù)檢測下一個波形的起點,循環(huán)上述操作,直到找到所有的波峰點和起始點。圖8為2種不同形態(tài)的脈象波形最終的檢測結(jié)果。
為了驗證算法的正確性,隨機選擇300個脈搏周期進行人工標(biāo)注,將標(biāo)注的結(jié)果與程序檢測的結(jié)果進行對比并計算絕對誤差。55%的主波峰值點和54%的起始點與手工標(biāo)注的特征完全重合,44%的主波峰值點和45%的起始點檢測絕對誤差為1個采樣點,而對于主波峰值點與起始點都只有3個特征的檢測誤差為2個采樣點,由于系統(tǒng)的采樣頻率為100Hz,即檢測算法的絕對誤差小于0.02s。而對于人眼來說,一個采樣點的差距已經(jīng)很小甚至很難分辨。
圖6 經(jīng)處理后的信號波形Fig 6 Signal waveform after processing
圖7 波形起始點與主波峰值點位置示意圖Fig 7 Diagram of onset and main wave peak position
圖8 兩種不同脈象波形的檢測結(jié)果Fig 8 Detection result of two different kinds of pulse condition waveform
本系統(tǒng)的設(shè)計結(jié)合了先進的傳感器及主控器,彌補了傳統(tǒng)單點的脈象采集裝置數(shù)據(jù)量少、定位困難、重復(fù)性差等缺點,可采集人體橈動脈寸、關(guān)、尺三部多點的、全方位的脈象信號,為中醫(yī)脈象的客觀化研究提供了新思路?;谛甭书撝档奶卣魈崛》椒軌蚍奖恪⒖旖莸貦z測出脈象波形的起始點和主波峰值點。
[1]燕海霞,王憶勤,李福鳳.中醫(yī)脈象傳感器的研究進展[J].上海中醫(yī)藥大學(xué)學(xué)報,2005,19(1):62-64.
[2]劉 峰,陳家旭.中醫(yī)脈象的可重復(fù)性研究[J].中醫(yī)藥學(xué)報,2007,35(1):35-36.
[3]Pressure Profile Systems Corp.Capacitive tactile sensors—A technology primer[EB/OL].[2009—05—09].http:∥www.pressureprofile.com.
[4]ATMEL Corp.ATmega 32 Datasheet[EB/OL].[2004—07—22].http:∥21ic.com.
[5]Analog Devices Corp.AD7147 Datasheet[EB/OL].[2007—09—18].http:∥www.analog.com.
[6]Analog Devices Corp.AN—929 Application Note[EB/OL].[2007—10—13].http://www.analog.com.
[7]Xu Lisheng.Robust peak detection of pulse waveform using height ratio[C]∥Annual International IEEE EMBSConference,2008:3856-3859.
[8]Pan Jiapu,Tompkins W J.A real-time QRS detection algorithm[J].IEEE Transactions on Biomedical Engineering,1985,32:230-236.