久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 41766|回復: 1
打印 上一主題 下一主題
收起左側

智能小車控制系統設計論文(尋跡、自動往返與避障等功能)

[復制鏈接]
跳轉到指定樓層
樓主
ID:328159 發表于 2018-5-12 12:49 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
別人寫的 看看實例 做對比。
智能小車控制系統設計
摘要
智能作為現代的新發明,是以后的發展方向,他可以按照預先設定的模式在一個環境里自動的運作,不需要人為的管理,可應用于科學勘探等等的用途。智能小車就是其中的一個體現。智能小車,也稱輪式機器人,是一種以汽車電子為背景,涵蓋智能控制、模式識別、傳感技術、電子電氣、計算機、機械等多學科的科技創意性設計。一般主要由路徑識別、速度采集 、角度控制及車速控制等模塊組成。
本次設計的簡易電動智能小車,采用STC89C52單片機作為小車的檢測和控制核心,充分利用了自動檢測技術、單片機最小系統、液晶顯示模塊電路,以及聲光信號的控制、電機的驅動電路。通過Keil C和PROTEUS的仿真,實踐操作與調試,最終實現小車的尋跡、自動往返與避障等功能。綜合運用單片機技術、自動控制理論、檢測技術等。使小車能在無人操作情況下,借助傳感器識別路面環境,由單片機控制行進,實現初步的無人控制。
單片機具有體積小、重量輕、耗電少、功能強、控制靈活方便且價格低廉等優點。單片機的應用正從根本上改變著傳統的控制系統設計思想和設計方法。
本設計以單片機為核心,附以外圍電路,采用反射型光電探測器進行尋跡操作,利用光電傳感器檢測道路上的障礙,運用單片機的運算和處理能力來實現小車的各種功能,最終實現簡單的智能化。

目錄
摘要……              I
Abstract              II

第1章 緒論
1.1 課題背景
1.1.1 研究目的與意義
1.2 國內外文獻綜述
1.3 論文研究內容
第2章 系統方案論證與分析
2.1 小車構架方案論證
2.2 電機選擇方案論證
2.3 電機驅動方案論證
2.4 供電電源方案論證
2.5 尋跡檢測方案論證
2.6 避障方案論證
2.7 無線遙控方案論證
2.8 控制方案論證
2.9 本章小結
第3章 硬件設計
3.1 硬件原理圖
3.2 控制電路設計
3.2.1 STC89C52單片機硬件結構
3.2.2 最小系統的設計
3.2.3 下載端口設計
3.3 電源模塊設計
3.4 電機驅動模塊設計
3.5 尋跡模塊設計
3.6 避障模塊設計
3.7 遙控模塊設計
3.8 本章小結
第4章 軟件設計
4.1 軟件設計環境簡介
4.1.1 Keil開發環境介紹
4.1.2 STC_ISP程序下載說明
4.2 尋跡程序設計
4.3 避障程序設計
4.4 遙控程序設計
4.5 主程序設計
4.6 本章小結
結論
致謝
參考文獻
附錄A
附錄B
附錄C


第1章   緒論
1.1 課題背景
2010年10月1日18時59分57秒345毫秒,嫦娥2號點火,19時整成功發射。在飛行后的29分53秒時,星箭分離,衛星進入軌道。19時56分太陽能帆板成功展開……這次探月衛星的成功發射,標志著中國自動化領域進入了一個新的階段。
隨著自動化的發展,自動化開始向復雜的系統控制和高級的智能控制發展,并廣泛地應用到國防、科學研究和經濟等各個領域,實現更大規模的自動化,例如大型企業的綜合自動化系統、全國鐵路自動調度系統、國家電力網自動調度系統、空中交通管制系統、城市交通控制系統、自動化指揮系統、國民經濟管理系統等。自動化的應用正從工程領域向非工程領域擴展,如醫療自動化、人口控制、經濟管理自動化等。自動化將在更大程度上模仿人的智能,機器人已在工業生產、海洋開發和宇宙探測等領域得到應用,專家系統在醫療診斷、地質勘探等方面取得顯著效果。工廠自動化、辦公自動化、家庭自動化和農業自動化將成為新技術革命的重要內容,并得到迅速發展。
智能小車,也稱輪式機器人,是一種以汽車電子為背景,涵蓋智能控制、模式識別、傳感技術、電子電氣、計算機、機械等多學科的科技創意性設計,更是自動化的一種綜合體現。一般主要由路徑識別、速度采集、角度控制及車速控制等模塊組成。近些年來全國電子大賽和省內電子大賽幾乎每次都有智能小車這方面的題目,全國各高校也都很重視該題目的研究,可見其研究意義很大,也正因此掀起了智能車研究的一股熱潮[1]。
1.1.1  研究目的與意義
小車,也就是輪式機器人,最適合在那些人類無法工作的環境中工作,該技術可以應用于無人駕駛機動車,無人生產線,倉庫,服務機器人等領域。在危險環境下,機器人非常適合使用。在這些險惡的環境下工作,人類必需采取嚴密的保護措施。而機器人可以進入或穿過這些危險區域進行維護和探測工作,且不需要得到像對人一樣的保護。例如美國的“勇氣”號和“機遇”號,在火星探測過程中分別在其著陸區域附近找到火星上過去曾有過水的證據,為人類對火星的探測做出了巨大的貢獻[1]。
機器人的應用正逐步滲入到工業和社會的各個層面,如采用帶有專用新型傳感器的移動式機器人,連續監視采礦狀態,以便及早發現事故突發的先兆,采取相應的預防措施;智能輪椅運用口令識別與語音合成、機器人自定位、動態隨機避障、多傳感器信息融合、實時自適應導航控制等功能,運用了現代高新技術來改善殘障人們的生活質量和生活自由度。在智能車輛領域,智能小車自動行駛功能的研究將有助于智能車輛的研究。智能車輛駕駛任務的自動完成將給人類社會的進步帶來巨大的影響,例如能切實提高道路網絡的利用率、降低車輛的燃油消耗量,尤其是在改進道路交通安全等方面提供了新的解決途徑。
“工欲善其事,必先利其器”。人類在認識自然、改造自然、推動社會進步的過程中,不斷地創造出各種各樣為人類服務的工具,其中許多具有劃時代的意義。作為20世紀自動化領域的重大成就,機器人已經和人類社會的生產、生活密不可分。因此為了使智能小車工作在最佳狀態,進一步研究及完善其速度和方向的控制是非常有必要的。
本文所研究的內容涉及尋跡、避障、人工操控等多種功能,初步實現智能化,可做為各類科研的基礎模型,具有較大的研究空間,適合于多種領域的智能化研究與開發。
1.2   國內外文獻綜述
智能車輛的研究始于20世紀50年代初,美國Barrett Electronics公司開發出的世界上第一臺自動引導車輛系統(Automated Guided Vehicle System,AGVS)。1974年,瑞典的VolvoKalmar轎車裝配工廠與Schiinder--Digitron公司合作,研制出一種可裝載轎車車體的AGVS,并由多臺該種AGVS組成了汽車裝配線,從而取消了傳統應用的拖車及叉車等運輸工具。由于Kalmar工廠采用AGVS獲得了明顯的經濟效益,許多西歐國家紛紛效仿Volvo公司,并逐步使AGVS在裝配作業中成為一種流行的運輸手段。在世界科學界和工業設計界中,眾多的研究機構正在研發智能車輛,使智能車技術迅速展起來。
德意志聯邦大學已經研發出多輛智能原型車輛。在1985年,第一輛VaMoRs智能原型車輛就已經在戶外高速公路上以l00km/h的速度進行了測試。使用機器視覺來保證橫向和縱向的車輛控制。1988年,在都靈的PROMETHEUS項目第一次委員會會議上,智能車輛維塔(VrrA)進行了展示,該車可以自動停車、行進,并可以向后車傳送相關駕駛信息。這兩種車輛都配備UBM視覺系統。這是一個雙目視覺系統,具有極高的穩定性,同時還包括一些其他種類的傳感器:三個加速度計、一個車輪位置編碼器(可作為里程表或速度計),在VaMoRs車中,ZIPS接收機可以實現車輛位置的初步估算。
美國俄亥俄州立大學智能交通研究所所研發的三輛智能原型車輛,配備不同的傳感器來實現數據融合和錯誤檢測技術:基于視覺的系統;雷達系統(檢測與車道的橫向位置);激光掃描測距器(障礙物檢測);其他傳感器,如側向雷達、轉向陀螺儀。利用基于視覺的方法實現道路檢測。利用一臺安裝在后視鏡處的CCD攝像機,位置要盡可能高,車道檢測系統可以處理這樣的單幅灰度圖像。算法假設道路是水平地,并且有連續或點化的車道標志線。前幾幀檢測的車道標志線數據也用來決定下一步興趣熱點區域,以簡化圖像處理。算法從圖像中提取出重要的亮域,并以向量行駛存儲,如道路消失點或道寬這樣的數據參數,都可以作為計算車道標志線的參考,最后為了處理點劃車道線,可以通過一階多項式曲線來擬合,在進行向量計算。如果檢測到左右車道標志線,就可以利用左右標志線來估計車道中心線;否則也可以利用估計的車道寬度及相關可視標志來估算中心線[2]。
在我國,吉林大學智能車輛課題組長期從事智能車輛自主導航機理及關鍵技術研究。20世紀90年代以來,課題組開展的組態式柔性制造單元及圖像識別自動引導車的研究對我國獨立自主開發一種新型自動引導車輛系統,從而為我國生產組織模式向柔性或半柔性生產組織轉化提供了有意義的技術支撐和關鍵設備。另外,我國清華大學、北京理工大學等單位也正在研發智能車輛。汽車自主駕駛技術是集模式識別、智能控制、計算機科學和汽車操縱動力等多門學科于一體的綜合性技術,汽車自主駕駛功能水平的高低常被用來作為衡量一個國家控制技術水平的重要標準之一。智能車輛的相關技術,也將為促進輪式機器人的研究。
1.3   論文研究內容
本課題主要開發一個基于路徑處理的的智能小車控制系統,通過該系統,我們可以給小車給定一條軌跡,使其按預定路徑行始。小車可以獨自運行,也可人工及時操控調整,使其按正確的軌跡運行。本文主要有以下內容:
1.智能小車相關領域的研究現狀,本文首要介紹了與智能小車相關的機器人、智能車輛的發展歷史、國內外研究現狀。
2.智能小車硬件系統的設計。詳細介紹智能小車硬件電路的設計與實現。智能小車選擇STC89C52單片機最小系統作為核心控制單元,完成電源模塊、傳感器模塊、直流電機驅動模塊、路徑識別模塊、等功能模塊的設計。
3.障基本原理。采用光電紅外對管來識別路徑,紅外發射管與紅外一體接收頭來識別障礙。
4.控制原理。采用紅外識別,遙控器解碼技術,來控制小車的行進方向,從而達到人工操控的目地。
5.行實車試驗,對小車進行調試。
第2章   系統方案論證與分析
本章主要介紹方案的選擇與分析,主要包括單片機模塊、電源模塊、電機驅動模塊、黑線檢測模塊以及液晶顯示模塊的方案選擇與分析。
2.1   小車構架方案論證
小車行走機構的方案分析與選擇:
方案一:履帶式行走機構:運行平穩、可靠,走直線效果很好;但結構相對復雜、移動速度較慢,轉彎過程的控制性能較差。
方案二:腿式行走機構:可以走出多種復雜的路線,但結構復雜、運動中的平衡性和穩定性差、移動速度較慢。
方案三:兩輪式行走機構:結構簡單、運動平穩、移動速度快、轉彎性能好,且易于控制,適用于小功率的行走驅動。
方案四:四輪式行走機構:結構簡單、運動平穩、移動速度快、易于控制。
通過以上四種方案的優缺點,方案三與方案四可具有較大的可行性,但四輪式行走機構需要四個電機,控制算法相對復雜,且需要很大的驅動電流,對硬件要求較高,而兩輪式能滿足此設計要求,且結構簡單,算法方便,要求驅動電流小,硬件結構簡單。本設計以對稱結構,簡單方便為主,固綜上考慮,采用方案三的設計思想。
2.2   電機選擇方案論證
電動機選擇方案與分析:
方案一:采用步進電機:步進電機是將電脈沖信號轉變為角位移或線位移的開環控制元件。在非超載的情況下,電機的轉速、停止的位置只取決于脈沖信號的頻率和脈沖數,而不受負載變化的影響,即給電機加一個脈沖信號,電機則轉過一個步距角,這一線性關系的存在,加上步進電機只有周期性的誤差而無累積誤差等特點。使得在速度、位置等控制領域用步進電機來控制變的非常的簡單。所以,若采用步進電機作為該系統的驅動電機,由于其轉動的角度可以精確定位,可以實現小車前進距離和位置的精確定位。
方案二:采用直流電機:采用直流減速電機,直流減速電機轉動力矩大,體積小,重量輕,裝配簡單,使用方便,過載能力強,能承受頻繁的沖擊負載,可實現無級快速啟動、制動和反轉;能滿足各種不同的特殊運行要求。很方便的就可以實現通過單片機對直流減速電機前進、后退、停止等操作。
通過以上兩種方案的比較,兩種方案均具有較大的可行性,但步進電機并不能象普通的直流電機、交流電機在常規下使用。它必須由雙環形脈沖信號、功率驅動電路等組成控制系統方可使用。步進電機的輸出力矩較低,隨轉速的升高而下降,且在較高的轉速時會急劇下降,其轉速較低時不適于小車等對速度有一定要求的系統。在價格方面,直流電機低于步進電機,易于購買,且對硬件要簡單,完全可以實現此設計的要求,固綜上考慮,此次設計采用直流電機作為動力源。
2.3   電機驅動方案論證
小車運行過程中要求電動機的轉速在一定范圍內調節,調速范圍根據負載的要求而定。由公式(2-1)         
                               (2-1)
