李志瑞++申慶超
摘 要:針對傳統(tǒng)智能小車遙控端是物理按鍵或觸摸屏按鍵控制的缺點,文中基于STM32設(shè)計了一款重力感應(yīng)無線智能遙控小車,該系統(tǒng)由手持遙控端與智能小車組成。其中手持遙控端利用傾角傳感器ADXL345檢測傾角信息,經(jīng)卡爾曼濾波之后,送入STM32進(jìn)行處理并轉(zhuǎn)換為相應(yīng)指令,通過nRF24L01模塊無線發(fā)送給智能小車,由STM32F103C8Tx控制電機驅(qū)動模塊L298N驅(qū)動小車前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)等。文中設(shè)計的重力感應(yīng)無線智能遙控小車引入卡爾曼濾波實現(xiàn)精確控制,具有簡單、直觀、方便、易操作等特點,應(yīng)用前景廣泛。
關(guān)鍵詞:STM32控制器;無線;重力感應(yīng);傾角
中圖分類號:TP39;TN92.5 文獻(xiàn)標(biāo)識碼:A 文章編號:2095-1302(2017)10-00-03
0 引 言
隨著社會進(jìn)步,電子消費產(chǎn)品的需求越來越高,遙控智能車輛以及在智能化車輛基礎(chǔ)上開發(fā)出來的產(chǎn)品已廣泛應(yīng)用到自動化物流運輸?shù)阮I(lǐng)域。目前,遙控智能車輛大多采用無線傳輸方式,而無線傳輸逐漸取代有線傳輸不僅是因為“無線”,更因為在安裝、增減節(jié)點方面都比有線方式方便、快捷,因此得到了廣泛的應(yīng)用[1]。
本設(shè)計首先采集手持遙控端的傾角信息并進(jìn)行處理、生成指令,然后無線發(fā)送給智能小車,賦予智能小車更靈活的運動狀態(tài)和更寬廣的運動范圍。設(shè)計靈活,操作方便,控制穩(wěn)定,制作成本低,可應(yīng)用于視線可觀察但人體涉及不到的區(qū)域,可制作成高端智能玩具,或應(yīng)用于工業(yè)控制,與實際相結(jié)合,有良好的現(xiàn)實意義和市場經(jīng)濟(jì)價值[2]。
1 系統(tǒng)硬件電路設(shè)計
采用整體設(shè)計的方法進(jìn)行設(shè)計,系統(tǒng)硬件主要由兩大部分構(gòu)成[3],即以NUCLEO-L053為控制核心的手持遙控端和以STM32F103C8Tx為控制核心的智能小車。手持遙控端是以ADXL345、OLED12864與nRF24L01為基礎(chǔ)的檢測傾角裝置,顯示參數(shù)裝置和無線發(fā)射裝置。采用的MCU為STM32L053R8T6,由ADXL345不斷檢測手持設(shè)備的姿態(tài),在OLED上顯示傾角值,傳給MCU。MCU把處理好的數(shù)據(jù)轉(zhuǎn)為小車動作指令,最后通過nRF24L01模塊發(fā)射給小車。小車以nRF24L01和L298N為基礎(chǔ),采用的MCU為STM32F103C8Tx,通過nRF24L01模塊接收遙控設(shè)備發(fā)送的數(shù)據(jù)包,然后把數(shù)據(jù)包傳給MCU進(jìn)行處理,MCU把處理好的數(shù)據(jù)包轉(zhuǎn)換為相應(yīng)指令,由STM32兩路定時器通道產(chǎn)生兩路PWM波控制電機驅(qū)動L298N,從而實現(xiàn)對小車運動狀態(tài)的調(diào)整。并結(jié)合NUCLEO-L053板載獨立按鍵對ADXL345校準(zhǔn)和OLED再次初始化,從而增強產(chǎn)品的可靠性、穩(wěn)定性、功能性優(yōu)勢。
1.1 手持遙控端電路設(shè)計
按照模塊化設(shè)計思想[4],手持遙控端主要由傾角傳感器模塊ADXL345、遙控端控制模塊NUCLEO-L053、無線收發(fā)模塊 nRF24L01、液晶顯示模塊OLED12864、電源模塊等構(gòu)成。傾角傳感器模塊ADXL345主要用于檢測手持遙控端的傾角狀態(tài),并將傾角信息傳給遙控端控制模塊NUCLEO-L053進(jìn)行處理,生成指令通過無線收發(fā)模塊nRF24L01發(fā)送給智能小車。液晶顯示模塊OLED12864進(jìn)行角度、加速度等信息顯示,電源模塊給各功能模塊供電,保證這些模塊可正常工作。本設(shè)計引入卡爾曼濾波算法[5]對手持遙控端的狀態(tài)角度進(jìn)行優(yōu)化,能夠有效減少輸出信號的毛刺波動,避免小車運行過程中頻繁出現(xiàn)卡頓現(xiàn)象,從而讓小車的行駛更平滑。手持遙控端設(shè)計框圖如圖1所示。
傾角傳感器模塊使用ADI公司生產(chǎn)的基于iMEMS技術(shù)的3軸、數(shù)字輸出傾角傳感器ADXL345[6]。該模塊具有標(biāo)準(zhǔn)的I2C或SPI數(shù)字接口及高分辨率等特征,自帶32級FIFO存儲,是目前廣泛使用的數(shù)字傾角傳感器。傾角傳感器產(chǎn)生經(jīng)過內(nèi)部AD轉(zhuǎn)換電路后輸出的數(shù)字信號,計算導(dǎo)出加速度信息。在具體工作時,傾角傳感器會因微小振動產(chǎn)生噪聲,此時需要卡爾曼濾波與加速度計相互作用,調(diào)整參數(shù)將誤差降到最小。
卡爾曼濾波(Kalman Filtering)是一種利用線性系統(tǒng)狀態(tài)方程,通過系統(tǒng)輸入輸出觀測數(shù)據(jù),對系統(tǒng)狀態(tài)進(jìn)行最優(yōu)估計的算法。在本設(shè)計中,主要對角度信息進(jìn)行最優(yōu)估計,分為如下4步:
(1)根據(jù)k-1時刻的最優(yōu)角度值及偏差預(yù)估k時刻的角度值(估計值);
(2)根據(jù)k-1時刻的最優(yōu)角度值偏差與k時刻的估計值偏差得到k時刻估計值的高斯白噪聲;
(3)根據(jù)k時刻測量值與估計值的協(xié)方差判定權(quán)重大小,得到最優(yōu)角度值;
(4)根據(jù)k時刻的最優(yōu)角度值及偏差預(yù)估k+1時刻的角度值(估計值)。通過循環(huán)迭代就可以得到最優(yōu)的狀態(tài)角度估計值。
NUCLEO-L053為ST推出的一種基于Cortex-M0+內(nèi)核的遙控端控制模塊[7],其CPU最高系統(tǒng)時鐘可達(dá)32 MHz,可充分滿足本設(shè)計所用的模塊時鐘頻率;內(nèi)含 64 KB Flash和8 KB RAM,可提供足夠大的堆棧空間,滿足復(fù)雜程序;具有本設(shè)計所需的I2C、SPI、USB 全速接口,提供MCU和模塊間高速的通信方式;板載獨立按鍵和LED,可供用戶自定義使用。
無線收發(fā)模塊nRF24L01[8]工作在2.4 G的全球開放免許可ISM頻段,GFSK調(diào)制,工作速率高達(dá)2 Mb/s且抗干擾能力強,擁有多達(dá)125個可選頻道,可以滿足多點通信和調(diào)頻通信的需求。采用SPI方式進(jìn)行手持遙控端無線收發(fā)模塊nRF24L01與控制模塊NUCLEO-L053之間的連接。ADXL345與控制模塊的連接如圖2所示。
1.2 智能小車電路設(shè)計
智能小車主要由無線收發(fā)模塊nRF24L01,小車控制模塊STM32F103C8Tx,電機驅(qū)動模塊L298N,電源模塊等組成。無線收發(fā)模塊接收手持遙控端發(fā)出的控制指令,傳送給小車控制模塊進(jìn)行處理,由STM32F103C8Tx的定時器4產(chǎn)生對應(yīng)的兩路PWM波,調(diào)節(jié)L298N驅(qū)動兩臺直流電機完成對應(yīng)動作。智能小車的設(shè)計框圖如圖3所示。endprint
STM32F103C8Tx是目前應(yīng)用非常廣泛的一款A(yù)RM芯片,采用Cortex-M3內(nèi)核,擁有16 KB~1 MB Flash存儲,高達(dá)72 MHz的CPU運行速率,多種控制外設(shè),USB全速接口和CAN等。在本設(shè)計中用來處理nRF24L01接收的數(shù)據(jù)包、控制L298N電機驅(qū)動模塊等。
電機驅(qū)動使用L298N驅(qū)動兩臺直流電機[9]。此款芯片具有工作電壓高,輸出電流大等特點,額定功率為25 W。本設(shè)計電機驅(qū)動使用6節(jié)AA電池,輸入電壓為9.5 V,可直接驅(qū)動兩臺電機。通過引腳A,B輸入定時器4產(chǎn)生的兩路PWM信號對電機進(jìn)行調(diào)速控制。L298N模塊驅(qū)動電路如圖4所示。
為保證小車的運行速度,無需進(jìn)行調(diào)速,全速行駛,加在L298N驅(qū)動上的電壓為6~12 V,而STM32需要的最大電壓為3.3 V,為了節(jié)省資源,減少電源模塊,需要降壓。選用AMS1117芯片降壓 [10]。電源模塊降壓電路如圖5所示。
2 系統(tǒng)軟件設(shè)計
本系統(tǒng)軟件程序設(shè)計由兩大部分組成,即手持遙控端軟件程序和智能小車軟件程序。手持遙控端軟件程序首先上電進(jìn)行初始化,主要是ADXL345模塊初始化,然后系統(tǒng)正常工作。ADXL345模塊不斷檢測傾斜角度的改變,控制模塊對傾角傳感器姿態(tài)數(shù)據(jù)進(jìn)行處理,將加速度數(shù)據(jù)轉(zhuǎn)換成傾角角度,并進(jìn)行卡爾曼濾波,判斷傾斜角度是否超出閾值,若超過則發(fā)送小車運動指令。智能小車軟件程序接收手持遙控端的指令進(jìn)行處理之后驅(qū)動小車,接收端對接收到的指令進(jìn)行判斷,控制小車作出前進(jìn)、后退、轉(zhuǎn)彎等動作。軟件程序流程如圖6所示。
完成軟硬件設(shè)計之后就開始對本設(shè)計進(jìn)行系統(tǒng)整體測試工作。通過改變手持遙控端的傾角信息,可以在OLED上正常顯示傳感器姿態(tài)信息,無線收發(fā)裝置可以正常收發(fā)指令,控制智能小車的前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)等運動狀態(tài)。手持遙控端和智能小車的實物圖如圖7所示。
3 結(jié) 語
本文應(yīng)用傾角信息采集模塊與無線數(shù)據(jù)傳輸模塊設(shè)計了一種重力感應(yīng)無線智能遙控小車,并重點介紹了手持遙控端與智能小車的硬件電路與軟件程序設(shè)計。手持遙控端采集傾角信息,經(jīng)卡爾曼濾波處理,控制模塊發(fā)出指令,通過無線方式控制智能小車完成相應(yīng)動作。經(jīng)測試,所設(shè)計的重力感應(yīng)無線智能遙控小車操作靈活,使用方便,且具有較高的穩(wěn)定性與廣闊的應(yīng)用前景。
參考文獻(xiàn)
[1]張鵬,丁承君,閆彬.基于STM32的重力遙控智能車的控制系統(tǒng)設(shè)計[J].科技創(chuàng)新與應(yīng)用,2016(2):77-77.
[2]樊龍.基于STM32的智能儀表數(shù)據(jù)采集系統(tǒng)的設(shè)計[D].太原:太原理工大學(xué), 2014.
[3]李志瑞,申慶超.基于STM32的無線重力感應(yīng)遙控系統(tǒng)設(shè)計[J].微型機與應(yīng)用,2016,35(7):33-34.
[4]崔陽,郭旭東,羊壽南.基于STM32的無線智能車控制與數(shù)據(jù)采集系統(tǒng)設(shè)計[J].傳感器世界,2015,21(7):28-32.
[5]彭丁聰.卡爾曼濾波的基本原理及應(yīng)用[J].軟件導(dǎo)刊,2009(11):32-34.
[6] Analog Devices Inc. ADXL345 Datasheet[EB/OL].[2008-11-01].http://www.alldatasheet.com/datasheet-pdf/pdf/254714/AD/ADXL345.html.
[7] STMicroelectronics.NUCLEO-L053R8Datasheet[EB/OL]. http://www.st.com/content/st_com/en/products/evaluation-tools/product-evaluation-tools/mcu-eval-tools/stm32-mcu-eval-tools/stm32-mcu-nucleo/nucleo-l053r8.html.
[8]訊通科技.nRF24L01中文資料[EB/OL].[2010-08-26]. https://wenku.baidu.com/view/f4a50f37ee06eff9aef80766.html.
[9] L298N中文資料[EB/OL].[2012-08-09]. https://wenku.baidu.com/view/f8fd41f2f61fb7360b4c6544.html?from=search.
[10] AMS1117 Datasheet[EB/OL].[2011-07-29].https://wenku.baidu.com/view/9f6fcab369dc5022aaea009d.html?from=search.endprint