第1章 緒論
1.1 課題背景2010年10月1日18時59分57秒345毫秒,嫦娥2號點火,19時整成功發(fā)射。在飛行后的29分53秒時,星箭分離,衛(wèi)星進入軌道。19時56分太陽能帆板成功展開……這次探月衛(wèi)星的成功發(fā)射,標(biāo)志著中國自動化領(lǐng)域進入了一個新的階段。
隨著自動化的發(fā)展,自動化開始向復(fù)雜的系統(tǒng)控制和高級的智能控制發(fā)展,并廣泛地應(yīng)用到國防、科學(xué)研究和經(jīng)濟等各個領(lǐng)域,實現(xiàn)更大規(guī)模的自動化,例如大型企業(yè)的綜合自動化系統(tǒng)、全國鐵路自動調(diào)度系統(tǒng)、國家電力網(wǎng)自動調(diào)度系統(tǒng)、空中交通管制系統(tǒng)、城市交通控制系統(tǒng)、自動化指揮系統(tǒng)、國民經(jīng)濟管理系統(tǒng)等。自動化的應(yīng)用正從工程領(lǐng)域向非工程領(lǐng)域擴展,如醫(yī)療自動化、人口控制、經(jīng)濟管理自動化等。自動化將在更大程度上模仿人的智能,機器人已在工業(yè)生產(chǎn)、海洋開發(fā)和宇宙探測等領(lǐng)域得到應(yīng)用,專家系統(tǒng)在醫(yī)療診斷、地質(zhì)勘探等方面取得顯著效果。工廠自動化、辦公自動化、家庭自動化和農(nóng)業(yè)自動化將成為新技術(shù)革命的重要內(nèi)容,并得到迅速發(fā)展。
智能小車,也稱輪式機器人,是一種以汽車電子為背景,涵蓋智能控制、模式識別、傳感技術(shù)、電子電氣、計算機、機械等多學(xué)科的科技創(chuàng)意性設(shè)計,更是自動化的一種綜合體現(xiàn)。一般主要由路徑識別、速度采集、角度控制及車速控制等模塊組成。近些年來全國電子大賽和省內(nèi)電子大賽幾乎每次都有智能小車這方面的題目,全國各高校也都很重視該題目的研究,可見其研究意義很大,也正因此掀起了智能車研究的一股熱潮[1]。
1.1.1 研究目的與意義小車,也就是輪式機器人,最適合在那些人類無法工作的環(huán)境中工作,該技術(shù)可以應(yīng)用于無人駕駛機動車,無人生產(chǎn)線,倉庫,服務(wù)機器人等領(lǐng)域。在危險環(huán)境下,機器人非常適合使用。在這些險惡的環(huán)境下工作,人類必需采取嚴(yán)密的保護措施。而機器人可以進入或穿過這些危險區(qū)域進行維護和探測工作,且不需要得到像對人一樣的保護。例如美國的“勇氣”號和“機遇”號,在火星探測過程中分別在其著陸區(qū)域附近找到火星上過去曾有過水的證據(jù),為人類對火星的探測做出了巨大的貢獻[1]。
機器人的應(yīng)用正逐步滲入到工業(yè)和社會的各個層面,如采用帶有專用新型傳感器的移動式機器人,連續(xù)監(jiān)視采礦狀態(tài),以便及早發(fā)現(xiàn)事故突發(fā)的先兆,采取相應(yīng)的預(yù)防措施;智能輪椅運用口令識別與語音合成、機器人自定位、動態(tài)隨機避障、多傳感器信息融合、實時自適應(yīng)導(dǎo)航控制等功能,運用了現(xiàn)代高新技術(shù)來改善殘障人們的生活質(zhì)量和生活自由度。在智能車輛領(lǐng)域,智能小車自動行駛功能的研究將有助于智能車輛的研究。智能車輛駕駛?cè)蝿?wù)的自動完成將給人類社會的進步帶來巨大的影響,例如能切實提高道路網(wǎng)絡(luò)的利用率、降低車輛的燃油消耗量,尤其是在改進道路交通安全等方面提供了新的解決途徑。
“工欲善其事,必先利其器”。人類在認識自然、改造自然、推動社會進步的過程中,不斷地創(chuàng)造出各種各樣為人類服務(wù)的工具,其中許多具有劃時代的意義。作為20世紀(jì)自動化領(lǐng)域的重大成就,機器人已經(jīng)和人類社會的生產(chǎn)、生活密不可分。因此為了使智能小車工作在最佳狀態(tài),進一步研究及完善其速度和方向的控制是非常有必要的。
本文所研究的內(nèi)容涉及尋跡、避障、人工操控等多種功能,初步實現(xiàn)智能化,可做為各類科研的基礎(chǔ)模型,具有較大的研究空間,適合于多種領(lǐng)域的智能化研究與開發(fā)。
1.2 國內(nèi)外文獻綜述智能車輛的研究始于20世紀(jì)50年代初,美國Barrett Electronics公司開發(fā)出的世界上第一臺自動引導(dǎo)車輛系統(tǒng)(Automated Guided Vehicle System,AGVS)。1974年,瑞典的VolvoKalmar轎車裝配工廠與Schiinder--Digitron公司合作,研制出一種可裝載轎車車體的AGVS,并由多臺該種AGVS組成了汽車裝配線,從而取消了傳統(tǒng)應(yīng)用的拖車及叉車等運輸工具。由于Kalmar工廠采用AGVS獲得了明顯的經(jīng)濟效益,許多西歐國家紛紛效仿Volvo公司,并逐步使AGVS在裝配作業(yè)中成為一種流行的運輸手段。在世界科學(xué)界和工業(yè)設(shè)計界中,眾多的研究機構(gòu)正在研發(fā)智能車輛,使智能車技術(shù)迅速展起來。
德意志聯(lián)邦大學(xué)已經(jīng)研發(fā)出多輛智能原型車輛。在1985年,第一輛VaMoRs智能原型車輛就已經(jīng)在戶外高速公路上以l00km/h的速度進行了測試。使用機器視覺來保證橫向和縱向的車輛控制。1988年,在都靈的PROMETHEUS項目第一次委員會會議上,智能車輛維塔(VrrA)進行了展示,該車可以自動停車、行進,并可以向后車傳送相關(guān)駕駛信息。這兩種車輛都配備UBM視覺系統(tǒng)。這是一個雙目視覺系統(tǒng),具有極高的穩(wěn)定性,同時還包括一些其他種類的傳感器:三個加速度計、一個車輪位置編碼器(可作為里程表或速度計),在VaMoRs車中,ZIPS接收機可以實現(xiàn)車輛位置的初步估算。
美國俄亥俄州立大學(xué)智能交通研究所所研發(fā)的三輛智能原型車輛,配備不同的傳感器來實現(xiàn)數(shù)據(jù)融合和錯誤檢測技術(shù):基于視覺的系統(tǒng);雷達系統(tǒng)(檢測與車道的橫向位置);激光掃描測距器(障礙物檢測);其他傳感器,如側(cè)向雷達、轉(zhuǎn)向陀螺儀。利用基于視覺的方法實現(xiàn)道路檢測。利用一臺安裝在后視鏡處的CCD攝像機,位置要盡可能高,車道檢測系統(tǒng)可以處理這樣的單幅灰度圖像。算法假設(shè)道路是水平地,并且有連續(xù)或點化的車道標(biāo)志線。前幾幀檢測的車道標(biāo)志線數(shù)據(jù)也用來決定下一步興趣熱點區(qū)域,以簡化圖像處理。算法從圖像中提取出重要的亮域,并以向量行駛存儲,如道路消失點或道寬這樣的數(shù)據(jù)參數(shù),都可以作為計算車道標(biāo)志線的參考,最后為了處理點劃車道線,可以通過一階多項式曲線來擬合,在進行向量計算。如果檢測到左右車道標(biāo)志線,就可以利用左右標(biāo)志線來估計車道中心線;否則也可以利用估計的車道寬度及相關(guān)可視標(biāo)志來估算中心線[2]。
在我國,吉林大學(xué)智能車輛課題組長期從事智能車輛自主導(dǎo)航機理及關(guān)鍵技術(shù)研究。20世紀(jì)90年代以來,課題組開展的組態(tài)式柔性制造單元及圖像識別自動引導(dǎo)車的研究對我國獨立自主開發(fā)一種新型自動引導(dǎo)車輛系統(tǒng),從而為我國生產(chǎn)組織模式向柔性或半柔性生產(chǎn)組織轉(zhuǎn)化提供了有意義的技術(shù)支撐和關(guān)鍵設(shè)備。另外,我國清華大學(xué)、北京理工大學(xué)等單位也正在研發(fā)智能車輛。汽車自主駕駛技術(shù)是集模式識別、智能控制、計算機科學(xué)和汽車操縱動力等多門學(xué)科于一體的綜合性技術(shù),汽車自主駕駛功能水平的高低常被用來作為衡量一個國家控制技術(shù)水平的重要標(biāo)準(zhǔn)之一。智能車輛的相關(guān)技術(shù),也將為促進輪式機器人的研究。
1.3 論文研究內(nèi)容本課題主要開發(fā)一個基于路徑處理的的智能小車控制系統(tǒng),通過該系統(tǒng),我們可以給小車給定一條軌跡,使其按預(yù)定路徑行始。小車可以獨自運行,也可人工及時操控調(diào)整,使其按正確的軌跡運行。本文主要有以下內(nèi)容:
1.智能小車相關(guān)領(lǐng)域的研究現(xiàn)狀,本文首要介紹了與智能小車相關(guān)的機器人、智能車輛的發(fā)展歷史、國內(nèi)外研究現(xiàn)狀。
2.智能小車硬件系統(tǒng)的設(shè)計。詳細介紹智能小車硬件電路的設(shè)計與實現(xiàn)。智能小車選擇STC89C52單片機最小系統(tǒng)作為核心控制單元,完成電源模塊、傳感器模塊、直流電機驅(qū)動模塊、路徑識別模塊、等功能模塊的設(shè)計。
3.障基本原理。采用光電紅外對管來識別路徑,紅外發(fā)射管與紅外一體接收頭來識別障礙。
4.控制原理。采用紅外識別,遙控器解碼技術(shù),來控制小車的行進方向,從而達到人工操控的目地。
5.行實車試驗,對小車進行調(diào)試。
第2章 系統(tǒng)方案論證與分析本章主要介紹方案的選擇與分析,主要包括單片機模塊、電源模塊、電機驅(qū)動模塊、黑線檢測模塊以及液晶顯示模塊的方案選擇與分析。
2.1 小車構(gòu)架方案論證小車行走機構(gòu)的方案分析與選擇:
方案一:履帶式行走機構(gòu):運行平穩(wěn)、可靠,走直線效果很好;但結(jié)構(gòu)相對復(fù)雜、移動速度較慢,轉(zhuǎn)彎過程的控制性能較差。
方案二:腿式行走機構(gòu):可以走出多種復(fù)雜的路線,但結(jié)構(gòu)復(fù)雜、運動中的平衡性和穩(wěn)定性差、移動速度較慢。
方案三:兩輪式行走機構(gòu):結(jié)構(gòu)簡單、運動平穩(wěn)、移動速度快、轉(zhuǎn)彎性能好,且易于控制,適用于小功率的行走驅(qū)動。
方案四:四輪式行走機構(gòu):結(jié)構(gòu)簡單、運動平穩(wěn)、移動速度快、易于控制。
通過以上四種方案的優(yōu)缺點,方案三與方案四可具有較大的可行性,但四輪式行走機構(gòu)需要四個電機,控制算法相對復(fù)雜,且需要很大的驅(qū)動電流,對硬件要求較高,而兩輪式能滿足此設(shè)計要求,且結(jié)構(gòu)簡單,算法方便,要求驅(qū)動電流小,硬件結(jié)構(gòu)簡單。本設(shè)計以對稱結(jié)構(gòu),簡單方便為主,固綜上考慮,采用方案三的設(shè)計思想。
2.2 電機選擇方案論證電動機選擇方案與分析:
方案一:采用步進電機:步進電機是將電脈沖信號轉(zhuǎn)變?yōu)榻俏灰苹蚓位移的開環(huán)控制元件。在非超載的情況下,電機的轉(zhuǎn)速、停止的位置只取決于脈沖信號的頻率和脈沖數(shù),而不受負載變化的影響,即給電機加一個脈沖信號,電機則轉(zhuǎn)過一個步距角,這一線性關(guān)系的存在,加上步進電機只有周期性的誤差而無累積誤差等特點。使得在速度、位置等控制領(lǐng)域用步進電機來控制變的非常的簡單。所以,若采用步進電機作為該系統(tǒng)的驅(qū)動電機,由于其轉(zhuǎn)動的角度可以精確定位,可以實現(xiàn)小車前進距離和位置的精確定位。
方案二:采用直流電機:采用直流減速電機,直流減速電機轉(zhuǎn)動力矩大,體積小,重量輕,裝配簡單,使用方便,過載能力強,能承受頻繁的沖擊負載,可實現(xiàn)無級快速啟動、制動和反轉(zhuǎn);能滿足各種不同的特殊運行要求。很方便的就可以實現(xiàn)通過單片機對直流減速電機前進、后退、停止等操作。
通過以上兩種方案的比較,兩種方案均具有較大的可行性,但步進電機并不能象普通的直流電機、交流電機在常規(guī)下使用。它必須由雙環(huán)形脈沖信號、功率驅(qū)動電路等組成控制系統(tǒng)方可使用。步進電機的輸出力矩較低,隨轉(zhuǎn)速的升高而下降,且在較高的轉(zhuǎn)速時會急劇下降,其轉(zhuǎn)速較低時不適于小車等對速度有一定要求的系統(tǒng)。在價格方面,直流電機低于步進電機,易于購買,且對硬件要簡單,完全可以實現(xiàn)此設(shè)計的要求,固綜上考慮,此次設(shè)計采用直流電機作為動力源。
2.3 電機驅(qū)動方案論證小車運行過程中要求電動機的轉(zhuǎn)速在一定范圍內(nèi)調(diào)節(jié),調(diào)速范圍根據(jù)負載的要求而定。由公式(2-1)