N:電樞轉速, :電機端電壓, :電機端電流,:電樞電阻, :常數, :各極總磁通
可以看出,調速可以有三種方法:
1.改變電機端電壓,即改變電樞電源電壓;
2.改變磁通,即改變激磁回路的調節電阻以改變激磁電流
3.在電樞回路中串聯調節電阻。此時的轉速公式(2-2)為:
                                 (2-2)
在實際電路設計中,改變電機的磁通或調節樞回路中串聯調節電阻并不方便、實用。因此,主要選擇通過改變電機兩端電壓的方法來實現電機的調速控制。
下面是通過調節電機兩端電壓達到調速目的的三種方案:
方案一:采用電阻網絡或數字電位器調整電動機的分壓,從而達到調速的目的。但是電阻網絡只能實現有級調速,而數字電阻的元器件價格比較昂貴。更主要的問題在于一般電動機的電阻很小,但電流很大,分壓不僅會降低效率且實現困難。
方案二:采用繼電器對電動機的開或關進行控制,通過開關的切換對小車的速度進行調整。這個方案的優點是電路較為簡單,缺點是繼電器的響應時間慢、機械結構易損壞,壽命較短、可靠性不高。
方案三:采用由達林頓管組成的H型PWM電路。用單片機控制達林頓管使之工作在占空比可調的開關狀態,精確調整電動機轉速。這種電路由于工作在管子的飽和截止模式下,效率非常高。H型電路保證了可以簡單的實現轉速和方向的控制。電子開關的速度很快,穩定性也極強,是一種廣泛采用的PWM調速技術。L298為SGS-THOMSON Microelectronics所出產的雙全橋步進電機專用驅動芯片(Dual Full-Bridge Driver) ,可以方便的驅動兩個直流電機,或一個兩相步進電機。內含二H-Bridge的高電壓、大電流雙全橋式驅動器,接收標準 TTL邏輯準位信號,可驅動46V、2A以下的步進電機,輸出電壓最高可達50V。可以直接通過電源來調節輸出電壓,可以直接用單片機的IO口提供信號,而且電路簡單,使用比較方便。
PWM脈寬調制實際上就是改變電機端電壓的平均值從而進行調速的一種方法。這種方法便于與單片機等數字系統接口,實現方便,而前兩種方法必須要配合一定的外圍模擬電路才能達到單片機控制目的,基于以上分析, 在電動機驅動模塊上擬選定采用PWM脈寬調制方法。選用L298雙全橋驅動芯片。
2.4   供電電源方案論證
供電電源方案的選擇與分析:
方案一:采用兩個電源供電,將電動機驅動電源與單片機以及其周圍電路電源完全隔離,利用光電耦合器傳輸信號。這樣可以使電動機驅動所造成的干擾徹底消除,提高了系統的穩定性。
方案二:采用單一電源供電。所用器件采用12V蓄電池為直流電機供電。因電動機啟動瞬間電流很大,而且PWM驅動的電動機電流波動較大,會造成電壓不穩 、有毛刺等干擾,可采用將12V電壓降壓、穩壓后給單片機系統和其它芯片供電。這樣供電比較簡單[3]。
基于以上的分析,兩種方案均具有可行性,但方案一使用兩個電源,增加了小車的重量與體積,增大了小車的慣性,雖然具有較大的優勢,但綜合考慮,符合設計要求的情況下,選擇方案二做為小車的供電電源。
2.5   尋跡檢測方案論證
尋跡檢測方案的選擇與分析:
方案一:采用對射式紅外光電傳感器。用可見發光二極管與光敏二極管組成的發射-接收分立對管光電傳感器。這種方案的缺點在于,其他環境光源會對光敏二極管的工作產生很大干擾,一旦外界光亮條件改變,很可能造成誤判和漏判。雖然采取超高亮發光管可以降低一定的干擾,但這又將增加額外的功率損耗。在跑道上設置檢測裝置很不方便,故無法應用對射式光電開關探測跑道標志,只能采用反射式光電開關。
方案二:采用反射式紅外光電傳感器,利用紅外線發射管發射紅外線,紅外線二極管進行接收。采用紅外線發射,外面可見光對接收信號的影響較小,尋跡電路中采用比較器LM393,信號進入后就會被放大,可以直接送給單片機進行操作,同時可以加一可調電阻,可以調節傳感器的靈敏度,易于調試。本方案也易于實現,比較可靠[4]。
綜上所述,方案二具有可行性,選擇方案二作為尋跡方案。
2.6   避障方案論證
避障方案的選擇與分析:
方案一:脈沖調制的反射式紅外線接受器。由于該有交流分量的調制信號,則可大幅度減少外界干擾;另外紅外紅線接受的最大工作電流取決于平均電流。如果采用占空比小的調制信號,再平均電流不變的情況下,順勢電流很大(50~100mA),則大大提高了信噪比。并且其反應靈敏,外圍電路也很簡單。它的優點是消除了外界光線的干擾提高了靈敏度。
方案二:采用超聲波傳感器,如果傳感器接收到反射的超聲波,則通知單片機前方有障礙物,否則通知單片機可以向前行駛。市場上很多紅外光電探頭也是基于這個原理。這樣不但能準確完成測量,而且能避免電路的復雜性[5]。
通過以上兩種方案的比較,兩種方案均可行,但第二種方案超聲波傳感器價格比格昂貴,所以與方案一相比,在要求不是很嚴格的情況下,方案一具有更大的選擇性。
2.7   無線遙控方案論證
無線在各領域均有廣泛的運用,而要實現無線控制,則要實現信號的無線接收與發送,基于無線的基本原理,提出以下幾種方案進行選擇與分析:
方案一:采用PT2263與PT2272芯片作為系統的編碼與解碼,其中PT2262為無線發送芯片,PT2272解碼輸出,來實現無線信號的收發,從而達到無線控制的目的。
方案二:采用NRF24L01成品收發模塊。發射距離遠,信號穩定,體積小,市場價格較低。
方案三:使用紅外線進行遙控,采用常用的紅外遙控器進行紅外信號的發射,用一體化紅外接收頭1838芯進行信號的接收,使用軟件進行紅外信號的解碼,以此來識別按鍵,控制小車的行動[6]。
以上三種方案均為常用的無線收發方式,但方案一不僅加大了硬件的需求,而且手工制作接收與發射模塊,對手工要求較高,且發射距離較短。方案二采用成品的收發模塊,體積小,性能穩定,可使用范圍最高可達200m左右,市場價格較低。方案三采用紅外一體接收頭1838,解調信號輸出端DOUT可直接被單片機識別,同時使用軟件進行解碼,大大簡化了電路,發射距離 30m左右,能夠滿足設計需求。經過以上三種方案的比較,決定采用方案三做為小車的無線遙控方案。
2.8   控制方案論證
智能小車系統的核心模塊即為主控單片機。選擇一片數據處理能力強大、片內資源豐富的單片機,對設計各功能的更好實現具有極大意義。一個單片機應用系統的硬件電路設計包含有兩部分內容:一是系統擴展,即單片機內部的功能單元,如ROM﹑RAM﹑I/O口﹑定時/記數器﹑中斷系統等。若不能滿足應用系統的要求時,必須在片外進行擴展。二是系統配置,既按照系統功能要求配置外圍設備,如液晶顯示器﹑A/D﹑D/A轉換器等,且需要設計合適的接口電路。控制系統是機械運行的核心,同樣,在本次智能車的設計,為了實現小車的初步智能化,一個良好與否的控制芯片關系到最終的成敗,而控制類的芯片多種多樣,下面就以下兩種進行選擇與分析:
方案一:采用AT89C51芯片,具有體積小、可靠性高、功耗低、結構簡單、運算速度快等優點,同時被列入教科書已進行系統的學習與分析,是最早比較了解的芯片。其片內數據存儲器RAM有128B,片內程序存儲器Flash ROM 有4KB;可尋址片外64KB的RAM;兩個16位的定時器/計數器;五個中斷源、兩個優先級的中斷控制系統;
方案二:采用STC89C52芯片,繼承了AT89C51的功能,同時在其基礎上進行了優良的改進,功能較強大。其片內8k ROM,256x8bit內部RAM,3個16位可編程定時/計數器,6個中斷源,4層優先級中斷結構[7]。
以上兩種芯片均可行,但AT89C51與STC89C52相比,后者具有較大優勢,同時基于對STC89C52較為熟悉,所以采用方案二,使用STC89C52作為智能小車的總體控制芯片。
2.9   本章小結
本章主要介紹智能小汽車的設計思想與主要功能傳感器的選擇,分別介紹了小車本體的選擇方案,電動機的選擇策略,電動機驅動芯片的選擇方案,尋跡、避障傳感器以及無線遙控方案的選擇,并且也講述了如何供電電源的分配情況。通過上面的詳細講述,我們就可以科學合理的制作自己的小車,并把我們需要的功能加到上面,此款智能小汽車無論從工藝制作到傳感器的選擇,再到電源、電機的分配都較為合理,而且結構簡單方便,適合電子愛好者進一步開發與研究。
本次設計僅為智能自動化的初步研究,以展現基本自動化原理為主,具有很高的科學研究價值,在醫療器械、考古、軍事、智能玩具以及機器人等方面都留有很大的研究與發展空間,相信會給更多的人提供一個研究智能電子產品的平臺。智能單片機由軟件和硬件結合控制,實現電路設定功能,其具有速度快、功耗低、體積小、外圍器件少等優點,除此之外,智能電子產品還具有穩定性好、可靠性高,電路簡單、功能實現容易,技術可升級,產品檔次高等優勢。隨著社會不斷地發展,在未來的日子里,智能化電子產品會越來越受到人們的關注與重視,此款小車就是一個簡單可以從事一些設定功能的智能化電子產品。
第3章   硬件設計3.1   硬件原理圖
              電動智能小車采用STC89C52單片機進行智能控制。開始先手動啟動小車開關,進行模式選擇,并設有復位按鈕。尋跡模式下,小車采用反射型光電探測器檢測黑帶,將信號傳給單片機進行識別,同時通過單片機控制電機使小車前進,以及左、右拐彎的操作。避障模式下,避障模塊開始工作,開始進行避障處理,小車開始進行自由避障,當進入停車區時,由紅外進行識別,小車自動停車。系統原理圖如圖3—1所示。
