基于ARM的牽引理療系統(tǒng)的實現(xiàn)方案
引言
本文引用地址:http://m.butianyuan.cn/article/201706/350227.htm醫(yī)學上針對腰椎間盤突出癥等腰脊椎病,通常采取物理牽引的保守治療方法。本牽引床系統(tǒng)是以兩段式床體為治療平臺,采用ARM等嵌入式處理器并結(jié)合計算機對床體各自由度運動實現(xiàn)分布式控制,并由直流電機實施外力快、慢速牽引及床體的任意角度的快慢速旋轉(zhuǎn),從而實現(xiàn)腰脊椎病的物理治療。
1系統(tǒng)功能與總體設計
牽引床以兩段式床體為治療平臺。其床體分為前、后兩段,供病人躺臥。前段有固定帶將病人腰上部固定,利用牽引帶與活動床頭相連。牽引運動是前后方向的平動。床頭在電機驅(qū)動下可向前牽出一定距離,而病人腰部則是被固定著,這樣牽引帶對腰椎就有了一定的作用力。床頭安裝“S”型拉力傳感器檢測牽引力。后段床體也有固定帶將病人的腰下部至胯骨處固定,并可在電機帶動下以腰部處為軸心做水平平面的擺動、垂直軸向的傾斜升降轉(zhuǎn)動、以及向左右兩側(cè)的旋轉(zhuǎn)共三個自由度的轉(zhuǎn)動。前段床體的牽引速度可調(diào),后段床體的旋轉(zhuǎn)角度與旋轉(zhuǎn)速度也可任意設定。
牽引床為醫(yī)師提供四個自由度可調(diào)節(jié)的物理運動,充分滿足腰椎病物理治療的需要。實際治療中,醫(yī)生根據(jù)患者的病理情況,將后床面的左、右旋轉(zhuǎn)結(jié)合慢牽基礎上的快牽功能進行合理使用能夠起到“正脊”作用。
牽引床的總體設計采取分布式控制體系,如圖1所示。計算機作為上位機通過RS-485總線與三個嵌入式控制器(下位機)組成分布式總線網(wǎng)絡實現(xiàn)對床體運動的控制。計算機實現(xiàn)系統(tǒng)總體操作控制界面。系統(tǒng)復雜的控制任務被分解為三部分,分別由三個嵌入式控制器并行實時執(zhí)行完成。其中,牽引運動及牽引力的檢測與控制由一片STC89C52RD+單片機完成;三個旋轉(zhuǎn)運動的角度檢測及控制由Samsong公司的32位ARM核RISC處理器S3C44B0X處理;床體上各類限位開關(guān)等開關(guān)量檢測及輸出則由另一片STC89C52RD+實現(xiàn)。
圖1 系統(tǒng)總體設計框圖
2 系統(tǒng)硬件設計
2.1 基于STC89C52RD+的牽引控制
快慢牽引治療是通過直流電機驅(qū)動床頭向前運動從而拉伸固定在患者腰間的固定帶,產(chǎn)生一定的牽引作用力施加在腰椎。牽引力大小及快慢由醫(yī)生設置,并保持一段時間。保持期間可配合床體旋轉(zhuǎn)等動作進行物理治療。
牽引力可由床頭的S型應變式拉力傳感器轉(zhuǎn)換為模擬信號。該信號大小與加在傳感器上的激勵直流電壓大小有關(guān)。傳感器靈敏度為2mV/V,若DC激勵電壓為5V,則傳感器輸出最大信號為10mV。如果力傳感器的量程為0-200Kg,則對應傳感器輸出模擬信號為0-10mV。該信號經(jīng)儀表放大器AD623放大500倍后為0-5V,經(jīng)“Л”型電感、電容無源網(wǎng)絡濾波后輸入給10位A/D轉(zhuǎn)換器TLC1549。牽引力信號頻率很低,處理器每秒鐘采樣20次。采用一個專用的STC89C52RD+的片內(nèi)硬件定時器,每隔50ms進入定時器中斷服務程序通過SPI串行接口進行一次A/D轉(zhuǎn)換,并將轉(zhuǎn)換后的數(shù)據(jù)由UART經(jīng)接口芯片74LBC176轉(zhuǎn)換為485信號發(fā)送至上位機。由上位機判斷后發(fā)出控制指令控制牽引電機及牽引過程。
STC89C52RD+是STC公司生產(chǎn)的增強型51單片機,可靠性高,抗干擾性強。在產(chǎn)品注冊對控制器做電磁兼容性試驗時,發(fā)現(xiàn)采用AT89C52通不過的電源脈沖干擾試驗以及高壓放電干擾試驗項目,STC89C52RD+可輕易通過。STC單片機的可靠性由此可見一斑。
2.2 基于STC89C52RD+的開關(guān)量檢測與控制
床體采用行程開關(guān)為各個運動行程進行限位,避免系統(tǒng)失控造成牽引力過大拉傷病患,或旋轉(zhuǎn)、擺動角度過大將病患甩出床體。當出現(xiàn)碰觸行程限位開關(guān)的情況時,繼電器控制電路將直接切斷電機電源使電機停轉(zhuǎn)??刂破鱏TC89C52RD+實時檢測這些信號,并迅速將此信息通過485串行總線傳至上位機。系統(tǒng)軟件將停止該進程并將系統(tǒng)復位。單片機將系統(tǒng)的23個輸出開關(guān)量狀態(tài)鎖存在3片74HC377中,確保狀態(tài)可靠輸出。各路輸出經(jīng)由光電耦合器隔離、ULN2803放大,驅(qū)動繼電器的開關(guān)來控制各個電動機的啟停及組合動作。
設置“急退”按鈕,在病患自己感覺不舒適的時候可自行按下,系統(tǒng)將迅速解除牽引力并將床體旋平。當病人按下“急退”按鈕,單片機檢測到后即通過485總線將此消息傳至上位機。系統(tǒng)軟件接收到后,立即停止當前的牽引進程,并發(fā)出命令,單片機隨即控制牽引電機反轉(zhuǎn)解除牽引力。如果床面處于旋轉(zhuǎn)傾斜狀態(tài),則控制將床體旋平。這些措施大大提高了牽引治療系統(tǒng)的安全性與可靠性,對于一臺醫(yī)療器械而言是必須要考慮的。
選用一片STC89C52RD+作為專用的開關(guān)量檢測與控制處理器。這樣可使這部分控制程序更簡潔、純粹,易于實現(xiàn),可確保系統(tǒng)可靠無誤的動作。若將這部分任務合并到其他控制器中,會增加軟件的編程難度,流程會更復雜,勢必將降低系統(tǒng)運行的可靠性、安全性。
2.3 基于ARM處理器S3C44B0X的旋轉(zhuǎn)運動控制
醫(yī)療設備的運行要求低噪音。系統(tǒng)采用高效率、低噪聲的新型220V高壓大功率直流電機作為床體運動的執(zhí)行機構(gòu),來實現(xiàn)床體機械系統(tǒng)多維、多軸、多自由度的運動。對直流電機的控制采用PWM方式。PWM驅(qū)動采用高效率大功率VMOS管功放電路。在嵌入式電機控制處理器選擇上,采用Samsong公司的32位ARM核RISC處理器S3C44B0X。該處理器具有雙串行口、5個PWM定時器、8通道10位ADC、最高主頻66MHz,完全勝任運動控制要求。
上位機經(jīng)485總線發(fā)出的轉(zhuǎn)動運動指令中包含有速度參數(shù)及角度參數(shù)數(shù)據(jù)。三個自由度的旋轉(zhuǎn)運動分別各對應一個PWM定時器的輸出。旋轉(zhuǎn)電機的調(diào)速由PWM占空比參數(shù)調(diào)節(jié)。速度控制是開環(huán)的。角度傳感器選用高精度單圈電位計。電位器外接5V激勵,即0-360度對應0-5V。實際上,只采用了0-30度范圍。這樣,ARM控制器、PWM執(zhí)行器與角度傳感器的測量環(huán)節(jié)構(gòu)成角度位置閉環(huán)調(diào)節(jié)回路,實現(xiàn)旋轉(zhuǎn)角度的調(diào)節(jié)。
考慮到目前市場上存在欠款問題并為了更好地回收資金并保護知識產(chǎn)權(quán),結(jié)合S3C44B0X的內(nèi)部資源設計了獨特的硬件加密功能。通常加密是利用計算機的日歷以及計算機中的硬盤序列號來實現(xiàn)的。計算機的運算能力強,算法實現(xiàn)也容易,但是往往也容易被解密。好的方法是利用電路硬件來做加密。首先,利用S3C44B0X內(nèi)部的RTC設計日歷定時器做硬件注冊時間加密。第二,利用DS18B20中全球唯一的序列號作為注冊序列號來做加密。DS18B20是DALAS公司生產(chǎn)的數(shù)字溫度傳感器,但在這里并不用其測溫,而是利用其中全球唯一的序列號。它與ARM處理器的連接僅用一根數(shù)據(jù)線作串行數(shù)據(jù)傳輸。
圖2 旋轉(zhuǎn)運動控制框圖
3軟件設計
系統(tǒng)控制任務與算法按照二級拓撲分布在各個嵌入式控制器以及上位機的軟件中。STC89C52RD+單片機采用匯編語言編程,效率高,可靠性高。S3C44B0X為ARM7內(nèi)核,采用C語言加匯編語言進行混合編程。上位機軟件則采用功能強大的DELPHI6.0Windows應用程序開發(fā)工具開發(fā),運用Object Pascal語言編寫程序代碼。這使得軟件對床體的控制更加靈活、可靠和高效,界面簡潔友好,操作方便、可靠性高。在開發(fā)過程中采用了一些新的技術(shù),最主要的是控件技術(shù),特別是在串行通信中采用了控件技術(shù),大大提高了串行通信的可靠性,保障了系統(tǒng)的可靠性。其軟件結(jié)構(gòu)功能總體框圖如圖3所示。
3.1 通訊協(xié)議
上位機對牽引運動、旋轉(zhuǎn)運動與開關(guān)量動作的控制與協(xié)調(diào)指揮是通過一定協(xié)議的數(shù)據(jù)通訊傳達至各嵌入式處理器執(zhí)行的。通訊指令依照異步串行數(shù)據(jù)通訊格式制定,包括字頭、下位機地址、指令數(shù)據(jù)和結(jié)束符三部分。字頭與結(jié)束符用于數(shù)據(jù)同步。指令、數(shù)據(jù)傳達參數(shù)設置與控制等信息。
上位機通過485總線主動發(fā)出詢問指令來獲取數(shù)據(jù)并進行控制。各下位機嵌入式控制器平時處于被動接收狀態(tài),當確認查詢地址是自己時,即上傳數(shù)據(jù)或執(zhí)行命令。實踐中發(fā)現(xiàn)由于信道的問題,首先及最后發(fā)送的字符往往會出現(xiàn)錯誤,從而造成一定的誤碼。這會影響到系統(tǒng)的可靠性。為了解決這一問題,在字頭發(fā)送前及結(jié)束符發(fā)送后,多發(fā)送幾個無關(guān)的字節(jié)“0xFF”。實驗證明,大大降低了誤碼率。
3.2 基于Spcomm控件的串口通信實現(xiàn)
用Delphi 實現(xiàn)串口通信,常用的方法有:第一,使用控件。如Mscomm和Spcomm控件等。第二,使用API函數(shù)在Delphi 中調(diào)用其它串口通信程序。使用API方法的優(yōu)點是適合編寫較為復雜的低層次通信程序,但缺點是編寫串口通信程序較為復雜。本系統(tǒng)選用Spcomm。它是Small-Pig Team開發(fā)的一個第三方Delphi串口控件,該控件具有豐富的與串口通信密切相關(guān)的屬性及事件,提供了對串口的各種操作,且編程簡單、通用性強、可移植性好。在Delphi軟件開發(fā)中成為一個被廣泛應用的串口通信開發(fā)控件。Spcomm串行通信控件為多線程。接收和發(fā)送數(shù)據(jù)分別在兩個線程內(nèi)完成,接收線程負責收到數(shù)據(jù)時觸發(fā)OnReceiveData事件。WriteCommData()函數(shù)將待發(fā)送的數(shù)據(jù)寫入輸出緩沖器,發(fā)送線程在后臺完成數(shù)據(jù)發(fā)送。在接收和發(fā)送數(shù)據(jù)前需要初始化串口,用StartComm打開串口,退出程序時用StopComm關(guān)閉串口。
4 總結(jié)
本系統(tǒng)已交付廠家(河南騰遠醫(yī)療設備有限公司)生產(chǎn),并已在多家醫(yī)院投入治療,反映效果良好,并已產(chǎn)生約一百萬元經(jīng)濟效益。已經(jīng)專家會議鑒定評審為河南省科技成果。
創(chuàng)新點:在復雜的嵌入式系統(tǒng)中采用多個嵌入式處理器結(jié)合上位計算機來并行分擔系統(tǒng)的復雜任務與算法,為醫(yī)療設備的研制獲得了難得的可靠性
評論