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