圖3-1  系統原理圖
3.2   控制電路設計
控制電路是整個智能車的核心,相當于人類的大腦一樣,控制著整量車的行車方式,通過編寫程序來實現各種功能,但單片機的工作需要一定的外圍電路以及下載電路才能保證單片機的正常工作以及程序的下載,下面就將介紹STC89C52單片機的基本功能以及其外圍電路、下載電路的設計。
3.2.1  STC89C52單片機硬件結構
STC89C52單片機是把那些作為控制應用所必需的基本內容都集成在一個尺寸有限的集成電路芯片上。如果按功能劃分,它由如下功能部件組成,即微處理器、數據存儲器、程序存儲器、并行I/O口、串行口、定時器/計數器、中斷系統及特殊功能寄存器。它們都是通過片內單一總線連接而成,其基本結構依舊是CPU加上外圍芯片的傳統結構模式。但對各種功能部件的控制是采用特殊功能寄存器的集中控制方式。
1.中斷系統:具有6個中斷源,2級中斷優先權。
2.定時器/計數器:片內有3個16位定時器/計數器,具有四種工作方式。
3.串行口:1個全雙工的串行口,具有四種工作方式。可用來進行串行通訊,擴展并行I/O口,甚至與多個單片機相連構成多機系統,從而使單片機的功能更強且應用更廣。
4.P1口、P2口、P3口、P4口為4個并行8位I/O口。使單片機對輸出的控制更加靈活[7]。
STC89C52主要功能如表3-1所示。
表3-1 STC89C52主要功能
主要功能特性
兼容MCS51指令系統
8K可反復擦寫Flash ROM
32個雙向I/O口
256x8bit內部RAM
3個16位可編程定時/計數器中斷
時鐘頻率0-24MHz
2個串行中斷
可編程UART串行通道
2個外部中斷源
共6個中斷源
2個讀寫中斷口線
3級加密位
低功耗空閑和掉電模式
軟件設置睡眠和喚醒功能
3.2.2  最小系統的設計
1.時鐘電路
STC89C52內部有一個用于構成振蕩器的高增益反相放大器,引腳RXD和TXD分別是此放大器的輸入端和輸出端。時鐘可以由內部方式產生或外部方式產生。內部方式的時鐘電路如圖3-2(a) 所示,在RXD和TXD引腳上外接定時元件,內部振蕩器就產生自激振蕩。定時元件通常采用石英晶體和電容組成的并聯諧振回路。晶體振蕩頻率可以在1.2~12MHz之間選擇,電容值在5~30pF之間選擇,電容值的大小可對頻率起微調的作用。
外部方式的時鐘電路如圖3-2(b)所示,RXD接地,TXD接外部振蕩器。對外部振蕩信號無特殊要求,只要求保證脈沖寬度,一般采用頻率低于12MHz的方波信號。片內時鐘發生器把振蕩頻率兩分頻,產生一個兩相時鐘P1和P2,供單片機使用。
(a)內部方式時鐘電路                 (b)外部方式時鐘電路
圖3-2時鐘電路
2.復位及復位電路
(1)復位操作
復位是單片機的初始化操作。其主要功能是把PC初始化為0000H,使單片機從0000H單元開始執行程序。除了進入系統的正常初始化之外,當由于程序運行出錯或操作錯誤使系統處于死鎖狀態時,為擺脫困境,也需按復位鍵重新啟動。
除PC之外,復位操作還對其他一些寄存器有影響,它們的復位狀態如表3-2所示。
表3-2 一些寄存器的復位狀態
寄存器
復位狀態
寄存器
復位狀態
PC
0000H
TCON
00H
ACC
00H
TL0
00H
PSW
00H
TH0
00H
SP
--07H
TL1
00H
DPTR
0000H
TH1
00H
P0-P3
FFH
SCON
00H
IP
XX000000B
SBUF
不定
IE
0X000000B
PCON
0XXX0000B
TMOD
00H



(2)復位信號及其產生
RST引腳是復位信號的輸入端。復位信號是高電平有效,其有效時間應持續24個振蕩周期(即二個機器周期)以上。若使用頗率為12MHz的晶振,則復位信號持續時間應超過2μs才能完成復位操作。
整個復位電路包括芯片內、外兩部分。外部電路產生的復位信號(RST)送至施密特觸發器,再由片內復位電路在每個機器周期的S5P2時刻對施密特觸發器的輸出進行采樣,然后才得到內部復位操作所需要的信號。
復位操作有上電自動復位和按鍵手動復位兩種方式。
上電自動復位是通過外部復位電路的電容充電來實現的,其電路如圖3-3(a)所示。這佯,只要電源Vcc的上升時間不超過1ms,就可以實現自動上電復位,即接通電源就成了系統的復位初始化。
按鍵手動復位有電平方式和脈沖方式兩種。其中,按鍵電平復位是通過使復位端經電阻與Vcc電源接通而實現的,其電路如圖3-3(b)所示;而按鍵脈沖復位則是利用RC微分電路產生的正脈沖來實現的,其電路如圖3-3(c)所示:
電路圖中的電阻、電容參數適用于12MHz晶振,能保證復位信號高電平持續時間大于2個機器周期[8]。
本系統的復位電路采用圖3-3(b)上電復位方式。

