李嘉鵬 馬超 孫浩 馬守賢
摘 要:隨著智能制造的快速發展,傳統的機械臂控制技術越來越不能滿足實際生產的復雜要求,需要更加智能的機械臂該設來解決這一問題。文章設計了基于BMI160的多自由度體感遙控機械臂,該設計利用STM32F103C8T6作為主控制器,慣性導航模塊用于手勢檢測,NRF24L01無線模塊用于指令發送和數據接收,OLED液晶模塊用于顯示當前控制指令、機器人狀態,采用LED和蜂鳴器實現提示和警報。設計的機械臂具有使用簡便、機動靈活、連接可靠、穩定性能好、人性化操作等優點,基本能夠滿足機械臂的遙控要求,具有較高的應用與推廣價值。同時保留了拓展接口,為以后的智能升級留下了充分的余地。
關鍵詞:嵌入式控制;體感技術;BMI160慣性模塊;無線控制
機械臂技術發展非常迅速,機械臂的用處也是十分廣泛。在我國機械臂的研究和應用方面與很多國家相比還是有一定的差距,在傳統機械手技術方面,我國的技術水平已與國際接軌,但在工藝水平方面還有一定差異,而在現代機械手發展方面,國內主要還處于摸索試驗階段,雖然有一些成品,但智能度還有待提高。傳統的機械手通常采用PLC控制,此次設計采用模塊化機械裝置,以單片機控制為基礎,以STM32F103C8T6為主控制器。通過慣性傳感器模塊來檢測體感信息,再利用無線模塊完成無線通信,同時利用OLED液晶顯示模塊進行實時狀態顯示。用體感識別技術代替了傳統的按鍵控制,有效地減少了硬件設備的輸入,增加了系統的可操控性。體感技術的優勢在于人們可以通過使用肢體直接與外圍設備或環境交互,不需使用任何復雜的控制設備就可以使人們非常方便地實現內容交互。根據體感的不同方式和原理,體感技術可分為三大類:慣性傳感、光學傳感、慣性傳感和光學組合傳感。此設計采用慣性傳感原理對體感的位置信息進行檢測。
1 系統方案及整體構架
該設計以ST公司的Cortex-M3為核心的ARM控制器STM32F103C8T6為主控制器,ST公司的BMI慣性導航模塊用于手勢檢測,NRF24L01無線模塊用于指令發送和數據接收,OLED液晶模塊用于顯示當前控制指令、機器人狀態。采用LED和蜂鳴器實現提示和警報。主控制系統軟件中使用了狀態機流程代碼結構,枚舉了系統的所有可能狀態,對每一個狀態進行閉環控制,增加了系統的穩定性,提升了控制器的代碼處理效率[1]。系統的整體架構如圖1所示。
2 硬件電路設計
2.1 主控制模塊
該設計采用ST公司的ARM控制器STM32F103C8T6作為主控制器。其擁有32位內核,工作頻率高達72 MHz,內置的128 K字節程序存儲器,20 K字節SRAM,還包括時鐘、復位和電源管理等功能。電源電壓2.0~3.6 V,滿足低功耗要求。
2.2 傳感器處理模塊
該設計采用BMI160慣性傳感器模塊進行體感遙控。傳感器模塊通過檢測X,Y,Z 3個角度的偏移量和所受重力的不同數據,數據傳輸給主控芯片STM32F103C8T6后,進入軟件濾波模塊,將因為環境、電路、電磁干擾等原因產生的不可靠數據濾除得到較為準確的測量數據。之后運行姿態計算模塊,通過算法計算出控制器所在的三維角度數據來對終端進行控制[2]。傳感器處理模塊如圖2所示。
2.3 無線通信模塊
無線通信模塊采用NRF24l01無線通信模塊發送指令和接收數據,通過將接收到的體感數據轉換成數據指令來控制機械臂上的舵機運動,實現機械臂的多自由度無線控制。采用嚴格的“問答”形式,即將主控器的每條體感指令的發送都要求機械臂主體控制器返回一幀狀態數據包。在發送一條指令后,等待機械臂的狀態返回包,然后才為機械臂本體繼續發送下一條指令包。如果機械臂本體接收到了錯誤的指令(檢查錯誤指令),則立即設定通信錯誤標志符,同時上傳狀態包。同時,機械臂控制器發出報警信號,停止機械臂運動,直到下一個機器清除串口DMA,重新接收指令。如果接收到的數據包在通信錯誤標志位置位,則重新匹配NRF24L01無線通信模塊,之后再發送體感控制指令[3]。
2.4 顯示模塊
顯示模塊采用了新型OLED液晶顯示模塊顯示機械臂的使用狀態和電量數據。OLED具有輕巧便利、功耗低等特點,因此被廣泛使用。其內部采用SSD1306主控芯片進行數據控制。屏幕分辨率為128×64。數據傳輸方式采用I2C通信協議進行通信,既節省了I/O的使用,又具有通信速率高可外接多種設備等優點。
2.5 控制模塊
機械臂和小車的信號控制主要通過一個16路PWM驅動模塊和一個L298N電機驅動板來完成。PWM驅動模塊采用I2C通信方式,從通信上可以跟OLED顯示模塊公用同一套IO口,可以控制16路PWM給機械臂和小車提供PWM信號。L298N電機驅動板是一個H橋電路,通過改變輸入信號的高低電平和PWM的脈寬就可以控制電機的轉速和方向。在本設計中,小車電機控制和機械臂控制一共占用了10路PWM信號,還有6路PWM信號可以后續擴展使用[4]。
3 軟件系統設計
系統初始化后,先進入自檢狀態,檢測各模塊通信是否正常,電池電壓是否處在安全范圍內并將系統信息顯示在OLED屏幕上;自檢通過后,進入數據接收狀態,在這個狀態里,系統會不斷地接收來自控制板傳來的數據。經過處理之后送給終端進行相應的動作控制,同時單片機內部的DMA功能將不斷地傳輸電池電壓采集的數據,判斷當前電量狀態[5]。
4 結語
該設計大致討論了基于STM32F103C8T6的嵌入式體感遙控機械臂的設計論證與實現方法,同時較詳細介紹了其硬件電路與軟件系統。經過實驗證明,該體感遙控機械臂具有使用簡便、機動靈活、連接可靠、穩定性能好、人性化操作等優點,在實際使用中體現了較好的實用效果。
[參考文獻]
[1]劉軍.例說STM32[M].北京:北京航空航天大學出版社,2011.
[2]周立功.ARM7嵌入式系統基礎教程[M].北京:北京航空航天大學出版社,2008.
[3]杜春雷.ARM體系結構與編程[M].北京:清華大學出版社,2003.
[4]劉火良,楊森.STM32庫開發實戰指南[M].北京:機械工業出版社,2013.
[5]肖廣兵.ARM嵌入式開發實例:基于STM32的系統設計[M].北京:電子工業出版社,2013.