摘要:設(shè)計(jì)了一個(gè)基于STM32" title="STM32">STM32控制的聲音導(dǎo)引" title="聲音導(dǎo)引">聲音導(dǎo)引系統(tǒng)。該系統(tǒng)由1個(gè)可移動(dòng)聲源S和3個(gè)聲音接收器A、B、C構(gòu)成。由一片從控STM32單片機(jī)控制無(wú)線發(fā)送模塊,實(shí)現(xiàn)聲音導(dǎo)引信號(hào)的發(fā)送。主控單片機(jī)根據(jù)無(wú)線接收模塊所接收到的信息來(lái)判斷可移動(dòng)聲源運(yùn)動(dòng)的啟停。
引言
聲音導(dǎo)引系統(tǒng),主要是靠聲音來(lái)完成對(duì)機(jī)器的智能控制,既方便又快捷。尤其是環(huán)境比較惡劣、不適合人類(lèi)停留的地方,可以依靠聲音來(lái)控制機(jī)器的正常運(yùn)行。聲音導(dǎo)引系統(tǒng)也是智能化控制的一個(gè)方面,對(duì)未來(lái)的智能化發(fā)展有較大的促進(jìn)作用,對(duì)未來(lái)智能機(jī)器人的研究也大有幫助。
1 系統(tǒng)總體方案
如圖1所示,聲音導(dǎo)引系統(tǒng)由1個(gè)可移動(dòng)聲源S,聲音接收器A、B和C構(gòu)成。其中,可移動(dòng)聲源由發(fā)聲模塊和無(wú)線接收模塊組成;A、B、C三處各放置一個(gè)聲音接收器。
針對(duì)系統(tǒng)設(shè)計(jì)要求,可以采用以下實(shí)現(xiàn)方案:在O點(diǎn)設(shè)置一個(gè)STM32單片機(jī)控制器,作為A、B、C三個(gè)聲音接收器的公共控制器,并通過(guò)一個(gè)公共無(wú)線發(fā)送模塊向可移動(dòng)聲源發(fā)送反饋信號(hào)??梢苿?dòng)聲源開(kāi)始運(yùn)動(dòng)并發(fā)出聲音后,聲音接收器A、B和C收到聲音,將聲音信號(hào)分別傳送給STM32單片機(jī),由STM32單片機(jī)判別A、B和C哪個(gè)聲音接收器先接收到該聲音信號(hào)。
若聲音接收器B先收到,則不發(fā)送反饋信號(hào)給可移動(dòng)聲源。一旦聲音接收器A先收到聲音信號(hào),表明可移動(dòng)聲源已經(jīng)在定位誤差的范圍內(nèi)到達(dá)Ox線,無(wú)線發(fā)送模塊立即向可移動(dòng)聲源發(fā)送反饋信號(hào),可移動(dòng)聲源接收到該信號(hào)后,立即停止運(yùn)動(dòng)。該方案電路簡(jiǎn)單,只需要一套無(wú)線收發(fā)系統(tǒng),因此也節(jié)約了成本。
2 系統(tǒng)硬件設(shè)計(jì)
本系統(tǒng)中,可移動(dòng)聲源由EDC-CarX V1.0-2007.06四驅(qū)版DIY競(jìng)賽小車(chē)、日本NEC電機(jī)控制ASSP芯片MMC-1、STM32 Cortex-M3" title="Cortex-M3">Cortex-M3系列單片機(jī)、無(wú)線接收模塊、天線、蜂鳴器組成;音頻接收模塊、無(wú)線發(fā)送模塊、天線組成聲音接收器。
如圖2所示,本系統(tǒng)主要靠無(wú)線模塊實(shí)現(xiàn)主從控制器之間的通信,進(jìn)而通過(guò)MCU-1來(lái)控制電機(jī)的運(yùn)行狀態(tài)。由于該系統(tǒng)要求系統(tǒng)的響應(yīng)速度快、功耗低、穩(wěn)定性高等,一般的C51單片機(jī)不能滿(mǎn)足要求,綜合考慮選擇ST公司Cortex-M3系列的STM32F1103VE作為主控芯片。該芯片基于專(zhuān)為要求高性能、低成本、低功耗的嵌入式應(yīng)用設(shè)計(jì)的ARM Cortex-M3內(nèi)核。其特點(diǎn)如下:工作時(shí)鐘頻率最高達(dá)到72 MHz;單周期乘法和硬件除法;256~512KB的Flash,高達(dá)64 KB的SRAM;睡眠、停機(jī)和待機(jī)3種低功耗模式;2通道12位D/A轉(zhuǎn)換器;多達(dá)13個(gè)通信接口;11個(gè)定時(shí)器,可以進(jìn)行輸入捕捉/輸出比較/PWM信號(hào)通道和增量編碼輸入。
可移動(dòng)聲源電機(jī)部分由STM32-F103VE、MMC-1和L293芯片驅(qū)動(dòng),其控制、驅(qū)動(dòng)電路如圖3所示。MMC-1和L293都是直流電機(jī)的控制芯片,這種組合更有利于精確控制。
無(wú)線接收模塊電路如圖4所示。SCDRX2DS為無(wú)線接收模塊的控制芯片。301是電路的穩(wěn)壓芯片,起到電壓保護(hù)的作用。
3 軟件設(shè)計(jì)
本系統(tǒng)的軟件部分主要分為移動(dòng)聲音模塊和聲音接收模塊。采用ST公司提供的函數(shù)庫(kù)進(jìn)行開(kāi)發(fā)。該函數(shù)庫(kù)是一個(gè)固件函數(shù)包,它由程序、數(shù)據(jù)結(jié)構(gòu)和宏組成,包括了微控制器所有外設(shè)的性能特征,以及每一個(gè)外設(shè)的驅(qū)動(dòng)描述和應(yīng)用實(shí)例。通過(guò)使用函數(shù)庫(kù),無(wú)需深入掌握細(xì)節(jié),用戶(hù)就可以輕松地應(yīng)用外設(shè),從而大大縮短了用戶(hù)的編程時(shí)間,進(jìn)而降低了開(kāi)發(fā)成本。為了減小開(kāi)發(fā)難度,本設(shè)計(jì)以引用函數(shù)庫(kù)為主,添加自己的用戶(hù)程序完成整個(gè)系統(tǒng)的軟件部分。
3.1 移動(dòng)聲音模塊
本模塊主要實(shí)現(xiàn)移動(dòng)聲音控制器的功能。利用延時(shí)的方法產(chǎn)生高低電平來(lái)驅(qū)動(dòng)蜂鳴器產(chǎn)生聲源。通過(guò)SPI串口和NEC的從控芯片進(jìn)行通信,發(fā)送命令進(jìn)而來(lái)控制電機(jī)的運(yùn)行狀態(tài)。通過(guò)無(wú)線模塊接收的信息先暫存在SPI的緩沖區(qū)中,以備控制命令及時(shí)發(fā)送。發(fā)送的控制命令有前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)和停止信號(hào)。移動(dòng)聲音模塊控制流程如圖5所示。
3.2 聲音接收模塊
本模塊的功能主要是循環(huán)接收傳感器的信息,根據(jù)3個(gè)接收器傳回聲音的順序不同,來(lái)判斷移動(dòng)聲音的位置和運(yùn)行狀態(tài),進(jìn)而將前進(jìn)、后退、左轉(zhuǎn)和右轉(zhuǎn)控制命令發(fā)送給移動(dòng)聲源。由于該控制器的采樣頻率要高,因此把主控制器的時(shí)鐘頻率通過(guò)PLL調(diào)到最大72 MHz。聲音接收模塊控制流程如圖6所示。
4 系統(tǒng)測(cè)試
測(cè)試儀器包括:100 MHz數(shù)字示波器,數(shù)字萬(wàn)用表(型號(hào)VICTOR-VC890D),STM32單片機(jī)開(kāi)發(fā)板,秒表,卷尺。
用示波器觀測(cè)單片機(jī)、MMC-1芯片的輸入/輸出引腳信號(hào)波形,用數(shù)字萬(wàn)用表檢查元件有無(wú)虛焊,從而確定對(duì)電機(jī)的驅(qū)動(dòng)情況。
用秒表、卷尺測(cè)試小車(chē)運(yùn)動(dòng)的平均速度,并量取定位誤差。假設(shè)小車(chē)初始位置為S0,小車(chē)停止位置為S且SS0與間夾角為α,全程運(yùn)動(dòng)時(shí)間為t,S與0x線間距離為d,則小車(chē)平均速度為SS0·tan(α/t)。
測(cè)試數(shù)據(jù)如表1所列。
結(jié)語(yǔ)
可移動(dòng)聲源開(kāi)始運(yùn)動(dòng)并發(fā)出聲音,3個(gè)聲音接收器收到來(lái)自可移動(dòng)聲源的聲音信號(hào)后,立即發(fā)出各自載波頻率的反饋信號(hào)給可移動(dòng)聲源??梢苿?dòng)聲源根據(jù)接收到的不同信號(hào)頻率判斷反饋信號(hào)的源頭,從而由MCU發(fā)出相應(yīng)控制信號(hào)(前進(jìn)、倒退和轉(zhuǎn)彎),導(dǎo)引可移動(dòng)聲源在定位誤差的范圍內(nèi)。