基于STM32的便攜式心電圖儀設計說明_第1頁
基于STM32的便攜式心電圖儀設計說明_第2頁
基于STM32的便攜式心電圖儀設計說明_第3頁
基于STM32的便攜式心電圖儀設計說明_第4頁
基于STM32的便攜式心電圖儀設計說明_第5頁
已閱讀5頁,還剩22頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

目錄1引言………11.1心電圖儀在醫學領域中的應用…………11.2便攜式心電圖儀的開展狀況……………22系統總體設計……………42.1主要功能…………………42.2系統設計方案……………53便攜式心電圖儀的硬件設計……………63.1最小核心系統的設計……7處理器的選擇…………7最小核心系統電路的設計……………83.2人機交互界面的設計……12顯示界面設計…………12按鍵設計………………143.3前置放大電路以與右腿驅動電路………163.4濾波電路以與陷波電路的設計…………163.5電源電路的設計…………184便攜式心電圖儀的軟件設計……………194.1軟件開發平臺……………194.2軟件系統整體設計………21軟件總體分析………214.2.2STM32軟件系統設計流程…………21軟件總體流程圖……234.3信號采集程序設計……234.4數字濾波程序設計……254.5液晶程序設計…………265系統調試結果與誤差分析……………275.1調試手段………………275.2測量調試以與分析……28采集電路的測試……285.2.2濾波算法測試………295.2.3整體測試和結果分析………………30結束語………32參考文獻……………………341引言隨著社會的進步、經濟的開展以與人們生活水平的逐步提高,我國人口老齡化程度越來越嚴重,與此伴隨的心臟病一類的疾病的發病率也不斷攀升,人們的身體健康產生了巨大的威脅。相關數據說明,我國因心腦血管疾病死亡的人數將近占總死亡人數的一半[1]。根據相關部門的調查顯示,我國每年大約有近一半的死亡病例為冠心病,而且死亡率還在逐年遞增。每年約有16萬名患者接受支架植入手術,手術施行每年的增長率超過了五分之一。在我國因心腦血管疾病每年消耗達3000億元,由于受測試手段的局限,預防率、治療率與控制率依然很低。預防率是有效防治心腦血管疾病的關鍵因素,而且有效的方便的心電監測儀器是完成這一任務的有力工具。1.1心電圖儀在醫學領域中的應用人類的心臟有規律性的膨脹和收縮,從而使血液的循環。在心臟肌肉每次收縮之前,都會產生一股微小的生物電流,加上人體的體液能夠導電,這些微小電流可以通過體液的傳遞就會反映到人體的外表皮膚上。不過受限于身體各局部組織不同、距心臟的距離不同,會造成體表的不同部位的電位有所不同。通過捕捉這個現象,將心電圖顯示出來的心電檢測儀器,根據這些人體生物電信號,我們可以從不同角度觀察心臟的活動情況。這是我們對心臟根本功能與其病理研究,具有重要的參考價值[2]。心電圖能夠在一定程度上反映心律的運行狀況,人的心肌受損的程度、開展過程以與心房、心室的功能結構情況都能通過它表現出來。這些都可以在心臟手術和藥物的使用上提供重要的參考[3]。常規心電監護設備體積笨重、價格昂貴和不便于攜帶,但是隨著社會生活水平的提高,醫療器械家庭化開始逐漸進入我們的日常生活,家庭化的心電圖儀器功能沒有專業的大型的醫療設備齊全,但是它具有體積小、操作簡單的優點,同時可以在一定程度上滿足了人們的根本應用。我們可以用它在家庭或則其他地方很方便的進行心電圖信號的測量,并根據進一步的處理,做根本的診斷,也可以把這些數據提交到專業機構做進一步的詳盡的診斷。這樣也可以防止那些行動不便的病人,利用互聯網技術,把數據通過遠程傳送的方式,提交到專業機構或指定的醫院驚醒專業診斷和分析。為了能夠在更多場合更方便的診斷,各種各樣的便攜式心電圖設備應運而生,常規心電圖儀由于笨重只能在病人靜臥的情況下記錄的心電活動,歷時時間短,獲取的信息量很少,所以在有限時間有些非正常的情況被發現的概率也是很低的。而便攜式監護裝置可以在隨時隨地的進行實時監護,并把數據存儲起來。這樣不僅可以節省時間,還可以得到實時的監護,所以研發便攜式心電監護產品具有重要意義。本文主要研究的便攜式心電圖儀,即將普通心電圖設備小型化、家庭化,具有低價位、體積小、便于攜帶和使用方便等特點。1.2便攜式心電圖儀的開展狀況1887年英國生理學Einthoven通過對毛細管的靜電計記錄了心動的電流圖[4]。1895年他開始了對心臟動作電流的進一步研究,并通過對德?阿森瓦爾氏的鏡影電流計的設計改良,提高了心電圖的質量。1903年他成功的設計了弦線式電流計,通過反射鏡記錄心動電流,解決了以前測量設備的惰性大,記錄誤差大以與需要繁瑣的數學計算等缺點。同時,他又制定心電圖的影線在縱坐標上波動1cm,代表1mV的電位差,在橫坐標上移動1cm為0.4秒的標準。這種方法簡單直觀,并采用P、Q、R、S、T等字母標出心電圖上的各波,這種標記方法一致沿用至今。1912年在他深入研究了正常心電圖的波動圍后,提出了著名的“愛因托芬三角〞理論。1924年Einthoven教授獲得了諾貝爾生理學和醫學獎[5]。總之這位被尊稱為“心電圖之父〞的生理學家對心電圖的創立與開展有著巨大的奉獻。心電圖從此開始逐步走進協助診斷疾病,并通過開展被廣泛應用于臨床。隨著社會的開展,心電圖檢測理論越來越成熟與完善,另外機械、電子、計算機等技術的迅猛開展,帶動了醫療器械發生了革命性變化,極大的增強了心電圖機的功能。隨著現代科學技術的開展,特別是計算機、微電子、機械電子在醫療領域的廣泛應用,極大的促進了心電設備的開展。目前各大醫療器械廠商都投入巨資開發性能更強、功能更加完善的心電設備,比方歐姆龍、超思、亞新、均在該領域的研究與生產上有所突破。綜觀當前心電檢測儀器開展趨勢,主要向以下幾個方向開展:〔1〕系統化隨著醫院計算機管理網絡化、信息存儲介質和IC卡等的應用與Internet的全球化而產生的。電子病歷是信息技術和網絡技術在醫療領域的必然產物,我國衛生部先后在2010,2011發布了關于電子病歷系統的規和通知文件。而實時心電數據將在該系統中有著重要的作用。〔2〕數字化隨著計算機科學、機械電子的迅猛開展,醫療器械的數字化程度越來越高,比方數字濾波器的使用,極大的降低了心電干擾,提高了心電判斷的準確率。〔3〕無線化無線傳感技術的開展能夠促使心電檢測無線化,從而擺脫傳統心臟檢測的繁瑣程序。同時,能減輕病人的心里緊程度,實現心電檢測的方便性。〔4〕自動化自動測量和分析是醫療儀器的開展方向,使醫療器械智能化是目前醫療器械設計的目標之一。〔5〕遠程化計算機技術、網絡通信技術的快速開展,為遠程醫療的實現提供了可能,將心電數據通過遠程傳輸,在遠端對心電數據加以分析處理并提出診斷結果,從而實現遠程醫療。如目前出現的基于GPRS網絡的遠程心電監護系統就是這個開展趨勢的表達。總之,科技不斷進步,人們的需求也在變化,心電圖是記錄心臟電活動狀態的記錄,包括心臟節律和頻率以與電壓的上下等信息,可用于診斷各種心律失常、心肌病變、心肌堵塞與心肌缺血等心血管疾病。同時對心臟病的診斷和治療也提供了確切的理論依據。設計符合市場需求的產品是企業生存的根本,利用高科技帶來的技術革命去更新醫療器械更是一個巨大的市場時機,我們相信,在未來幾年里,家庭化的監護設備必將越來越普與[6]。2系統總體設計由于心電信號的微弱性,我們對心電信號的提取具有一定難度。另外受到50Hz與其倍頻干擾和極化電壓的影響,對前置放大器和信號濾波電路的設計提出了更高的要求。因此在設計前端硬件電路時,要根據信號的特征,選擇最正確的器件。同時便攜式設備必須是低功耗設備這限制了多數的微處理器,鋰電池供電對信號僅僅用硬件濾波還不能到達分析信號的要求,硬件濾波的一個缺點是,要想獲得更好的濾波效果,必須設計更高的階數,而這無疑會增加系統的體積。因此還有必要采用軟件濾波的方法,這就對處理器的速度和軟件的優化提出了更高的要求[7]。采取軟件濾波即設計數字濾波器,數字濾波器有多種,這樣就必須尋找一種行之有效的濾波算法。2.1主要功能本文的目的是通過先進微處理器的應用研究的主要容是通過將嵌入式技術、數字信號處理技術和信號采集技術的結合,設計一個能夠完成信號提取和分析功能的嵌入式心電圖監測系統。主要研究工作如下:(1)心電圖儀的硬件設計:采集電路:準確提取生理信號,把信號處理為可供采集分析的有效信號;處理電路:完成信號的采集、濾波、顯示、分析和傳輸等。(2)心電圖儀的軟件設計:STM32芯片各模塊初始化程序;數字濾波處理程序;人機交互界面的程序設計;2.2系統設計方案系統原理結構圖如圖1所示。心電信號由電極獲取,送人心電采集電路,經前置放大、主放大、上下通濾波,得到符合要求的心電信號,并送入到STM32的ADC進行AD轉換。為了更好地抑制干擾信號,在電路中還引入了右腿驅動電路。系統控制芯片采用STM32,TFT-LCD的觸摸功能加上少量按鍵可以建立良好的人機交互環境,可以通過LCD實時顯示和回放,數據通過USB可靠地傳輸到PC機,以便對心電數據做進一步的分析。系統主要硬件結構與電路系統主要劃分為三大局部:心電采集電路,主要完成心電信號的提取;帶通濾波與主放大電路,用于調理采集到的信號,使之符合處理要求;STM32處理電路,完成心電信號的顯示和分析功能。圖1系統原理結構圖整個系統有以下幾個局部組成:〔1〕采集電路:主要有前置放大電路、帶通濾波電路和主放大電路組成,心電信號由電極獲取后送入心電采集電路,經處理后得到符合要求的心電信息。〔2〕處理電路:主要完成對心電數據的濾波、陷波、放大、分析、顯示和傳輸控制。〔3〕按鍵電路:完成良好的人機交互。〔4〕顯示電路:實時顯示出心電波形和心電相關信息。〔5〕上位機設計:在PC機上處理和顯示心電波形。〔6〕電源電路:設計穩定可靠的電源電路,為整個系統提供電源,降低系統功耗。3便攜式心電圖儀的硬件設計便攜式心電圖儀要求具有可移動性和再開發性,不僅便于攜帶、功能盡可能的完善能夠實時對心電信號進行處理,而且要求隨著開展可以進一步升級滿足人們更多的需求。本心電圖儀集信號的采集、處理、傳輸三大功能于一體。對于這些功能,即需要相對獨立的模塊化設計,又需要良好的協調。因此,在開發過程中,硬件設備的選擇需要考慮這些特定的需求,有針對性的進行器件的選擇和設計。總體電路要遵循:(1)選擇適宜的處理器,盡量選擇片上系統〔SystemonChip,SoC〕設計硬件系統,減少硬件復雜度并降低本錢。(2)選擇典型電路,按照模塊化設計,系統擴展與I/O的配置充分滿足應用系統的功能要求,并留有適當冗余,以便進行二次開發。(3)注重軟硬件結合,軟件能實現的功能盡可能由軟件實現,以簡化硬件結構,降低能耗和設備本錢。(4)必須考慮芯片的驅動能力,有必要的可靠性與抗干擾設計它包括去耦濾波、印刷電路板布線、通道隔離等[8]。3.1最小核心系統的設計以應用為中心、軟件硬件可裁剪的、適應應用系統對功能、可靠性、本錢、體積、功耗等嚴格綜合性要求的專用計算機系統,由硬件和軟件兩局部有機的結合在一起,作為一種典型的嵌入式應用[9]。由于便攜式心電圖儀有很強的可移動性,便于使用者攜帶,同時也要求功能完善,能夠實時對心電信號進行處理。集信號采集—處理—傳輸三大功能于一體。對于這些功能,即需要相對獨立的模塊化設計,又需要良好的協調。因此,在開發過程中,硬件設備的選擇需要考慮這些特定的需求,有針對性的進行器件的選擇和設計。處理器的選擇處理器相當于人體的大腦機制,整個系統在處理器合理指揮調度下才能完成我們賦予他們的任務,所以一款適宜的處理器對于整個系統來說是非常重要的。經過綜合考慮本設計對處理器的選擇主要從以下五個方面來考慮:(1)處理器的處理速度:在本設計中,處理器不僅要進行濾波處理,同時還要實時顯示出心電波形,在通信的情況下還要與PC機進行通信,因此,處理器要有較高的處理速度。(2)處理器在完成任務的復雜程度:在本設計中,處理器要負責信號的采集、信號的濾波處理、心電波形的顯示、數據存儲以與通信。(3)盡可能簡化外圍電路的復雜程度:一個系統中所使用的元器件越多、電路結構越復雜,則系統的出問題的概率越大,可靠性與穩定性越差。因此在選擇MCU的時候,希望MCU部集成功能單元越多越好,這樣就能簡化系統設計,增加系統的可靠性與穩定性。(4)盡可能減少生產本錢:在本系統中,由于多數屬于家庭使用與野外環境的不確定性因素較多,對于普與性的群眾化產品,希望替換本錢越低越好,其中處理器的本錢占了整個系統的重要的一局部,能夠降低處理器的本錢也就從而降低了產品的總本錢。(5)盡可能底的功耗:便攜式設備對低功耗的要求都較高,必須最低限度的減少功耗,手持式設備的續航能力也是眾多參數比擬受關注的一點,如何能有長時間的續航能力也是我們需要注意的一點。綜合以上幾個方面,最終選用了意法半導體公司推出的新型32位ARM核處理器芯片STM32系列中的STM32F103ZET6。最小核心系統電路的設計STM32F103x增強型系列芯片使用高性能的ARMCortex-M332位的RISC核,工作頻率為最高可達72MHz,置高速存儲器(高達128K字節的FLASH和20K字節的SRAM),豐富的增強I/O端口和連接到兩條APB總線的外設。所有型號的器件都包含2個12位的ADC、3個通用16位定時器和一個PWM定時器,還包含標準和先進的通信接口:多達2個I2C和SPI、3個USART、一個USB和一個CAN。工作電壓為3.3V。圖2是STM32F103x的模塊框圖[9]STM32微控制器有如下優點:(1)STM32部有高達128K字節的置閃存存儲器,用于存放程序和數據。多達20K字節的置SRAM,CPU能以0等待周期訪問(讀/寫)。這樣在我們所設計的系統中就去掉了以往很多嵌入式工程設計中所需要的用于外部程序存儲器的Flash芯片和用于外部數據存儲器的SRAM芯片,大大節約了系統本錢,提高了系統可靠性與穩定性[10]。(2)STM32增強型系列擁有置的ARM核心,因此它與所有的ARM工具和軟件兼容。這給工程的開發工作帶來了很大的便利,因為在以前的工作中曾經使用過其他ARM核心的微控制器,所積累的經驗在本工程的開發中得到了充分發揮。而且由于可用于ARM開發的工具軟件很多,大大加快了工程開發的速度和效率。(3)STM32的部FLASH是在線可編程的。在我們的工程中,設備運行的配置參數會存儲在FLASH中的固定位置,每次啟動設備時,程序會讀取這些參數來進行初始化。但在某些情況下,需要遠程設置或修改配置參數。這一功能使得可以在不用接JTAG燒寫器的情況下根據USART接口接收到的數據來修改FLASH中的配置參數,在設備再次啟動時,就會讀取新參數來進行初始化。(4)STM32有優秀的功耗控制。高性能并非意味著高功耗。STM32經過特殊處理,針對應用中三種主要的功耗需求進行優化,這三種能耗需求分別是運行模式下的高效率的動態耗電機制、待機狀態時極低的電能消耗和電池供電時的低電壓工作能力[11]。(5)STM32擁有強大的庫函數。它采取與以往不同設計方法,通過把各個外設封裝成標準庫函數的方式,屏蔽了底層硬件細節,能夠使開發人員很輕松地完成產品的開發,縮短系統開發時間。圖2STM32F103x的模塊框圖STM32固件庫。STM32固件庫提供易用的函數可以使用戶方便地訪問STM32的各個標準外設,并使用它們的所有特性。USB開發工具集。在更廣的應用領域中,USB功能的實現將變得越來越方便,因為USB開發工具集提供了完整的,經過驗證的固件包,使得用戶可以順利地開發各個類的USB固件。(6)STM32F103xx增強型支持三種低功耗模式,可以在要求低功耗、短啟動時間和多種喚醒事件之間到達最正確的平衡。總之,STM32芯片在工程中的使用,使得整個系統的運行效率、穩定性、功耗、生產本錢等都比同類系統有了較大的提升。本設計中最小核心系統設計圖如圖3所示。圖3最小核心系統設計圖由圖3中可以看出,在設計STM32最小系統時要注意一下幾個局部:(1)復位電路:利用RC電路的延時特性,設計了簡單的復位電路,有此可簡單計算出延時時間,這里用一個10k電阻和1.0μF的電容,時間延時大約為3.6ms,符合STM32系統芯片的復位要求。(2)晶振電路:這里選用兩個晶振,首先8M無源晶振,晶振兩端分別通過22pF的電容接地,另一個32.768K的晶振使用的15pF的電容接地電路簡單,并能很容易的就能使晶振起振。(3)芯片上的BOOT0和BOOT1引腳分別通過跳線帽可選上下電平,以改變芯片啟動模式,其啟動模式具體如下表1所示。表1啟動模式說明(4)模塊有4個數字電源供電引腳,1個模擬電源供電引腳以與相應的接地引腳。在電源端要注意接濾波電容,模擬地和數字地引腳之間最好通過0歐電阻隔離。電源和地之間加假設干去藕電容。3.2人機交互界面的設計人機交互界面是人與機器進行溝通交流的設備,它可以把人的指令傳入給MCU,也可以讓設備顯示出我們所想知道的信息。顯示界面設計首先,針對要完成一款便攜式心電儀的設計,那么在LCD的選擇上,就要符合實際的需要,必須要考慮功耗和本錢。對于人機交互局部,顯然采用單色液晶顯然已經不能滿足的需要,因此把LCD的選擇定位在了彩色液晶上。主要從以下幾個參數做出選擇:(1)顏色要豐富。從美觀角度來講,在液晶上不同類型的數據最好能夠以不同的顏色來區分。比方波形、漢字、數字最好顏色不同。所以在液晶的顏色上要到達一定的數量。(2)尺寸。便攜式式是本系統設計時的一個指標,因此液晶的尺寸不易過大,但也要便于觀察,選擇時要符合實際情況,過大則不便于隨身攜帶,過小則可能出現漢字或數字不便于觀察等問題。(3)功耗。對于便攜式嵌入式設備來說,低功耗是一般都作為一項重要的指標,在外邊使用時能夠盡可能地延長電池的工作時間(4)材質。液晶主要有兩類:STN型和TFT型,后者較之前者顯示效果更佳,但耗電能方面也高于前者。(5)價格。正如上面所提到的,性價比高是本系統設計的一個目標,因此要可能的用符合設計要求價格低廉的產品。因此,根據上述幾點本設計選用了3.2寸真彩TFT液晶觸摸屏,320*240像素,26萬色,16位并行接口,可以直接用AVR、ARM7、STM32等MCU驅動。相關參數:分辨率:QVGA240x320尺寸:3.2英寸控制器:IL9320觸摸屏:4線電阻式接腳:30PIN間距2.54mm背光:4LED并聯具體接口電路設計如圖4所示圖4LCD顯示界面借口按鍵設計對于實現人機交互的場合,按鍵是比擬常用的,通過按鍵來選擇系統的功能,完成對系統的訪問控制。本系統用了5個按鍵,分別定義為上、下、左、右、中鍵,前四個按鍵是對設置或訪問的液晶顯示對象進行選擇,中間是確定鍵,這樣就實現了既可以用按鍵功能,也可以用按鍵來實現對系統的設置,按鍵電路的實現比擬簡單,這里不再詳述。具體電路實現如圖5所示。圖5按鍵接口電路3.3前置放大電路以與右腿驅動電路前置放大電路要完成的功能是實現信號的差分放大,該局部電路在整個采集電路中至關重要,因為后續信號的處理都是以此為根底的。因此要選擇一款適宜的差分運放芯片。選擇時一般考慮以下幾點:(1)增益由于心電信號非常微弱,均值在1mV左右,而采集電壓一般要到達1V左右,所以心電放大倍數在1000倍左右。一般為了抑制零點漂移,提高共模抑制比,應該分多級實現放大。(2)頻率響應所謂頻率響應是指放大器對不同信號頻率的反響,心電信號的圍低于100Hz,所以要求放大器要對此頻率圍的信號盡可能不失真的放大出來。可以設計高通、低通濾波器來壓縮頻帶,濾除該頻帶以外的干擾信號。必要時還需要設計50Hz工頻干擾抑制電路,通過這樣處理后,得到的信號才可能有診斷價值。(3)共模抑制比電極不對稱、電氣設備運行時的干擾都易產生極化電壓,然后通過放大電路其值極有可能遠比心電信號大得多,從而將微弱的信號淹沒。因此要求放大器有很高的共模抑制比。一般要求要到達80db以上。(4)輸入阻抗心電信號是微弱的,且具有高阻抗的特性,只有高輸入阻抗才有可能不失真的引出心電信號,不然由于分壓的因素,會極大的衰減心電信號,從而導致無確采集。(5)低噪聲、低漂移在心電放大器中,還有兩個較重要的參數即噪聲和漂移。在設計心電放大器時應盡量選用低噪聲元件,提高輸入阻抗。另外,溫漂會引入直流電壓增益從而給心電信號帶來干擾。因此,選用的放大器要特別注意這兩個參數。綜上所述該方案選用具有上述優點的AD620,具體設計電路圖如圖6所示。圖6前置信號采集電路由于人類受到大量的外部干擾,心電電極和電力線之問由于存在電容耦合會產生位移電流Id,降低位移電流干擾的一種有效方法是采用右腿驅動法,圖7為右腿驅動的具體連接電路。右腿不直接接地而是接到輔助運算放大器的輸出。從兩個電阻結點檢出共模電壓,它經過輔助的反相放大器放大后通過電阻反響到右腿。采用右腿驅動電路,對50Hz干擾的抑制并不以損失心電信號的頻率成分為代價。但由于右腿驅動存在交流干擾電壓的反響電路,而交流電流經人體,成為不平安因素,限流電阻通常在1MΩ以上。圖7右腿驅動電路3.4濾波電路以與陷波電路的設計為濾除干擾需要設計帶通濾波器,使頻率為0.05Hz~l00Hz的心電信號通過,該圍以外的信號將大幅度衰減掉。濾波器有無源濾波器和有源濾波器兩種。無源低通濾波器是由無源器件〔電阻,電容,電感〕組成。其帶負載后,通帶放大倍數的數值減小,通帶截止頻率升高,這個缺點不符合信號處理的要求[12]。因此本設計選用有源低通濾波器。由RC元件與運算放大器組成的濾波器稱為RC有源濾波器,其功能是讓一定的頻率圍的信號通過,抑制或急劇衰減此頻率圍以外的信號。具有理想幅頻特性的濾波器是很難實現的。只能用實際的濾波器的幅頻特性去逼近理想的特性。常用的方法是巴特沃斯〔Butterworth〕逼近和切比雪夫〔Chebysher〕[13]逼近。保證信號的原形,采用較平坦的巴特沃斯有源濾波。高通濾波器的設計與低通濾波器相似,這里不再表達。帶通濾波器用上下通濾波器來構成,如圖8所示。高通濾波器由U3、C2、Rdip11組成,其截至頻率為f=0.03Hz,低通濾波器由U4、Cdip2、Rsop4組成,截至頻率為f=110Hz。圖8帶通濾波電路基于小型化和本錢考慮,硬件濾波只用一階高通濾波器和一階低通濾波器,雖然設計了右腿驅動電路,但是仍然有50Hz干擾進入電路,所以本設計增加了50Hz陷波電路,如圖9所示通過該方法來濾除工頻干擾,實驗結果說明,通過上下通濾波后再加上陷波電路的信號波形清晰、特征明顯。圖950Hz陷波電路3.5電源電路的設計電源電路是整個系統中十分重要的一環,隨著便攜式產品的普與,如何降低功耗成為工程師面臨的急需解決的問題。如果電源不穩定可能造成系統不能正常工作,嚴重的甚至燒壞芯片引發事故。因此電源管理越發顯得重要。電源管理是指如何將電源有效分配給系統的不同組件。電源電路設計主要考慮用哪種類型的電源器件,輸入輸出電壓,輸出電流以與控制狀態[15]。心電采集電路需要土5V電源,STM32工作電壓為3.3V,本設計用7.2V電池供電,中正負5V電壓可以采用7805和7905來產生,它通過外圍的電感電容的組合提供升滿足運放使用的正電壓和負電壓,圖10是其典型應用。圖10正負5V電源電路3.3V的電壓采用AMS1117產生,其最大的特點是簡單易用,而且性價比高,輸入電壓5V~12V,直接輸出3.3V。電路如圖11所示。圖11AMS1117穩壓電路4便攜式心電圖儀的軟件設計該系統的軟件設計沿用經典的是模塊化的編程思想,首先根據要求設計好系統的總軟件流程,然后再分別實現系統各模塊的功能。在完成硬件電路設計和電路制作后,再進行整體的統一調試。本章主要討論系統軟件在STM32上的編程與實現。4.1軟件開發平臺Keil是德國Keil公司〔現已并入ARM公司〕開發的微控制器軟件開發平臺,是目前ARM核單片機開發的主流工具。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調試器在的完整開發方案,通過一個集成開發環境〔uVision〕將這些功能組合在一起。uVision當前最高版本是uVision3,它的界面和常用的微軟VC++的界面相似,界面友好,易學易用,在調試程序,軟件仿真方面也有很強大的功能。uVision3IDE是一款集編輯,編譯和工程管理于一身的基于窗口的軟件開發環境。uVision3集成了C語言編譯器,宏編譯,/定位,以與HEX文件產生器。如圖12所示,是它的一個典型的調試窗口,它主要包括以下幾個窗口:圖12KeilMDK開發環境工程區:用于訪問文件組和文件,調試是可以查看CPU存放器。輸出窗口:顯示編譯結果,以便快速查找錯誤的地方,同時還是調試命令輸入輸出窗口,也可以用于顯示查找結果。存窗口:顯示指定地址村里的容。查看和調用堆棧窗口:用于查看和修改變量的值,并且現實當前函數調用。代碼窗口:用于查看和編輯源文件。外設對話框:檢查微控制的片上外設的狀態。使用Keil來開發嵌入式軟件,開發周期和其他的平臺軟件開發周期是差不多的,大致有以下幾個步驟:1.創立一個工程,選擇一塊目標芯片,并且做一些必要的工程配置。2.編寫C或者匯編源文件。3.編譯應用程序。4.修改源程序中的錯誤。5.聯機調試。4.2軟件系統整體設計采用模塊化的編程思想,把整個軟件系統化為為多個功能模塊,主程序通過調用各個子程序來完成復雜功能的實現。下面具體介紹各個模塊的實現。軟件總體分析從整體上看,該系統軟件分為兩個大的局部:(1)下位機軟件即STM32應用程序。主要完成心電信號的采集、信號濾波、RTC模塊、液晶顯示和串口通信等。利用模塊化編程思想分別來實現各個模塊的功能,盡量減少程序之間的耦合性,提高程序之間的聚性。主程序是個無限循環,通過調用各個子程序來完成系統的功能。該局部總體開發思路是,首先完成STM32片上資源的初始化,其次是完成各個子程序的編寫,最后主程序通過調用主程序完成所要實現的功能。(2)上位機管理軟件。上位機是運用LabVIEW編寫的,其功能是完成數據的接收和處理,其中主要包括對數據的接收、顯示和存儲。處理是指利用PC機強大的數據處理功能對上傳來的數據進行處理并分析的結果。顯示功能完成數據到波形的轉換,能夠動態顯示出心電波形。存儲功能完成數據的保存。STM32軟件系統設計流程軟件搭載在硬件上運行的,硬件的資源多少在一定程度上決定了軟件的設計方法和復雜程度。由于早期的單片機由于硬件資源少,RAM資源有限,所以工程師在編程的時候對RAM的應用要十分小心,因此造成這類的設計開發工程師更加偏向于直接用匯編語言來控制硬件的工作。隨著科學的開展,嵌入式系統的復雜度的提高和EDA技術的開展,各種高級的EDA工具不斷推出,比方Keil、IAR、ADS等工具,這些工具不僅極大的方便了工程師的開發,同時也為用C語言這種高級語言來編寫程序提供了有利的條件。但是這種開發方式隨著系統的復雜度的增高也變的愈加吃力了,因為對開發人員要熟悉芯片的部資源,能夠進行存放器配置,這樣就對工程師的要求比擬高。但是這些問題可以通過移植操作系統來解決,操作系統的優勢就是屏蔽了具體的硬件細節,可以讓開發人員把更多的精力放在應用程序上。本系統設計時考慮移植操作系統,但是對于具體的應用存在一些缺乏之處:首先,操作系統在對數據區的開銷以與一些變量的存儲方面浪費了很多的RAM資源,有限的RAM資源就無法有效的分配。其次,STM32方便的庫文件開發方式本身就屏蔽了硬件的細節,處于以上考慮在本次開發中沒用移植操作系統,而采用庫文件的方式來開發設計。STM32固件庫是一個固件包,它不僅包括了程序、數據結構和覆蓋所有外設特性的宏單元。還包括設備驅動的描述以與各個外圍模塊的實例,該固件庫可以使得用戶在沒有深入學習外圍模塊規格手冊的情況下,也能夠使用任何在用戶應用中涉與到的設備。因此,使用該固件庫可以節省設計者的許多時間,可使開發人員把更多的精力花費在編程方面,加快了開發周期,減少了在應用開發中的綜合開銷。這是STM32軟件開發十分顯著的優點。實際應用開發時,我們用外設的時候一般有三個步驟,這里以ADC1外設為例簡單介紹一下開發流程:1、翻開配置文件stm32f10x_conf.h,翻開ADC1的宏開關#define_ADC#define_ADC1//這里選擇了翻開#define_ADC12、加載stm32f10x_adc.c文件stm32f10x_adc.c是ADC對應的庫文件,對ADC的一系列操作都在封裝好了放在這類文件里。3、參數設置。包括配置采用周期、觸發方式、工作模式、數據存儲格式等,開發人員只需根據所需要求在對應的參數位置設置即可。一個簡單的實例如下:/*ADC1configuration*/ADC_InitStructure.ADC_Mode=ADC_Mode_Independent;//獨立模式ADC_InitStructure.ADC_ScanConvMode=DISABLE;ADC_InitStructure.ADC_ContinuousConvMode=DISABLE;ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_T1_CC1;ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;//右對齊格式ADC_InitStructure.ADC_NbrOfChannel=1;ADC_Init(ADC1,&ADC_InitStructure);ADC_RegularChannelConfig(ADC1,ADC_Channel_14,1,ADC_SampleTime_13Cycles5);其他模塊的應用也類似于此,這樣就屏蔽了存放器配置細節,加快了開發速度。軟件總體流程圖軟件設計流程分為兩個大的方面,分別對應兩個個界面:第一個界面心電圖顯示界面,按鍵有上、下、左、右、中五個按鍵,按鍵功能分配如下:上、下按鍵控制波形縱向移動和幅值的變化,左右鍵是調節波形在時間上的周期變化,中間按鍵是切換鍵,切換上下鍵控制幅值變化還是縱向移動。另一個界面是幫助界面,具體介紹各個按鍵的作用,具體流程圖如圖13所示。圖13系統總體流程圖4.3信號采集程序設計心電信號的精確采集對于后面的進一步處理至關重要。STM32的片ADC是12位的模數轉換器,可以在16路模擬輸入中任選一路進行采樣,其最高采樣率為1MHz,心電信號的頻率較低,片ADC足以滿足系統采樣定理的要求,這樣可以提高采樣的穩定性和降低系統本錢。程序流程框圖如14所示。圖14數據采集流程圖轉換后的數據存放在ADC_RegularConvertedValue變量里,轉換狀態用全局變量dmaflag來標記,dmaflag=0代表轉換未結束,dmaflag=1代表轉換結束。4.4數字濾波程序設計數字濾波算法的實現是軟件局部關鍵的問題,它的運算時間和精度直接決定了系統的實時性和數據的準確性。本系統用C語言編寫了相對應的濾波算法程序來實現對所采集的心電信號進行數字濾波。濾波算法實際上就是用C語言來實現差分方程,為表達方面,把方程列出如下:yBP(n)=yBP(n-4)+x(n)-x(n-20)(1)yAP(n)=x(n-98)(2)yBS(n)=yAP(n)-yBP(n)(3)可見關鍵是實現差分方程(1),有式(2)和(3)看出,當前輸出與以前數據狀態有關,因此需要開辟緩沖區來存放以前的數據,這里開辟三個緩沖區Buff_bp[4]、Buff_ap[98]和Buff_x[20]分別存放yBP(n-4)、yAP(n-98)、x(n-20)的數據。對于式(1),Buff_bp[4]數組里面存放的是前4次yBP(n)的值,Buff_x[20]存放的是當前采集數據的前20次的x(n-20)數據,前20點的數據yBP(n)都為0,假設采集到第20點時,此時n=20,把該點賦值給變量[14]。Cur_val,數組Buff_bp[4]全為0,數組Buff_x[20]里面存放了前20個點的數據,那么該點濾波后的數值這里讓濾波后的數值存放到變量Fil_val,則Fil_val=Buff_bp[0]+Cur_val-Buff_x[0];然后讓數組Buff_bp[4]右移,把數據Buff_bp[0]移除,把Fil_val的值存入到數據Buff_bp[4]中,同理讓數組Buff_x[20]右移,移除數據Buff_x[0],在把Cur_val存入到Buff_bp[20]中,這樣就完成了一個點的濾波。軟件流程如圖15所示。圖15濾波流程圖4.5液晶程序設計在本系統中采用彩色TFT液晶,波形顯示清晰,界面良好。液晶控制的關鍵在于編寫底層驅動程序,底層驅動寫好以后再封裝不同功能的函數,以后調用就很方便了。STM32的FSMC模塊是能夠與同步或異步的存儲器和16位的PC存儲器卡的接口,它的主要作用是:將AHB傳輸信號轉換到適當的外部設備協議滿足訪問外部設備的時序要求通過這樣的方法就可以把液晶當作外部存儲設備來使用,通過配置讀寫與控制信號的時序,用指定指針就可以實現對液晶的讀寫訪問。這樣處理不但簡化了對液晶的操作,只需指定讀寫數據的指針就可完成操作,而且提高了訪問速度,防止了用端口模擬時序訪問液晶產生的滯后現象。并且STM32自帶FSMC方式控制TFT-LCD的實例,只需做一些相應的修改就可應用到本系統中。顯示的心電波形有兩個根本要求:一是波形清晰,無斷點,二是波形無明顯失真。在顯示波形時需要解決三個問題:一是把采集到的電壓值轉換成液晶上的高度;二是兩點之間要連續;三是刷新方式,刷新的一種方法是在波形顯示到屏幕的最右邊時整個波形區域刷新為空,然后重新從最左邊顯示,另一種方法是邊顯示邊刷新,即在顯示的后邊的一小塊區域刷新為空,也就是邊顯示邊刪除。相比擬而言顯然第二種方法比擬好,因為整個區域刷新是很費時間的問題,有可能影響畫圖的速度,而第二種方法就有效的克服了這個問題,另外從實際效果來看,視覺效果也比擬好。針對第一個問題,實際上就是把電壓值轉換成點的坐標。本設計中用液晶X軸中間的局部來顯示波形,X軸坐標值圍為60~180,而心電信號的電壓值圍為0~2V,則第一個問題轉化為把電壓圍0~2映射到坐標60~180的圍。為了提高精度可以把電壓圍在程序部處理時擴大100倍,則轉換精度為P=200/120=5/3,設轉換后的坐標為xzb,另外液晶的坐標原點在右上角,則把電壓Cur_val的圍0~200轉換到坐標60~180之間可以用以下公式:xzb=180-Cur_val*3/5。對于第二個問題解決的方法是在兩點之間用直線連接起來,這樣就需要把當前點的上一個點的坐標記住,用兩個變量保存設為prxzb、pryzb。5系統調試結果與誤差分析經過軟硬件的設計和制作,完成了根本的構架,但是還需經一部的調試和分析才能進一步的完善該系統。5.1調試手段為檢驗各模塊是否按要求進行正常工作,借助萬用表、函數信號發生器以與示波器來進行檢測,通過測試結果完成對各個模塊完成功能的評估,對整體練調是一種很好的促進手段。當硬件電路正常工作后,我們使用串口調試助手、J-Link進行在線調試。串口調試工具是通過串行通信接口與主控芯片的進行信息交互,其輸出波特率與數據幀的格式都可以進行設置,具有使用靈活、操作簡便的特點。J-Link是調試ARM嵌入式系統的常用工具。在每一局部程序調試通過后,對所有子程序進行整合編寫出完的主程序。在開發環境中完成程序編譯之后,通過J-Link工具把程序代碼下載到STM32處理器中,然后通過程序的調試功能來進行程序的調試。使用J-Link工具的優點是:入門簡單、可以全面的觀察程序中的參數和微處理器中各個存放器的值和狀態,特別適合軟硬件聯調階段。5.2測量調試以與分析調試過程中需要對該電路的每一模塊逐步進行調試,使其完成各自的目標指數前方可整體聯立進行綜合調試。采集電路的測試采集電路主要是完成對心電信號的正確提取,主要測試前置放大電路即AD627的性能測試,帶通濾波電路測試與陷波電路測試等。(1)AD620的性能測試差模增益測量方法:差動輸入端,正端接信號源信號,負端接地,輸入信號為150mV,測量AD620A的輸出端對地的電壓,其值為1020mV。差模增益為6.8,與理論計算相一致。共模抑制比測量方法:兩輸入端輸入50Hz共模信號,測量輸出端對地電壓。輸入1.78V輸出0.17V,所以,共模增益為:0.096。共模抑制比為:CMRR=10/0.096=104dB。符合心電儀器設計標準。(2)帶通濾波電路測試測量方法:實際測量中,輸入一定電壓幅度的正弦波,調節其頻率,觀察輸出電壓幅度的變化。測得,信號65Hz時開始有幅度衰減,100Hz時減為原幅度的1/3,信號低頻在1Hz的時候開始衰減,0.7Hz的時候衰減為原幅度1/3。(3)陷波電路測試測量方法:實際測量中,輸入一定電壓幅度的正弦波,調節其頻率使輸出頻率為50Hz,調節滑動變阻器,觀察輸出電壓幅度的變化,當輸出波形幅值最小最正確。調節波形如圖16所示。圖16陷波電路實際效果濾波算法測試由前述可知,通過前置放大,高通低通濾波以與陷波電路和放大電路后,用示波器觀察出來的波形如圖17(a)所示。雖然R波明顯出來但是很顯然

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論