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