(a)上電復位          (b)按鍵電平復位          (c)按鍵脈沖復位
圖3-3復位電路
3.2.3  下載端口設計
單片機程序的下載實質上就是單片機的通信,是指單片機與計算機之間的信息交換,通常單片機與計算機之間的通信我們用的有并行和串行兩種通信方式,而在單片機系統以及現代單片機測控系統中,信息的交換多采用串行通信方式。
串行通信又有兩種方式:異步串行通信和同步串行通信。
異步串行通信是發送端和接收端可以由各自的時鐘來控制數據的發送和接收,這兩個時鐘源彼此獨立,互不同步,一位接一位地順序傳送,由此可見,異步串行通信實現容易,設備開銷較小,但每個字符要附加2~3位,用于起止位、校驗位和停止位,各幀之間還有間隔,因此傳輸效率不高。
同步通信是一種連續串行傳送數據的通信方式,一次通信只傳送一幀信息。這里的信息幀與異步通信中的字符幀不同,通常含有若干個數據字符。它們均由同步字符、數據字符和校驗字符(CRC)組成。其中同步字符位于幀開頭,用于確認數據字符的開始。數據字符在同步字符之后,個數沒有限制,由所需傳輸的數據塊長度來決定;校驗字符有1到2個,用于接收端對接收到的字符序列進行正確性的校驗。同步通信的缺點是要求發送時鐘和接收時鐘保持嚴格的同步
在單片機與單片機,單片機與計算機之間通信時,通常采用異步串行通信方式。
PC機的串行口采用的是標準的RS-232接口,單片機的串行口電平是TTL電平,而TTL電平特性與RS-232的電氣特性不匹配,因此為了使單片機的串行口能與RS-232接口通信,必須將串行口的輸入/輸出電平進行轉換。通常用MAX232芯片來完成電平轉換。
MAX232芯片是MAXIM公司生產的、包含兩路接收器和驅動器的IC芯片,它的內部有一個電源電壓變換器,可以把輸入的+5V電源電壓變換成為RS-232輸出電平所需的+10V電壓。所以,采用此芯片接口的品德通信系統只需單一的+5V電源就可以了。對于沒有+12V電源的場合,其適應性更強,加之其價格適中,硬件接口簡單,所以被廣泛采用[8]。圖3-4即為MAX232的基本接線圖。
圖3-4 MAX232基本接線圖
根據MAX232的基本接線與原理,結合單片機的基礎知識,采用串口9針的母頭做為單片機的通信接口,電路圖如圖3-5下所示。
圖3-5 下載通信端口原理
3.3   電源模塊設計
電源模塊為系統其它各個模塊提供所需要的電源,主要為單片機、電機及其驅動、尋跡模塊、臂章模塊供電。供電電壓有9V、6V、5V三種電壓值。本系統采用12V的蓄電池做為供電電源,為得到所需電壓需進行降壓及穩壓操作,采用常用的穩壓芯片7809、7806、7805,分別得到9V、6V、5V穩定電壓,設計電路圖如圖3-6所示:
圖3-6 電源模塊
3.4   電機驅動模塊設計
智能小車區別于普通的電動玩具小車的最大特點是:可以智能調節小車運行狀態。如改變其運動方向、運動速度。在接收到外部主控單片機發出的指令后,能迅速做出“應答”,這就需要電機驅動芯片發揮作用。主控單片機發出指令給電機驅動芯片,驅動芯片接收到單片機指令后,通過輸出端口控制電機迅速作出相應動作。
本設計采用PWM調速技術來實現小車轉向、調速控制,因為設計的電動小車采用2個直流電機,左、右兩側電機獨立控制。
經過之前論證分析后,決定選用L298電機驅動芯片。 L298雙全橋步進電機專用驅動芯片,比較常見的是15腳Multiwatt封裝的L298如圖3-7所示:
圖3-7 L298N Multiwatt封裝外形圖
內部包含4信道邏輯驅動電路,可以方便的驅動兩個直流電機,或一個兩相步進電機。恒壓恒流橋式2A驅動芯片L298內含二個H-Bridge 的高電壓、大電流雙全橋式驅動器,接收標準 TTL邏輯準位信號,可驅動46V、2A以下的步進電機,輸出電壓最高可達50V。可以直接通過電源來調節輸出電壓,可以直接用單片機的IO口提供信號,而且電路簡單,使用比較方便。
圖3-8 電機驅動控制示意圖
通過圖3-8,可清楚看出單片機→電機驅動芯片→直流電機的三級控制結構。采用此種控制結構,各級職責明確,結構清晰易于實現。
本設計采用的是基于PWM原理的H型驅動電路實現調速功能。采用H橋電路可以增加驅動能力,同時保證了完整的電流回路。
采用 PWM 方法調整電機的速度,首先應確定合理的脈沖頻率。脈沖寬度一定時,頻率對電機運行的平穩性有較大影響,脈沖頻率高,馬達運行的連續性好,但帶負載能力差,脈沖頻率低則反之。當脈沖頻率在 100Hz 以下時,電機轉動有明顯的跳動現象,小車不能連續順暢運行。經反復試驗,選擇脈沖頻率1000Hz,電機轉動較平穩,控制效果較佳。
脈寬調速實質上是調節加在電機兩端的平均功率,其表達式(3-3)為:
                (3-3)
式中為電機兩端的平均功率;為電機全速運轉的功率;為脈寬。 當 時,相當于加入直流電壓,這時電機全速運轉,;當時,相當于電機兩端不加電壓,電機靠慣性運轉。
當電機穩定開動后,有(為摩擦力 )則
                                    (3-4)
                                            (3-5)
由(3-5)式可知智能小車的速度與脈寬成正比。
由上述分析,U1、U2這對控制電壓采用了1000Hz 的周期信號控制,通過對其占空比的調整,對車速進行調節。同時,可以通過U1、U2的切換來控制電動機的正轉與反轉。對于L298驅動芯片,內部已集成2個H橋,只需在使能控制端EN1、EN2加載PWM波,通過調節PWM波的占空比,即改變加載到電機兩端的電壓平均值,來實現調速功能。
當IN1端為高電平、IN2端為低電平時,二極管D1到D4導通,電機正轉;反之,二極管D3到D2導通,電機反轉。IN3、IN4端控制方法與IN1、IN2端相同,不再贅述。
下圖3-10為Mutiwatt15封裝形式的L298驅動芯片引腳及外形圖。

圖3-10 L298引腳及外形圖
表3-3列出了L298的各引腳功能。
表3-3 L298引腳符號及功能表
引腳
功能
封裝


1 、15
SEN1、SEN2
分別為兩個H橋的電流反饋腳,不用是可以接地
2 、3
1Y1、1Y2
輸出端,與對應輸入端(IN1、IN2)同邏輯
4
Vs
驅動電壓,最小值需比輸入的低電平電壓高2.5V
5 、7
IN1、IN2
輸入端,TTL電平兼容
6 、11
EN1、EN2
使能端,低電平禁止輸出
8
GND
9
Vss
邏輯電源,4.5~7V
10 、12
IN3、IN4
輸入端,TTL電平兼容
13 、14
2Y1、2Y2
輸出端,與對應輸入端(IN3、IN4)同邏輯

下圖3-11為L298驅動小車電機的PROTEUS功能仿真圖。L298需要兩個電壓,一個為邏輯電路工作所需的5V電壓Vcc,另一個為功率電路所需的驅動電壓Vs。為保護電路,需加上八個續流二極管,二極管的選用要根據PWM的頻率和電機的電流來確定。二極管要有足夠的回復時間和足夠電流承受能力。
圖3-11 L298驅動電機PROTEUS仿真圖
在編寫完成Keil C調速、轉向程序,與PROTEUS軟件進行聯合仿真后,通過在線調試。 經多次實際測試,采用PWM技術進行小車調速、轉向操作具有如下優點:
1.電流一定連續
2.可使電動機在四象限中運行
3.電機停止時有微振電流,能消除靜摩擦死區
4.低速時,每個晶體管的驅動脈沖仍較寬,有利于保證晶體管可靠導通
5.低速平穩性好,調速范圍較大
3.5   尋跡模塊設計
根據此前方案論證,選用紅外反射式光電傳感器,它是一種集發射器和接收器于一體的傳感器,由1個紅外發射管(發射器)和1個光電二極管(接收器)構成。紅外發射管發出的紅外光在遇到反光性較強的物體(表面為白色或近白色)后被折回,被光電二極管接收到,引起光電二極管光生電流的增大。將這個變化轉為電壓信號,就可以被處理器接受并處理,進而實現對反光性差別較大的兩種顏色(如黑白兩色)的識別[9]。
本次設計采用TCRT5000反射式紅外光電傳感器(如圖3-12所示),具有以下特點:
(1)采用高發射功率紅外光電二極管和高靈敏度光電晶體管組成。
(2)檢測距離可調整范圍大,4~13cm可用。
(3)采用非接觸檢測方式。
圖3-12 TCRT5000紅外傳感器
為使反射信號可直接被單片機所識別,使用LM393進行信號的放大,原理圖如圖3-13所示:
圖3-13尋跡模塊原理圖
3.6   避障模塊設計
根據避障方案的先擇,本次設計采用NE555電路進行紅外信號的調制,經紅外發射管發射后,當紅外線遇到障礙物時發生漫反射,反射光被紅外接收一體的1838紅外接收頭所識別并傳給單片機,再由單片機進行判斷并發出行進避障指令,使小車做出相應的動作。
我們在小車車頭處裝有三個光電開關,中間一個光電開關對向正前方,兩側的光電開關向兩邊分開。小車在行進過程中由光電開關向前方發射出紅外線,小車根據三個光電開關接受信號的情況來判斷前方是否有障礙物。
1.紅外發射電路設計
本系統采用555構成的多諧振蕩器電路來產生38KHz左右的方波,以此來控制紅外信號的發射。它具有占空比可調的優點,555各管腳功能如下:
1腳:外接電源負端Vss或接地,一般情況下接地。
2腳:低觸發端
3腳:輸出端Vo
4腳:RD是直接清零端。當RD端接低電平,則時基電路不工作,此時不論TL、TH處于何電平,時基電路輸出為“0”,該端不用時應接高電平。
5腳:VC為控制電壓端。若此端外接電壓,則可改變內部兩個比較器的基準電壓,當該端不用時,應將該端串入一只0.01μF電容接地,以防引入干擾。
6腳:TH高觸發端。
7腳:放電端。該端與放電管集電集相連,用做定時器時電容的放電。
8腳:外接電源VCC
根據555的功能,使用第3引角做為紅外信號觸發端,具體電路如圖3-14所示[10]:
圖3-14 紅外發射電路
2.紅外接收電路設計
該模塊使用一體化紅外接收頭1838,其電路如圖3-15所示。
圖3-15 紅外接收電路
瓷片電容104為去耦電容,DOUT即是解調信號的輸出端,直接與單片機的接口相連。有紅外編碼信號發射時,輸出為檢波整形后的方波信號,并直接提供給單片機,單片機進行識別處理后,再發出指令,控制小車的行進。
其中1838紅外一體化接收頭具內部電路包括紅外監測二極管,放大器,限副器,帶通濾波器,積分電路,比較器等。紅外監測二極管監測到紅外信號,然后把信號送到放大器和限幅器,限幅器把脈沖幅度控制在一定的水平,而不論紅外發射器和接收器的距離遠近。交流信號進入帶通濾波器,帶通濾波器可以通過30khz到60khz的負載波,通過解調電路和積分電路進入比較器,比較器輸出高低電平,還原出發射端的信號波形。注意輸出的高低電平和發射端是反相的,這樣的目的是為了提高接收的靈敏度[11]。
3.7   遙控模塊設計
隨著電子技術的飛速發展.無線遙控已被廣泛的應用到日常生活中及工業中.電視機、電冰箱.視頻監控系統、電視演播系統、電視會議系統、微能控制等多種領域都有應用。在智能控制中,無線遙控更是成為了不可或缺的一部分,同時也是為了在特殊情況下按照人為的意愿進行操作的最佳選擇。
根據上文方案的選擇,本次遙控方案采用紅外紅進行遙控,紅外線特點是不干擾其它設備工作,也不會影響周邊環境。電路調試簡單,若對發射信號進行編碼,可實現多路紅外遙控功能。
本次設計,紅外遙控發射采用常用的遙控器。
接收電路仍采用避障模塊中的紅外接收電路,如上圖3-15所示,其中,紅外1838接收到紅外信號后,傳輸給單片機,由單片機采用程序處理進行紅外的解碼,以此來識別遙控器的按鍵,并發出指令執行相應的操作。
3.8   本章小結
本章主要介紹了智能小車在硬件的方案設計以及部分使用器件的功能、用法。硬件是智能小車的基礎,只有一個合理、完整的硬件系統才能發揮出應有的功能,同時穩定的硬件系統也為小車的運行提供了良好的軟件運行環境,從而使小車整個系統達到和諧的目的。
針對方案的論證選擇,本章對主控單片機的應用進行了詳細的設計,其中包括復位電路、時鐘電路、以及程序下載接口電路,保證了單片機的正常運行及程序的下載。隨后,由于要對電機進行控制,設計了電源模塊與電機的驅動模塊,以便電機的靈活應用,再加以尋跡、避障、遙控等模塊的設計,完成了小車初步智能化的硬件保證,至此,小車的基本構架完成。
第4章   軟件設計
在進行微機控制系統設計時,除了系統硬件設計外,大量的工作就是如何根據每個生產對象的實際需要設計應用程序。因此,軟件設計在微機控制系統設計中占重要地位。對于本系統,軟件更為重要。
在單片機控制系統中,大體上可分為數據處理、過程控制兩個基本類型。數據處理包括:數據的采集、數字濾波、標度變換等。過程控制程序主要是使單片機按一定的方法進行計算,然后再輸出,以便控制生產。
為了完成上述任務,在進行軟件設計時,通常把整個過程分成若干個部分,每一部分叫做一個模塊。所謂“模塊”,實質上就是所需要完成一定功能,相對獨立的程序段,這種程序設計方法叫模塊程序設計法。
模塊程序設計法的主要優點是:
1.單個模塊比起一個完整的程序易編寫及調試;
2.模塊可以共存,一個模塊可以被多個任務在不同條件下調用;
3.模塊程序允許設計者分割任務和利用已有程序,為設計者提供方便。
本系統軟件采用模塊化結構,由主程序﹑定時/計數子程序、尋跡子程序﹑避障子程序﹑遙控子程序等構成。
4.1   軟件設計環境簡介
軟件是實現編程與下載的手段,在設計中不可缺少,在本次設計中,采用Keil uVision2軟件進行編程,采用STC專用的下載軟件STC_ISP進 行程序的下載。
4.1.1  Keil開發環境介紹
Keil軟件提供豐富的庫函數和功能強大的集成開發調試工具,全Windows界面。另外重要的一點,只要看一下編譯后生成的匯編代碼,就能體會到Keil生成的目標代碼效率非常之高,多數語句生成的匯編代碼很緊湊,容易理解。在開發大型軟件時更能體現高級語言的優勢。下面將介紹Keil開發系統各部分功能和使用。
1.基本項目建立
(1) 建立項目
選擇Project菜單下的New Project命令,創建新工程,在對話框中設定新工程的位置,輸入新工程名字保存即可。
(2)選擇CPU
在出現的為新工程選擇CPU的界面,在“data base”欄下選擇所使用的CPU。如圖4-1所示,在此我們選擇Atmel下的AT80C52,確定后,會彈出一“Copy Standard 8051 Startup Code to Project Folder and Add File to Project”信息, 一般選擇“是”即可。
圖4-1 芯片型號選擇界面
(3)給項目加入程序文件
加入的文件可以是C文件,也可以是匯編文件。加入程序文件的過程如下。
(a)在項目管理器窗口中展開Target1文件夾,可以看到Source Group1。
(b)向Source Group1添加文件。在Source Group1點擊鼠標右鍵,會彈出一菜單,其中有一“Add Files to Group‘Source Group1’”命令,點擊后會彈出一對話框,選擇需要加入的程序文件,并且一次可以加入多個文件。如圖4-2所示
圖4-2 添加文件界面
(c)移走項目:在欲移走的文件上點擊鼠標右鍵,會彈出一菜單,執行其中的“Remove File ‘***’”命令即可。
(d)對文件分組:可以按功能對項目管理器中的文件分成組。先使用圖4-2中的“Manage Components”命令建立組,然后用鼠標直接在組之間移動文件即可。
2. Keil基本操作
  • Keil操作界面
