摘要:本文介紹了由AVR單片機實現(xiàn)的核磁共振儀床體檢測系統(tǒng)的硬件與軟件設(shè)計,深入分析和研究了床體橫向運動和縱向運動的精確控制問題。 關(guān)鍵詞:AVR單片機;檢測系統(tǒng);電機控制;
1 引言
近年來隨著醫(yī)學(xué)技術(shù)的快速發(fā)展,核磁共振儀已經(jīng)在大中型醫(yī)院中被廣泛的應(yīng)用。目前,在核磁共振儀的生產(chǎn)過程中,床體部分要與磁體一起搬入電磁屏蔽室 組裝后才能進(jìn)行檢測,這對人員和物資都是很大的浪費。針對這種狀況,本文設(shè)計出了一套核磁共振儀床體部分的運動控制與檢測系統(tǒng),它能夠?qū)Υ搀w部分獨立進(jìn)行 檢測,而不必將全部系統(tǒng)在屏蔽室安裝后檢測,從而降低了核磁共振儀床體部分的生產(chǎn)和檢測成本,縮短了生產(chǎn)周期。
本設(shè)計以通用醫(yī)療集團(tuán)的Ovation5型核磁共振儀的床體為對象,對驅(qū)動床體做橫向運動的直流步進(jìn)電機和驅(qū)動床體做縱向運動的直流伺服電機的精確 控制問題進(jìn)行較為深入的分析和研究。系統(tǒng)主要采用了ATMEL公司的Atmega128單片機和ALTRA公司的EPM240T100型CPLD芯片作為 主控制部分,實現(xiàn)了對床體縱向和橫向運動的精確控制和檢測。主控電路采用了全數(shù)字控制方式和抗干擾設(shè)計,具有很高的抗干擾性能。
2 檢測系統(tǒng)的硬件設(shè)計
2.1 系統(tǒng)硬件結(jié)構(gòu)
本檢測系統(tǒng)主要由主控制板、顯示部分、按鍵開關(guān)、傳感器、串行通信和電機控制部分構(gòu)成。床體的運動分為橫向運動和縱向運動兩種狀態(tài),分別由直流步進(jìn)電機和直流伺服電機實現(xiàn)。本系統(tǒng)的硬件結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)硬件結(jié)構(gòu)示意圖
從圖1可以看出,電機的邏輯控制由主控制板實現(xiàn)。系統(tǒng)經(jīng)過初始化之后,當(dāng)開關(guān)或按鍵發(fā)出通斷信號給主控制板時,由單片機判斷床體當(dāng)前的狀態(tài),如果床 體沒有處于極限位置,則單片機向相應(yīng)的電機發(fā)出驅(qū)動信號,驅(qū)動床體向相應(yīng)的方向運動,否則床體停止運動。橫向運動采用開環(huán)控制,運動位置由單片機發(fā)出的脈 沖個數(shù)決定。縱向運動采用閉環(huán)控制,由連接在直流伺服電機上的編碼器反饋位置信號給主控制板。
2.2 主控制板硬件設(shè)計
主控制板主要由AVR單片機、CPLD、濾波電路、電平轉(zhuǎn)換電路和串口通信電路等構(gòu)成。AVR單片機主要實現(xiàn)控制功能,CPLD主要實現(xiàn)I/O口擴展、邏輯判斷和對輸入、輸出信號的編碼解碼功能。
本系統(tǒng)采用的AVR Atmega128單片機是一種高性能、低功耗的8位微處理器,采用先進(jìn)的 RISC 結(jié)構(gòu),133 條指令大多數(shù)可以在一個時鐘周期內(nèi)完成,滿足了本系統(tǒng)對執(zhí)行速度的要求。它具有非易失性的程序和數(shù)據(jù)存儲器,128K 字節(jié)的系統(tǒng)內(nèi)可編程Flash。由于本系統(tǒng)在對縱向距離的增減,橫向距離的增減,鍵盤掃描等程序設(shè)計均需要使用定時器。而此單片機分別提供了兩個具有獨立 的預(yù)分頻器和比較器功能的8 位定時器/ 計數(shù)器,以及兩個具有預(yù)分頻器、比較功能和捕捉功能的16 位定時器/ 計數(shù)器。它具有兩路8 位PWM和6路分辨率可編程(2 到16 位)的PWM輸出比較調(diào)制器。它具有獨立片內(nèi)振蕩器的可編程看門狗定時器,能夠有效防止程序跑飛。
圖2 主控制板硬件框圖
主控制板硬件框圖如圖2所示,系統(tǒng)初始化后,當(dāng)有運動按鍵信號輸入單片機時,單片機將輸出相應(yīng)的縱向或橫向控制信號。單 片機接收經(jīng)過濾波后的縱向電機編碼器的信號,由內(nèi)部程序計算當(dāng)前的橫向和縱向位置,并將當(dāng)前的位置信息輸出到CPLD,由CPLD驅(qū)動顯示部分,顯示當(dāng)前 的橫向和縱向位置。在壽命測試模式下,縱向顯示部分也同時可以顯示壽命測試計數(shù)。本系統(tǒng)具有串行通信功能,能夠通過串行接口與PC機或其他設(shè)備通信。
3 控制系統(tǒng)的軟件設(shè)計
主控制板首先接收來自用戶的操作信號,然后根據(jù)這些信號的狀態(tài),通過AVR單片機和CPLD內(nèi)部程序?qū)崿F(xiàn)對電機的控制和顯示功能。在本檢測系統(tǒng)中, 由于需要控制和顯示的信息很多,并且關(guān)聯(lián)性很強,因此需要對單片機進(jìn)行復(fù)雜的編程才能實現(xiàn)各個功能。對本系統(tǒng)而言,AVR單片機固化程序的質(zhì)量,直接影響 到了整個系統(tǒng)的運行穩(wěn)定性和控制精度,因此AVR單片機固化程序的編程技術(shù)就成為系統(tǒng)控制的關(guān)鍵,這同時也是本系統(tǒng)的設(shè)計重點之一。通過分析床體的設(shè)計要 求和實際運行情況,設(shè)計開發(fā)出一套床體運動測試程序,使得測試系統(tǒng)能夠?qū)Υ搀w實際運行中所有的運動狀態(tài)、運動精度和運動壽命進(jìn)行測試。
3.1 電機控制策略
本系統(tǒng)對步進(jìn)電機采用了開環(huán)控制,對直流伺服電機采用了閉環(huán)控制。
3.1.1 步進(jìn)電機的控制
直流步進(jìn)電機由主控制板發(fā)出脈沖驅(qū)動信號給直流步進(jìn)電機驅(qū)動器,從而驅(qū)動步進(jìn)電機動作。電機的轉(zhuǎn)動角度和位置由主控制板發(fā)出的脈沖個數(shù)決定。單片機 是通過控制向驅(qū)動器輸出脈沖的數(shù)量,經(jīng)過計算后判斷當(dāng)前床體橫向位置。橫向位置通過數(shù)碼管顯示在用戶界面上。由于步進(jìn)電機具有誤差不累積的特性,所以通過 這種開環(huán)的控制方式能夠?qū)崿F(xiàn)步進(jìn)電機的精確控制。
3.1.2 伺服電機的控制
直流伺服電機是由單片機發(fā)出的PWM驅(qū)動信號經(jīng)過放大后驅(qū)動電機動作。通過接在電機上的編碼器的反饋信號和前后極限位置傳感器判斷床體當(dāng)前的縱向位 置,實現(xiàn)了直流伺服電機的閉環(huán)控制?刂齐姍C驅(qū)動信號,就可以實現(xiàn)電機的起/停、正/反轉(zhuǎn)和加/減速功能,從而實現(xiàn)床體的簡單運動、復(fù)雜運動和指定運動狀 態(tài)。伺服電機的驅(qū)動是由主控制板發(fā)出控制信號,由驅(qū)動電路驅(qū)動直流伺服電機動作,配以脈沖發(fā)生器(編碼器)測量電機的轉(zhuǎn)角,經(jīng)濾波后反饋給單片機,從而構(gòu) 成了電機的閉環(huán)控制系統(tǒng),實現(xiàn)了對直流伺服電機的精確控制。
3.2 AVR單片機固化程序
AVR單片機固化程序采用ICC語言編寫,并使用模塊化的設(shè)計方法,分為主程序、鍵盤掃描模塊、顯示模塊、運動控制模塊、橫向運動測試模塊、縱向運 動測試模塊和壽命測試模塊。模塊化設(shè)計使軟件更加靈活,便于調(diào)用和移植,并且在錯誤發(fā)生的時候,可以很快的找到錯誤,極大的提高了系統(tǒng)的可靠性和穩(wěn)定性。
3.2.1 主程序
主程序要完成系統(tǒng)的初始化,中斷設(shè)置,全局變量設(shè)置和看門狗設(shè)置等。在初始化結(jié)束后,系統(tǒng)進(jìn)入主查詢循環(huán)過程,判斷當(dāng)前進(jìn)行的操作,并進(jìn)入相應(yīng)的功能模 塊。系統(tǒng)程序中采用了狀態(tài)位的方式,實現(xiàn)主程序和各個功能模塊,以及各個功能模塊之間的運動狀態(tài)的通信,保證了在各個功能模塊之間切換時,系統(tǒng)的安全和穩(wěn) 定性。系統(tǒng)主程序的流程圖如圖3所示。
圖3 主程序流程圖
圖4 鍵盤掃描模塊程序流程圖
3.2.2 鍵盤掃描模塊
由于對系統(tǒng)響應(yīng)速度要求不高,所以鍵盤掃描采用了查詢的方式。鍵盤掃描模塊程序流程圖如圖4所示,縱向運動的優(yōu)先級大于橫向運動的優(yōu)先級,當(dāng)縱向按鍵和橫向按鍵同時按下時,床體將會縱向運動,橫向運動按鍵被屏蔽。
3.2.3 壽命測試模塊
壽命測試部分是本系統(tǒng)中結(jié)構(gòu)最復(fù)雜,涉及變量最多的一個功能模塊,并且同時存在系統(tǒng)狀態(tài)位和壽命測試狀態(tài)位變量,所以各個功能模塊之間的狀態(tài)通信也 比其他功能模塊復(fù)雜。在這個模塊中,主要實現(xiàn)了床體自動進(jìn)行復(fù)雜運動的功能,并且能夠?qū)Ω鞣N預(yù)先設(shè)定的循環(huán)運動計數(shù),從而實現(xiàn)對床體的壽命測試。
圖5 壽命測試模塊
3.3 CPLD固化程序
CPLD固化程序采用VHDL語言編寫。主要功能為:
① 驅(qū)動“縱向位置”數(shù)碼管顯示當(dāng)前縱向位置或壽命測試計數(shù);
② 對極限位置傳感器的差分信號解碼后,輸出給MCU;
③ 接收橫向位置信號,并驅(qū)動“橫向位置”數(shù)碼管,顯示橫向位置;
④ 驅(qū)動極限位置指示LED;
4 結(jié)論
通過在核磁共振儀的床體上進(jìn)行的實際應(yīng)用,證明本系統(tǒng)能夠完全實現(xiàn)對床體的控制功能,并且滿足對床體各種測試的要求,具有較高的穩(wěn)定可靠性。本系統(tǒng)能夠獨立對核磁共振儀的床體進(jìn)行檢測,大大降低了生產(chǎn)成本,縮短了生沒產(chǎn)周期,具有較高的應(yīng)用價值。
參 考 文 獻(xiàn)
[1]王曉明.電動機的單片機控制[M].北京:北京航空航天大學(xué)出版社.2002.
[2]馬潮.高檔8位單片機ATmega128原理與開發(fā)應(yīng)用指南(上)[M].北京:北京航空航天大學(xué)出版社.2004.
[3]周立功,夏宇聞等.單片機與CPLD綜合應(yīng)用技術(shù)[M].北京:北京航空航天大學(xué)出版社.2003.
[4]王向周,任月慧,鄭戍華等.基于MB90F549單片機的直流伺服電機調(diào)速系統(tǒng)[J].電測與儀表.2003,40(450):59-61,21 |