基于ARM9的心電模擬發(fā)生系統(tǒng)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:該系統(tǒng)是為醫(yī)療培訓(xùn)機(jī)構(gòu)專門設(shè)計(jì)的設(shè)備,它采用ARM9嵌入式開發(fā)平臺研制的心電除顫模擬發(fā)生系統(tǒng)。該系統(tǒng)硬件設(shè)計(jì)包括高壓除顫信號采集模塊,D/A轉(zhuǎn)換模塊,與監(jiān)護(hù)儀信號匹配模塊,該系統(tǒng)采用嵌入式Linux嵌入式操作系統(tǒng)作為軟件平臺,系統(tǒng)充分利用了ARM9豐富的I/0資源和存儲(chǔ)空間,可以良好地模擬醫(yī)學(xué)除顫的過程,并可以與醫(yī)用監(jiān)護(hù)儀相連接,輸出符合醫(yī)學(xué)有關(guān)規(guī)定34種常見的異常心率波形,主要包括室顫、房顫等。經(jīng)實(shí)驗(yàn)證明該系統(tǒng)性能穩(wěn)定、耗能低、操作方便。詳細(xì)介紹系統(tǒng)總體設(shè)計(jì)方案,包括硬件和軟件的設(shè)計(jì)方法。
關(guān)鍵詞:ARM9;心電除顫;Linux操作系統(tǒng);D/A
0 引言
隨著社會(huì)的發(fā)展,人們的醫(yī)療保健意識越來越強(qiáng),所以醫(yī)生的培訓(xùn)也就成為非常重要的環(huán)節(jié)。心電除顫技術(shù)作為醫(yī)生培訓(xùn)的一個(gè)主要方面,若操作規(guī)范,動(dòng)作熟練,往往在緊急關(guān)頭可以救人于危難之間,在培訓(xùn)的時(shí)候,如果能夠真實(shí)地模擬急救除顫的場景,將會(huì)起到良好的學(xué)習(xí)效果。因此,在急救、有創(chuàng)性臨床操作訓(xùn)練上,醫(yī)學(xué)模擬教學(xué)日益顯示出其成本低、重復(fù)性高、教學(xué)效率高以及符合醫(yī)學(xué)倫理要求等優(yōu)勢。
除顫模擬發(fā)生系統(tǒng)可以任意選擇34種狀態(tài)(包括成人和兒童兩大類)時(shí)也可以連接醫(yī)用監(jiān)護(hù)儀,使除顫模擬更加逼真。學(xué)員可以進(jìn)行不同能量的除顫練習(xí),同時(shí)這也便于老師檢驗(yàn)學(xué)員的學(xué)習(xí)效果。
該系統(tǒng)是根據(jù)心電圖的有關(guān)原理以及監(jiān)護(hù)儀的信號合成原理研制的,嚴(yán)格按照醫(yī)學(xué)的相關(guān)規(guī)定,產(chǎn)生的波形達(dá)到醫(yī)學(xué)教學(xué)的目的。在相關(guān)病態(tài)心電圖的關(guān)鍵點(diǎn)處達(dá)到比較逼真的效果,當(dāng)系統(tǒng)接收到高壓除顫信號以后,根據(jù)系統(tǒng)的預(yù)設(shè)置,進(jìn)行相應(yīng)的波形變換。系統(tǒng)可以用于醫(yī)療培訓(xùn)機(jī)構(gòu)的培訓(xùn)工具,使學(xué)員快速掌握心電除顫的方法。該系統(tǒng)與急救模擬人、監(jiān)護(hù)儀配合使用,具有廣闊的市場前景。
本文介紹的心電除顫模擬發(fā)生系統(tǒng)是以ARM9為控制核心,充分利用ARM9豐富的I/O資源和強(qiáng)大的處理功能。它采用嵌入式的開發(fā)方案,并綜合考慮系統(tǒng)的通用性和使用性,系統(tǒng)輸出信號的幅度為0~5 mV可以連續(xù)輸出室性、室上性早搏型號等,還可以產(chǎn)生周期為1 s,脈寬為100 ms,幅度為1 mV的方波。便于對監(jiān)護(hù)儀進(jìn)行校準(zhǔn),信號均采用三導(dǎo)聯(lián)的同步信號輸出。
1 系統(tǒng)結(jié)構(gòu)和設(shè)計(jì)方案
系統(tǒng)主要包括ARM9中央處理單元、高壓除顫信號采集模塊、D/A轉(zhuǎn)換模塊,與監(jiān)護(hù)儀信號匹配模塊以及心電波形仿真和數(shù)據(jù)的提取,應(yīng)用程序的設(shè)計(jì)等幾個(gè)部分。本系統(tǒng)采用ARM9嵌入式開發(fā)平臺,以下是ARM9處理器的主要結(jié)構(gòu)及其特點(diǎn)。
(1)32 b定點(diǎn)RISC處理器,改進(jìn)型ARM/Thumb代碼交織,增強(qiáng)性乘法器設(shè)計(jì),支持實(shí)時(shí)(real-time)調(diào)試;
(2)片內(nèi)指令和數(shù)據(jù)SRAM,而且指令和數(shù)據(jù)的存儲(chǔ)器容量可調(diào);
(3)片內(nèi)指令和數(shù)據(jù)高速緩沖器(Cache)容量從4 KB~l MB:
(4)設(shè)置保護(hù)單元(Protoction Unit),非常適合嵌入式應(yīng)用中對存儲(chǔ)器進(jìn)行分段和保護(hù);
(5)采用AMBA AHB總線接口,為外設(shè)提供統(tǒng)一的地址和數(shù)據(jù)總線;
(6)支持外部協(xié)處理器,指令和數(shù)據(jù)總線有簡單的握手信令支持;
(7)支持標(biāo)準(zhǔn)基本邏輯單元掃描測試方法;
(8)支持BIST(Built-in-self-test);
(9)支持嵌入式跟蹤宏單元,支持實(shí)時(shí)跟蹤指令和數(shù)據(jù)。
心電除顫模擬發(fā)生系統(tǒng)總體設(shè)計(jì)方案,如圖1所示。
2 系統(tǒng)硬件部分設(shè)計(jì)
該部分主要分為ARM9硬件平臺、D/A轉(zhuǎn)換、濾波電路、高壓除顫信號的采集,其系統(tǒng)硬件連接圖如圖2所示。系統(tǒng)在ARM9的控制下,由D/A轉(zhuǎn)換把波形數(shù)據(jù)轉(zhuǎn)換為模擬量進(jìn)行輸出。當(dāng)接收到高壓采集信號后,處理器就會(huì)轉(zhuǎn)換輸出另一種心電波形圖。
2.1 D/A轉(zhuǎn)換和電阻衰減網(wǎng)絡(luò)
該部分是系統(tǒng)的核心,為了保證系統(tǒng)的穩(wěn)定和ECG信號的要求,D/A轉(zhuǎn)換芯片采用8位并行的DAC0832芯片,由12 V單電源供電,每個(gè)DAC有各自獨(dú)立的基準(zhǔn)輸入,對ARM9提供的數(shù)據(jù)進(jìn)行變換,輸出部分采用4階巴特沃斯濾波,輸出的波形經(jīng)衰減后得到所要求的心電信號,經(jīng)有源濾波后輸出波形的峰值可達(dá)到10 V,通過電阻分壓網(wǎng)絡(luò)得到0~5 mV的電壓輸出范圍??紤]到要采用三路D/A,如果每一路獨(dú)占8個(gè)I/O端口,再加上若干控制端口,處理器提供的I/O端口數(shù)遠(yuǎn)不能滿足要求,所以計(jì)劃采用共用數(shù)據(jù)端口,外接I/O口片選的方式來實(shí)現(xiàn),這樣可以節(jié)約16個(gè)I/O口,也滿足了信號輸出同步性的要求。
2.2 高壓信號采集電路設(shè)計(jì)
該部分采集除顫器上的高壓放電信號,由于高壓除顫信號具有的放電電流具有雙向性,且放電時(shí)間只有4 ms,瞬態(tài)電壓可達(dá)到3 000 V,所以在安全性能上要充分考慮。該部分電路圖如圖3所示。
電路中采用大功率電阻和瞬態(tài)抑制二極管對高壓放電信號進(jìn)行預(yù)處理,將高壓信號降低到比較小的范圍,通過整流電路把電流變?yōu)閱蜗蛄鲃?dòng),然后通過光耦隔離輸入到ARM9的I/O口中,起到保護(hù)處理器的作用。
3 軟件設(shè)計(jì)
系統(tǒng)的硬件為基本功能和擴(kuò)展功能的實(shí)現(xiàn)奠定了牢固的基礎(chǔ),軟件系統(tǒng)的設(shè)計(jì)就是要充分利用硬件平臺的資源,實(shí)現(xiàn)軟件操作的有序運(yùn)行。
軟件開發(fā)工作涉及到以下兩個(gè)方面:接口驅(qū)動(dòng)程序的修改和完善;應(yīng)用層軟件的開發(fā)。應(yīng)用層的程序全部用C++開發(fā)完成的。
圖4是整個(gè)系統(tǒng)的軟件模塊結(jié)構(gòu)圖。
3.1 D/A驅(qū)動(dòng)程序和高壓信號采集驅(qū)動(dòng)部分
設(shè)備驅(qū)動(dòng)程序是操作系統(tǒng)內(nèi)核和機(jī)器硬件之間的接口。設(shè)備驅(qū)動(dòng)程序?yàn)閼?yīng)用程序屏蔽了硬件的細(xì)節(jié),這樣在應(yīng)用程序看來,硬件設(shè)備只是一個(gè)設(shè)備文件,應(yīng)用程序可以像操作普通文件一樣對硬件設(shè)備進(jìn)行操作,以往在開發(fā)應(yīng)用程序時(shí)都有一個(gè)main函數(shù)作為程序的入口點(diǎn),而在驅(qū)動(dòng)開發(fā)時(shí)卻沒有main函數(shù),模塊在調(diào)用insmod命令時(shí)被加載,此時(shí)的入口點(diǎn)是init module函數(shù),通常在該函數(shù)中完成沒備的注冊。同樣,模塊在調(diào)用rmmod函數(shù)時(shí)被卸載,此時(shí)的入口點(diǎn)是cleanup module函數(shù),在該函數(shù)中完成設(shè)備的卸載。在設(shè)備完成注冊加載之后,用戶的應(yīng)用程序就可以對該設(shè)備進(jìn)行一定的操作,如read,write等,而驅(qū)動(dòng)程序就是用于實(shí)現(xiàn)這些操作,在用戶應(yīng)用程序調(diào)用相應(yīng)入口函數(shù)時(shí)執(zhí)行相關(guān)的操作,init roodule入口點(diǎn)函數(shù)則不需要完成其他如read,write之類功能。
驅(qū)動(dòng)程序主要函數(shù)如下:
3.2 系統(tǒng)應(yīng)用程序設(shè)計(jì)與實(shí)現(xiàn)
該系統(tǒng)的應(yīng)用程序是基于Qt/Embedded設(shè)計(jì)的,目前使用的嵌入式GUI系統(tǒng)存在Microwindows,MiniGUI,Qt/Embedded,Qt/Embedded延續(xù)了Qt的強(qiáng)大功能,可以運(yùn)行在多種不同的處理器上部署的嵌入式Linux操作系統(tǒng)。Qt/Embedded提供了信號和插槽的編程機(jī)制,該部分采用的Qt是一個(gè)創(chuàng)建GUI程序的C++類庫,編寫Qt應(yīng)用程序的主要工作是基于已有的Qt類編寫用戶類。該部分主要分為波形界面的實(shí)現(xiàn)和用戶按鍵控制的實(shí)現(xiàn),波形顯示采用Qt的函數(shù)類庫Qpainter,由于波形界面顯示兩路心電波形,會(huì)產(chǎn)生延遲效果,所以引入了多線程機(jī)制協(xié)調(diào),Qt支持多線程,有獨(dú)立于平臺的線程類,線程安全方式的時(shí)間傳遞和一個(gè)全局Qt庫互斥量允許不同的線程調(diào)用Qt方法。
4 結(jié)語
本系統(tǒng)設(shè)計(jì)采用三星2440嵌入式處理器作為核心搭建了硬件平臺,并采用嵌入式Linux操作系統(tǒng)并結(jié)合外圍的D/A轉(zhuǎn)換部分、與監(jiān)護(hù)儀匹配網(wǎng)絡(luò)、高壓信號采集部分、應(yīng)用程序控制部分等實(shí)現(xiàn)了心電除顫模擬發(fā)生系統(tǒng)的設(shè)計(jì)。該系統(tǒng)可以很好地模擬醫(yī)學(xué)除顫的過程,并可以與醫(yī)用監(jiān)護(hù)儀相連接,輸出符合醫(yī)學(xué)標(biāo)準(zhǔn)的34種常見異常心率波形,由于系統(tǒng)使用嵌入式實(shí)時(shí)多任務(wù)操作系統(tǒng),因此該設(shè)計(jì)具有很高的實(shí)時(shí)性、穩(wěn)定性和可靠性。