編輯狀態的操作界面主要由5部分組成:最上面的菜單欄、菜單欄下面的工具欄、左邊的工程管理窗口、中間的編輯窗口、下面的輸出信息窗口。菜單項主要有:文件、編輯、視圖(View)、工程、調試、片內外設(Peripherals)、工具、軟件版本控制系統(SVCS)、窗口、幫助。 工具都是相應菜單項的快捷操作按鈕,如圖4-3所示:
圖4-3 Keil操作界面
(2)項目的編譯鏈接
設置輸出.hex文件:在Target1上點擊鼠標的右鍵,出現類似圖4-9所示的菜單,點擊執行“Options for Target ‘Target1’”命令,在彈出的會話界面選擇“Output”標簽,選中“Create HEX File”項即可。
編譯鏈接方法:使用Project菜單下的Build target命令或Rebuild all target Files命令,或者直接點擊工具欄中對應的按鈕。
編譯鏈接結果:若有錯誤則不能通過,并且會在信息窗口給出相應的錯誤信息。編譯鏈接通過后,會產生一.hex目標文件[12]。
4.1.2  STC_ISP程序下載說明
產生的hex文件需要下載入單片機中,這樣才能使單片機按照預定的程序執行相應的命令,本次設計采用的是STC的單片機,所以使用其專用的下載軟件SRC-ISP,打開后的界面如圖4-4所示:
圖4-4 STC_ISP界面
單擊左上角下拉菜單,選擇單片機型號,之后選擇好相應的文件及波特率,在單片機與電腦連接完好后,點擊下載按扭,此時給單片機通電,等待程序完成下載,至此,程序下載完成。
4.2   尋跡程序設計
在硬件設計中,采用五個反射式光電紅外管做為尋跡,當中間位置的紅外管尋到黑線時,證時此時小車正在預定軌道上,直行前進,當其它紅外管尋到黑線時,說明此時小車偏離,需要進行較正,具體如表4-1[13]:
表4-1 小車行進狀態表
P1.0
P1.1
P1.2
P1.3
P1.4
小車狀態
控制方法
0
0
1
0
0
居中
前進
0
1
1
0
0
偏右
左調
1
1
1
0
0
1
1
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
1
0
偏左
右調
0
0
1
1
1
0
0
0
1
1
0
0
0
0
1
0
0
0
1
0
0
0
0
0
0
沒在軌道
后退
1
1
1
1
1
停車信號
停車

小車程序設計流程圖如圖4-5所示:
圖4-5 尋跡流程圖
4.3   避障程序設計
在小車車頭處裝有三個紅外線發射管,中間一個發射管對向正前方,兩側的發射管向兩邊分開。小車在行進過程中由紅外發射管發射出紅外線,如果遇到障礙物,剛紅外線反射,同樣,在小車頭部裝有三個相應的紅外線接收裝置,若其接收到紅外信號,則小車會根據三個接收裝置接受信號的情況來判斷前方是否有障礙物,再將所得信息分別傳遞給單片機,由單片機發出相應的指令控制小車的運行情況,其行進指令具體如表4-2所示:
表4-2 避障行進表
P2.7
P2.6
P2.5
障礙方位
控制方法
0
0
0
前行
0
1
0
正前
后退左調
1
0
0
左方
右調整
0
0
1
右方
左調整
0
1
1
右方
左調整
1
1
0
左方
右調整
1
1
1
前方無路
停車


避障程序流程圖如下所示:
圖4-6 避障流程圖
4.4   遙控程序設計
本次設計采用的是紅外遙控器進行控制,用1838一體紅外接收頭進行紅外信號的接收,如此,紅外遙控部分可分為紅外的解碼與遙控兩個部分,下面將分別說明:
(1)紅外解碼
小車進行紅外遙控,能否正確識別紅外信號是關鍵,而要進行紅外信號的識別,首先要將得到的紅外信號進行正確的解碼,如此才能保證紅外信號的有效性。當發射器按鍵按下后,即有遙控碼發出,所按的鍵不同遙控編碼也不同。這種遙控碼具有以下特征:
采用脈寬調制的串行碼,以脈寬為0.565ms、間隔0.56ms、周期為1.125ms 的組合表示二進制的“0”;以脈寬為0.565ms、間隔1.685ms、周期為2.25ms 的組合表示二進制的“1”。遙控器在按鍵按下后,周期性地發出同一種32 位二進制碼,周期約為108ms。一組碼本身的持續時間隨它包含的二進制“0”和“1”的個數不同而不同,大約在45~63ms 之間。當一個鍵按下超過36ms,振蕩器使芯片激活,將發射一組108ms 的編碼脈沖,這108ms 發射代碼由一個起始碼(9ms),一個結果碼(4.5ms),低8 位地址碼(9ms~18ms),高8 位地址碼(9ms~18ms),8位數據碼(9ms~18ms)和這8 位數據的反碼(9ms~18ms)組成。如果鍵按下超過108ms 仍未松開,接下來發射的代碼(連發代碼)將僅由起始碼(9ms)和結束碼(2.5ms)組成[14]。
由紅外遙控器的發射特征,設計解碼程序,其中解碼流程圖如圖4-7所示:
圖4-7 紅外解碼
  • 紅外遙控程序設計
根據紅外解碼程序,將紅外遙控器的按鍵進行解碼,得到一組該按鍵的唯一編碼。考慮到小車的功能,一共8個按鍵進行解碼,分別對其設定功能,主要有行進功能:前進、后退、左轉、右轉、停止;指令選擇功能:尋跡選擇、避障選擇、遙控選擇[15]。