(2-1)
N:電樞轉(zhuǎn)速,

:電機端電壓,

:電機端電流,

:電樞電阻,

:常數(shù),

:各極總磁通
可以看出,調(diào)速可以有三種方法:
1.改變電機端電壓

,即改變電樞電源電壓;
2.改變磁通

,即改變激磁回路的調(diào)節(jié)電阻

以改變激磁電流

;
3.在電樞回路中串聯(lián)調(diào)節(jié)電阻

。此時的轉(zhuǎn)速公式(2-2)為:

(2-2)
在實際電路設(shè)計中,改變電機的磁通

或調(diào)節(jié)樞回路中串聯(lián)調(diào)節(jié)電阻

并不方便、實用。因此,主要選擇通過改變電機兩端電壓的方法來實現(xiàn)電機的調(diào)速控制。
下面是通過調(diào)節(jié)電機兩端電壓達到調(diào)速目的的三種方案:
方案一:采用電阻網(wǎng)絡(luò)或數(shù)字電位器調(diào)整電動機的分壓,從而達到調(diào)速的目的。但是電阻網(wǎng)絡(luò)只能實現(xiàn)有級調(diào)速,而數(shù)字電阻的元器件價格比較昂貴。更主要的問題在于一般電動機的電阻很小,但電流很大,分壓不僅會降低效率且實現(xiàn)困難。
方案二:采用繼電器對電動機的開或關(guān)進行控制,通過開關(guān)的切換對小車的速度進行調(diào)整。這個方案的優(yōu)點是電路較為簡單,缺點是繼電器的響應(yīng)時間慢、機械結(jié)構(gòu)易損壞,壽命較短、可靠性不高。
方案三:采用由達林頓管組成的H型PWM電路。用單片機控制達林頓管使之工作在占空比可調(diào)的開關(guān)狀態(tài),精確調(diào)整電動機轉(zhuǎn)速。這種電路由于工作在管子的飽和截止模式下,效率非常高。H型電路保證了可以簡單的實現(xiàn)轉(zhuǎn)速和方向的控制。電子開關(guān)的速度很快,穩(wěn)定性也極強,是一種廣泛采用的PWM調(diào)速技術(shù)。L298為SGS-THOMSON Microelectronics所出產(chǎn)的雙全橋步進電機專用驅(qū)動芯片(Dual Full-Bridge Driver) ,可以方便的驅(qū)動兩個直流電機,或一個兩相步進電機。內(nèi)含二H-Bridge的高電壓、大電流雙全橋式驅(qū)動器,接收標(biāo)準(zhǔn) TTL邏輯準(zhǔn)位信號,可驅(qū)動46V、2A以下的步進電機,輸出電壓最高可達50V?梢灾苯油ㄟ^電源來調(diào)節(jié)輸出電壓,可以直接用單片機的IO口提供信號,而且電路簡單,使用比較方便。
PWM脈寬調(diào)制實際上就是改變電機端電壓的平均值從而進行調(diào)速的一種方法。這種方法便于與單片機等數(shù)字系統(tǒng)接口,實現(xiàn)方便,而前兩種方法必須要配合一定的外圍模擬電路才能達到單片機控制目的,基于以上分析, 在電動機驅(qū)動模塊上擬選定采用PWM脈寬調(diào)制方法。選用L298雙全橋驅(qū)動芯片。
2.4 供電電源方案論證供電電源方案的選擇與分析:
方案一:采用兩個電源供電,將電動機驅(qū)動電源與單片機以及其周圍電路電源完全隔離,利用光電耦合器傳輸信號。這樣可以使電動機驅(qū)動所造成的干擾徹底消除,提高了系統(tǒng)的穩(wěn)定性。
方案二:采用單一電源供電。所用器件采用12V蓄電池為直流電機供電。因電動機啟動瞬間電流很大,而且PWM驅(qū)動的電動機電流波動較大,會造成電壓不穩(wěn) 、有毛刺等干擾,可采用將12V電壓降壓、穩(wěn)壓后給單片機系統(tǒng)和其它芯片供電。這樣供電比較簡單[3]。
基于以上的分析,兩種方案均具有可行性,但方案一使用兩個電源,增加了小車的重量與體積,增大了小車的慣性,雖然具有較大的優(yōu)勢,但綜合考慮,符合設(shè)計要求的情況下,選擇方案二做為小車的供電電源。
2.5 尋跡檢測方案論證尋跡檢測方案的選擇與分析:
方案一:采用對射式紅外光電傳感器。用可見發(fā)光二極管與光敏二極管組成的發(fā)射-接收分立對管光電傳感器。這種方案的缺點在于,其他環(huán)境光源會對光敏二極管的工作產(chǎn)生很大干擾,一旦外界光亮條件改變,很可能造成誤判和漏判。雖然采取超高亮發(fā)光管可以降低一定的干擾,但這又將增加額外的功率損耗。在跑道上設(shè)置檢測裝置很不方便,故無法應(yīng)用對射式光電開關(guān)探測跑道標(biāo)志,只能采用反射式光電開關(guān)。
方案二:采用反射式紅外光電傳感器,利用紅外線發(fā)射管發(fā)射紅外線,紅外線二極管進行接收。采用紅外線發(fā)射,外面可見光對接收信號的影響較小,尋跡電路中采用比較器LM393,信號進入后就會被放大,可以直接送給單片機進行操作,同時可以加一可調(diào)電阻,可以調(diào)節(jié)傳感器的靈敏度,易于調(diào)試。本方案也易于實現(xiàn),比較可靠[4]。
綜上所述,方案二具有可行性,選擇方案二作為尋跡方案。
2.6 避障方案論證避障方案的選擇與分析:
方案一:脈沖調(diào)制的反射式紅外線接受器。由于該有交流分量的調(diào)制信號,則可大幅度減少外界干擾;另外紅外紅線接受的最大工作電流取決于平均電流。如果采用占空比小的調(diào)制信號,再平均電流不變的情況下,順勢電流很大(50~100mA),則大大提高了信噪比。并且其反應(yīng)靈敏,外圍電路也很簡單。它的優(yōu)點是消除了外界光線的干擾提高了靈敏度。
方案二:采用超聲波傳感器,如果傳感器接收到反射的超聲波,則通知單片機前方有障礙物,否則通知單片機可以向前行駛。市場上很多紅外光電探頭也是基于這個原理。這樣不但能準(zhǔn)確完成測量,而且能避免電路的復(fù)雜性[5]。
通過以上兩種方案的比較,兩種方案均可行,但第二種方案超聲波傳感器價格比格昂貴,所以與方案一相比,在要求不是很嚴(yán)格的情況下,方案一具有更大的選擇性。
2.7 無線遙控方案論證無線在各領(lǐng)域均有廣泛的運用,而要實現(xiàn)無線控制,則要實現(xiàn)信號的無線接收與發(fā)送,基于無線的基本原理,提出以下幾種方案進行選擇與分析:
方案一:采用PT2263與PT2272芯片作為系統(tǒng)的編碼與解碼,其中PT2262為無線發(fā)送芯片,PT2272解碼輸出,來實現(xiàn)無線信號的收發(fā),從而達到無線控制的目的。
方案二:采用NRF24L01成品收發(fā)模塊。發(fā)射距離遠,信號穩(wěn)定,體積小,市場價格較低。
方案三:使用紅外線進行遙控,采用常用的紅外遙控器進行紅外信號的發(fā)射,用一體化紅外接收頭1838芯進行信號的接收,使用軟件進行紅外信號的解碼,以此來識別按鍵,控制小車的行動[6]。
以上三種方案均為常用的無線收發(fā)方式,但方案一不僅加大了硬件的需求,而且手工制作接收與發(fā)射模塊,對手工要求較高,且發(fā)射距離較短。方案二采用成品的收發(fā)模塊,體積小,性能穩(wěn)定,可使用范圍最高可達200m左右,市場價格較低。方案三采用紅外一體接收頭1838,解調(diào)信號輸出端DOUT可直接被單片機識別,同時使用軟件進行解碼,大大簡化了電路,發(fā)射距離 30m左右,能夠滿足設(shè)計需求。經(jīng)過以上三種方案的比較,決定采用方案三做為小車的無線遙控方案。
2.8 控制方案論證智能小車系統(tǒng)的核心模塊即為主控單片機。選擇一片數(shù)據(jù)處理能力強大、片內(nèi)資源豐富的單片機,對設(shè)計各功能的更好實現(xiàn)具有極大意義。一個單片機應(yīng)用系統(tǒng)的硬件電路設(shè)計包含有兩部分內(nèi)容:一是系統(tǒng)擴展,即單片機內(nèi)部的功能單元,如ROM﹑RAM﹑I/O口﹑定時/記數(shù)器﹑中斷系統(tǒng)等。若不能滿足應(yīng)用系統(tǒng)的要求時,必須在片外進行擴展。二是系統(tǒng)配置,既按照系統(tǒng)功能要求配置外圍設(shè)備,如液晶顯示器﹑A/D﹑D/A轉(zhuǎn)換器等,且需要設(shè)計合適的接口電路?刂葡到y(tǒng)是機械運行的核心,同樣,在本次智能車的設(shè)計,為了實現(xiàn)小車的初步智能化,一個良好與否的控制芯片關(guān)系到最終的成敗,而控制類的芯片多種多樣,下面就以下兩種進行選擇與分析:
方案一:采用AT89C51芯片,具有體積小、可靠性高、功耗低、結(jié)構(gòu)簡單、運算速度快等優(yōu)點,同時被列入教科書已進行系統(tǒng)的學(xué)習(xí)與分析,是最早比較了解的芯片。其片內(nèi)數(shù)據(jù)存儲器RAM有128B,片內(nèi)程序存儲器Flash ROM 有4KB;可尋址片外64KB的RAM;兩個16位的定時器/計數(shù)器;五個中斷源、兩個優(yōu)先級的中斷控制系統(tǒng);
方案二:采用STC89C52芯片,繼承了AT89C51的功能,同時在其基礎(chǔ)上進行了優(yōu)良的改進,功能較強大。其片內(nèi)8k ROM,256x8bit內(nèi)部RAM,3個16位可編程定時/計數(shù)器,6個中斷源,4層優(yōu)先級中斷結(jié)構(gòu)[7]。
以上兩種芯片均可行,但AT89C51與STC89C52相比,后者具有較大優(yōu)勢,同時基于對STC89C52較為熟悉,所以采用方案二,使用STC89C52作為智能小車的總體控制芯片。
2.9 本章小結(jié)本章主要介紹智能小汽車的設(shè)計思想與主要功能傳感器的選擇,分別介紹了小車本體的選擇方案,電動機的選擇策略,電動機驅(qū)動芯片的選擇方案,尋跡、避障傳感器以及無線遙控方案的選擇,并且也講述了如何供電電源的分配情況。通過上面的詳細講述,我們就可以科學(xué)合理的制作自己的小車,并把我們需要的功能加到上面,此款智能小汽車無論從工藝制作到傳感器的選擇,再到電源、電機的分配都較為合理,而且結(jié)構(gòu)簡單方便,適合電子愛好者進一步開發(fā)與研究。
本次設(shè)計僅為智能自動化的初步研究,以展現(xiàn)基本自動化原理為主,具有很高的科學(xué)研究價值,在醫(yī)療器械、考古、軍事、智能玩具以及機器人等方面都留有很大的研究與發(fā)展空間,相信會給更多的人提供一個研究智能電子產(chǎn)品的平臺。智能單片機由軟件和硬件結(jié)合控制,實現(xiàn)電路設(shè)定功能,其具有速度快、功耗低、體積小、外圍器件少等優(yōu)點,除此之外,智能電子產(chǎn)品還具有穩(wěn)定性好、可靠性高,電路簡單、功能實現(xiàn)容易,技術(shù)可升級,產(chǎn)品檔次高等優(yōu)勢。隨著社會不斷地發(fā)展,在未來的日子里,智能化電子產(chǎn)品會越來越受到人們的關(guān)注與重視,此款小車就是一個簡單可以從事一些設(shè)定功能的智能化電子產(chǎn)品。
第3章 硬件設(shè)計3.1 硬件原理圖 電動智能小車采用STC89C52單片機進行智能控制。開始先手動啟動小車開關(guān),進行模式選擇,并設(shè)有復(fù)位按鈕。尋跡模式下,小車采用反射型光電探測器檢測黑帶,將信號傳給單片機進行識別,同時通過單片機控制電機使小車前進,以及左、右拐彎的操作。避障模式下,避障模塊開始工作,開始進行避障處理,小車開始進行自由避障,當(dāng)進入停車區(qū)時,由紅外進行識別,小車自動停車。系統(tǒng)原理圖如圖3—1所示。
圖3-1 系統(tǒng)原理圖
3.2 控制電路設(shè)計控制電路是整個智能車的核心,相當(dāng)于人類的大腦一樣,控制著整量車的行車方式,通過編寫程序來實現(xiàn)各種功能,但單片機的工作需要一定的外圍電路以及下載電路才能保證單片機的正常工作以及程序的下載,下面就將介紹STC89C52單片機的基本功能以及其外圍電路、下載電路的設(shè)計。
3.2.1 STC89C52單片機硬件結(jié)構(gòu)STC89C52單片機是把那些作為控制應(yīng)用所必需的基本內(nèi)容都集成在一個尺寸有限的集成電路芯片上。如果按功能劃分,它由如下功能部件組成,即微處理器、數(shù)據(jù)存儲器、程序存儲器、并行I/O口、串行口、定時器/計數(shù)器、中斷系統(tǒng)及特殊功能寄存器。它們都是通過片內(nèi)單一總線連接而成,其基本結(jié)構(gòu)依舊是CPU加上外圍芯片的傳統(tǒng)結(jié)構(gòu)模式。但對各種功能部件的控制是采用特殊功能寄存器的集中控制方式。
1.中斷系統(tǒng):具有6個中斷源,2級中斷優(yōu)先權(quán)。
2.定時器/計數(shù)器:片內(nèi)有3個16位定時器/計數(shù)器,具有四種工作方式。
3.串行口:1個全雙工的串行口,具有四種工作方式。可用來進行串行通訊,擴展并行I/O口,甚至與多個單片機相連構(gòu)成多機系統(tǒng),從而使單片機的功能更強且應(yīng)用更廣。
4.P1口、P2口、P3口、P4口為4個并行8位I/O口。使單片機對輸出的控制更加靈活[7]。
STC89C52主要功能如表3-1所示。
表3-1 STC89C52主要功能
3.2.2 最小系統(tǒng)的設(shè)計1.時鐘電路
STC89C52內(nèi)部有一個用于構(gòu)成振蕩器的高增益反相放大器,引腳RXD和TXD分別是此放大器的輸入端和輸出端。時鐘可以由內(nèi)部方式產(chǎn)生或外部方式產(chǎn)生。內(nèi)部方式的時鐘電路如圖3-2(a) 所示,在RXD和TXD引腳上外接定時元件,內(nèi)部振蕩器就產(chǎn)生自激振蕩。定時元件通常采用石英晶體和電容組成的并聯(lián)諧振回路。晶體振蕩頻率可以在1.2~12MHz之間選擇,電容值在5~30pF之間選擇,電容值的大小可對頻率起微調(diào)的作用。
外部方式的時鐘電路如圖3-2(b)所示,RXD接地,TXD接外部振蕩器。對外部振蕩信號無特殊要求,只要求保證脈沖寬度,一般采用頻率低于12MHz的方波信號。片內(nèi)時鐘發(fā)生器把振蕩頻率兩分頻,產(chǎn)生一個兩相時鐘P1和P2,供單片機使用。
(a)內(nèi)部方式時鐘電路 (b)外部方式時鐘電路
圖3-2時鐘電路
2.復(fù)位及復(fù)位電路
(1)復(fù)位操作
復(fù)位是單片機的初始化操作。其主要功能是把PC初始化為0000H,使單片機從0000H單元開始執(zhí)行程序。除了進入系統(tǒng)的正常初始化之外,當(dāng)由于程序運行出錯或操作錯誤使系統(tǒng)處于死鎖狀態(tài)時,為擺脫困境,也需按復(fù)位鍵重新啟動。
除PC之外,復(fù)位操作還對其他一些寄存器有影響,它們的復(fù)位狀態(tài)如表3-2所示。
表3-2 一些寄存器的復(fù)位狀態(tài)
(2)復(fù)位信號及其產(chǎn)生
RST引腳是復(fù)位信號的輸入端。復(fù)位信號是高電平有效,其有效時間應(yīng)持續(xù)24個振蕩周期(即二個機器周期)以上。若使用頗率為12MHz的晶振,則復(fù)位信號持續(xù)時間應(yīng)超過2μs才能完成復(fù)位操作。
整個復(fù)位電路包括芯片內(nèi)、外兩部分。外部電路產(chǎn)生的復(fù)位信號(RST)送至施密特觸發(fā)器,再由片內(nèi)復(fù)位電路在每個機器周期的S5P2時刻對施密特觸發(fā)器的輸出進行采樣,然后才得到內(nèi)部復(fù)位操作所需要的信號。
復(fù)位操作有上電自動復(fù)位和按鍵手動復(fù)位兩種方式。
上電自動復(fù)位是通過外部復(fù)位電路的電容充電來實現(xiàn)的,其電路如圖3-3(a)所示。這佯,只要電源Vcc的上升時間不超過1ms,就可以實現(xiàn)自動上電復(fù)位,即接通電源就成了系統(tǒng)的復(fù)位初始化。
按鍵手動復(fù)位有電平方式和脈沖方式兩種。其中,按鍵電平復(fù)位是通過使復(fù)位端經(jīng)電阻與Vcc電源接通而實現(xiàn)的,其電路如圖3-3(b)所示;而按鍵脈沖復(fù)位則是利用RC微分電路產(chǎn)生的正脈沖來實現(xiàn)的,其電路如圖3-3(c)所示:
電路圖中的電阻、電容參數(shù)適用于12MHz晶振,能保證復(fù)位信號高電平持續(xù)時間大于2個機器周期[8]。
本系統(tǒng)的復(fù)位電路采用圖3-3(b)上電復(fù)位方式。
(a)上電復(fù)位 (b)按鍵電平復(fù)位 (c)按鍵脈沖復(fù)位
圖3-3復(fù)位電路
3.2.3 下載端口設(shè)計單片機程序的下載實質(zhì)上就是單片機的通信,是指單片機與計算機之間的信息交換,通常單片機與計算機之間的通信我們用的有并行和串行兩種通信方式,而在單片機系統(tǒng)以及現(xiàn)代單片機測控系統(tǒng)中,信息的交換多采用串行通信方式。
串行通信又有兩種方式:異步串行通信和同步串行通信。
異步串行通信是發(fā)送端和接收端可以由各自的時鐘來控制數(shù)據(jù)的發(fā)送和接收,這兩個時鐘源彼此獨立,互不同步,一位接一位地順序傳送,由此可見,異步串行通信實現(xiàn)容易,設(shè)備開銷較小,但每個字符要附加2~3位,用于起止位、校驗位和停止位,各幀之間還有間隔,因此傳輸效率不高。
同步通信是一種連續(xù)串行傳送數(shù)據(jù)的通信方式,一次通信只傳送一幀信息。這里的信息幀與異步通信中的字符幀不同,通常含有若干個數(shù)據(jù)字符。它們均由同步字符、數(shù)據(jù)字符和校驗字符(CRC)組成。其中同步字符位于幀開頭,用于確認數(shù)據(jù)字符的開始。數(shù)據(jù)字符在同步字符之后,個數(shù)沒有限制,由所需傳輸?shù)臄?shù)據(jù)塊長度來決定;校驗字符有1到2個,用于接收端對接收到的字符序列進行正確性的校驗。同步通信的缺點是要求發(fā)送時鐘和接收時鐘保持嚴(yán)格的同步
在單片機與單片機,單片機與計算機之間通信時,通常采用異步串行通信方式。
PC機的串行口采用的是標(biāo)準(zhǔn)的RS-232接口,單片機的串行口電平是TTL電平,而TTL電平特性與RS-232的電氣特性不匹配,因此為了使單片機的串行口能與RS-232接口通信,必須將串行口的輸入/輸出電平進行轉(zhuǎn)換。通常用MAX232芯片來完成電平轉(zhuǎn)換。
MAX232芯片是MAXIM公司生產(chǎn)的、包含兩路接收器和驅(qū)動器的IC芯片,它的內(nèi)部有一個電源電壓變換器,可以把輸入的+5V電源電壓變換成為RS-232輸出電平所需的+10V電壓。所以,采用此芯片接口的品德通信系統(tǒng)只需單一的+5V電源就可以了。對于沒有+12V電源的場合,其適應(yīng)性更強,加之其價格適中,硬件接口簡單,所以被廣泛采用[8]。圖3-4即為MAX232的基本接線圖。
圖3-4 MAX232基本接線圖
根據(jù)MAX232的基本接線與原理,結(jié)合單片機的基礎(chǔ)知識,采用串口9針的母頭做為單片機的通信接口,電路圖如圖3-5下所示。
圖3-5 下載通信端口原理
3.3 電源模塊設(shè)計電源模塊為系統(tǒng)其它各個模塊提供所需要的電源,主要為單片機、電機及其驅(qū)動、尋跡模塊、臂章模塊供電。供電電壓有9V、6V、5V三種電壓值。本系統(tǒng)采用12V的蓄電池做為供電電源,為得到所需電壓需進行降壓及穩(wěn)壓操作,采用常用的穩(wěn)壓芯片7809、7806、7805,分別得到9V、6V、5V穩(wěn)定電壓,設(shè)計電路圖如圖3-6所示:
圖3-6 電源模塊
3.4 電機驅(qū)動模塊設(shè)計智能小車區(qū)別于普通的電動玩具小車的最大特點是:可以智能調(diào)節(jié)小車運行狀態(tài)。如改變其運動方向、運動速度。在接收到外部主控單片機發(fā)出的指令后,能迅速做出“應(yīng)答”,這就需要電機驅(qū)動芯片發(fā)揮作用。主控單片機發(fā)出指令給電機驅(qū)動芯片,驅(qū)動芯片接收到單片機指令后,通過輸出端口控制電機迅速作出相應(yīng)動作。
本設(shè)計采用PWM調(diào)速技術(shù)來實現(xiàn)小車轉(zhuǎn)向、調(diào)速控制,因為設(shè)計的電動小車采用2個直流電機,左、右兩側(cè)電機獨立控制。
經(jīng)過之前論證分析后,決定選用L298電機驅(qū)動芯片。 L298雙全橋步進電機專用驅(qū)動芯片,比較常見的是15腳Multiwatt封裝的L298如圖3-7所示:
圖3-7 L298N Multiwatt封裝外形圖
內(nèi)部包含4信道邏輯驅(qū)動電路,可以方便的驅(qū)動兩個直流電機,或一個兩相步進電機。恒壓恒流橋式2A驅(qū)動芯片L298內(nèi)含二個H-Bridge 的高電壓、大電流雙全橋式驅(qū)動器,接收標(biāo)準(zhǔn) TTL邏輯準(zhǔn)位信號,可驅(qū)動46V、2A以下的步進電機,輸出電壓最高可達50V?梢灾苯油ㄟ^電源來調(diào)節(jié)輸出電壓,可以直接用單片機的IO口提供信號,而且電路簡單,使用比較方便。
圖3-8 電機驅(qū)動控制示意圖
通過圖3-8,可清楚看出單片機→電機驅(qū)動芯片→直流電機的三級控制結(jié)構(gòu)。采用此種控制結(jié)構(gòu),各級職責(zé)明確,結(jié)構(gòu)清晰易于實現(xiàn)。
本設(shè)計采用的是基于PWM原理的H型驅(qū)動電路實現(xiàn)調(diào)速功能。采用H橋電路可以增加驅(qū)動能力,同時保證了完整的電流回路。
采用 PWM 方法調(diào)整電機的速度,首先應(yīng)確定合理的脈沖頻率。脈沖寬度一定時,頻率對電機運行的平穩(wěn)性有較大影響,脈沖頻率高,馬達運行的連續(xù)性好,但帶負載能力差,脈沖頻率低則反之。當(dāng)脈沖頻率在 100Hz 以下時,電機轉(zhuǎn)動有明顯的跳動現(xiàn)象,小車不能連續(xù)順暢運行。經(jīng)反復(fù)試驗,選擇脈沖頻率1000Hz,電機轉(zhuǎn)動較平穩(wěn),控制效果較佳。
脈寬調(diào)速實質(zhì)上是調(diào)節(jié)加在電機兩端的平均功率,其表達式(3-3)為:

(3-3)
式中

為電機兩端的平均功率;

為電機全速運轉(zhuǎn)的功率;

為脈寬。 當(dāng)

時,相當(dāng)于加入直流電壓,這時電機全速運轉(zhuǎn),

;當(dāng)

時,相當(dāng)于電機兩端不加電壓,電機靠慣性運轉(zhuǎn)。
當(dāng)電機穩(wěn)定開動后,有

(

為摩擦力 )則

(3-4)

(3-5)
由(3-5)式可知智能小車的速度與脈寬成正比。
由上述分析,U1、U2這對控制電壓采用了1000Hz 的周期信號控制,通過對其占空比的調(diào)整,對車速進行調(diào)節(jié)。同時,可以通過U1、U2的切換來控制電動機的正轉(zhuǎn)與反轉(zhuǎn)。對于L298驅(qū)動芯片,內(nèi)部已集成2個H橋,只需在使能控制端EN1、EN2加載PWM波,通過調(diào)節(jié)PWM波的占空比,即改變加載到電機兩端的電壓平均值,來實現(xiàn)調(diào)速功能。
當(dāng)IN1端為高電平、IN2端為低電平時,二極管D1到D4導(dǎo)通,電機正轉(zhuǎn);反之,二極管D3到D2導(dǎo)通,電機反轉(zhuǎn)。IN3、IN4端控制方法與IN1、IN2端相同,不再贅述。
下圖3-10為Mutiwatt15封裝形式的L298驅(qū)動芯片引腳及外形圖。
圖3-10 L298引腳及外形圖
表3-3列出了L298的各引腳功能。
表3-3 L298引腳符號及功能表
| |
|
|
|
| | |
| | 輸出端,與對應(yīng)輸入端(IN1、IN2)同邏輯 |
| | 驅(qū)動電壓,最小值需比輸入的低電平電壓高2.5V |
| | |
| | |
| | |
| | |
| | |
| | 輸出端,與對應(yīng)輸入端(IN3、IN4)同邏輯 |
下圖3-11為L298驅(qū)動小車電機的PROTEUS功能仿真圖。L298需要兩個電壓,一個為邏輯電路工作所需的5V電壓Vcc,另一個為功率電路所需的驅(qū)動電壓Vs。為保護電路,需加上八個續(xù)流二極管,二極管的選用要根據(jù)PWM的頻率和電機的電流來確定。二極管要有足夠的回復(fù)時間和足夠電流承受能力。
圖3-11 L298驅(qū)動電機PROTEUS仿真圖
在編寫完成Keil C調(diào)速、轉(zhuǎn)向程序,與PROTEUS軟件進行聯(lián)合仿真后,通過在線調(diào)試。 經(jīng)多次實際測試,采用PWM技術(shù)進行小車調(diào)速、轉(zhuǎn)向操作具有如下優(yōu)點:
1.電流一定連續(xù)
2.可使電動機在四象限中運行
3.電機停止時有微振電流,能消除靜摩擦死區(qū)
4.低速時,每個晶體管的驅(qū)動脈沖仍較寬,有利于保證晶體管可靠導(dǎo)通
5.低速平穩(wěn)性好,調(diào)速范圍較大
3.5 尋跡模塊設(shè)計根據(jù)此前方案論證,選用紅外反射式光電傳感器,它是一種集發(fā)射器和接收器于一體的傳感器,由1個紅外發(fā)射管(發(fā)射器)和1個光電二極管(接收器)構(gòu)成。紅外發(fā)射管發(fā)出的紅外光在遇到反光性較強的物體(表面為白色或近白色)后被折回,被光電二極管接收到,引起光電二極管光生電流的增大。將這個變化轉(zhuǎn)為電壓信號,就可以被處理器接受并處理,進而實現(xiàn)對反光性差別較大的兩種顏色(如黑白兩色)的識別[9]。
本次設(shè)計采用TCRT5000反射式紅外光電傳感器(如圖3-12所示),具有以下特點:
(1)采用高發(fā)射功率紅外光電二極管和高靈敏度光電晶體管組成。
(2)檢測距離可調(diào)整范圍大,4~13cm可用。
(3)采用非接觸檢測方式。
圖3-12 TCRT5000紅外傳感器
為使反射信號可直接被單片機所識別,使用LM393進行信號的放大,原理圖如圖3-13所示:
圖3-13尋跡模塊原理圖
3.6 避障模塊設(shè)計根據(jù)避障方案的先擇,本次設(shè)計采用NE555電路進行紅外信號的調(diào)制,經(jīng)紅外發(fā)射管發(fā)射后,當(dāng)紅外線遇到障礙物時發(fā)生漫反射,反射光被紅外接收一體的1838紅外接收頭所識別并傳給單片機,再由單片機進行判斷并發(fā)出行進避障指令,使小車做出相應(yīng)的動作。
我們在小車車頭處裝有三個光電開關(guān),中間一個光電開關(guān)對向正前方,兩側(cè)的光電開關(guān)向兩邊分開。小車在行進過程中由光電開關(guān)向前方發(fā)射出紅外線,小車根據(jù)三個光電開關(guān)接受信號的情況來判斷前方是否有障礙物。
1.紅外發(fā)射電路設(shè)計
本系統(tǒng)采用555構(gòu)成的多諧振蕩器電路來產(chǎn)生38KHz左右的方波,以此來控制紅外信號的發(fā)射。它具有占空比可調(diào)的優(yōu)點,555各管腳功能如下:
1腳:外接電源負端Vss或接地,一般情況下接地。
2腳:
低觸發(fā)端 3腳:輸出端Vo
4腳:RD是直接清零端。當(dāng)RD端接低電平,則時基電路不工作,此時不論TL、TH處于何電平,時基電路輸出為“0”,該端不用時應(yīng)接高電平。
5腳:VC為控制電壓端。若此端外接電壓,則可改變內(nèi)部兩個比較器的基準(zhǔn)電壓,當(dāng)該端不用時,應(yīng)將該端串入一只0.01μF電容接地,以防引入干擾。
6腳:TH高觸發(fā)端。
7腳:放電端。該端與放電管集電集相連,用做定時器時電容的放電。
8腳:外接電源VCC
根據(jù)555的功能,使用第3引角做為紅外信號觸發(fā)端,具體電路如圖3-14所示[10]:
圖3-14 紅外發(fā)射電路
2.紅外接收電路設(shè)計
該模塊使用一體化紅外接收頭1838,其電路如圖3-15所示。
圖3-15 紅外接收電路
瓷片電容104為去耦電容,DOUT即是解調(diào)信號的輸出端,直接與單片機的接口相連。有紅外編碼信號發(fā)射時,輸出為檢波整形后的方波信號,并直接提供給單片機,單片機進行識別處理后,再發(fā)出指令,控制小車的行進。
其中1838紅外一體化接收頭具內(nèi)部電路包括紅外監(jiān)測二極管,放大器,限副器,帶通濾波器,積分電路,比較器等。紅外監(jiān)測二極管監(jiān)測到紅外信號,然后把信號送到放大器和限幅器,限幅器把脈沖幅度控制在一定的水平,而不論紅外發(fā)射器和接收器的距離遠近。交流信號進入帶通濾波器,帶通濾波器可以通過30khz到60khz的負載波,通過解調(diào)電路和積分電路進入比較器,比較器輸出高低電平,還原出發(fā)射端的信號波形。注意輸出的高低電平和發(fā)射端是反相的,這樣的目的是為了提高接收的靈敏度[11]。
3.7 遙控模塊設(shè)計隨著電子技術(shù)的飛速發(fā)展.無線遙控已被廣泛的應(yīng)用到日常生活中及工業(yè)中.電視機、電冰箱.視頻監(jiān)控系統(tǒng)、電視演播系統(tǒng)、電視會議系統(tǒng)、微能控制等多種領(lǐng)域都有應(yīng)用。在智能控制中,無線遙控更是成為了不可或缺的一部分,同時也是為了在特殊情況下按照人為的意愿進行操作的最佳選擇。
根據(jù)上文方案的選擇,本次遙控方案采用紅外紅進行遙控,紅外線特點是不干擾其它設(shè)備工作,也不會影響周邊環(huán)境。電路調(diào)試簡單,若對發(fā)射信號進行編碼,可實現(xiàn)多路紅外遙控功能。
本次設(shè)計,紅外遙控發(fā)射采用常用的遙控器。
接收電路仍采用避障模塊中的紅外接收電路,如上圖3-15所示,其中,紅外1838接收到紅外信號后,傳輸給單片機,由單片機采用程序處理進行紅外的解碼,以此來識別遙控器的按鍵,并發(fā)出指令執(zhí)行相應(yīng)的操作。
3.8 本章小結(jié)本章主要介紹了智能小車在硬件的方案設(shè)計以及部分使用器件的功能、用法。硬件是智能小車的基礎(chǔ),只有一個合理、完整的硬件系統(tǒng)才能發(fā)揮出應(yīng)有的功能,同時穩(wěn)定的硬件系統(tǒng)也為小車的運行提供了良好的軟件運行環(huán)境,從而使小車整個系統(tǒng)達到和諧的目的。
針對方案的論證選擇,本章對主控單片機的應(yīng)用進行了詳細的設(shè)計,其中包括復(fù)位電路、時鐘電路、以及程序下載接口電路,保證了單片機的正常運行及程序的下載。隨后,由于要對電機進行控制,設(shè)計了電源模塊與電機的驅(qū)動模塊,以便電機的靈活應(yīng)用,再加以尋跡、避障、遙控等模塊的設(shè)計,完成了小車初步智能化的硬件保證,至此,小車的基本構(gòu)架完成。
第4章 軟件設(shè)計在進行微機控制系統(tǒng)設(shè)計時,除了系統(tǒng)硬件設(shè)計外,大量的工作就是如何根據(jù)每個生產(chǎn)對象的實際需要設(shè)計應(yīng)用程序。因此,軟件設(shè)計在微機控制系統(tǒng)設(shè)計中占重要地位。對于本系統(tǒng),軟件更為重要。
在單片機控制系統(tǒng)中,大體上可分為數(shù)據(jù)處理、過程控制兩個基本類型。數(shù)據(jù)處理包括:數(shù)據(jù)的采集、數(shù)字濾波、標(biāo)度變換等。過程控制程序主要是使單片機按一定的方法進行計算,然后再輸出,以便控制生產(chǎn)。
為了完成上述任務(wù),在進行軟件設(shè)計時,通常把整個過程分成若干個部分,每一部分叫做一個模塊。所謂“模塊”,實質(zhì)上就是所需要完成一定功能,相對獨立的程序段,這種程序設(shè)計方法叫模塊程序設(shè)計法。
模塊程序設(shè)計法的主要優(yōu)點是:
1.單個模塊比起一個完整的程序易編寫及調(diào)試;
2.模塊可以共存,一個模塊可以被多個任務(wù)在不同條件下調(diào)用;
3.模塊程序允許設(shè)計者分割任務(wù)和利用已有程序,為設(shè)計者提供方便。
本系統(tǒng)軟件采用模塊化結(jié)構(gòu),由主程序﹑定時/計數(shù)子程序、尋跡子程序﹑避障子程序﹑遙控子程序等構(gòu)成。
4.1 軟件設(shè)計環(huán)境簡介軟件是實現(xiàn)編程與下載的手段,在設(shè)計中不可缺少,在本次設(shè)計中,采用Keil uVision2軟件進行編程,采用STC專用的下載軟件STC_ISP進 行程序的下載。
4.1.1 Keil開發(fā)環(huán)境介紹Keil軟件提供豐富的庫函數(shù)和功能強大的集成開發(fā)調(diào)試工具,全Windows界面。另外重要的一點,只要看一下編譯后生成的匯編代碼,就能體會到Keil生成的目標(biāo)代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時更能體現(xiàn)高級語言的優(yōu)勢。下面將介紹Keil開發(fā)系統(tǒng)各部分功能和使用。
1.基本項目建立
(1) 建立項目
選擇Project菜單下的New Project命令,創(chuàng)建新工程,在對話框中設(shè)定新工程的位置,輸入新工程名字保存即可。
(2)選擇CPU
在出現(xiàn)的為新工程選擇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點擊鼠標(biāo)右鍵,會彈出一菜單,其中有一“Add Files to Group‘Source Group1’”命令,點擊后會彈出一對話框,選擇需要加入的程序文件,并且一次可以加入多個文件。如圖4-2所示
圖4-2 添加文件界面
(c)移走項目:在欲移走的文件上點擊鼠標(biāo)右鍵,會彈出一菜單,執(zhí)行其中的“Remove File ‘***’”命令即可。
(d)對文件分組:可以按功能對項目管理器中的文件分成組。先使用圖4-2中的“Manage Components”命令建立組,然后用鼠標(biāo)直接在組之間移動文件即可。
2. Keil基本操作
編輯狀態(tài)的操作界面主要由5部分組成:最上面的菜單欄、菜單欄下面的工具欄、左邊的工程管理窗口、中間的編輯窗口、下面的輸出信息窗口。菜單項主要有:文件、編輯、視圖(View)、工程、調(diào)試、片內(nèi)外設(shè)(Peripherals)、工具、軟件版本控制系統(tǒng)(SVCS)、窗口、幫助。 工具都是相應(yīng)菜單項的快捷操作按鈕,如圖4-3所示:
圖4-3 Keil操作界面
(2)項目的編譯鏈接
設(shè)置輸出.hex文件:在Target1上點擊鼠標(biāo)的右鍵,出現(xiàn)類似圖4-9所示的菜單,點擊執(zhí)行“Options for Target ‘Target1’”命令,在彈出的會話界面選擇“Output”標(biāo)簽,選中“Create HEX File”項即可。
編譯鏈接方法:使用Project菜單下的Build target命令或Rebuild all target Files命令,或者直接點擊工具欄中對應(yīng)的按鈕。
編譯鏈接結(jié)果:若有錯誤則不能通過,并且會在信息窗口給出相應(yīng)的錯誤信息。編譯鏈接通過后,會產(chǎn)生一.hex目標(biāo)文件[12]。
4.1.2 STC_ISP程序下載說明產(chǎn)生的hex文件需要下載入單片機中,這樣才能使單片機按照預(yù)定的程序執(zhí)行相應(yīng)的命令,本次設(shè)計采用的是STC的單片機,所以使用其專用的下載軟件SRC-ISP,打開后的界面如圖4-4所示:
圖4-4 STC_ISP界面
單擊左上角下拉菜單,選擇單片機型號,之后選擇好相應(yīng)的文件及波特率,在單片機與電腦連接完好后,點擊下載按扭,此時給單片機通電,等待程序完成下載,至此,程序下載完成。
4.2 尋跡程序設(shè)計在硬件設(shè)計中,采用五個反射式光電紅外管做為尋跡,當(dāng)中間位置的紅外管尋到黑線時,證時此時小車正在預(yù)定軌道上,直行前進,當(dāng)其它紅外管尋到黑線時,說明此時小車偏離,需要進行較正,具體如表4-1[13]:
表4-1 小車行進狀態(tài)表
小車程序設(shè)計流程圖如圖4-5所示:
圖4-5 尋跡流程圖
4.3 避障程序設(shè)計在小車車頭處裝有三個紅外線發(fā)射管,中間一個發(fā)射管對向正前方,兩側(cè)的發(fā)射管向兩邊分開。小車在行進過程中由紅外發(fā)射管發(fā)射出紅外線,如果遇到障礙物,剛紅外線反射,同樣,在小車頭部裝有三個相應(yīng)的紅外線接收裝置,若其接收到紅外信號,則小車會根據(jù)三個接收裝置接受信號的情況來判斷前方是否有障礙物,再將所得信息分別傳遞給單片機,由單片機發(fā)出相應(yīng)的指令控制小車的運行情況,其行進指令具體如表4-2所示:
表4-2 避障行進表
避障程序流程圖如下所示:
圖4-6 避障流程圖
4.4 遙控程序設(shè)計本次設(shè)計采用的是紅外遙控器進行控制,用1838一體紅外接收頭進行紅外信號的接收,如此,紅外遙控部分可分為紅外的解碼與遙控兩個部分,下面將分別說明:
(1)紅外解碼
小車進行紅外遙控,能否正確識別紅外信號是關(guān)鍵,而要進行紅外信號的識別,首先要將得到的紅外信號進行正確的解碼,如此才能保證紅外信號的有效性。當(dāng)發(fā)射器按鍵按下后,即有遙控碼發(fā)出,所按的鍵不同遙控編碼也不同。這種遙控碼具有以下特征:
采用脈寬調(diào)制的串行碼,以脈寬為0.565ms、間隔0.56ms、周期為1.125ms 的組合表示二進制的“0”;以脈寬為0.565ms、間隔1.685ms、周期為2.25ms 的組合表示二進制的“1”。遙控器在按鍵按下后,周期性地發(fā)出同一種32 位二進制碼,周期約為108ms。一組碼本身的持續(xù)時間隨它包含的二進制“0”和“1”的個數(shù)不同而不同,大約在45~63ms 之間。當(dāng)一個鍵按下超過36ms,振蕩器使芯片激活,將發(fā)射一組108ms 的編碼脈沖,這108ms 發(fā)射代碼由一個起始碼(9ms),一個結(jié)果碼(4.5ms),低8 位地址碼(9ms~18ms),高8 位地址碼(9ms~18ms),8位數(shù)據(jù)碼(9ms~18ms)和這8 位數(shù)據(jù)的反碼(9ms~18ms)組成。如果鍵按下超過108ms 仍未松開,接下來發(fā)射的代碼(連發(fā)代碼)將僅由起始碼(9ms)和結(jié)束碼(2.5ms)組成[14]。
由紅外遙控器的發(fā)射特征,設(shè)計解碼程序,其中解碼流程圖如圖4-7所示:
圖4-7 紅外解碼
根據(jù)紅外解碼程序,將紅外遙控器的按鍵進行解碼,得到一組該按鍵的唯一編碼。考慮到小車的功能,一共8個按鍵進行解碼,分別對其設(shè)定功能,主要有行進功能:前進、后退、左轉(zhuǎn)、右轉(zhuǎn)、停止;指令選擇功能:尋跡選擇、避障選擇、遙控選擇[15]。
4.5 主程序設(shè)計根據(jù)整體思想,將各個模塊進行整合,首先對紅外按鍵進行度取,根據(jù)相應(yīng)的按鍵設(shè)定信息,調(diào)用相應(yīng)的功能模塊,執(zhí)行相應(yīng)的指令,主程序流程圖如圖4-8所示:
圖4-8 主程序流程圖
4.6 本章小結(jié)本章主要在硬件的基礎(chǔ)上,對軟件進行了詳細的設(shè)計,主要介紹了軟件的開發(fā)環(huán)境、下載方式以及針對尋跡、避障和無線紅外遙控的基本原理,進行了初步的軟件設(shè)計,實現(xiàn)了小車的初步智能化。軟件程是小車行動的指揮官,是其靈魂所在,如同人類的思想一樣,指引著前進的方向,但現(xiàn)代化的軟件技術(shù)知識還未能達到如同人類一樣的隨心所欲,不能夠完全處理任何突發(fā)事件,所以,軟件技術(shù)在發(fā)展、在不斷的完善,本章程序也僅是程序智能化的初步模型與設(shè)想,仍需要不斷進行完善,如此才能達到人類的目標(biāo),達到完全的智能化。
結(jié)論
本文針對智能車模型進行了簡單的設(shè)計,并實現(xiàn)了軟件的控制,從而實現(xiàn)了小車的初步智能化。
在現(xiàn)在社會中,智能化日趨完善,已經(jīng)深入到各個領(lǐng)域中,對于當(dāng)代學(xué)生,學(xué)習(xí)智能化的基本原理,實現(xiàn)簡單的智能控制,對以后的學(xué)習(xí)研究與發(fā)展有著重大的作用。對于學(xué)習(xí)智能自動化的方法,不僅要從理論入手,更要與實踐相結(jié)合,如此才能更好的學(xué)習(xí)自動化知識,達到學(xué)以至用,為此,本文設(shè)計了簡易的智能小車,趣味性大,同時制作簡單,可以應(yīng)用到教學(xué)之中,增加學(xué)生的實際動手能力。尤其在當(dāng)代的大學(xué)中,智能車大賽在每個大學(xué)中都有不同程度的開展,日漸得到師生的得視,可見智能車是大學(xué)生了解智能化的一個較好途徑。同時,該智能小車更是智能控制的基本模型,可以做為科研項目的基礎(chǔ)模型,在本車的基礎(chǔ)上,可以增加擴展,能夠滿足多種需求。
本次的智能小車主要實現(xiàn)了尋跡、避障、遙控三種功能,用以展示智能小車的基本原理,在此基礎(chǔ)上,可以做多種擴展設(shè)計或改動,來實現(xiàn)其它功能,如添加射像頭,用射像頭來識別路徑,如此不僅使路徑識別更加準(zhǔn)確,更能學(xué)習(xí)硬件知識及提高編程技術(shù)。同時也可改換避障模塊,采用超聲波等避障方案,也可添加金屬探測、尋聲、尋光、測速等等多種功能,可見本智能小車的靈活性及其發(fā)展空間。
對于本次智能小車的設(shè)計,在制做過程中,硬件起到了最基本的保證作用,為軟件提供了運行環(huán)境,可見,硬件系統(tǒng)的穩(wěn)定性也很重要,在軟件智能化的同時,不能忽略硬件,只有如此才能保證一個完整的系統(tǒng),在本設(shè)計中,不僅給出了硬件的方案,更詳細的對硬件進行了設(shè)計與分析,同時又結(jié)合了軟件的設(shè)計支持,其中本著以簡化、易懂為主,在硬件選擇上,采用了簡單、基本的方案,在軟件上同樣采用了基本設(shè)計思想,最終完成了此次智能車的設(shè)計。
致謝
時光如水,歲月如梭,歷時三個月的畢業(yè)設(shè)計已經(jīng)告一段落。經(jīng)過自己不斷的搜索努力以及指導(dǎo)老師的耐心指導(dǎo)和熱情幫助,本設(shè)計已經(jīng)基本完成。在這段時間里,指導(dǎo)老師嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度和熱忱的工作作風(fēng)令我十分欽佩,他的指導(dǎo)使我受益匪淺。同時本系單片機原理實驗室的開放也為我的設(shè)計提供了實習(xí)場地。在此對實驗室的全體老師表示深深的感謝。
通過這次畢業(yè)設(shè)計,使我深刻地認識到學(xué)好專業(yè)知識的重要性,也理解了理論聯(lián)系實際的含義,并且檢驗了大學(xué)四年的學(xué)習(xí)成果。雖然在這次設(shè)計中對于知識的運用和銜接還不夠熟練。但是我將在以后的工作和學(xué)習(xí)中繼續(xù)努力、不斷完善。這三個月的設(shè)計是對過去所學(xué)知識的系統(tǒng)提高和擴充的過程,為今后的發(fā)展打下了良好的基礎(chǔ)。
由于自身水平有限,設(shè)計中一定存在很多不足之處,敬請各位老師批評指正。
參考文獻
1 飛思卡爾半導(dǎo)體公司.全國大學(xué)生智能車競賽與飛思卡爾S12單片機.單片機與入式系統(tǒng)應(yīng)用[J].2007,(8):78-79
2 徐鶴.淺談自動導(dǎo)向車(AGV)原理與應(yīng)用[J].天津成人高等學(xué)校聯(lián)合學(xué)報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 高月華.基于紅外光電傳感器的智能車自動尋跡系統(tǒng)設(shè)計[J].半導(dǎo)體光電,2009,30(1):134-137
5 王丹,萬威,石維亮.第一屆“飛思卡爾”杯全國大學(xué)生智能汽車邀請賽路虎AC隊技術(shù)報告[R].東南大學(xué),2006
6 王朝盛,基于16單片機MC9S12DG128B智能車系統(tǒng)設(shè)計[D],天津工業(yè)大學(xué),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 邵貝貝.單片機嵌入式應(yīng)用的在線開發(fā)方法[M].北京:清華大學(xué)出版社,2004
9 黃開勝,邵貝貝.學(xué)做智能車[M].北京航空航天大學(xué)出版社,2007
10 X.Bo.the single slice of machine application system designs,Peking:The aerospace aviation university publisher,2-5:46-50
11 第四屆全國大學(xué)生“飛思卡爾”杯智能汽車競賽華東賽區(qū)培訓(xùn)會關(guān)于規(guī)則及創(chuàng)意競賽事項說明[A].杭州電子科技大學(xué).2009
12 李廣弟.單片機基礎(chǔ).北京.北京航空航天大學(xué)出版社,2001:56—64
13 韓飛,陳放,戴春博.第三屆“飛思卡爾”杯全國大學(xué)生智能汽車邀請賽CyberSmart隊技術(shù)報告.上海交通大學(xué),2008
14 劉林,楊理龍,葉虹.第二屆“飛思卡爾”杯全國大學(xué)生智能汽車邀請賽AUTO-2隊技術(shù)報告[R].重慶郵電大學(xué),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攝像頭的智能車路徑識別與方向控制
摘要
本文是為第二屆飛思卡爾杯全國大學(xué)生智能車大賽而設(shè)計的。用單片機MC9S12DG128和由組委會提供的智能車模型,一個用于檢查白色底板上的黑線的CMOS圖像傳感器,增大了檢測范圍和前瞻距離。本文,每幀圖像數(shù)據(jù)采集10行進行分析,確定黑線位置,用基于PID算法的PD控制器應(yīng)用于舵機的方向和角度控制。通過反復(fù)測試,智能車能以高速穩(wěn)定的巡線。
關(guān)鍵字:路徑識別,方向控制,智能車,MC9S12DG128單片機,圖像傳感器,PID
1、引言
第二屆飛思卡爾杯全國大學(xué)生智能車大賽規(guī)則可歸納如下:賽道由多個白色底板并在上面粘上黑色膠帶構(gòu)成;由參賽隊員設(shè)計的只能車需沿黑線運行;每輛車在賽道上跑兩圈,兩圈中的最好成績算作最終得分,顯然哪支隊伍取得的成績最好則贏得比賽。根據(jù)規(guī)則,我們可以確定的是車必須能從白色底板上識別出黑線才能讓智能車穩(wěn)定運行。一般有兩種方式檢測路徑:一種是用紅外對管作為傳感器,另外一種就是用CCD/CMOS圖像傳感器。本文使用CMOS圖像傳感器作為路徑識別傳感器,原因有以下幾點:(1)紅外對管檢測范圍遠小于CMOS圖像傳感器,眾所周知,要想增大紅外對管檢測范圍只有增加紅外對管數(shù)量才能達到目標(biāo),但是傳感器使用的最大數(shù)目不得超過16個;(2)CMOS圖像傳感器的工作電壓(3.3V)遠小于CCD(12V)或者16個紅外對管。很明顯,用CMOS圖像傳感器不僅會減小功耗而且還能增加智能車的視野,另外也提高了智能車的前瞻性。本文提出了一種智能車的路徑識別和方向控制的系統(tǒng)性解決方案。
2、CMOS攝像頭
市場上有多種CMOS圖形傳感器。與其他CMOS圖像傳感器相比,由OmniVision科技有限公司制造的OV6130 CMOS傳感器,無論從價格或者是性能、功耗方面都是我們設(shè)計智能車的最好選擇。OV6130是一個黑白圖像傳感器,內(nèi)部有1/4英寸的CMOS感光設(shè)備,包含了101376個像素點(352×288)。此傳感器包含了一個356×292分辨率的圖像陣列,一個模擬信號處理器,雙8位精度A/D轉(zhuǎn)換器,模擬信號多路復(fù)用器,二進制數(shù)據(jù)格式器,視頻輸出口,SCCB接口,寄存器和數(shù)字控制寄存器,該寄存器包括時鐘模塊,曝光控制,黑色電平控制和白平衡。
通過連接實驗性電路,我們開始測試OV6130輸出口的時序(VSYNC, FODD,HERF)。圖1表示了實驗得到的時序表
(b) FODD-HERF 時序圖
圖1 OV6130實驗所得時序圖
圖2 圖像采集和現(xiàn)實系統(tǒng)結(jié)構(gòu)
根據(jù)OV6130的數(shù)據(jù)手冊,這些時序圖與手冊上給出的數(shù)據(jù)非常吻合,因此,我們開發(fā)了基于實驗電路的OV6130電路板。為了核實攝像頭獲得的圖像是否有較高清晰度和對比度,以及確認攝像頭的可視區(qū)域,我們?yōu)榕臄z到的圖像設(shè)計了VB上位機程序以方便在計算機屏幕上顯示所得數(shù)據(jù)。此程序基于三個硬件設(shè)備:CMOS攝像頭,單片機,PC。圖2表示了三個設(shè)備是如何同時在一起工作的。
圖3比較了CMOS攝像頭獲得的彎道原始圖像,之后用VB程序?qū)⑵滹@示在計算機上。從它可以看出獲得的圖像有較高清晰度和對比度,這為以后的路徑識別奠定了基礎(chǔ)。
(a)智能車準(zhǔn)備掃面賽道
(b)由CMOS攝像頭拍攝到的圖像
圖3 原始圖像與拍攝到的圖像對比
3、路徑識別
路徑識別的目的是通過從獲得的圖像中提取一條黑線幫助智能車感知前方路徑信息。事實上,這種方法用在以下幾種賽道上都工作的很好:直到,彎道,S道。通過重復(fù)測試,我們覺定每幅圖像提取10行來預(yù)知智能車前方的路況信息。圖4說明了我們?nèi)绾畏治鲆环鶊D像中的10行數(shù)據(jù)。
圖4 路徑識別示意圖
詳細的算法介紹如下:
Step1:計算每行中黑點的坐標(biāo)準(zhǔn)備分析。如同圖4所示,每行(L0,L1,…,L8,L9)都要分析。圖中的白點(P0,P1,…,P8,P9)表示每行測得的黑點。原點O與P9疊加,意味著字L9沒有黑點。假定P(x)和P(y)表示P點的x坐標(biāo)和y坐標(biāo),故此,知P9(x)和P9(y)均等0。
本步的關(guān)鍵在于如何找到各行的黑色像素點。這里,以一行的灰度值為例我們介紹一種新方法:
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就是此行從左到右出現(xiàn)的第一個黑色像素點。這里P(x)和P(y)均是從0開始,j也是從0開始。
(2)對于此行從左到右的每個像素點,用閾值B比較他的灰度值,這里B設(shè)置值為30,如果V(i)小于B,則G(i)就是一個黑色像素點。在這一行靠前的部分,加粗且?guī)聞澗的像素17、15、16、18,就是組成黑線的點。斜體加粗且?guī)聞澗的像素點,9、4,是無效點或者干擾點。如果V(i)比B小,則讓j等于i。然后各自與B比較V(j+1)和V(j+2),只有兩種結(jié)果:①如果V(j+1)和V(j+2)均小于B,從G(j+3)開始核對每個像素點的灰度值直到此行的最后一個像素點。如果白色像素點總數(shù),也就是那些灰度值大于B的像素點超過或等于3,則設(shè)P等于G(j+1)。否則跳到(3);②如果不是,則從點G(j+3)重復(fù)此方法。
(3)如果此行沒有黑色像素點,將P(x),P(y)均設(shè)為0。

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

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

