fpga設(shè)計(jì)與應(yīng)用:智能小車設(shè)計(jì)方案
前言:智能監(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)。
本文引用地址:http://m.butianyuan.cn/article/201710/365316.htm系統(tǒng)結(jié)構(gòu)及硬件設(shè)計(jì)
整個(gè)系統(tǒng)由發(fā)送端(智能小車部分)和接收端(控制臺(tái):控制和顯示部分)組成,如圖1所示。系統(tǒng)由傳感器系統(tǒng)、動(dòng)力及轉(zhuǎn)向系統(tǒng)、CCD圖像傳感器模塊、 LCD顯示、溫度和濕度測量電路和供電系統(tǒng)等組成,整個(gè)系統(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)動(dòng)提供能量,電池置于車身底部。
1.2 傳感器系統(tǒng)
系統(tǒng)采用了6個(gè)紅外對射傳感器,通過FPGA配置的NiosⅡCPU來檢測傳感器信號實(shí)現(xiàn)小車躲避障礙物的功能。漫反射型紅外對射傳感器也稱光電開關(guān), 是一種集發(fā)射器和接收器于一體的傳感器,多用于檢測障礙物。原理是由光電開關(guān)輻射出來的調(diào)制紅外光束被檢測物體反射回來,紅外線經(jīng)同步選通接收,由電子開 關(guān)線路驅(qū)動(dòng)回路,從而來檢測物體的有或無。當(dāng)被檢測物體的表面光亮或其反光率極高時(shí),漫反射式的光電開關(guān)是首選的檢測模式。這種電路模塊體積小,信號容易 轉(zhuǎn)化為標(biāo)準(zhǔn)電平。
1.3 動(dòng)力及轉(zhuǎn)向系統(tǒng)
本小車有左右輪兩個(gè)電機(jī)及龜機(jī)驅(qū)動(dòng)。驅(qū) 動(dòng)電路采用了CT Microelecttonics公司的大功率直流電機(jī)驅(qū)動(dòng)芯片L298,最高支持50 V電壓,最大電流為5 A,滿足大功率電動(dòng)機(jī)的要求,外圍電路簡單,同時(shí),由于該芯片為雙路結(jié)構(gòu),分別控制左右電動(dòng)機(jī),增加了電路的可靠性,減少了復(fù)雜性。電機(jī)控制采用PWM脈 沖寬度調(diào)制方式來控制汽車的前進(jìn)速度。由NiosⅡCPU寫入控制字,可得到不同占空比的PWM驅(qū)動(dòng)信號,此PWM信號送入電機(jī)驅(qū)動(dòng)芯片的控制端來調(diào)節(jié)速 度。
1.4 小車自動(dòng)避障系統(tǒng)
小車自動(dòng)避障系統(tǒng)采用Verilog HDL語言編寫驅(qū)動(dòng)電路。該模塊(見圖2中的MOTOR)和一個(gè)數(shù)據(jù)選擇器(見圖2中的select_2)相連來實(shí)現(xiàn)自動(dòng)避障與人工遙控之間的切換。當(dāng)小 車上NiosⅡCPU的SEL管腳輸出低電平時(shí),數(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 小車的人工控制
小車的人工控制和自動(dòng)避障之間的轉(zhuǎn)換由一個(gè)數(shù)據(jù)選擇器控制,當(dāng)小車上NiosⅡCPU的SEL管腳輸出高電平時(shí),數(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)部電容會(huì)隨濕度的變化而變化,從而使輸出頻率發(fā)生變化。編寫VHDL程序在FPGA設(shè)計(jì)一個(gè)頻率計(jì)可精確的測出頻率值,通過輸出頻率與濕度的關(guān)系便可得到濕度值。
1.7 無線收發(fā)系統(tǒng)
系統(tǒng)采用PTR4000無線嵌入式模塊,工作頻率為2.4 GHz,最高工作速率可達(dá)1 Mb/s,高效GMSK調(diào)制,且有CRC檢錯(cuò)功能。具有低功耗,抗干擾能力強(qiáng),體積小等優(yōu)點(diǎn)。主要有三種工作模式,分別為:配置模式、 ShockBurst發(fā)送模式和ShockBurst接收模式。
軟件設(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編譯器提供了一個(gè)圖形化用戶界面,可以支持標(biāo)準(zhǔn)C。 NiosⅡIDE編譯環(huán)境自動(dòng)地生成一個(gè)基于用戶特定系統(tǒng)配置(SoPC Builder生成的SoPC文件)的makefile,有利于程序的開發(fā)。
NiosⅡIDE包含一個(gè)強(qiáng)大的、在GNU調(diào)試器基礎(chǔ)之上的軟件調(diào)試器——GDB。完成軟件代碼的編寫后,可以對代碼進(jìn)行仿真和調(diào)試。Nios-Ⅱ IDE提供了一個(gè)方便的閃存編程方法。任何連接到FPGA的兼容通用閃存接口(CFI)的閃存器件都可以通過NiosⅡIDE閃存編程器來燒結(jié)。針對本設(shè) 計(jì)及應(yīng)用,編寫了系統(tǒng)控制程序和LCD顯示程序。流程圖如圖3所示。
系統(tǒng)調(diào)試
小車系統(tǒng)需要測試能否準(zhǔn)確接收控制臺(tái)發(fā)送的指令并控制小車運(yùn)動(dòng)或停止,以及向前、后、左、右轉(zhuǎn)向。還要測試主控機(jī)能否準(zhǔn)確接收小車采集到的溫度以及濕度 信息,能否正確顯示。經(jīng)過多次測試,發(fā)現(xiàn)由于系統(tǒng)程序是采用收發(fā)循環(huán)轉(zhuǎn)換的模式,為了讓兩個(gè)系統(tǒng)能夠收到對方發(fā)的信息,對小車的遙控與自動(dòng)部分進(jìn)行簡單的 分化。自動(dòng)情況下,控制臺(tái)為主要接收端,小車為主要發(fā)送端,一般情況下小車發(fā)送數(shù)據(jù)到控制臺(tái),需要自動(dòng)到遙控的轉(zhuǎn)換時(shí),通過在延時(shí)時(shí)間內(nèi)進(jìn)行中斷來實(shí)行從 自動(dòng)到遙控的轉(zhuǎn)換;在遙控狀態(tài)下,控制臺(tái)為主要發(fā)射端,小車為接收端,一般情況下控制臺(tái)發(fā)送小車行進(jìn)指令到小車,需要采集數(shù)據(jù)時(shí),通過溫度、濕度采集按鍵 來對小車進(jìn)行收發(fā)轉(zhuǎn)換,同時(shí)小車發(fā)出采集數(shù)據(jù)指令,之后再次轉(zhuǎn)為接收模式。這樣做之后使小車與控制臺(tái)的軟件部分清晰明了,小車的行進(jìn)以及采集顯示數(shù)據(jù)能夠 實(shí)時(shí)的進(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)確的濕度值。開始求濕度值時(shí)用的是解一元三次方程的方法,由于計(jì)算量大,對小車的行進(jìn)會(huì)有很大影響,后來在小車端只是把小 車采集到的頻率值通過紅外天線傳輸?shù)街骺囟?,并將原先的小車自?dòng)避障由NiosⅡCPU控制改為由Verilog編寫的硬件模塊控制,最后在控制臺(tái)做濕度 值的計(jì)算。這樣的更改既減少了小車NiosⅡCPU的工作量,同時(shí)由于小車的自動(dòng)避障改為由獨(dú)立的Verilog模塊控制,運(yùn)行起來很流暢。
對于無線收發(fā)系統(tǒng),要測試其可靠性以及發(fā)送或接收的信息的準(zhǔn)確性。測試方法是單獨(dú)設(shè)計(jì)了一個(gè)軟核下載到SoPC中,并編寫一段程序用于測試是否正確寫入 配置控制字,是否能夠進(jìn)行ShockBurst模式的接收或發(fā)送。問題是對天線各模式時(shí)序的把握,一開始寫的程序總是不能正確寫入配置字,反復(fù)調(diào)試,并用 數(shù)字示波器觀察寫入配置字的瞬間過程以及各延時(shí)的時(shí)間,最后測試成功,并把發(fā)送或接收的狀態(tài)用LED顯示出來,每發(fā)送或接收到一個(gè)數(shù)據(jù)包就讓LED閃一 下。
結(jié)語
本設(shè)計(jì)以FPGA嵌入NiosⅡ軟核處理器為核心,輔以必要的外圍 電路,構(gòu)成了高度集成化的片上系統(tǒng)。另外,SoPC系統(tǒng)的柔性配置,使得可以基于此系統(tǒng)擴(kuò)展片外存儲(chǔ)器和多路輸出。設(shè)計(jì)的小車具有較強(qiáng)的避障能力,且能通 過接收端對其進(jìn)行方便的控制,溫度和濕度采集均達(dá)了較高的精度,并且能實(shí)現(xiàn)動(dòng)態(tài)顯示,無線收發(fā)模塊的有效范圍最遠(yuǎn)可達(dá)300 m,可應(yīng)用于較為惡劣的環(huán)境,可代替人進(jìn)行溫度和濕度的實(shí)地檢測。
評論