4.5   主程序設計
根據整體思想,將各個模塊進行整合,首先對紅外按鍵進行度取,根據相應的按鍵設定信息,調用相應的功能模塊,執行相應的指令,主程序流程圖如圖4-8所示:
圖4-8 主程序流程圖
4.6   本章小結
本章主要在硬件的基礎上,對軟件進行了詳細的設計,主要介紹了軟件的開發環境、下載方式以及針對尋跡、避障和無線紅外遙控的基本原理,進行了初步的軟件設計,實現了小車的初步智能化。軟件程是小車行動的指揮官,是其靈魂所在,如同人類的思想一樣,指引著前進的方向,但現代化的軟件技術知識還未能達到如同人類一樣的隨心所欲,不能夠完全處理任何突發事件,所以,軟件技術在發展、在不斷的完善,本章程序也僅是程序智能化的初步模型與設想,仍需要不斷進行完善,如此才能達到人類的目標,達到完全的智能化。
結論
本文針對智能車模型進行了簡單的設計,并實現了軟件的控制,從而實現了小車的初步智能化。
在現在社會中,智能化日趨完善,已經深入到各個領域中,對于當代學生,學習智能化的基本原理,實現簡單的智能控制,對以后的學習研究與發展有著重大的作用。對于學習智能自動化的方法,不僅要從理論入手,更要與實踐相結合,如此才能更好的學習自動化知識,達到學以至用,為此,本文設計了簡易的智能小車,趣味性大,同時制作簡單,可以應用到教學之中,增加學生的實際動手能力。尤其在當代的大學中,智能車大賽在每個大學中都有不同程度的開展,日漸得到師生的得視,可見智能車是大學生了解智能化的一個較好途徑。同時,該智能小車更是智能控制的基本模型,可以做為科研項目的基礎模型,在本車的基礎上,可以增加擴展,能夠滿足多種需求。
本次的智能小車主要實現了尋跡、避障、遙控三種功能,用以展示智能小車的基本原理,在此基礎上,可以做多種擴展設計或改動,來實現其它功能,如添加射像頭,用射像頭來識別路徑,如此不僅使路徑識別更加準確,更能學習硬件知識及提高編程技術。同時也可改換避障模塊,采用超聲波等避障方案,也可添加金屬探測、尋聲、尋光、測速等等多種功能,可見本智能小車的靈活性及其發展空間。
對于本次智能小車的設計,在制做過程中,硬件起到了最基本的保證作用,為軟件提供了運行環境,可見,硬件系統的穩定性也很重要,在軟件智能化的同時,不能忽略硬件,只有如此才能保證一個完整的系統,在本設計中,不僅給出了硬件的方案,更詳細的對硬件進行了設計與分析,同時又結合了軟件的設計支持,其中本著以簡化、易懂為主,在硬件選擇上,采用了簡單、基本的方案,在軟件上同樣采用了基本設計思想,最終完成了此次智能車的設計。
致謝
時光如水,歲月如梭,歷時三個月的畢業設計已經告一段落。經過自己不斷的搜索努力以及指導老師的耐心指導和熱情幫助,本設計已經基本完成。在這段時間里,指導老師嚴謹的治學態度和熱忱的工作作風令我十分欽佩,他的指導使我受益匪淺。同時本系單片機原理實驗室的開放也為我的設計提供了實習場地。在此對實驗室的全體老師表示深深的感謝。
通過這次畢業設計,使我深刻地認識到學好專業知識的重要性,也理解了理論聯系實際的含義,并且檢驗了大學四年的學習成果。雖然在這次設計中對于知識的運用和銜接還不夠熟練。但是我將在以后的工作和學習中繼續努力、不斷完善。這三個月的設計是對過去所學知識的系統提高和擴充的過程,為今后的發展打下了良好的基礎。
由于自身水平有限,設計中一定存在很多不足之處,敬請各位老師批評指正。

參考文獻
1  飛思卡爾半導體公司.全國大學生智能車競賽與飛思卡爾S12單片機.單片機與入式系統應用[J].2007,(8):78-79
2  徐鶴.淺談自動導向車(AGV)原理與應用[J].天津成人高等學校聯合學報2005,7(5):50-52
3  Chen.Bo.the electric power drags along to move automatic control systemversion 2,Peking:the machine industrial publisher 2000:127-130
4  高月華.基于紅外光電傳感器的智能車自動尋跡系統設計[J].半導體光電,2009,30(1):134-137
5  王丹,萬威,石維亮.第一屆“飛思卡爾”杯全國大學生智能汽車邀請賽路虎AC隊技術報告[R].東南大學,2006
6  王朝盛,基于16單片機MC9S12DG128B智能車系統設計[D],天津工業大學,2007
7   G.Zhang.the Peng pleased dollar,lately wove MCS-51 the single slice of machine applied a design,version 1,industrial university publisher in Harbin,2003:25-27,411-417
8 邵貝貝.單片機嵌入式應用的在線開發方法[M].北京:清華大學出版社,2004
9  黃開勝,邵貝貝.學做智能車[M].北京航空航天大學出版社,2007
10  X.Bo.the single slice of machine application system designs,Peking:The aerospace aviation university publisher,2-5:46-50
11 第四屆全國大學生“飛思卡爾”杯智能汽車競賽華東賽區培訓會關于規則及創意競賽事項說明[A].杭州電子科技大學.2009
12  李廣弟.單片機基礎.北京.北京航空航天大學出版社,2001:56—64
13 韓飛,陳放,戴春博.第三屆“飛思卡爾”杯全國大學生智能汽車邀請賽CyberSmart隊技術報告.上海交通大學,2008
14 劉林,楊理龍,葉虹.第二屆“飛思卡爾”杯全國大學生智能汽車邀請賽AUTO-2隊技術報告[R].重慶郵電大學,2007
15  Wang Xiuquan.Route Identification and Direction Control of Smart Car Based on CMOS Image Sensor.ISECS International Colloquium on Computing, Communica -tion,Control,and Management.2008


附錄A
英文原文
Route Identification and Direction Control of Smart Car Based on CMOS ImageSensor
Abstract
This paper is designed for the 2nd Freescale Cup National Undergraduate Smart Car Competition. With MC9S12DG128 single chip and smart car model supplied by the committee, a CMOS image sensor is applied to detect the black track on white raceway, which extends the detection range and is helpful to predict the forward path. In this paper, ten-line pixels in an image are analyzed to locate the black track, and the PD algorithm based on PID is employed to control the direction and angle of the steering gear respectively. By repeated testing, the smart car can run stably on the given raceway at a high speed.
Keywords: route identification, direction control, smart car, MC9S12DG128 single chip, image sensor, PID
algorithm.
1. Introduction
The rules of 2nd Freescale Cup National Undergraduate Smart Car Competition [1] may be summarized as follows: the raceway consists of a lot of white boards on which a black track is attached; the smart car designed by participants runs along the black track;every car runs two circles in this game and the best times of two circles will be the final score of this car, and apparently the team whose car takes the best times will bear the palm. According to the rules, we should ensure that the car can distinguish the black track from white board in order to make the smart car run stably. There are two common methods for route identification: one is using infrared diode as the sensor, and another is using CCD/CMOS image sensor [2]. This paper using CMOS image sensor as route identification sensor, the reasons for which are as follows: (1) The range which is covered by a infrared diode sensor is much smaller than a CMOS image sensor covers, and only we can do is to use several diode sensors, but the maximum number of diode sensors used in the smart car is 16; (2) The working voltage of a CMOS image sensor(3.3V) is less than a CCD(12V) or 16 infrared diodes. Apparently, using CMOS image sensor can not only reduce the power consumption but also extend the visible range of the smart car, and also enable the car to predict the forward path. This paper presents a systemic solution for identifying the raceway and controlling the direction of smart car.
2. CMOS camera
There are several kinds of CMOS image sensors in the market. In comparison with other CMOS image sensors, the OV6130 CMOS image sensor [3] made by OmniVision Technologies Inc. is the best choice for us to design a CMOS camera for smart car whether from the viewpoint of cost and performance or power consumption. The OV6130 is a black and white sensor which has a 1/4 inch CMOS imaging device containing approximately 101,376 pixels (352×288). This sensor includes a 356×292 resolution image array, an analog signal processor, dual 8-bit A/D converters, analog video multiplexer, digital data formatter, video port, SCCB interface, registers, and digital controls that include timing block, exposure control, black level control, and white balance.By assembling the experimental circuit we test the OV6130 output ports timing (VSYNC, FODD, HERF). Figure 1 shows the experimental timing diagrams.
(a) VSYNC-FODD timing
(b) FODD-HERF timing
Figure 1 OV6130 experimental timing diagrams
Figure 2 Structure of the image capturing and displaying system
Referring to the OV6130 datasheet, these timing diagrams match well with those given in datasheet, thus we produce the OV6130 CMOS camera based on the experimental circuit. In order to check whether the images captured by camera have clear definition and sharp contrast or not, and also to confirm the visible range of the camera, we design a VB program for capturing the images and displaying them on computer screen. This program bases on three hardware devices: CMOS camera, MCU or single chip, PC. Figure 2 presents how these three devices work together.
Figure 3 compares the original image of a snake line of raceway with the image captured by CMOS camera and then displayed on screen by VB program. It can be seen that the captured image has clear definition and sharp contrast, and this lays a foundation for route identification to be discussed later.
(a) Smart car ready to scan the raceway
(b) Captured image by CMOS camera
Figure 3 Comparison between original image and captured image
3. Route identification
Route identification aims at helping the smart car to recognize the forward track by a method which picks up the black line from the image captured by CMOS camera,and in fact, this method works well in the following cases:straight line, curving line and snake line. By repeated testing, we decide to analyze 10 lines of a whole image to predict the forward condition of smart car. Figure 4 illustrates how we analyze the 10-line pixels of an image.
Figure 4 Route identification diagram
The detailed algorithm is introduced as follows:
Step 1: Calculate coordinates of the black pixel for each line ready to be analyzed. As is illustrated in figure 4, the lines (L0, L1, …, L8, L9) are to be analyzed, and the white points (P0, P1, …, P8, P9) are black pixels for each line. The origin O is superposed by P9, which means there is no black pixel in line L9. Assumed that P(x) and P(y) indicate x-coordinate and y-coordinate of point P,respectively, here both P9(x) and P9(y) equal 0.The key of this step is to find the black pixel of each line. Here, by taking the following datum which shows the gray values of all pixels in a line as example, we introduce
a new approach:
195 210 207 215 208 228 236 243 238 234 238 235 231 233 230 235 230 222 196 207 204 208 209 129 160 65 17 15 19 18 79 151 172 153 173 150 147 159 141 153 147 154 137 139 156 136 141 9 141 133 138 4 127 110 141 112 104
(1) Assumed that P is the black pixel of this line, G(i)denotes a pixel and i indicates it’s position in this line, V(i) is the gray value of G(i), j is the position of the first black pixel appearing in the line from left to right. Here both P(x) and P(y) are initiated to 0, and j is 0 from the start.
(2) As for each pixel in this line from left to right,comparing its gray value with the black value B, here we set B as 30, G(i) is a black pixel on condition that V(i)is less than B. In the line above, the pixels underlined in bold, whose gray values are 17,15,16,18, are component points of the black track, and the pixels underlined both in bold and italic, whose gray values are 9,4, are invalid or interferential pixels. If V(i) is less than B, set j as i. Then compare V(j+1) andV(j+2) with B respectively, results go to two sides: ① If both V(j+1) and V(j+2) are less than B, check the gray value for each pixel from G(j+3) to the end pixel of this line. If the total number of white pixels whose gray values are greater than B surpasses or equals to 3, then set P as G(j+1). Otherwise, go to (3); ② If not, repeat this way from the point G(j+3) on.
(3) If there is no black pixel in this line, set both P(x) and P(y) as 0.

