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