摘要
隨著我國科學技術的進步,智能化和自動化技術越來越普及,各種高科技也廣泛應用于智能小車和機器人玩具制造領域,使智能機器人越來越多樣化。智能小車是一個多種高薪技術的集成體,它融合了機械、電子、傳感器、計算機硬件、軟件、人工智能等許多學科的知識,可以涉及到當今許多前沿領域的技術。
本系統采用2片AVR Atmega128單片機作為智能小車的檢測和控制核心。一片用在在小車上,負責控制循跡、無線和電機驅動功能;一片在控制端上,負責控制語音播報、無線發送、液晶顯示和按鍵功能。通過控制端的液晶顯示和按鍵輸入設定模式信息,再通過無線發送給車載控制器,車載控制器根據接收到的不同無線信息,控制小車進入不同的模式,實現不同的功能。
本系統中的無線傳輸距離,空曠地為100米左右,室內可以隔著一層樓,接收端能收到發射端發射的無線信號。
目錄第1章 緒論 1.1 選題背景和意義 1.2 智能小車發展概況 1.2.1 國外智能小車發展概況 1.2.2 國內智能小車發展概況 1.3 研究設計的目標 1.4 方案選擇 1.4.1控制器選擇分析 1.4.2 電源模塊選擇分析 1.4.3 電機驅動模塊選擇分析 1.4.4 循跡模塊選擇分析 1.4.5無線模塊選擇分析 1.4.6語音模塊選擇分析 1.4.7顯示模塊選擇分析 1.4.8按鍵模塊選擇分析 1.5 可行性分析 第2章 系統整體設計 2.1 系統結構框圖 2.1.1 車載控制器部分 2.1.2 控制端控制器部分 第3章 系統硬件設計 3.1 單片機最小系統 3.1.1 電源電路 3.1.2 復位電路 3.1.3 時鐘電路 3.2 電源模塊 3.3 電機驅動模塊 3.4 循跡模塊 3.5 無線模塊 3.6 語音模塊 3.7 顯示模塊 3.10 按鍵模塊 第4章 系統軟件設計 4.1 主程序設計 4.1.1車載控制器主程序設計 4.1.2控制端控制器主程序設計 4.2 電機驅動子程序設計 4.3 循跡子程序設計 4.4 語音子程序設計 4.4.1錄音子程序設計 4.4.2放音子程序設計 4.5 無線程序設計 4.5.1 無線發送子程序設計 4.5.2 無線接收子程序設計 4.6 顯示子程序設計 4.7 按鍵子程序設計 第5章 系統調試 5.1 硬件調試 5.2 軟件調試 結 論 致 謝 參考文獻 附 錄 一 附 錄 二
第1章 緒論1.1 選題背景和意義自第一臺工業機器人誕生以來,機器人的民展已經遍及機械、電子、冶金、交通、宇航、國防等領域。近年來機器人的智能水平不斷提高,并且迅速地改變著人們的生活方式。人們在不斷探討、改造、認識自然的過程中,制造能替代人工作的機器一直是人類的夢想。其中智能小車可以作為機器人的典型代表。其需要實現自動導引功能和避障功能就必須要感知導引線和障礙物,實現自動識別路線,選擇正確的行進路線,使用傳感器感知路線并作出判斷和相應的執行動作。智能小車設計與開發涉及控制、模式識別、傳感技術、汽車電子、電氣、計算機、機械等多個學科。它可以分為三大部分:傳感器檢測部分,執行部分,CPU。現智能小車發展很快,從智能玩具到各行業都有實質成果,其基本可實現循跡、避障、檢測貼片,尋光入庫、避崖等基本功能,有向聲控系統發展的趨勢。 1.2 智能小車發展概況1.2.1 國外智能小車發展概況國外的智能小車發展的也很火,這其中要數韓國的智能小車發展最為迅速。韓國漢陽大學汽車控制實驗室在飛思卡爾半導體公司資助下,以HCS12飛思卡爾單片機為核心構造的智能小車系統。該智能小車系統主要功能為尋跡。利用紅外、電磁、CCD攝像頭等設備進行,這其中有數CCD攝像頭最為常見,行駛速度快,過彎靈敏,控制算法上大多采用PID算法進行閉環控制。 1.2.2 國內智能小車發展概況國內智能小車系統做的比較成熟的有北京博創科技有限公司。隨著全世界范圍內汽車炸彈襲擊事件的不斷增多,因此安全檢查部門對重大活動的汽車檢查也逐步升級,由過去僅檢查車內和車箱,升級為對包括車底的全方位檢查。在全國兩會安保工作中采用了北京博創科技的UP_UVSR智能小車機器人。UP_UVSR既是一款針對車底檢查任務研發的機器人系統,該產品體積小、重量輕,便于攜帶,作業效率高;可以駛入車底進行檢查,也可以固定安裝與車輛通道口對過往車輛進行檢查。 1.3 研究設計的目標設計一個多功能智能小車系統。通過控制端的單片機檢測按鍵的輸入,根據輸入的不同模式,控制無線模塊發送不同的命令,小車上的車載控制器接收到無線信號,然后判斷接收到的無線信號,來控制小車進入不同的模式,控制端的單片機通過LCD和語音模塊進行參數信息的顯示和播報。 1.4 方案選擇1.4.1控制器選擇分析控制器主要用于各個傳感器信號的接收和辨認、控制小車的電機的動作,是整個智能車系統的心臟,考慮到需要實現多個功能的要求及各個模塊引腳的數目,列出以下方案,對其分析、論證、選擇。 方案一:采用ATMEL公司的AT89S52。AT89S52單片機支持在線編程,易于操作,價格便宜,技術成熟,應用廣泛,但是功能單一,如果系統電機驅動需要增加硬件,軟件實現較為復雜;另外AT89S52 單片機引腳數較少,達不到各個模塊端口的要求。 方案二:采用ATMEL公司的ATmega128。ATmega128是一款基于AVR內核,采用RISC結構,高性能,低功耗CMOS的8位單片機。32個通用工作寄存器,53個通用I/O口,實時時鐘計數器(RTC),4個帶有比較模式靈活的定時器/計數器,2個可編程的USART接口,1個8位面向字節的TWI(IIC)總線接口,8通道單端或差分輸入的10位ADC(其中一個差分通道為增益可調的),可編程帶內部振蕩器的看門狗定時器,一個SPI接口,一個兼容IEEE1149.1標準的JTAG接口(用于在線仿真調試和程序下載),6種可通過軟件選擇的節電模式。兩個具有預分頻器、比較功能和捕捉功能的16 位定時器 /計數器。兩路8 位PWM。6路分辨率可編程 (2 到16 位)的 PWM。 方案三:采用更加高端的處理器S3C2410。S3C2410是一款ARM內核的處理器,雖然具備了AVR的資源,但是根據本設計的實際情況,成本比較高,編程難度較大。 綜合以上三種方案,考慮到系統的可行性,及功耗,性能,硬軟件的成本,我選擇方案二。 1.4.2 電源模塊選擇分析方案一:采用傳統的7805三端穩壓電路,小車鋰電池(7.4V)經過7805穩壓后供給小車電機驅動電路和單片機、各傳感器用電。由于小車電機啟動瞬間需要消耗大量電流,長時間行使后,7805芯片會有明顯的發燙現象,而且效率也很低,電池充滿一次電后,小車行駛沒多久,就得再次充電。 方案二:采用LM2596開關型穩壓芯片,配合電感和電容,一起搭配構成整體的電源電路。效率更高,性能也更加穩定。 綜合以上兩種方案,考慮到系統的性能和穩定性方面,選擇方案二。 1.4.3 電機驅動模塊選擇分析電機的驅動電路主要通過電機的正轉和反轉實現小車的前后或者左右方向的行駛。對于電機驅動模塊有下面的幾種方案。 方案一:使用功率三極管作為功率放大器的輸出控制直流電機。線性型驅動的電路結構和原理簡單,成本低,加速能力強,但功率損耗大,特別是低速大轉距運行時,通過電阻R的電流大,發熱厲害,損耗大,對于小車的長時間運行不利。 方案二:采用繼電器對電機的開或關進行控制,通過開關的切換對小車的速度進行調整。此方案的優點是電路較為簡單,缺點是繼電器的響應時間慢,易損壞,壽命較短,可靠性不高。 方案三:采用專用電機驅動芯片L298N,實現框圖如圖1-1所示。該芯片集成度高,占用空間小,主要應用于電機調速場合。L298N是恒壓恒流雙H橋集成電機芯片,可同時控制兩個電機,且輸出電流可達到2A。L298N的數據口分別與單片機的I/O口相連,作為調制信號。這樣精度高并且穩定,可行性好,而且通過編程能實現人機分離,利于調試。 綜合以上三種方案,考慮到AVR單片機自帶有PWM功能,能實現直流減速電機精準控制,選擇方案三。 1.4.4 循跡模塊選擇分析循跡模塊確保了小車在黑色邊界線的區域內行駛。考慮到邊界線是黑色的,可以考慮利用傳感器辨認賽車場地黑白兩種不同狀態。對傳感器的選擇有以下方案。 方案一:采用熱探測器。熱探測器是利用所接收到的紅外輻射后,會引起溫度的變化,溫度的變化引起電信號不同的輸出,且輸出的電信號與溫度的變化成比例,當紅外線被黑色線吸收時,溫度會降低,電壓變低,而紅外線沒有被吸收時,電壓不變,單片機可以根據電壓的變化來判斷小車顯示的情況。由于溫度受環境的影響很大,當溫度變高時,即使黑色線吸收了紅外線,但是也會有很高的電壓,導致單片機判斷出錯。 方案二:采用紅外對射管。紅外發射接收管測量距離近,但反應靈敏、準確。由于測量的高度離場地僅1 cm,距離很近,符合其特點。相比熱探測器而言,其體積較小,價格低,安裝較容易。 綜合以上兩種方案,考慮到系統的穩定性和安裝的簡便性,選擇方案二。 1.4.5無線模塊選擇分析無線模塊是用來進行控制端和小車之間的通信,控制小車進入不同的功能模式。 方案一:采用目前流行的WiFi無線模式。WiFi覆蓋面廣,傳輸里遠,但是其硬件開銷成本太高,需要很深厚的理論知識基礎。短時間內實現有一定的難度。 方案二:采用TI的CC1101無線傳輸方案。有效傳輸距離為100米,工作頻率為387~464MHZ。主從一體,既可以作為發送端,也可以作為接收端,軟件控制靈活、簡單。此模塊高靈敏度(1.2kbps下-110dDm,0.1%數據包誤碼率)、內置硬件CRC 檢錯和點對多點通信地址控制、較低的電流消耗(RX中,15.6mA,2.4kbps,433MHz、可編程控制的輸出功率,最大輸出功率+10dBm、無線喚醒功能,支持低功率電磁波激活功能,無線喚醒低功耗睡眠狀態的設備等優點。 綜合以上兩種方案,考慮到系統開發成本和開發時間,選擇方案二。 1.4.6語音模塊選擇分析語音模塊是用來進行在小車進入不同的功能模式和小車轉向時,進行語音播報,使整個系統更加人性化些。 方案一:采用555定時器,發出特定頻率的聲波。缺點:只能發出一定頻率的波,難以發出人類的聲音。 方案二:采用ISD1760專業語音錄放芯片。ISD1760可錄、放音十萬次,存儲內容可以斷電保留一百年。兩種錄放模式:獨立按鍵錄放模式和SPI總線操作錄放模式。可處理多達 255 段信息。錄音數據存儲在芯片的 FLASH 內,沒有經過任何壓縮,所以有較好的音質和斷電存儲。多種采樣頻率對應多種錄放時間。工作電壓:2.4V-5.5V。靜態電流:0.5 - 1 μA。工作電流:20mA 綜合以上兩種方案,考慮到系統的功能要求和控制的靈活性,選擇方案二。 1.4.7顯示模塊選擇分析方案一:采用LCD 1602液晶進行小車參數的信息顯示。1602為2行16列式的液晶,可以顯示一些數字和英文字母以及一些簡單的圖案,但是1602內部無字庫,要想顯示漢字就得自己編寫漢字碼了,軟件開發繁瑣。 方案二:采用LCD 12864 字符式液晶。由于12864液晶內部帶字庫,且能夠顯示的信息也足夠多,LCD1284和LCD1602二者在時序控制上差別不大,軟件一直很容易。 綜合以上兩種方案,考慮到系統的要求,選擇方案二。 1.4.8按鍵模塊選擇分析方案一:采用4*4矩陣鍵盤,共計需要16個獨立按鍵,占用單片機8個IO端口。 方案二:采用獨立的按鍵,結合本系統,只需要6個獨立按鍵即可滿足要求,單片機只要檢測對應的引腳電平幾個判斷那一按鍵被按下。 綜合以上兩種方案,考慮到硬件的開發成本和軟件程序上的簡便性,選擇方案二。 1.5 可行性分析采用ATmega128A單片機作為控制核心,其標準工作頻率為8MHz,可以為本系統提供高速的計算能力和實時控制能力。學校的硬件基礎實驗室可以提供焊接和調試場地,調試設備只需要電烙鐵、萬用表、示波器等常用設備即可。 對大學開設的《C語言編程》、《單片機技術》、《模擬電子技術》、《Protel應用技術》等相關課程的學習,可以為該系統的設計與實現提供理論知識。 第2章 系統整體設計2.1 系統結構框圖本系統主要分為兩個大模塊,車載控制器模塊和控制端的控制器模塊。 2.1.1 車載控制器部分車載控制器模塊如圖2-1所示。
圖 2-1 車載控制器模塊結構框圖 從圖2-1中可以看出,車載部分的控制器模塊主要包括電源模塊、電機驅動模塊、循跡模塊、避障模塊、無線模塊。各個模塊的功能介紹如下。 1.電源模塊: 采用7.4V的鋰電池,經過降壓電路,降到5V后供給整個系統。 2.電機驅動模塊: 使用兩片L298N驅動小車的電機。利用單片機的PWM功能,控制驅動芯片,驅動芯片再控制電機,實現小車的行駛轉向功能。 3.循跡模塊: 采用7對紅外對射管作為單片機輸入,來檢測黑色循跡線路。 4.無線模塊: 車載控制器控制無線模塊,接收控制端的無線信號,然后根據所接收到的無線信號,車載控制器控制小車執行不同的功能。 2.1.2 控制端控制器部分車載控制器模塊如圖2-2所示。 圖 2-2控制端控制器結構框圖 從圖2-2中可以看出,車載控制器主要包括電源模塊、無線模塊、顯示模塊、按鍵模塊、語音模塊。各個模塊的功能如下。 1.電源模塊 利用4節5號干電池經過7805穩壓到5V后供給控制端的系統使用。 2.語音模塊: 使用ISD1760芯片存儲聲音信息,外接揚聲器,當按鍵設定小車進入不同的功能模式時,實現聲音播報功能。 3.按鍵電路: 共使用6個獨立按鍵,4個方向鍵,一個菜單鍵,一個確定鍵,負責設定小車進入不同的功能模式。 4:顯示模塊: 使用LCD12864,當按鍵設定小車的功能模式時,以文字的形式顯示模式設定。在進入無線模式時,負責顯示小車的操縱方向。 第3章 系統硬件設計本章從硬件系統上設計單片機最小系統模塊、電源模塊、電機驅動模塊、循跡模塊、無線模塊、語音模塊、顯示模塊、按鍵模塊。 3.1 單片機最小系統3.1.1 電源電路電源電路把直流5V輸入給降壓芯片LM117,然后降壓到3.3V后供給單片機和其他3.3V模塊使用。電源電路如圖3-1所示。 圖 3-1 電源電路
3.1.2 復位電路單片機的復位方式有上電自總復位和手工復位兩種。本設計中復位電路采用的是手工復位電路,如圖3-2所示。 圖 3-2 復位電路 單片機的REST引腳為主機提供一個外部復位信號輸入端口。復位信號是低電平有效,低電平有效的持續時間大于最小脈沖寬度(1.5us)時即觸發復位過程。復位后,單片機內各部件都恢復到初始狀態,單片機從ROM地址的0000H開始執行程序。 3.1.3 時鐘電路時鐘電路如圖3-3所示。 (空白處補上) 圖 3-3 時鐘電路 單片機的工作時間基準是由時鐘電路提供的,在單片機的XTAL1和XTAL2的兩個引腳間,接入一個8MHz晶振及兩個22pF電容即構成了單片機最小系統的時鐘電路。 時鐘電路中的器件可以從ATmega128的芯片資料上確定,也可以參考一些常見的電路的參數。 3.2 電源模塊電源模塊采用的是LM2596開關型穩壓芯片。7.4V的鋰電池經過LM2596穩壓到5V后供給整個系統。電源模塊電路圖如圖3-4所示。 (空白處補上)
圖3-4電源模塊電路圖 鋰電池電壓從J1輸入給LM2596降壓電路,5V從J2輸出,供給整個系統。R2為可調電阻,可以調節輸出電壓。D1為SS34肖特基二極管,具有開關速度快,正向壓降低的特點,在電路中配合L1電感,構成回路,起到續流的作用。 3.3 電機驅動模塊電機驅動模塊采用了2片L298N芯片,進行對小車的4個電機的控制。其中一片L298N電機驅動電路圖如圖3-5所示。 (空白處補上)
圖3-5電機驅動模塊電路圖 圖中QIN1~QIN4為芯片輸入端,接單片機PD4,PD5,PD6,PD7口,O1~O4為芯片輸出端,接電機。JDY1和JDJY2為電機線插座。PWA和PWMB為PWM輸入腳,接車載控制器的PB5(OC1A)和PB6(OC1B)PWM輸出引腳。D2~D9為1N4007二極管,在電路中起到保護L98N芯片的作用,防止電機在正反轉的瞬間,產生的電動勢擊穿L298N芯片。 3.4 循跡模塊循跡模塊采用了共計7對紅外對射管,7路循跡接車載控制器的PA0~PA7口。其中一對紅外對射管的電路如圖3-6所示。 (空白處補上) 
圖3-6 循跡模塊電路圖 紅外對射管為DT2和DR2。LM339N為比較器,RW1為10K的可調電阻。當DR2接收到DT2發射的紅外光時導通,此時339的反相輸入端為邏輯0,正向輸入端VREF電平高于反相輸入端電平,根據比較器的特性,比較器輸出端為高電平,車載控制器的PA1口也為高電平。當DR2未接收到紅外光是截止,此時339的反相輸入端為高電平且高于正向輸入端VREF的電壓值,比較器輸出端為低電平,車載控制器的PA1口也為低電平。 3.5 無線模塊無線模塊采用從網上購買的CC1101模塊,無線模塊實物圖如圖3-7所示。
圖3-7 無線模塊實物圖 CC1101工作電壓為1.8V~3.6V,最高不超過3.8V,本系統無線模塊工作電壓供給的是3.3V。車載控制器通過IO模擬SPI串行總線的方式和無線模塊進行相連接。無線模塊和車載控制器的連接圖如 圖3-8所示。 車載控制器ATmega128A的PB0接CC1101的片選引腳/SS,控制CC1101是否被選通;車載控制器ATmega128A的PB1接CC1101的串行時鐘輸入腳SCLK,用于同步MOSI和MISO的數據傳輸;車載控制器ATmega128A的PB2接CC1101的串行數據輸入腳MOSI,CC1101從該引腳讀入發送/接收命令字;車載控制器ATmega128A的PB3接CC1101的串行數據輸出腳MISO, 車載控制器從該引腳接收來自無線模塊傳來的信號。 圖3-8 無線模塊和車載控制器的連接圖 3.6 語音模塊語音模塊是本系統中的重要功能模塊。當按鍵設定小車進入不同的功能模式時,語音模塊能夠播報相應的模式信息,防止設定進入錯誤的模式。 語音模塊實物圖如圖3-9所示。 圖中MIC為錄音輸入麥克,按鍵也可實現錄音和放音的操作。 (空白處補上)
圖3-9 語音模塊實物圖 語音模塊和控制端的控制器連接圖如圖3-10所示。 ISD1760與ATmega128A接口為SPI串行總線接口,單片機通過片選線SS(SS=0時允許ISD1760工作)、串行數據輸入MISO、串行數據輸出MOSI和串行時鐘SCLK和ISD1760進行連接。 單片機B ATmega128A的PA3接ISD的片選引腳/SS,控制ISD1760是否被選通;ATmega128A的PA2接ISD的串行時鐘輸入腳SCLK,用于同步MOSI和MISO的數據傳輸;ATmega128A的PA1接ISD的串行數據輸入腳MOSI,ISD從該引腳讀入錄、放音的地址;Tmega128A的PA0接ISD的串行數據輸出腳MISO,單片機B從該引腳接收來自語音芯片傳來的信號。 (空白處補上) 
圖3-10 語音模塊和車載控制器的連接圖 3.7 顯示模塊顯示模塊的硬件原理圖如圖3-11所示。 VSS、LED_K接地;VDD、/RST接+5V電源。液晶數據線DB0~DB7連接AVR128的PC口。RS接單片機PE2,當為高電平時,表示DB0~DB7為顯示數據;為低電平時,表示DB0~DB7為顯示指令數據。R/W接單片機PE3口,使能信號E接單片機PE4口,R/W為高電平,E為高電平,數據被讀到DB0~DB7;R/W為低電平,E從高電平轉換到低電平,DB0~DB7被寫到液晶內部的DDRAM里。 (空白處補上)
圖3-11 顯示模塊電路圖
3.10 按鍵模塊按鍵模塊電路圖如圖3-12所示。 圖3-12 按鍵模塊電路圖 6個按鍵作為輸入方式接入控制器端控制器的PD0~PD5 IO口。當有按鍵按下時,對應的端口電平變為低電平,當按鍵抬起時,對應的電平變為高電平。 K1~K4分別為Up、Down、Left、Right鍵,當小車進入無線遙控模式時,負責小車的前進、后退、左轉和右轉功能。 K5為菜單鍵,負責小車進入何種模式菜單的設定顯示。當K5按下時,K1~K3分別對應無線模式、循跡模式和避障模式。 K6為確定鍵,當K5按下,K1~K3設定某種模式后,按下K6,然后通過無線模塊把模式字碼發送給車載控制器。 第4章 系統軟件設計系統的軟件設計采用C語言,對單片機進行編程實現各項功能。 程序是在Windows XP環境下采用CodeVisionAVR C Compliler軟件編譯的。 4.1 主程序設計本系統主要分為兩個主程序,即車載控制器上的主程序和控制端控制器的主程序。 4.1.1車載控制器主程序設計主程序采用模塊化的思想設計,車載控制器的主程序流程圖如圖4-1所示。 從圖4-1中可以看出,車載空控制器首先進行對電機模塊、循跡模塊和無線模塊的初始化,初始化主要包括各個模塊和控制器相連接的IO端口的輸入/輸出初始化,以及一些功能寄存器的初始化。 初始化完成后,程序進入while循環,開始判斷無線接收到的數據,如果無線接收到的數據是循跡模式字碼(0xa0),則進入循跡子程序,小車開始循跡;如果無線接收到的數據是無線遙控模式字碼(0xa1),則進入無線遙控模式,開始小車的無線遙控行駛功能。如果沒有接收到任何模式字碼或者接收到的不是這三種模式字碼的任意一個,則小車停止。 圖4-1 車載控制器主程序流程圖 4.1.2控制端控制器主程序設計控制端控制器的主程序流程圖如圖4-2所示。 
圖4-2 控制端控制器主程序流程圖 從圖4-2中可以看出,控制端空控制器首先進行對按鍵模塊、液晶模塊、語音模塊和無線模塊的初始化。初始化主要包括各個模塊和控制器相連接的IO端口的輸入/輸出初始化,以及一些功能寄存器的初始化。 初始化完成后,顯示一初始界面信息,然后判斷是否有任意按鍵按下,如有任意按鍵按下,則清屏顯示信息,顯示模式設定信息,然后主程序開始開始處理按鍵程序。 4.2 電機驅動子程序設計根據電機驅動芯片L298的文檔資料,IN1(5)、IN2(7)、IN3(10)、IN4(12)分別對應OUT1(2)、OUT2(3)、OUT3(13)、OUT4(14),即輸入高低電平對應,(例如IN1為高則OUT1為高),當然這要是建立在使能端滿足的情況下才可以; ENA(6)、ENB(11)為使能端,ENA控制OUT1、OUT2,ENB控制OUT3、OUT4,高電平有效,即在低電平情況下,無論輸入為何信號,輸出都為低電平。 現以IN1、IN2、OUT1、OUT2為例控制電機的轉向。詳見表4-1。 表4-1電機轉動狀態真值表
電機驅動子程序的流程圖如圖4-3所示。 圖4-3 電機驅動子程序流程圖 從圖4-3中可以看出,電機驅子動程序首先要對電機模塊初始化,初始化主要包括電機驅動芯片的輸入端口PORTD.4~PORTD.7的端口輸出方向初始化,PWM輸出通道 PORTB.5和PORTB.6的輸出方向初始化,定時器1的PWM輸出頻率及PWM計數器頂端值的初始化。然后進入主程序,開始判斷各個標志位。如果是前進標志,則調用前進函數,先設定PWM占空比,然后令電機驅動芯片的輸入端in1=1,in2=0(左輪正轉),in3=1,in4=0(右輪正轉),小車即向前行駛;如果是左轉標志,則調用左轉函數,先設定PWM占空比,然后令電機驅動芯片的輸入端in1=0,in2=1(左輪反轉),in3=1,in4=0(右輪正轉),小車即開始左轉。其他的后退、右轉和停止函數和前面所講類似,在此不再贅述。 4.3 循跡子程序設計本系統邊界檢測模塊采用的是紅外對射模塊。在小車的正前方位置安裝了7支紅外對射管,這些紅外對射管是用來檢測和探知黑色循跡道路的。 小車循跡是通過7對紅外對射管來檢測的,表4-2列出了小車的各個狀態: 表4-2紅外對射管狀態真值表
具體程序可根據循跡流程圖4-4所示進行程序編寫。 從圖4-4中可以看出,循跡子程序首先要對循跡模塊初始化。初始化主要包括對循跡模塊和車載控制器的接口PORTA.0~PORTA.6的端口輸入方向初始化。 初始化完畢后,主程序開始判斷循跡模塊的中間一個傳感器Sig4的輸出狀態是否為0(低電平),如果Sig4為0,則說明小車此時處于黑色循跡線路的中間位置,車載控制器調用小車直走函數,控制小車直走即可;如果Sig4不為0,則程序進對循跡模塊的左邊的傳感器Sig1的狀態進行判斷。如果Sig1的輸出狀態為0(低電平),則說明小車車身現在處于黑線的右邊位置,車載控制器需調用小車左轉函數。如果Sig1的輸出狀態不為0,則進入下一個傳感器的輸出狀態判斷。如果7個傳感器的輸出狀態都不為0,車載控制器則控制小車直走。 圖4-4 循跡子程序流程圖 4.4 語音子程序設計控制端的控制器通過SPI總線的方式來控制語音模塊的錄放音操作。SPI的英文名稱為Serial Peripheral Interface。串行外設接口SPI是由Freescale公司(原Motoroal公司半導體部)提出的一種采用串行同步方式的3線或4線通訊接口,使用信號有使能信號(SS)、同步時鐘(SCK)、同步數據輸入和輸出(MOSI、MISO)。在 SPI 模式下,對芯片進行更多功能操作。如對任意存儲地址進行錄放,對模擬通道配置寄存器進行讀寫等。 通信協議 MOSI 的數據在 SCLK的上升沿進入錄音芯片,MISO 的數據在 SCLK的下降沿進入主控芯片。8位為一字節,先發低位。 4.4.1錄音子程序設計ISD錄音子程序流程圖如圖4-5所示。 
圖4-5 語音錄音子程序流程圖 從圖4-5中可以看出,ISD錄音子程序首先要對語音模塊進行初始化,包括語音模塊和單片機相連接的IO口PORTA.0~PORTA.3的輸入輸出方向初始化、語音模塊的復位、清除語音模塊內部的中斷。 初始化完成后,開始讀取狀態寄存器,如果語音芯片準備就緒,則發送錄音模式指令,從起始地址開始錄音,遇到結束地址后,結束錄音,單片機發送下電指令給語音模塊。如果語音芯片沒有準備繼續,則控制器一直讀取語音芯片內部的狀態。 4.4.2放音子程序設計
圖4-6 語音放音子程序流程圖 從圖4-6中可以看出,ISD放音子程序首先要對語音模塊進行初始化,包括語音模塊和單片機相連接的IO口PORTA.0~PORTA.3的輸入輸出方向初始化、語音模塊的復位、清除語音模塊內部的中斷。 初始化完成后,開始讀取狀態寄存器,如果語音芯片準備就緒,則發送放音模式指令,從起始地址開始放音,遇到結束地址后,結束放音,單片機發送下電指令給語音模塊。如果語音芯片沒有準備繼續,則控制器一直讀取語音芯片內部的狀態。 4.5 無線程序設計4.5.1 無線發送子程序設計無線發送子程序流程圖如圖4-7所示。 從圖4-7中可以看出,無線發送子程序首先對無線模塊CC1101進行初始化,包括無線模塊和控制端控制器接口的PORTB.0~PORTB.3的端口輸入輸出方式初始化、SPI狀態初始化、無線模塊上電復位初始化、配置CC1101內部各寄存器、無線模塊發射功率設置初始化。 初始化完成后, 設定發送字節長度,然后寫入要發送的數據,進入發送模式發送數據,然后檢查發送標志位,看是否發送完成,如果發送完成,則清發送緩沖區。如果沒有發送完成,則再開始發送數據。 圖4-7 無線發送子程序流程圖 4.5.2 無線接收子程序設計無線接收子程序流程圖如圖4-8所示。 圖4-8 無線接收子程序流程圖 從圖4-8中可以看出,無線發送子程序首先對無線模塊CC1101進行初始化,包括無線模塊和控制端控制器接口的PORTB.0~PORTB.3的端口輸入輸出方式初始化、SPI狀態初始化、無線模塊上電復位初始化、配置CC1101內部各寄存器、無線模塊發射功率設置初始化。 初始化完成后, 設定接收字節長度,然后進入接收模式,如果接收的字節為0,則一直在接收模式下。如果接收的字節數不為0,則開始接收數據,接收完成活,清接收緩沖區。 4.6 顯示子程序設計顯示子程序流程圖如圖4-9所示。
圖4-9 顯示子程序流程圖 從圖4-10可以看出,液晶顯示子程序首先要對液晶模塊進行初始化,包括液晶控制端口、液晶數據端口和控制器相連接的IO口PE2~PE6、PC口的端口輸入輸出方向初始化。 初始化完畢后,液晶先顯示初始界面信息,這時如果有任意的一個按鍵按下,則液晶清楚界面信息,然后顯示模式設定信息,按鍵輸入相應模式。如果沒有按鍵按下,則液晶一直顯示初始界面信息。 4.7 按鍵子程序設計按鍵子程序如圖4-10所示。 從圖4-10可以看出,按鍵顯示子程序首先要按鍵模塊進行初始化,對按鍵和控制端的控制器的接口PD0~PD5端口輸入/輸出方向初始化。 初始化完畢后,開始處理按鍵程序,判斷有無按鍵按下,并執行相應的按鍵處理程序。
圖4-10 按鍵子程序流程圖
第5章 系統調試 本系統經過總體設計,完成了硬件開發和軟件開發。通過硬件和軟件的相互配合,使得整個系統正常運行。但是一個工程項目或者一個系統的最終開發成功,期間必然會碰到好多錯誤,例如硬件焊接上的錯誤,軟件編程上的錯誤等,這就需要通過調試來發現錯誤并及時的改正錯誤。系統調試分為硬件調試和軟件調試兩個部分。 5.1 硬件調試硬件調試用到的工具是示波器和萬用表。 車載部分的硬件實物圖和控制端的硬件實物圖分別如圖5-1和5-2所示。 圖5-1 車載硬件實物圖 圖5-2 控制端硬件實物圖 硬件調試應從以下4個步驟開始: 1.查看線路 根據硬件設計原理圖,仔細檢查各線路焊接是否正確,有誤虛焊或者短路問題。 2.檢查板上各元器件 檢查各個芯片、電阻有無焊接正確,有無芯片焊反等情況出現。 3.檢查電源和地 電源和地是一個系統中必不可少的組成部分,通電之前,首先要將萬用表開關調到測試二極管擋位,然后檢查電源和地之間有誤短路。檢查各個模塊的電源和地是否連接正常。 4.上電檢查 在保證電源和地的電路沒有問題的情況下,接通電源,檢查各個模塊是否正常,有誤發熱、發燙現象發生。必要時,可以用萬用表測量系統電路中的電流。如果測量電流很大,則說明系統電路中有短路或者故障,此時應立即斷開電源,然后仔細檢查電路。 5.系統整體檢查 上電后,檢查系統中各個模塊的電壓是否正常,單片機相應的引腳輸入輸出電平是否正常等。 5.2 軟件調試對于本系統而言,軟件程序時序圖要求太多,所以軟件程序的調試顯得相當的煩瑣。整個程序是使用C語言。 軟件調試分為以下2個步驟: (1)各個模塊程序的調試 在本系統設計中采用CodeVisionAVR 軟件對程序進行編譯和修改。利用AVRStudio4仿真軟件和JTAG工具對程序進行仿真調試,檢查各寄存器內值是否正常,堆棧地址是否溢出等。 2.整體程序調試:各個模塊程序調試完畢后,需要把各個模塊和主程序連接起來,進行系統的整體調試,看看是否能實現系統的預期功能。在此階段出現的問題可以采取在出現問題的前后點亮LED燈的方式,來確定是哪部分出現的問題。
結論本設計實現了多功能智能小車系統的功能。當按鍵輸入設定好的模式時,進行語音提示文字顯示同步發出,然后經過無線傳輸把模式字碼發送給車載控制器端,然后車載控制器根據接收到的模式字碼,控制小車,實現循跡、無線遙控功能。如果沒有收到無線信號或者收到的無線信號是停止模式字碼,則車載控制器控制小車處于停止等待狀態, 智能小車系統主要應用與環境監控和檢測、車體環境的檢查、軍用上的排爆排雷等。是一個涉及多領域、多學科的工程。 本系統的特點是,采用無線傳輸的模式,通過控制端控制車載控制器,繼而通過車載控制器控制小車,避免了人和車體的直接接觸,增加了控制的靈活性,突破了空間的限制。但本系統也有局限性,由于采用的是無線傳輸的方式,任何無線設備,其穩定性和傳輸距離上都有一定的限制,本無線設備有效傳輸距離在空曠地帶為100米左右,此外,隨著距離的增加,在系統的實時性控制方面,也會有一定程度的遲緩現象出現。 在畢業設計過程中,鞏固了在大學4年內學過的知識,尤其是單片機和模擬電子方面的知識,同時通過這次畢設提高了單片機編程的能力,尤其是獲得的軟件調試經驗,同時加強了我的實際編程能力,同時也讓自己更加的知道了自己知識領域里的不足和缺陷。 由于時間太倉促,經驗不足,理論方面也相應的存在不足,加上條件有限,仍存在著一些設計方面的問題,個人技能也有待提高。理論知識還要鞏固加強。 致 謝本課題在選題及研究過程中得到馮老師的悉心指導。馮老師多次詢問研究進程,并為我指點迷津,幫助我開拓研究思路,精心點撥、熱忱鼓勵。馮老師一絲不茍的作風,嚴謹求實的態度,踏踏實實的精神,不僅授我以文,而且教我做人,雖歷時半年,卻給以終生受益無窮之道。對馮老師的感激之情是無法用言語表達的。 在論文即將完成之際,我的心情無法平靜,從開始進入課題到論文的順利完成,有多少可敬的師長、同學、朋友給了我無言的幫助,在這里請接受我誠摯的謝意!
附 錄 一附 錄 二電機驅動頭文件和C文件代碼
完整的Word格式文檔51黑下載地址(含源碼):
智能小車畢業設計.doc
(3.98 MB, 下載次數: 53)
2018-5-23 14:40 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|