Step 2: Calculate the average coordinates of 10 black pixels. As is showed in Figure 4, M is the average point, M(x) and M(y) are expressed as follows:
Step 3: According to the position of M in the image,we can decide in which direction (ahead, left, or right) the smart car should turn. In Figure 4, the smart car should turn right obviously.
Step 4: Calculate how many angles the car should turn.Further descriptions is illustrated in Figure 5, where α is the very angle by which the car should turn right, F is the central point of two front wheels, M is the average point mentioned previously (see Figure 4), D and L1 indicate the width and height of the visible range of CMOS camera respectively, L2 is the distance between visible range and front wheels, L3 is a half of front wheel’s diameter, L2+L3 means the distance between visible range and the axis of front wheels. Referring to Figure 5, it is very easy to calculate the angle α.
Figure 5 Calculating the angle for turning
4. Direction control
The central unit for direction control of smart car is steering gear, its input signal is PWM (Pulse-Width Modulation) pulse, and it outputs corresponding angle in radian. This paper uses the PWM output port of MC9S12DG128 single chip [4] as the input signal of steering gear. By inputting the given discrete width of pulse, we test the relationship between the input and the output. The formula below expresses it:


where X is tangential value of the output angle, Y is width of the input pulse, y0 is the corresponding value when the output angel equals 0 and k is slope. Using this linear relationship we can operate the smart car simply just by inputting the target angel, thus the width of pulse which is the input signal of steering gear can be computed easily,this method, however, doesn’t work well in the following cases: curving line and snake track. Therefore we apply the PID [5] (Proportional, Integral, and Differential) controller which is very popular in fields of automation and control technology. The kernel theory of PID is to do proportional, integral and differential operations on the input difference respectively, then join the three results as the final output value. In practice, it is very flexible for us to use according to features and demands of the object to be controlled. We may choose one or two or all of PID modules, for example, we can use proportional and integral modules to make up of PI controller.As for the smart car, it is no necessary to consider the tracks which have been gone across, so we only use proportional and differential modules as PD adjuster, and P adjuster has been described previously (see Formula(2)), and the following formula shows the D adjuster:
where enew , eold define the differences of this time and last time when the angle is computed (here difference means the angel by which the steering gear should turn), t is scanning period of CMOS camera, kd is differential coefficient which runs from 0.5 to 1.5, D_out is the output of D adjuster.
5. Conclusions
The challenge of this work is a systemic solution for identifying the black route and controlling the direction of smart car. The performance of CMOS camera is apparently superior to infrared diode whether in scanning range or whether in power consumption, and the clear definition and sharp contrast of image are also important for the further recognition and control. By repeated testing, it is proved that the PD adjuster works well when
the car runs whether on curving line or on snake track at a high speed, and the stability of smart car is also promoted.

中文譯文
基于CMOS攝像頭的智能車路徑識別與方向控制
摘要
本文是為第二屆飛思卡爾杯全國大學生智能車大賽而設計的。用單片機MC9S12DG128和由組委會提供的智能車模型,一個用于檢查白色底板上的黑線的CMOS圖像傳感器,增大了檢測范圍和前瞻距離。本文,每幀圖像數據采集10行進行分析,確定黑線位置,用基于PID算法的PD控制器應用于舵機的方向和角度控制。通過反復測試,智能車能以高速穩定的巡線。
關鍵字:路徑識別,方向控制,智能車,MC9S12DG128單片機,圖像傳感器,PID
1、引言
第二屆飛思卡爾杯全國大學生智能車大賽規則可歸納如下:賽道由多個白色底板并在上面粘上黑色膠帶構成;由參賽隊員設計的只能車需沿黑線運行;每輛車在賽道上跑兩圈,兩圈中的最好成績算作最終得分,顯然哪支隊伍取得的成績最好則贏得比賽。根據規則,我們可以確定的是車必須能從白色底板上識別出黑線才能讓智能車穩定運行。一般有兩種方式檢測路徑:一種是用紅外對管作為傳感器,另外一種就是用CCD/CMOS圖像傳感器。本文使用CMOS圖像傳感器作為路徑識別傳感器,原因有以下幾點:(1)紅外對管檢測范圍遠小于CMOS圖像傳感器,眾所周知,要想增大紅外對管檢測范圍只有增加紅外對管數量才能達到目標,但是傳感器使用的最大數目不得超過16個;(2)CMOS圖像傳感器的工作電壓(3.3V)遠小于CCD(12V)或者16個紅外對管。很明顯,用CMOS圖像傳感器不僅會減小功耗而且還能增加智能車的視野,另外也提高了智能車的前瞻性。本文提出了一種智能車的路徑識別和方向控制的系統性解決方案。
2、CMOS攝像頭
市場上有多種CMOS圖形傳感器。與其他CMOS圖像傳感器相比,由OmniVision科技有限公司制造的OV6130 CMOS傳感器,無論從價格或者是性能、功耗方面都是我們設計智能車的最好選擇。OV6130是一個黑白圖像傳感器,內部有1/4英寸的CMOS感光設備,包含了101376個像素點(352×288)。此傳感器包含了一個356×292分辨率的圖像陣列,一個模擬信號處理器,雙8位精度A/D轉換器,模擬信號多路復用器,二進制數據格式器,視頻輸出口,SCCB接口,寄存器和數字控制寄存器,該寄存器包括時鐘模塊,曝光控制,黑色電平控制和白平衡。
通過連接實驗性電路,我們開始測試OV6130輸出口的時序(VSYNC, FODD,HERF)。圖1表示了實驗得到的時序表
  • VSYNC-FODD 時序圖
(b) FODD-HERF 時序圖
圖1 OV6130實驗所得時序圖
圖2 圖像采集和現實系統結構
根據OV6130的數據手冊,這些時序圖與手冊上給出的數據非常吻合,因此,我們開發了基于實驗電路的OV6130電路板。為了核實攝像頭獲得的圖像是否有較高清晰度和對比度,以及確認攝像頭的可視區域,我們為拍攝到的圖像設計了VB上位機程序以方便在計算機屏幕上顯示所得數據。此程序基于三個硬件設備:CMOS攝像頭,單片機,PC。圖2表示了三個設備是如何同時在一起工作的。
圖3比較了CMOS攝像頭獲得的彎道原始圖像,之后用VB程序將其顯示在計算機上。從它可以看出獲得的圖像有較高清晰度和對比度,這為以后的路徑識別奠定了基礎。

(a)智能車準備掃面賽道
(b)由CMOS攝像頭拍攝到的圖像
圖3 原始圖像與拍攝到的圖像對比
3、路徑識別
路徑識別的目的是通過從獲得的圖像中提取一條黑線幫助智能車感知前方路徑信息。事實上,這種方法用在以下幾種賽道上都工作的很好:直到,彎道,S道。通過重復測試,我們覺定每幅圖像提取10行來預知智能車前方的路況信息。圖4說明了我們如何分析一幅圖像中的10行數據。
圖4 路徑識別示意圖
詳細的算法介紹如下:
Step1:計算每行中黑點的坐標準備分析。如同圖4所示,每行(L0,L1,…,L8,L9)都要分析。圖中的白點(P0,P1,…,P8,P9)表示每行測得的黑點。原點O與P9疊加,意味著字L9沒有黑點。假定P(x)和P(y)表示P點的x坐標和y坐標,故此,知P9(x)和P9(y)均等0。
本步的關鍵在于如何找到各行的黑色像素點。這里,以一行的灰度值為例我們介紹一種新方法:
195 210 207 215 208 228 236 243 238 234 238 235 231 233 230 235 230 222 196 207 204 208 209 129 160 65 17 15 19 1879 151 172 153 173 150 147 159 141 153 147 154 137 139 156 136 141 9141 133 138 4127 110 141 112 104
(1)假定P是此行的黑色像素點,G(i)表示一個像素點,i表示該像素點在此行的位置,V(i)是點G(i)的灰度值,j就是此行從左到右出現的第一個黑色像素點。這里P(x)和P(y)均是從0開始,j也是從0開始。
(2)對于此行從左到右的每個像素點,用閾值B比較他的灰度值,這里B設置值為30,如果V(i)小于B,則G(i)就是一個黑色像素點。在這一行靠前的部分,加粗且帶下劃線的像素17、15、16、18,就是組成黑線的點。斜體加粗且帶下劃線的像素點,9、4,是無效點或者干擾點。如果V(i)比B小,則讓j等于i。然后各自與B比較V(j+1)和V(j+2),只有兩種結果:①如果V(j+1)和V(j+2)均小于B,從G(j+3)開始核對每個像素點的灰度值直到此行的最后一個像素點。如果白色像素點總數,也就是那些灰度值大于B的像素點超過或等于3,則設P等于G(j+1)。否則跳到(3);②如果不是,則從點G(j+3)重復此方法。
(3)如果此行沒有黑色像素點,將P(x),P(y)均設為0。

