周到 黃敏
摘 要:心電信號能夠反映心臟的受損程度,對各種常見心臟病的診斷有重要參考意義。隨著技術的發展,各種模塊化的心電信號采集裝置陸續推出,有助于快速搭建心電監護系統。本研究使用AD8232模塊采集心電信號,通過Arduino進行模數轉換,最后使用LabVIEW軟件從串口讀取采集到的心電信號,并將心電信號展示出來。整個系統模塊清晰、成本低廉、信號清晰,有較強的實用性。
關鍵詞:LabVIEW;串口通信;心電
中圖分類號:TN919 文獻標志碼:A 文章編號:2095-2945(2019)02-0032-02
Abstract: ECG signals can reflect the degree of heart damage, and have important reference significance for the diagnosis of various common heart diseases. With the development of technology, a variety of modular ECG acquisition devices have been introduced, which is conducive to the rapid construction of ECG monitoring system. In this study, AD8232 module is used to collect ECG signal, and analog-to-digital conversion is carried out through Arduino. Finally, LabVIEW software is used to read the collected ECG signal from the serial port and display the ECG signal. The module of the whole system is clear, the cost is low, the signal is clear, and it has strong practicability.
Keywords: LabVIEW; serial communication; ECG
引言
心肌細胞收縮時產生的電信號可以傳導到體表的任何部位,在人體皮膚的某個部位放上測量電極,然后通過測量電極可以記錄被測者的心臟電變化曲線,這就是臨床意義上的心電圖(Electrocardiogram,ECG)[1]。心電圖的采集和分析,對心臟疾病的監測和診斷,有重要的研究意義,通常認為,心電信號對心律失常、心肌梗死等病癥具有重要的參考價值。
心電信號是較早應用于醫學研究的人體生物電信號,心電信號的采集和分析,是生物醫學工程專業教學中的一個重要內容[2]。以往的教學安排中,模擬放大電路、單片機的采樣和數字信號處理,會在不同的專業課中講授,缺乏連貫和一致性。本文依托中南民族大學實驗室開放與技改項目,建立一個基于虛擬儀器的心電采集分析平臺。
為了盡可能讓大部分學生熟悉心電的采集分析流程,整個平臺需要具有模塊化、信號精度可靠、簡單易用、成本低廉等特點。基于此,本文設計出一款基于AD8282心電采集模塊,Arduino開發板和LabVIEW的心電監測系統。該系統中,AD8232實現心電放大,Arduino實現模數轉換,LabVIEW通過串口讀取最終的心電信號并顯示。
1 AD8232心電采集模塊
AD8232是美國ADI公司出產的一款單導聯心電采集芯片,尺寸小、成本低廉,共模抑制比80dB,能用于運動心率監護、便攜式心電裝置開發等[3]。在該芯片的基礎上構建的心電采集模塊,包括運算放大、右腿驅動、導聯脫落監測等電路。
AD8232模塊的實物圖如圖1所示,從圖中可以看到,其主要接口包括接地(GND),接電源(3.3V),信號輸出(OUTPUT),導聯脫落監測(LO+和LO-)和停機檢測(ISDN)。進行心電采集時,將三個電極分別粘貼在左手手腕、右手手腕和右腳腳踝處,并與導聯線連接。心電信號通過導聯線從右側的3.5毫米連接線頭子接入采集模塊,經過放大后的模擬心電信號,可以從“信號輸出(OUTPUT)”端口獲取。
2 Arduino實現模數轉換
為了將心電模擬信號轉換為數字信號,我們使用了Arduino開發板。Arduino是一款以ATmega單片機為控制核心的開發板,包含ATmega最小系統、穩壓、USB轉串口等電路,是一種價格低廉、開發庫豐富的微控制器平臺[4]。
我們使用Arduino的A0通道進行心電信號的模數轉換(與AD8232模塊的OUTPUT端相連),A10和A11通道作為電極脫落監測通道(與AD8232模塊的LO+與LO-相連),Arduino上的3.3V與GND與AD8232模塊上對應的端口相連。
在Arduino上,編寫模數轉換程序如下所示。通過這個程序,設定串口傳輸的波特率為9600,從A10和A11讀入電極脫落信號,從A0讀入心電模擬信號,再從串口將數字化后的心電信號傳送出去。
void setup() {
Serial.begin(9600);//設置串口波特率
pinMode(10, INPUT); // 電極脫落監測+
pinMode(11, INPUT); // 電極脫落監測-}
void loop() {
if((digitalRead(10) == 1)||(digitalRead(11) == 1)){
Serial.println('!');//如果監測到電極脫落,輸出感嘆號 }
else{
Serial.println(analogRead(A0));//從A0口讀入當前電壓值 }
delay(1);//延時等待}
3 LabVIEW從串口獲取數據
串口通信(Serial Communication),是指外設和計算機間,通過數據信號線、地線、控制線等,按位進行傳輸數據的一種通訊方式。這種通信方式使用的數據線少,在遠距離通信中可以節約通信成本,但其傳輸速度較低。生物醫學信號通常為低頻信號,數據量不太大,因此,串口通信協議在生物醫學信號的傳輸中很常見。
LabVIEW是實驗室虛擬儀器集成環境(Laboratory Virtual Instrument Engineering Workbench)的簡稱,是一種圖形化的編程語言和開發環境,具有測試方便、開發速度快等特點。LabVIEW依靠VISA(Virtual Instrument Software Architecture)庫來實現串口的通訊[5]。VISA庫是儀器編程的標準函數庫,支持串口、GPIB、USB、以太網等多種不同的通訊協議。在串口通訊時,常用的函數有“VISA配置串口”、“VISA打開”、“VISA讀取”、“VISA寫入”、“VISA設備清零”、“VISA查找資源”、“VISA解鎖”、“VISA關閉”等。
我們這里僅涉及到從串口中讀取數據,用到了“VISA配置串口”、“VISA讀取”和“VISA關閉”這三個VISA函數。如圖2所示,給出了從串口讀取心電數據的程序框圖。從圖2中可以看到,為了LabVIEW能順利從串口中讀取出數據,需要選定當前數據傳輸串口號(如果不確定,可以在計算機的設備管理器中查看)。該程序使用了一個屬性節點(Bytes at Port),這個屬性節點能夠獲取串口緩沖區的剩余字節量,將這個值作為參數傳給“VISA讀取”函數,可以一次性將串口中的數據全部讀出。LabVIEW從串口讀出的數據是字符串格式,可以直接創建一個字符串控件“讀取緩沖區”查看讀取出的數據,也可以使用字符串選板的“十進制符串至數值轉換”函數轉換為數值,再在波形圖表中顯示出來。程序如果被手動停止或出錯,將終止循環,并關閉串口。為了和傳入的數據頻率保持一致,這里設定循環延時為1毫秒。
最后,在前面板查看到,獲取的心電信號波形如圖3所示,從圖中能夠清晰地看到心電信號的特征波形。
4 結束語
本文實現了基于LabVIEW串口的心電信號傳輸,搭建了一個模塊化、低成本、精度滿意的實時心電監測平臺,適合作為生物醫學工程專業的實驗平臺。本文的工作還可以從以下兩個方面深入改進,一是Arduino與計算機連接最好可以采用無線的方式,降低導線的約束;二是計算機獲取心電信號后,還需要對信號進行進一步分析和處理,實時監測心率變化,對異常心率給出報警。
參考文獻:
[1]李中健,井艷,李世鋒,等.心電圖波形特征分析[J].臨床心血管病雜志,2008(03):195-197.
[2]王昌,秦鑫,岳小萍.基于心電的生物醫學工程教學系統開發[J].數字技術與應用,2014(09):146.
[3]陳嘉緒,周穎.基于AD8232的心電實時監測及分析系統設計[J].計算機測量與控制,2017,25(02):26-31.
[4]付久強.基于Arduino平臺的智能硬件設計研究[J].包裝工程,2015,36(10):76-79+100.
[5]魏義虎,陳雷.基于LabVIEW-VISA方式的串口通信研究[J].電子設計工程,2015,23(24):129-131.