基于FPGA的智能小車設(shè)計(jì)
摘要:介紹基于FPGA的智能小豐設(shè)計(jì),小車包括在FPGA上構(gòu)建以NiosⅡ嵌入式系統(tǒng)為核心的控制電路、傳感器電路、動力及轉(zhuǎn)向電路、LCM電路、溫度和濕度測量電路、無線數(shù)據(jù)收發(fā)電路。在NiosⅡ集成開發(fā)環(huán)境(IDE)縞寫C語言程序,實(shí)現(xiàn)能遠(yuǎn)程遙控小車、自動避障、溫度和濕度監(jiān)測并無線傳輸至控制端的功能,其特點(diǎn)是能夠無線控制小車和遠(yuǎn)程采集環(huán)境信息。
關(guān)鍵詞:智能小車;FPGA;避障;NiosⅡ
智能監(jiān)控機(jī)器人是近年來機(jī)器人應(yīng)用工程中一項(xiàng)前沿性的題目,智能化探測小車是智能行走機(jī)器人的一種。智能監(jiān)控機(jī)器小車就是針對上述情況,在參考了目前大多數(shù)智能機(jī)器人的基礎(chǔ)上,以降低成本為原則設(shè)計(jì)的。小車具備溫濕度和環(huán)境監(jiān)測、無線通信、躲避障礙物以及無線遙控等功能。此智能監(jiān)控機(jī)器小車與目前已有的同類設(shè)計(jì)相比,有性價(jià)比高、操作方便、可靠性好、功耗小等優(yōu)點(diǎn)。
1 系統(tǒng)結(jié)構(gòu)及硬件設(shè)計(jì)
整個系統(tǒng)由發(fā)送端(智能小車部分)和接收端(控制臺:控制和顯示部分)組成,如圖1所示。系統(tǒng)由傳感器系統(tǒng)、動力及轉(zhuǎn)向系統(tǒng)、CCD圖像傳感器模塊、LCD顯示、溫度和濕度測量電路和供電系統(tǒng)等組成,整個系統(tǒng)的控制核心以2片Altera公司的EP2C20F484為核心,在Altera公司的QuartusⅡ和SoPC Builder開發(fā)環(huán)境中完成。根據(jù)系統(tǒng)硬件結(jié)構(gòu)添加所需要的外圍模塊并生成NiosⅡCPU。
1.1 供電系統(tǒng)
小車安裝了兩塊充電電池,分別為FPGA開發(fā)板(FPGA控制電路)和小車運(yùn)動提供能量,電池置于車身底部。
1.2 傳感器系統(tǒng)
系統(tǒng)采用了6個紅外對射傳感器,通過FPGA配置的NiosⅡCPU來檢測傳感器信號實(shí)現(xiàn)小車躲避障礙物的功能。漫反射型紅外對射傳感器也稱光電開關(guān),是一種集發(fā)射器和接收器于一體的傳感器,多用于檢測障礙物。原理是由光電開關(guān)輻射出來的調(diào)制紅外光束被檢測物體反射回來,紅外線經(jīng)同步選通接收,由電子開關(guān)線路驅(qū)動回路,從而來檢測物體的有或無。當(dāng)被檢測物體的表面光亮或其反光率極高時,漫反射式的光電開關(guān)是首選的檢測模式。這種電路模塊體積小,信號容易轉(zhuǎn)化為標(biāo)準(zhǔn)電平。[!--empirenews.page--]
1.3 動力及轉(zhuǎn)向系統(tǒng)
本小車有左右輪兩個電機(jī)及龜機(jī)驅(qū)動。驅(qū)動電路采用了CT Microelecttonics公司的大功率直流電機(jī)驅(qū)動芯片L298,最高支持50 V電壓,最大電流為5 A,滿足大功率電動機(jī)的要求,外圍電路簡單,同時,由于該芯片為雙路結(jié)構(gòu),分別控制左右電動機(jī),增加了電路的可靠性,減少了復(fù)雜性。電機(jī)控制采用PWM脈沖寬度調(diào)制方式來控制汽車的前進(jìn)速度。由NiosⅡCPU寫入控制字,可得到不同占空比的PWM驅(qū)動信號,此PWM信號送入電機(jī)驅(qū)動芯片的控制端來調(diào)節(jié)速度。
1.4 小車自動避障系統(tǒng)
小車自動避障系統(tǒng)采用Verilog HDL語言編寫驅(qū)動電路。該模塊(見圖2中的MOTOR)和一個數(shù)據(jù)選擇器(見圖2中的select_2)相連來實(shí)現(xiàn)自動避障與人工遙控之間的切換。當(dāng)小車上NiosⅡCPU的SEL管腳輸出低電平時,數(shù)據(jù)選擇器將把該模塊的輸出作為電機(jī)的控制指令。這樣設(shè)計(jì)的好處在于設(shè)計(jì)具有響應(yīng)迅速,不需要NiosⅡCPU參與,提高了CPU處理濕度、溫度數(shù)據(jù)并控制無線模塊收發(fā)數(shù)據(jù)的效率。該邏輯電路的工作原理是根據(jù)紅外傳感器發(fā)回來的數(shù)據(jù),經(jīng)過邏輯判斷來控制電機(jī)的工作狀態(tài)。
1.5 小車的人工控制
小車的人工控制和自動避障之間的轉(zhuǎn)換由一個數(shù)據(jù)選擇器控制,當(dāng)小車上NiosⅡCPU的SEL管腳輸出高電平時,數(shù)據(jù)選擇器將把無線模塊所發(fā)送過來的指令作為電機(jī)的控制指令,實(shí)現(xiàn)了對小車的無線控制。
1.6 溫度和濕度測量
在溫度測量系統(tǒng)中,采用抗干擾能力強(qiáng)的新型數(shù)字溫度傳感器DS18B20,該系統(tǒng)設(shè)計(jì)中將DS18B20的1,3引腳分別接于FPGA板的GND和+3.3 V管腳,2引腳接FPGA的I/O腳,傳輸控制及數(shù)據(jù)信號。DS18B20最高可用12位表示溫度值,最高5位為符號位。
采用HS1101濕度傳感器,具有響應(yīng)速度快,工作溫區(qū)寬(-40~+100℃),測量范圍大(0%~100%RH),可靠性高,穩(wěn)定性好,功耗低,外圍電路簡單等優(yōu)點(diǎn)。
工作原理為:用HS1101傳感器與TLC555構(gòu)成多諧振蕩器,HS1101傳感器內(nèi)部電容會隨濕度的變化而變化,從而使輸出頻率發(fā)生變化。編寫VHDL程序在FPGA設(shè)計(jì)一個頻率計(jì)可精確的測出頻率值,通過輸出頻率與濕度的關(guān)系便可得到濕度值。
1.7 無線收發(fā)系統(tǒng)
系統(tǒng)采用PTR4000無線嵌入式模塊,工作頻率為2.4 GHz,最高工作速率可達(dá)1 Mb/s,高效GMSK調(diào)制,且有CRC檢錯功能。具有低功耗,抗干擾能力強(qiáng),體積小等優(yōu)點(diǎn)。主要有三種工作模式,分別為:配置模式、ShockBurst發(fā)送模式和ShockBurst接收模式。
2 軟件設(shè)計(jì)和調(diào)試
采用NiosⅡ進(jìn)行C語言編程。NiosⅡ集成開發(fā)環(huán)境(IDE)是NlosⅡ系列嵌入式處理器的基本軟件開發(fā)工具。所有軟件開發(fā)任務(wù)都可以在NiosⅡIDE下完成,包括編輯、編譯和調(diào)試程序。NiosⅡIDE是基于開放式的、可擴(kuò)展Eclipse IDE project工程以及EclipseC/C++開發(fā)工具(CDT)工程,NiosⅡIDE為GCC編譯器提供了一個圖形化用戶界面,可以支持標(biāo)準(zhǔn)C。NiosⅡIDE編譯環(huán)境自動地生成一個基于用戶特定系統(tǒng)配置(SoPC Builder生成的SoPC文件)的makefile,有利于程序的開發(fā)。[!--empirenews.page--]
NiosⅡIDE包含一個強(qiáng)大的、在GNU調(diào)試器基礎(chǔ)之上的軟件調(diào)試器——GDB。完成軟件代碼的編寫后,可以對代碼進(jìn)行仿真和調(diào)試。Nios-ⅡIDE提供了一個方便的閃存編程方法。任何連接到FPGA的兼容通用閃存接口(CFI)的閃存器件都可以通過NiosⅡIDE閃存編程器來燒結(jié)。針對本設(shè)計(jì)及應(yīng)用,編寫了系統(tǒng)控制程序和LCD顯示程序。流程圖如圖3所示。
3 系統(tǒng)調(diào)試
小車系統(tǒng)需要測試能否準(zhǔn)確接收控制臺發(fā)送的指令并控制小車運(yùn)動或停止,以及向前、后、左、右轉(zhuǎn)向。還要測試主控機(jī)能否準(zhǔn)確接收小車采集到的溫度以及濕度信息,能否正確顯示。經(jīng)過多次測試,發(fā)現(xiàn)由于系統(tǒng)程序是采用收發(fā)循環(huán)轉(zhuǎn)換的模式,為了讓兩個系統(tǒng)能夠收到對方發(fā)的信息,對小車的遙控與自動部分進(jìn)行簡單的分化。自動情況下,控制臺為主要接收端,小車為主要發(fā)送端,一般情況下小車發(fā)送數(shù)據(jù)到控制臺,需要自動到遙控的轉(zhuǎn)換時,通過在延時時間內(nèi)進(jìn)行中斷來實(shí)行從自動到遙控的轉(zhuǎn)換;在遙控狀態(tài)下,控制臺為主要發(fā)射端,小車為接收端,一般情況下控制臺發(fā)送小車行進(jìn)指令到小車,需要采集數(shù)據(jù)時,通過溫度、濕度采集按鍵來對小車進(jìn)行收發(fā)轉(zhuǎn)換,同時小車發(fā)出采集數(shù)據(jù)指令,之后再次轉(zhuǎn)為接收模式。這樣做之后使小車與控制臺的軟件部分清晰明了,小車的行進(jìn)以及采集顯示數(shù)據(jù)能夠?qū)崟r的進(jìn)行。
濕度測量系統(tǒng)需要測試是否能夠精準(zhǔn)輸出頻率值。采用芯片LM555手冊上推薦的電路,由于元件的誤差,使輸出的頻率并不精確,經(jīng)過與標(biāo)準(zhǔn)的濕度儀進(jìn)行比對,通過參數(shù)調(diào)整,用直線做近似,最后得到的頻率值誤差在幾赫茲(頻率范圍是6 008~7 314Hz),經(jīng)過預(yù)算得到很準(zhǔn)確的濕度值。開始求濕度值時用的是解一元三次方程的方法,由于計(jì)算量大,對小車的行進(jìn)會有很大影響,后來在小車端只是把小車采集到的頻率值通過紅外天線傳輸?shù)街骺囟耍⒃鹊男≤囎詣颖苷嫌蒒iosⅡCPU控制改為由Verilog編寫的硬件模塊控制,最后在控制臺做濕度值的計(jì)算。這樣的更改既減少了小車NiosⅡCPU的工作量,同時由于小車的自動避障改為由獨(dú)立的Verilog模塊控制,運(yùn)行起來很流暢。
對于無線收發(fā)系統(tǒng),要測試其可靠性以及發(fā)送或接收的信息的準(zhǔn)確性。測試方法是單獨(dú)設(shè)計(jì)了一個軟核下載到SoPC中,并編寫一段程序用于測試是否正確寫入配置控制字,是否能夠進(jìn)行ShockBurst模式的接收或發(fā)送。問題是對天線各模式時序的把握,一開始寫的程序總是不能正確寫入配置字,反復(fù)調(diào)試,并用數(shù)字示波器觀察寫入配置字的瞬間過程以及各延時的時間,最后測試成功,并把發(fā)送或接收的狀態(tài)用LED顯示出來,每發(fā)送或接收到一個數(shù)據(jù)包就讓LED閃一下。
4 結(jié)語
本設(shè)計(jì)以FPGA嵌入NiosⅡ軟核處理器為核心,輔以必要的外圍電路,構(gòu)成了高度集成化的片上系統(tǒng)。另外,SoPC系統(tǒng)的柔性配置,使得可以基于此系統(tǒng)擴(kuò)展片外存儲器和多路輸出。設(shè)計(jì)的小車具有較強(qiáng)的避障能力,且能通過接收端對其進(jìn)行方便的控制,溫度和濕度采集均達(dá)了較高的精度,并且能實(shí)現(xiàn)動態(tài)顯示,無線收發(fā)模塊的有效范圍最遠(yuǎn)可達(dá)300 m,可應(yīng)用于較為惡劣的環(huán)境,可代替人進(jìn)行溫度和濕度的實(shí)地檢測。