Step2:計算10個像素點的平均坐標。參考圖4,M就是平均得到的坐標點,M(x)和M(y)被展開如下:
圖5 計算轉角α
Step3:通過圖像中M點的位置我們可以確定出智能車要往那個方向走(直走,左拐,右拐)。在圖4中,很明顯的就可以判斷智能車要往右拐。
Step4:計算智能車要轉多大的角度。更多的描述可以從圖5看出,α是智能車應該轉向的確切控制量,F是兩個前輪的中心點,M是先前提到的平均點(見圖4),D和L1表示CMOS攝像頭可見區域的寬度和高度,分別的,L2就是可視區域與前輪到的距離,L3是前輪的半徑,L2+L3意味著可視區域與前輪軸線的距離。如圖5所示,可非常容易的計算出角度α。
4、方向控制
智能車方向控制最核心的擔憂就是舵機,它的輸入信號是PWM(Pulse-Width Modulation),它的輸出與角度的大小成正比。本文用MC9S12DG128單片機的的PWM輸出腳作為舵機的輸入信號。通過輸入給定的離散脈沖寬度,我們測得輸入和輸出之間的關系。下面的算式就是用來表示輸入與輸出之間的關系:

這里X就是輸出角度的正切值,Y就是輸入脈沖寬度,y0就是輸出角度為0時,相應的脈沖寬度,k就是斜率。用這個線性關系,我們可以簡單的通過目標角度來操作智能車,因此舵機輸入的脈沖寬度可被簡單的計算出來。這個方法,盡管如此,在下列情況不能工作的很好:彎道和S道。因此我們應用了PID(比例,積分,微分)控制器,此方法在自動控制領域應用相當普遍。PID的核心理論是分別對輸入偏差量做比例,積分,微分操作,然后將三個結果聯合起來作為最終輸出值。實際上,對我們來說根據被控物體的特征及需要來實現PID是非常靈活的。我們可以選取一個或兩個或所有的PID模塊來應用,例如,我們可以用比例和積分模塊組成PI控制器。

對于智能車,不必考慮我們已走過的路徑,所以我們只用比例和微分模塊組成PD控制器即可,P調節前面已經描述過(見公式2),下面的公式則是D調節:
這里當角度被計算時enew , eold定義作此刻和前一時刻的差值(這里差值的意思是指舵機應轉的角度和實際角度的差值),t是CMOS攝像頭的掃描周期,kd就是脈沖寬度由0.5ms到1.5ms的微分系數,D_out是D調節器的輸出值。
5、結論
此項工作的挑戰性在于找到一個解決路徑識別和智能車方向控制的一個系統方法。CMOS攝像頭就目前來看是優于紅外對管的,無論從掃描范圍還是功耗方面。高清晰度和對比度對于更超前的識別和控制是非常有用的。通過反復測試,證明PD調節器在智能車運行時工作良好。無論是彎道還是S道均能以高速完美過彎,并且智能車的穩定性也得到了提高。

附錄C
部分硬件原理圖
附圖一 尋跡原理圖
(a)發射原理圖

(b)接收原理圖
附圖二 避障原理圖

附圖三 電機驅動原理圖
附錄B
部分原理程序
尋跡程序:


  1. void xunji()
  2. {
  3.    switch(P1)
  4.     {
  5.       case 0xe4: PWM(10);ahead();break;              //00 1 00
  6.       case 0xf0:                                 //10 0 00
  7.       case 0xe8:                                   //01 0 00
  8.       case 0xf8:                                 //11 0 00
  9.       case 0xec: while(!(P1==0xe4)&&!(P1==0xff))      //01 1 00
  10.                  {turn(0,10);}
  11.                  break;           
  12.       case 0xfc:                                   //11 1 00
  13.       case 0xfe: while(!(P1==0xe0)&&!(P1==0xff))      //11 1 10
  14. {
  15.                      PWM(10);
  16. ahead();
  17. }
  18.               while(!(P1==0xe4)&&!(P1==0xff))            
  19. {
  20.                   turn(0,10);
  21.   }                           
  22.                  break;            
  23.       case 0xe2:                                  //00 0 10
  24.       case 0xe1:                                  //00 0 01
  25.       case 0xe3:                                  //00 0 11
  26.       case 0xe6: while(!(P1==0xe4)&&!(P1==0xff))   //00 1 10
  27.                  {turn(10,0);}
  28.                  break;                        
  29.       case 0xe7:                                  //00 1 11
  30.       case 0xef: while(!(P1==0xe0)&&!(P1==0xff))     //01 1 11   
  31. {
  32.                      PWM(10);
  33. ahead();
  34. }
  35. while(!(P1==0xe4)&&!(P1==0xff))                    
  36. {
  37.                       turn(10,0);
  38. }         
  39.                  break;
  40.       case 0xff: PWM(10);back();while(1){stop();}break;   //11 1 11
  41.       default:PWM(10);ahead();break;
  42.     }
  43. 避障程序:
  44. void bizhang()
  45. {
  46.   while(b1==0)                             //左側有障礙
  47.     {
  48.       PWM(7);
  49.       stop();
  50.       back();delay(100);
  51.       turn_angle(2,45);
  52.     }
  53.   while(b1==0&&b2==0)                     //左側有障礙
  54.     {
  55.       PWM(7);
  56.       stop();
  57.       back();delay(100);
  58.       turn_angle(2,60);
  59.     }
  60.   while(b2==0||(b1==0&&b2==0&&b3==0))      //正前方有障礙
  61.     {
  62.       PWM(7);
  63.       stop();
  64.       back();delay(200);
  65.       turn_angle(1,45);
  66.       while(b1==0)
  67.        {
  68.                               while(b1==0&&b3==0)
  69.                                  {
  70.                                    ahead();delay(100);
  71.                                    while(b1==0&&b3==0)
  72.                                     {
  73.                                       back();delay(100);
  74.                                       turn_angle(2,120);
  75.                                     }
  76.                                  }
  77.          turn_angle(2,5);
  78.          ahead();delay(100);
  79.          while(b1==0&&b2==0&&b3==0)
  80.           {
  81.             back();delay(100);
  82.             turn_angle(2,120);
  83.           }
  84.        }
  85.     }
  86.   while(b1==0&&b3==0)
  87.      {
  88.        ahead();delay(100);
  89.        while(b1==0&&b3==0)
  90.         {
  91.           back();delay(100);
  92.           turn_angle(2,120);
  93.         }
  94.      }
  95.   while(b3==0)                             //右側有障礙
  96.     {
  97.       PWM(7);
  98.       stop();
  99.       back();delay(100);
  100.       turn_angle(1,45);
  101.     }
  102.   while(b2==0&&b3==0)                    //右側有障礙
  103.     {
  104.       PWM(7);
  105.       stop();
  106.       back();delay(100);
  107.       turn_angle(1,60);
  108.     }
  109.   while(b1==1&&b2==1&&b3==1)           //無障礙
  110.     {
  111.       PWM(10);
  112.       ahead();
  113.     }
  114. }
  115. 紅外解碼程序模塊:
  116. 進入中斷,進行紅外的解碼,識別紅外信號的周期,為紅外信號的數據處理與識別做準備
  117. void int1() interrupt 2
  118. {
  119.    if(startflag)
  120.     {
  121.        if(infraredtime>45)      //檢測引導碼
  122.         {
  123.            bitnum=0;
  124.         }
  125.         irdata[bitnum]=infraredtime;
  126.         infraredtime=0;
  127.         bitnum++;
  128.         if(bitnum==33)
  129.          {
  130.            bitnum=0;
  131.            irreceiveok=1;
  132.          }
  133.     }
  134.    else
  135.     {
  136.       startflag=1;
  137.       infraredtime=0;
  138.     }
  139. }
  140. 紅外信號的初步處理,準讀取到的紅外信號值進行存儲,為下一步數據的轉化做準備
  141. void irdeal()
  142. {
  143.    uchar j,i,k,value;
  144.    k=1;
  145.    for(j=0;j<4;j++)
  146.      {
  147.                  for(i=0;i<8;i++)
  148.                   {
  149.                                value=value>>1;
  150.                                if(irdata[k]>6)
  151.                                {
  152.                                  value=value | 0x80;
  153.                                }
  154.                    }
  155.                 ircode[j]=value;
  156.        }
  157.    irdealok=1;
  158. }
  159. 紅外信號的處理,將讀取到的紅外信號轉化為十六進制的數據,以便于識別與顯示。
  160. void irwork()
  161. {
  162.    dis[0]=ircode[0]/16;
  163.    dis[1]=ircode[0]%16;
  164.    dis[2]=ircode[1]/16;
  165.    dis[3]=ircode[1]%16;
  166.    dis[4]=ircode[2]/16;
  167.    dis[5]=ircode[2]%16;
  168.    dis[6]=ircode[3]/16;
  169.    dis[7]=ircode[3]%16;
  170. }
復制代碼

完整的Word格式文檔51黑下載地址:
智能小車控制系統設計-哈爾濱理工大學畢業論文.doc (1.35 MB, 下載次數: 110)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:721016 發表于 2020-4-11 15:21 | 只看該作者
請問一下有整個的原理圖嗎。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久草视频 | 人人鲁人人莫人人爱精品 | 欧美一区二区在线观看 | 99精品视频在线观看 | 日韩欧美亚洲 | 91在线精品视频 | 国产一区二区在线免费观看 | 国产丝袜一区二区三区免费视频 | 成人水多啪啪片 | 欧美高清视频一区 | 国产欧美视频一区二区三区 | 人人看人人搞 | 午夜精品久久久久久久久久久久 | 91精品久久久久久久久中文字幕 | 不卡一区| 嫩草一区二区三区 | 亚洲人成人一区二区在线观看 | 欧美亚洲视频 | 亚洲高清在线观看 | 精品视频一区二区三区 | 日韩三级免费网站 | 九色.com| 久久久影院 | 国产精品国产精品国产专区不卡 | 天堂一区二区三区四区 | 成人免费在线观看 | 草草视频在线播放 | 欧美成人免费在线视频 | 全部免费毛片在线播放网站 | wwww.xxxx免费 | 欧美日韩精品中文字幕 | 国产三区av | 久久精品色欧美aⅴ一区二区 | 成人在线视频免费看 | 男女羞羞视频大全 | 亚洲精品一区二区三区在线 | 亚洲精选久久 | av一级久久 | 一区二区三区播放 | 欧美激情一区二区三级高清视频 | 福利在线观看 |