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