對于智能車,不必考慮我們已走過的路徑,所以我們只用比例和微分模塊組成PD控制器即可,P調(diào)節(jié)前面已經(jīng)描述過(見公式2),下面的公式則是D調(diào)節(jié):
這里當(dāng)角度被計算時enew , eold定義作此刻和前一時刻的差值(這里差值的意思是指舵機應(yīng)轉(zhuǎn)的角度和實際角度的差值),t是CMOS攝像頭的掃描周期,kd就是脈沖寬度由0.5ms到1.5ms的微分系數(shù),D_out是D調(diào)節(jié)器的輸出值。
5、結(jié)論
此項工作的挑戰(zhàn)性在于找到一個解決路徑識別和智能車方向控制的一個系統(tǒng)方法。CMOS攝像頭就目前來看是優(yōu)于紅外對管的,無論從掃描范圍還是功耗方面。高清晰度和對比度對于更超前的識別和控制是非常有用的。通過反復(fù)測試,證明PD調(diào)節(jié)器在智能車運行時工作良好。無論是彎道還是S道均能以高速完美過彎,并且智能車的穩(wěn)定性也得到了提高。
附錄C
部分硬件原理圖
附圖一 尋跡原理圖
(a)發(fā)射原理圖
(b)接收原理圖
附圖二 避障原理圖
附圖三 電機驅(qū)動原理圖
附錄B
部分原理程序
尋跡程序: