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