王明鑫
(無錫太湖學(xué)院 智能裝備工程學(xué)院,江蘇 無錫 214064)
無線控制技術(shù)的基礎(chǔ)來自無線技術(shù)。無線技術(shù)是一種運(yùn)用人們看不見的頻段的波形來進(jìn)行無線傳輸?shù)募夹g(shù)。在日常生活中,無線波是無線傳輸?shù)拿浇榛蛘哒f是無線傳輸?shù)耐ǖ?,并通常處?.4 GHz。2.4 GHz是全世界公開通用使用的無線波頻段,藍(lán)牙技術(shù)的頻段也在此段,在此頻段下進(jìn)行工作可獲得更大的使用范圍和更強(qiáng)的抗干擾能力[1]。
隨著科技的不斷進(jìn)步,無線控制技術(shù)也在不斷地更新,起初無線技術(shù)運(yùn)用于電報(bào)、電話等設(shè)施。無線技術(shù)剛剛被發(fā)掘時(shí)給人們帶來了巨大的“信息革命”。利用單片機(jī)技術(shù)實(shí)現(xiàn)無線遙控小車這一項(xiàng)研究其實(shí)早在時(shí)間長河中已經(jīng)出現(xiàn),而無人車被發(fā)明后不僅使得人們在危險(xiǎn)的環(huán)境中大幅度減少工作時(shí)間,而且減少了接觸危險(xiǎn)的次數(shù),如在軍事偵察、勘測礦石、防病毒感染等巨大風(fēng)險(xiǎn)的環(huán)境。所以,無人車在這些環(huán)境中的調(diào)查能力有著非??焖俚陌l(fā)展。在這股發(fā)展的熱潮中,無人車也從模型車發(fā)展到大型無人車,但國內(nèi)的無線控制技術(shù)發(fā)展滯后,在很多方面比歐美一些國家落后,且國內(nèi)公司在無線控制小車方向發(fā)展甚少,因此引出本文所設(shè)計(jì)的無線控制無人車控制系統(tǒng)。
本設(shè)計(jì)目的是利用單片機(jī)實(shí)現(xiàn)小車無線控制的功能,無線遙控技術(shù)是對被控制對象進(jìn)行遠(yuǎn)距離控制的技術(shù)[2]。無人車的無線控制有不同的模式,例如藍(lán)牙和Ps2手柄控制等,上述兩種無線控制模式的原理如圖1所示。
圖1 無線控制原理方框
本設(shè)計(jì)的無人車主要由STM32單片機(jī)電路模塊、直流電機(jī)模塊、無人車車模模塊、電機(jī)驅(qū)動模塊、無線控制模塊、電源模塊等組成。
(1)單片機(jī)電路模塊:采用了STM32芯片作為控制單元。STM32單片機(jī)具有成本較低、高性能、抗干擾能力強(qiáng)、資源豐富、低功耗和低電磁干擾的優(yōu)點(diǎn)。在調(diào)試方面,可在軟件上修改程序。其硬件電路無需改變且支持在系統(tǒng)上直接編程調(diào)試,非常快捷方便。
(2)無線控制模塊:此課題主要使用手機(jī)App和Ps2手柄控制無人車,Ps2使用類似WiFi的功能實(shí)現(xiàn)無線控制,由Ps2手柄對WiFi接收器發(fā)出指令,經(jīng)由接收器把指令信號傳輸給單片機(jī)。單片機(jī)通過接收指令在程序中運(yùn)行,單片機(jī)識別指令對無人車的電機(jī)及舵機(jī)發(fā)送運(yùn)行指令。手機(jī)App藍(lán)牙技術(shù)是使用藍(lán)牙模塊,以單片機(jī)為控制核心,下位機(jī)與Android手機(jī)終端通過藍(lán)牙無線傳輸技術(shù)實(shí)時(shí)通信[2]。使用手機(jī)App和藍(lán)牙模塊頻率對接,藍(lán)牙接收App發(fā)送的指令在轉(zhuǎn)串口操作后傳輸給STM32單片機(jī),經(jīng)由單片機(jī)實(shí)現(xiàn)App對無人車的指令控制。
(3)電機(jī)驅(qū)動電路模塊設(shè)計(jì):直流電機(jī)由電刷、換向片、繞組線圈、一對主磁極組成。改變電機(jī)上方的直流電壓的極性可改變電機(jī)的轉(zhuǎn)向,控制電機(jī)的電壓大小則控制直流電機(jī)的轉(zhuǎn)速。單片機(jī)引腳輸出功率小不能實(shí)現(xiàn)上述功能,而電機(jī)驅(qū)動模塊可實(shí)現(xiàn)上述功能。
本文無人車結(jié)構(gòu)由于車模構(gòu)建復(fù)雜整體效果由平面二維圖展示,其余部件組建使用實(shí)物講解。無人車總體結(jié)構(gòu)如圖2所示。本課題中無人車采用單直流電機(jī)驅(qū)動方式,取一個(gè)齒輪定位安裝在后輪連桿上與電機(jī)齒輪嚙合,使用一根連桿連接兩個(gè)后輪。電機(jī)運(yùn)行時(shí)電機(jī)上的齒輪帶動連軸齒輪轉(zhuǎn)動,借助齒輪的轉(zhuǎn)動帶動連桿轉(zhuǎn)動,如圖3所示。將后輪裝在聯(lián)軸器上,如圖4所示,后輪帶動前輪轉(zhuǎn)動,控制小車前后運(yùn)動(安裝后輪時(shí)先在連軸左右兩端安裝上軸承和聯(lián)軸器)。無人車轉(zhuǎn)向由前輪與舵機(jī)完成,先組裝兩個(gè)前輪,兩個(gè)軸承放入轉(zhuǎn)向杯中,大小軸承里外都放一個(gè),并使軸承完全卡進(jìn)轉(zhuǎn)向杯里。使用M4自鎖螺母將轉(zhuǎn)向杯和前輪安裝在一起,如圖5所示。將圖5的前輪安裝配件與前輪組裝完成,使用M2自鎖螺母安裝底盤前面的三角支架中,如圖6所示。另一前輪也與圖6的前輪安裝方式相同,安裝在三角支架中,隨后使用長桿將兩前輪連接,使用一根短桿把前輪與舵機(jī)連接,前輪的轉(zhuǎn)向組裝安裝完畢,如圖7所示。
圖2 小車車模二維
圖3 連軸組成
圖4 后輪與聯(lián)軸器安裝完成
圖5 前輪安裝配件
圖6 前輪安裝完成
圖7 無人車整體安裝
無人車實(shí)現(xiàn)的功能為無線遙控功能,對單片機(jī)主芯片的選型只需滿足無線控制模塊的接口的資源要求以及所用到的定時(shí)器的要基本資源要求即可,盡量降低成本,也可實(shí)現(xiàn)本文所需最低要求。經(jīng)對比查找發(fā)現(xiàn),STM32F103RCT6款芯片可滿足所需無線控制功能要求。STM32F103RCT6的特點(diǎn)是內(nèi)部資源分配豐富,高性能、低成本、低功耗,因此在嵌入式領(lǐng)域具有廣泛的應(yīng)用[1]。STM32F103RCT6芯片是一種嵌入式-微控制器的集成電路(IC)。該芯片為32位的微處理器,頻率速度有72 MHz,256 KB大小的程序存儲器容量,F(xiàn)LASH的存儲器類型,48 KB大小的RAM。此單片機(jī)的硬件資源除了這兩個(gè)存儲器外,還有2個(gè)基本定時(shí)器、4個(gè)通用定時(shí)器、2個(gè)高級定時(shí)器、2個(gè)DMA控制器(總共12個(gè)通道)、3個(gè)SPI、2個(gè)IIC、5個(gè)串口、1個(gè)USB、1個(gè)CAN、3個(gè)12位DAC、1個(gè)SDIO接口及51個(gè)通用I/O口(該芯片有64個(gè)接口其中有5對電源,51個(gè)I/O口和VBAT接口、BOOT0接口、NRST接口),對應(yīng)本設(shè)計(jì)所需I/O口足夠[3]。
本設(shè)計(jì)實(shí)現(xiàn)無人車的無線控制,可使用紅外線遙控、無線電傳輸這兩種方式。紅外線這種無線控制方式基本成熟,且有弊端,為向新領(lǐng)域進(jìn)發(fā)。本文使用無線控制的方式為無線電傳輸。本文的無線控制傳輸使用DX-BT18型號的藍(lán)牙傳輸模塊。DX-BT18是一款高性價(jià)比的無線藍(lán)牙串口模塊,工作2.4 GHz的工作頻率中,使用了Bluetooth 4.2 BR/EDG+BLE+2.4 GHz-Proprietary的藍(lán)牙協(xié)議。這個(gè)藍(lán)牙協(xié)議的傳輸速率很高,而且對功耗的需求極低。DX-BT18還可以通過UART實(shí)現(xiàn)模塊與手機(jī)之間的數(shù)據(jù)傳輸,從而實(shí)現(xiàn)使用手機(jī)無線控制無人車。這款藍(lán)牙模塊傳輸?shù)男盘栆彩值姆€(wěn)定,有效范圍有40 m之遠(yuǎn),也就是說在40 m以內(nèi)的藍(lán)牙傳輸文件和信號都不會有所丟失或者失真。DX-BT18藍(lán)牙模塊還有著很好的系統(tǒng)容錯性,它支持Windows、Linux、Android、iOS等系統(tǒng)。自帶屏蔽罩,防塵、防靜電,強(qiáng)大的保護(hù)模塊使得DX-BT18有更長使用壽命。如圖8所示,無人車上的藍(lán)牙模塊與手機(jī)配對,經(jīng)由手機(jī)發(fā)出指令信息被藍(lán)牙模塊接收后再將接收到的指令串口傳輸給STM32單片機(jī)。單片機(jī)得到藍(lán)牙傳輸?shù)男盘栕龀鱿鄳?yīng)動作,這是無人車使用藍(lán)牙技術(shù)進(jìn)行無線控制的原理。
圖8 藍(lán)牙App通信過程
在無線控制的方式眾多,包括紅外線、無線電和藍(lán)牙等控制方式。此處選擇無線電控制方式,利用Ps2手柄及其接收器完成小車的無線控制。手柄控制是實(shí)現(xiàn)無線控制的接收發(fā)裝置。要想使此接收器正常工作,接收器至少具有6個(gè)端口,分別為:DI/DAT端口、DO/CMD端口、GND端口、VDD端口、CS/SEL端口和CLK端口。在CLK時(shí)鐘下,降沿完成數(shù)據(jù)的讀取和發(fā)送,通信過程如表1所示。
表1 數(shù)據(jù)讀取與發(fā)送過程
一般來說,單片機(jī)的引腳無法直接使用驅(qū)動電機(jī),若直接使用單片機(jī)引腳與電機(jī)連接并進(jìn)行驅(qū)動,電機(jī)一般會因?yàn)殡娏鞑粔虼蠖鵁o法被驅(qū)動,若加大單片機(jī)上的引腳輸出則會導(dǎo)致單片機(jī)被燒毀,所以需要電機(jī)驅(qū)動電路來進(jìn)行電機(jī)的驅(qū)動。
本次選擇的電機(jī)驅(qū)動芯片為RZ7886芯片,由于此芯片成本低、功耗低,選此芯片。這次無人車設(shè)計(jì)使用單直流電機(jī)后輪驅(qū)動,前輪由舵機(jī)實(shí)現(xiàn)左右的轉(zhuǎn)向,而調(diào)節(jié)施加給直流電機(jī)的直流電壓大小就可以實(shí)現(xiàn)電機(jī)的轉(zhuǎn)速調(diào)節(jié),而改變給電機(jī)的直流電機(jī)的極性,即可實(shí)現(xiàn)電機(jī)轉(zhuǎn)向的換向。
本課題采用直流電機(jī)驅(qū)動,電機(jī)功率需滿足無人車可驅(qū)動功率,無人車控制信號不連續(xù),電機(jī)會有多次啟動的情況,故電機(jī)選型時(shí)需考慮電機(jī)過載和啟動能力。根據(jù)整體設(shè)計(jì)要求,電源供電為7.4 V,所選電機(jī)額定電壓也為7.4 V。
經(jīng)查閱輪胎與地面摩擦效率為η=0.98。
經(jīng)測量無人車運(yùn)行時(shí)阻力約為F=3 N,一般電機(jī)運(yùn)行轉(zhuǎn)速為1 000 r/min。由下公式(1)
P1=FV=1×3=3 W
(1)
其中,P1為無人車運(yùn)行所需功率。
所以可求出電機(jī)所需功率:
(2)
所以選擇電機(jī)額定電壓為7.4 V,額定功率4 W,空載轉(zhuǎn)速1 000 r/min的電機(jī)。
此次使用舵機(jī)為TBS2701金屬數(shù)字舵機(jī),該舵機(jī)可實(shí)現(xiàn)舵機(jī)兩用功能,且成本低、精確度高、功耗低。改舵機(jī)共引3條引線,分別為電源線、地線和信號線。本舵機(jī)采用的控制方式為PWM脈沖信號控制方式,大部分舵機(jī)轉(zhuǎn)動控制由程序的脈沖控制來控制舵機(jī)的轉(zhuǎn)動角度。本設(shè)計(jì)選用的舵機(jī)由直流電機(jī)、減速齒輪組、傳感器和控制電路組成的一套自動控制系統(tǒng)。發(fā)射信號,以指定輸出的旋轉(zhuǎn)角度。一般性來說,舵機(jī)都有最大旋轉(zhuǎn)角度(如180°)。舵機(jī)與普通直流電機(jī)的區(qū)別主要在于直流電機(jī)持續(xù)轉(zhuǎn)動,而舵機(jī)旋轉(zhuǎn)一個(gè)角度,對精確度要求高(數(shù)字舵機(jī)可切換模式,既可當(dāng)直流電機(jī)使用也可當(dāng)普通舵機(jī)使用)。直流電機(jī)無法傳達(dá)旋轉(zhuǎn)的角度,舵機(jī)可以。直流電機(jī)和舵機(jī)的用法不同,直流電機(jī)一般當(dāng)動力的發(fā)生源,舵機(jī)用于控制某物體轉(zhuǎn)動精確角度(例如機(jī)器人關(guān)節(jié)轉(zhuǎn)動)。
基于上述硬件選型,做出可連接上述硬件和實(shí)現(xiàn)上述硬件功能的主控板電路,如圖9所示。
圖9 硬件電路原理
在編寫主程序時(shí),需要先理清主程序的控制邏輯順序,畫出程序控制流程圖。這樣可以在編程的時(shí)候減少邏輯上的錯誤。
在圖11 Ps2程序控制流程圖中,了解Ps2控制無人車的運(yùn)行順序流程,這對接下來的Ps2控制主程序編程有巨大的幫助。若Ps2手柄上的START按鍵被按下,那么不管現(xiàn)在的無人車的控制方式為無線電還是藍(lán)牙App控制,此時(shí)無人車的控制方式會轉(zhuǎn)化成藍(lán)牙模塊App手機(jī)控制的藍(lán)牙控制方式。下面判斷參考值,參考值為0時(shí),此時(shí)為ps2手柄控制方式,接下來由switch語句讀取手柄的各個(gè)按鈕的實(shí)時(shí)狀況。上述4條語句為ps2手柄的方向按鍵控制。接下來4條語句為手柄搖桿上的方向控制。PSB_L1和PSB_L2則為小車前進(jìn)與后退的速度調(diào)節(jié)。R1和R2則沒有進(jìn)行設(shè)置。判斷左邊搖桿的y軸方向,使得左邊搖桿的y軸方向不對小車起作用,再判斷左邊搖桿的x方向的模擬量是否在0到110之間。如果小車的舵機(jī)左轉(zhuǎn)45°(45°),那么判斷左邊搖桿的x方向的模擬量是否在146到225之間。如果小車的角度會右轉(zhuǎn)45°(135°),那么隨著左邊搖桿回到中間時(shí)舵機(jī)的角度會回到90°。
圖10 Ps2程序控制流程
WiFi控制。通過使用WiFi通信模塊,智能終端與硬件開發(fā)板建立數(shù)據(jù)通信連接。在編寫藍(lán)牙App無線控制無人車的主程序時(shí),需要先清理主程序的控制邏輯順序,畫出程序控制流程圖。在藍(lán)牙模塊的主程序編程的時(shí)候,減少邏輯上的錯誤。藍(lán)牙App無線控制無人車的程序流程如圖11所示。
在藍(lán)牙App控制程序流程圖中,可清楚看到,手機(jī)App和藍(lán)牙模塊的通信過程。這對藍(lán)牙App無線控制無人車,程序編程給出邏輯思路。
在App的無線控制需要了解藍(lán)牙的指令協(xié)議下,表2列出了在此次課題中所用使用的藍(lán)牙指令協(xié)議。
表2 藍(lán)牙指令協(xié)議
由上表2可知,當(dāng)用戶使用手機(jī)App按下按鈕時(shí),用戶的手機(jī)會發(fā)送藍(lán)牙能識別的指令,以此為基礎(chǔ)開始App主程序控制編程。
小車實(shí)現(xiàn)轉(zhuǎn)動需要使得舵機(jī)進(jìn)行一個(gè)角度轉(zhuǎn)動,實(shí)現(xiàn)舵機(jī)的轉(zhuǎn)動需要編程一個(gè)PWM波,通過定時(shí)器完成。對舵機(jī)周期運(yùn)行時(shí)間的配置,舵機(jī)運(yùn)行周期20 ms,隨后將舵機(jī)的運(yùn)行時(shí)間利用定時(shí)器分成8份,每2.5 ms為一份,隨后將舵機(jī)中一個(gè)周期的正脈沖設(shè)定數(shù)值給予定時(shí)器的一個(gè)周期,此時(shí)的脈沖為高電平。程序結(jié)束后,運(yùn)行Servol函數(shù),此時(shí)count1為2。運(yùn)行Flip_GPIO_One函數(shù)使舵機(jī)運(yùn)行20 ms以外電平為低電平。舵機(jī)PWM周期脈沖時(shí)間設(shè)定完成,count1又置為0,重新開始運(yùn)行Servol函數(shù)。只需改變S_PWM的數(shù)值,就可以完成舵機(jī)轉(zhuǎn)動的角度。
電機(jī)的PWM控制編程基本與舵機(jī)的PWM編程原理相同。本課題直接使用了定時(shí)器的PWM通道來實(shí)現(xiàn)電機(jī)的PWM調(diào)速。電機(jī)轉(zhuǎn)速調(diào)節(jié)的設(shè)定值是PWM通道的脈沖正信號,此時(shí)反轉(zhuǎn)的信號電平設(shè)置為0(低電平),使得電機(jī)旋轉(zhuǎn)時(shí)不沖突。同理,當(dāng)這個(gè)值為負(fù)時(shí),電機(jī)反轉(zhuǎn)。此時(shí),正轉(zhuǎn)的信號電平設(shè)置為0(低電平)。
本文研究的無線控制無人車設(shè)計(jì)中使用STM32單片機(jī)作為主芯片,利用STM32單片機(jī)及外圍引出的接口進(jìn)行初始化配置并接入硬件外設(shè),接著使用Ps2及手機(jī)藍(lán)牙App等信號發(fā)出設(shè)備,與小車上的接收設(shè)備進(jìn)行無線連接,從而實(shí)現(xiàn)無人車的無線控制功能。本設(shè)計(jì)使用了單片機(jī)的掃描識別技術(shù),通過硬件電路的具體應(yīng)用方式以及無線接收設(shè)備的通信原理,對各個(gè)模塊進(jìn)行了編程,然后在主程序編程中直接調(diào)用,完成了無人車無線控制設(shè)計(jì)的編程任務(wù)。經(jīng)過實(shí)物測試可得出,本設(shè)計(jì)不僅安裝簡單、成本低,更重要的是使用2.4 GHz的無線通信頻率使得工作性能穩(wěn)定,是實(shí)用的工程設(shè)計(jì),但其他功能方面設(shè)計(jì)不足,后續(xù)改進(jìn)可以升級其他功能。