黃永昌
摘要:通過對各類無線遙控器的研究與分析,設(shè)計了一款簡易的無線船模遙控器,該無線遙控器以嵌人式芯片STM32作為控制器,選用NRF24L01+PA+LNA作為無線發(fā)送數(shù)據(jù)模塊,并利用卡爾曼濾波算法處理采集的控制(電機(jī)轉(zhuǎn)速與方向)數(shù)據(jù)。實(shí)驗(yàn)結(jié)果表明,在硬件電路通電后,容易造成電壓數(shù)據(jù)波動,即噪聲干擾,引入卡爾曼濾波算法能有效減少噪聲干擾,提高采集電壓數(shù)據(jù)的穩(wěn)定性,在遙控船模運(yùn)行時,船模運(yùn)行更加平穩(wěn)了。
關(guān)鍵詞:遙控器;NRF24L01+PA+LNA;卡爾曼濾波;噪聲干擾
中圖分類號:TP3 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2020)14-0269-03
隨著科技的不斷發(fā)展,無線傳輸技術(shù)在生活中的應(yīng)用也越來越廣泛。目前常見的無線傳輸方式主要包括以下幾種:藍(lán)牙、Zigbee、WIFI、NRF24L01、NRF905、GSM(GPRS),下表列出了六種無線傳輸方式的各種特性。
在選取傳輸模塊制作無線遙控器之前,需要挑選最有利的傳輸方式,由上表可以看出,綜合考慮頻段、收費(fèi)、傳輸距離、傳輸帶寬等因素得知:以上六種傳輸方式中,只有GSM(GPRS)一種傳輸方式需要交費(fèi),因此,該傳輸方式不作考慮,在剩余五種傳輸方式中,NRF24L01(+)的傳輸距離最遠(yuǎn),傳輸距離近2000m,而且其傳輸帶寬也比其余幾種要寬得多。因此,選用NRF24L01(+)模塊作為無線遙控器的發(fā)送模塊是最理想的選擇。
以往,在設(shè)計無線遙控器時,大多能夠選取較先進(jìn)的無線傳輸方式,但是在傳輸數(shù)據(jù)時,數(shù)據(jù)往往存在較大的波動,性能不夠穩(wěn)定,對于這一特性,較少有研究人員能夠利用算法對不穩(wěn)定數(shù)據(jù)進(jìn)行處理。在本文中,采用卡爾曼濾波算法,對主控芯片采集的波動較大的數(shù)據(jù)進(jìn)行了有效的處理。
1卡爾曼濾波算法介紹
1960年,R.E.Kalman提出了基于狀態(tài)空間遞推濾波的卡爾曼濾波算法,它是一種自回歸最小方差意義下的估計;采用遞推方式處理的濾波器算法,能夠在包含噪聲及不完整的測量信號的系統(tǒng)中,估算出相應(yīng)的狀態(tài)量。在信息技術(shù)高速發(fā)展的當(dāng)今社會,卡爾曼濾波算法得到了越來越廣泛的應(yīng)用。
其中,Kk就是卡爾曼增益,I為單位矩陣。經(jīng)典的卡爾曼濾波在使用上限制較多,需要滿足系統(tǒng)是線性系統(tǒng)以及噪聲成正態(tài)分布兩個條件。雖然一些實(shí)驗(yàn)驗(yàn)證當(dāng)噪聲不是嚴(yán)格的正態(tài)分布時,卡爾曼濾波依然有效。但是,由卡爾曼濾波的公式可以看出,卡爾曼濾波只適用于線性系統(tǒng),而無法用于非線性系統(tǒng)。為了擴(kuò)展卡爾曼濾波的適用范圍,使之能應(yīng)用于非線性系統(tǒng),一些卡爾曼濾波的改進(jìn)算法也被提了出來。
2無線船模遙控器總體設(shè)計
無線船模遙控器的總體方案如下,無線船模遙控器,顧名思義,就是用于控制船模的無線遙控器,在圖1的左邊紅色背景部分為無線船模遙控器的內(nèi)部結(jié)構(gòu)(為本文的研究內(nèi)容),圖1右邊藍(lán)色背景部分為船模的內(nèi)部結(jié)構(gòu)(非本文研究內(nèi)容),無線船模遙控器主要包括五個部分:電源模塊、液晶顯示屏、旋鈕電位器、無線收發(fā)器以及處理器,無線船模遙控器與船模通過無線收發(fā)模塊發(fā)送的高頻信號進(jìn)行通信。
如圖2所示,圖2-(a)為無線船模遙控器的外觀圖,圖2-(b)為船模內(nèi)部接線圖,圖2-(c)為船模外觀圖。
如圖2-(a)所示,圖中有兩個旋鈕電位器,一個電位器用于控制船模的油門,另一個電位器用于控制船模的方向。
如3圖所示,為旋鈕電位器的外觀圖與原理圖。
圖3-(a)所示旋鈕電位器有三根線接到外部電路,三根線分別對應(yīng)圖3-(c)中的三根線。通過控制滑動變阻器的阻值,進(jìn)而控制電路中電壓值的變化。本實(shí)驗(yàn)中,電壓最大值為VCC(3.3v),最小值為0v。
3無線船模遙控器軟件設(shè)計
本實(shí)驗(yàn)采用STM32作為控制芯片,利用Keil4作為程序編輯與下載軟件,無線遙控船模遙控器的任務(wù)是通過控制旋鈕電位器上的旋鈕,從而達(dá)到控制船模電機(jī)的轉(zhuǎn)速與船模方向的目的。
在程序設(shè)計過程中,首先需要定義一個數(shù)據(jù)包,用于打包所有需要發(fā)送出去的數(shù)據(jù),主要有船模電機(jī)轉(zhuǎn)速與船模方向的數(shù)據(jù),然后,初始化系統(tǒng)所有模塊,采集到旋鈕電位器電壓數(shù)據(jù)之后,利用卡爾曼濾波算法對采集到的數(shù)據(jù)進(jìn)行處理,并將處理之后的數(shù)據(jù)通過發(fā)送模塊發(fā)送出去。其具體的程序流程如圖4所示。
4實(shí)驗(yàn)設(shè)計
在本文中,主要是利用$TM32控制芯片的AD采集功能,采集旋鈕電位器測量上的電壓值,如圖5藍(lán)色線所示,為STM32芯片采集的電位器的電壓值數(shù)據(jù),由圖易見,藍(lán)色線有較大的波動,如利用該結(jié)果控制船模航行,則船模勢必有較大的抖動,為解決抖動問題,本實(shí)驗(yàn)引入卡爾曼濾波算法,用于減少電位器數(shù)據(jù)的波動,從而減少船模的抖動。
在本實(shí)驗(yàn)中,編寫程序時首先建立一個包含1000個變量的數(shù)組(每隔20ms采集一次,總共采集時間為20s),用來儲存從電位器采集的電壓數(shù)據(jù)值,在數(shù)據(jù)采集過程中,將旋鈕電位器從0值旋動到最大阻值,停頓一段時間后,再將旋鈕電位器由最大阻值旋到0阻值處,同時,利用卡爾曼濾波算法,對該數(shù)組的數(shù)據(jù)進(jìn)行處理,處理后的結(jié)果如圖5曲線所示。
5結(jié)論
由經(jīng)實(shí)驗(yàn)驗(yàn)證得知,沒有經(jīng)過卡爾曼濾波算法處理的數(shù)據(jù)存在較多大的波動,運(yùn)用卡爾曼濾波算法處理后的數(shù)據(jù),波動明顯減少了,數(shù)據(jù)穩(wěn)定性更好,更有利于控制船模的航行。