基于A(yíng)VR單片機的核磁共振儀床體運動(dòng)控制與檢測系統的研究與設計
3.1.2 伺服電機的控制
直流伺服電機是由單片機發(fā)出的PWM驅動(dòng)信號經(jīng)過(guò)放大后驅動(dòng)電機動(dòng)作。通過(guò)接在電機上的編碼器的反饋信號和前后極限位置傳感器判斷床體當前的縱向位置,實(shí)現了直流伺服電機的閉環(huán)控制??刂齐姍C驅動(dòng)信號,就可以實(shí)現電機的起/停、正/反轉和加/減速功能,從而實(shí)現床體的簡(jiǎn)單運動(dòng)、復雜運動(dòng)和指定運動(dòng)狀態(tài)。伺服電機的驅動(dòng)是由主控制板發(fā)出控制信號,由驅動(dòng)電路驅動(dòng)直流伺服電機動(dòng)作,配以脈沖發(fā)生器(編碼器)測量電機的轉角,經(jīng)濾波后反饋給單片機,從而構成了電機的閉環(huán)控制系統,實(shí)現了對直流伺服電機的精確控制。
3.2 AVR單片機固化程序
AVR單片機固化程序采用ICC語(yǔ)言編寫(xiě),并使用模塊化的設計方法,分為主程序、鍵盤(pán)掃描模塊、顯示模塊、運動(dòng)控制模塊、橫向運動(dòng)測試模塊、縱向運動(dòng)測試模塊和壽命測試模塊。模塊化設計使軟件更加靈活,便于調用和移植,并且在錯誤發(fā)生的時(shí)候,可以很快的找到錯誤,極大的提高了系統的可靠性和穩定性。
3.2.1 主程序
主程序要完成系統的初始化,中斷設置,全局變量設置和看門(mén)狗設置等。在初始化結束后,系統進(jìn)入主查詢(xún)循環(huán)過(guò)程,判斷當前進(jìn)行的操作,并進(jìn)入相應的功能模塊。系統程序中采用了狀態(tài)位的方式,實(shí)現主程序和各個(gè)功能模塊,以及各個(gè)功能模塊之間的運動(dòng)狀態(tài)的通信,保證了在各個(gè)功能模塊之間切換時(shí),系統的安全和穩定性。系統主程序的流程圖如圖3所示。
圖3 主程序流程圖
圖4 鍵盤(pán)掃描模塊程序流程圖
3.2.2 鍵盤(pán)掃描模塊
由于對系統響應速度要求不高,所以鍵盤(pán)掃描采用了查詢(xún)的方式。鍵盤(pán)掃描模塊程序流程圖如圖4所示,縱向運動(dòng)的優(yōu)先級大于橫向運動(dòng)的優(yōu)先級,當縱向按鍵和橫向按鍵同時(shí)按下時(shí),床體將會(huì )縱向運動(dòng),橫向運動(dòng)按鍵被屏蔽。
3.2.3 壽命測試模塊
壽命測試部分是本系統中結構最復雜,涉及變量最多的一個(gè)功能模塊,并且同時(shí)存在系統狀態(tài)位和壽命測試狀態(tài)位變量,所以各個(gè)功能模塊之間的狀態(tài)通信也比其他功能模塊復雜。在這個(gè)模塊中,主要實(shí)現了床體自動(dòng)進(jìn)行復雜運動(dòng)的功能,并且能夠對各種預先設定的循環(huán)運動(dòng)計數,從而實(shí)現對床體的壽命測試。
圖5 壽命測試模塊
3.3 CPLD固化程序
CPLD固化程序采用VHDL語(yǔ)言編寫(xiě)。主要功能為:
①驅動(dòng)“縱向位置”數碼管顯示當前縱向位置或壽命測試計數;
②對極限位置傳感器的差分信號解碼后,輸出給MCU;
③接收橫向位置信號,并驅動(dòng)“橫向位置”數碼管,顯示橫向位置;
④驅動(dòng)極限位置指示LED;
4結論
通過(guò)在核磁共振儀的床體上進(jìn)行的實(shí)際應用,證明本系統能夠完全實(shí)現對床體的控制功能,并且滿(mǎn)足對床體各種測試的要求,具有較高的穩定可靠性。本系統能夠獨立對核磁共振儀的床體進(jìn)行檢測,大大降低了生產(chǎn)成本,縮短了生沒(méi)產(chǎn)周期,具有較高的應用價(jià)值。
評論