第一篇:智能尋跡小車實訓報告[大全]
目錄
1、引言
1.1智能小車的設計意義和作用………………………3
2、系統總體設計……………………………………………4
3、硬件設計
3.1循線模塊……………………………………………5
4、軟件設計
4.1軟件調試平臺………………………………………7 4.2系統軟件流程………………………………………8 4.3系統軟件程序………………………………………9
5、調試及性能分析………………………………………12
6、設計總結………………………………………………13
7、作品實物圖……………………………………………14
8、參考文獻………………………………………………15
1、引言
1.1智能小車的設計意義和作用
智能小車是移動式機器人的重要組成部分,介紹一種基于AT89S52單片機的智能小車。通過不斷檢測各個模塊傳感器的輸入信號,根據內置的程序分別控制小車左右兩個直流電機運轉,實現小車自動識別路線,尋找光源,判斷并避開障礙物,檢測道路上的鐵片、發出聲光信息并計數顯示,智能停車等功能。
作為20世紀自動化領域的重大成就,機器人已經和人類社會的生產、生活密不可分。因此為了使智能小車工作在最佳狀態,進一步研究及完善其速度和方向的控制是非常有必要的。智能小車要實現自動尋跡功能和避障功能就必須要感知導引線和障礙物,感知導引線相當給機器人一個視覺功能。避障控制系統是基于自動導引小車(avg—auto-guide vehicle)系統,基于它的智能小車實現自動識別路線,判斷并自動避開障礙,選擇正確的行進路線。使用傳感器感知路線和障礙并作出判斷和相應的執行動作。該智能小車可以作為機器人的典型代表.它可以分為三大組成部分:傳感器檢測部分,,執行部分,cpu。機器人要實現自動避障功能,還可以擴展循跡等功能,感知導引線和障礙物。可以實現小車自動識別路線,選擇正確的行進路線,并檢測到障礙物自動躲避。考慮使用價廉物美的紅外反射式傳感器來充當。智能小車的執行部分,是由直流電機來充當的,主要控制小車的行進方向和速度。
2、系統總體設計
AT89S52單片機作為總的控制核心,利用傳感器,在循線信號、尋光信號、檢測障礙物信號等的輸入作用下,控制電機采取相應的動作,從而調整小車做合適的選擇。同時,如果有檢測到金屬片的信號,則將該信號以聲光的形式表現出來并令數碼管計數顯示。主要有循線、尋光、避障、金屬檢測、數碼顯示、電機驅動、電源、單片機控制等8大模塊,如2-1圖所示。
圖2-1 功能模塊圖
3、硬件設計
3.1循線模塊
循線模塊,循跡是指小車在白紙地板上循黑線行走通常采取的方法是紅外探測法,紅外探測法即利用紅外線在不同顏色的物體表面具有不同的反射性質的特點,可以根據黑帶和白紙對光線的發射系數不同,可以利用車底接收到的發射光的強弱來判斷“道路”黑帶。采用四個紅外光電管分別置于移動智能小車前板底座的兩側,確保沿著黑線行駛。紅外光電管由一個發射管和一個接收管組成,安裝在同一面上。紅外光電管的工作原理是由發射管發射出的紅外線,經檢測面反射后被接收管吸收,由于檢測面顏色的不同,對紅外線的吸收程度也不同,從而反映在接收管的阻值變化上。這種阻值變化通過外接通路就能轉換成單片機能夠識別的信號。由于紅外光電管發出的是紅外線,日光對小車的檢測不會產生影響,因而其抗干擾性能好,從而實現小車的循跡功能。但紅外探測器探測距離有限,一般最大不應超過3cm。循跡功能如3-1,3-2圖所示。
圖 3-1 循跡功能圖
圖3-2循跡功能圖
本設計需要檢測小車的運動狀態,沿著路面黑線運動。采用發射取樣式,單光束紅外傳感器接收信號,電路在5V電壓下工作,根據該型號傳感器紅外發射管所需的工作降壓(紅外發射管的正向降壓在1-1.3V)和工作電流(紅外發射管的電流為2-10mA),選取負載電阻R=15千歐,紅外發射管負載電阻R=220歐。
4、軟件設計
4.1 軟件調試平臺
Keil for C51是美國Keil Software公司出品的C語言軟件開發系統,與匯編相比,C語言在功能上、結構性、可讀性、可維護性上有明顯的優勢,Keil C51軟件還提供了豐富的庫函數和功能強大的集成開發調試工具,生成的目標代碼效率非常高,且容易理解。
C51開發中除了必要的硬件外,同樣離不開軟件,我們寫的源程序要變為C51可以執行的機器碼有兩種方法,一種是手工匯編,另一種是機器匯編,但現在已極少使用手工匯編。Keil提供了包括C編譯器、宏匯編、連接線、庫管理和一個功能強大的仿真調試器等在內的完整開發方案,通過一個集成開發環境(uVision2)將這些部分組合在一起。如圖4-1所示。
圖4-1 Keil for C51開發平臺
4.2系統軟件流程
系統軟件流程圖如圖4-2所示
圖4-2系統流程圖
4.3系統軟件程序
#include
sbit D1=P2^0;//定義前方左側指示燈端口 sbit D2=P0^7;//定義前方側右指示燈端口 sbit ZIR=P3^5;//定義前方左側紅外探頭端口 sbit YIR=P3^6;//定義前方右側紅外探頭端口 sbit QIR=P3^7;//定義前方正前方紅外探頭端口 sbit M1A=P0^0;//定義左側電機驅動A端 sbit M1B=P0^1;//定義左側電機驅動B端 sbit M2A=P0^2;//定義右側電機驅動A端 sbit M2B=P0^3;//定義右側電機驅動B端 sbit SB1=P0^4;//定義語音識別傳感器端口 sbit MIC=P0^6;//定義蜂鳴器端口 void delay(unsigned int z){ while(z--);SB1=!SB1;
return;} void car(unsigned char a){ M1A=0;M2A=0;M1B=0;M2B=0;switch(a){ case 1:{M1A=1;M2A=1;break;};case 2:{M1B=1;M2B=1;D1=0;D2=0;break;};case 3:{M1B=1;M2A=1;D2=0;break;};case 4:{M1A=1;M2B=1;D1=0;break;};} } void main(){ car(1);while(1);{ D1=1;D2=1;LED=0x00;if(QIR==0){ car(2);delay(15000);car(1);} if(YIR==0&&ZIR==1){ car(3);delay(15000);if(YIR==0&&ZIR==1){ car(1);} } if(ZIR==0){ car(4);delay(15000);if(YIR==0&&ZIR==1)
{ car(1);} } if(YIR==0&&ZIR==0){ car(2);delay(30000);} } }
5、調試及性能分析
整機焊接完畢,首先對硬件進行檢查聯線有無錯誤,再逐步對各模塊進行調試。首先寫入電機控制小程序,控制其正反轉,停機均正常。加入避障子程序,小車運轉正常,調整靈敏度達最佳效果。加入顯示時間子程序,顯示正常。鐵片檢測依靠接近開關,對檢測信號進行處理并實時顯示和發出聲光信息,無異常狀況。路程顯示部分是對霍爾管脈沖進行計數,為了盡量達到精確,車輪加裝小磁片。接著對黑帶檢測模塊調試,發現有時小車會跑出黑帶,經判斷是因為紅外線收發對管靈敏度不高,調整靈敏度后仍然達不到滿意效果,疑是受環境光影響,利用塑料套包圍紅外線收發后問題解決。趨光電路主要由三個光敏電阻構成,調 整三個光敏電阻的角度同時測試軟件,以最佳效果完成趨光功能。
整機綜合調試,上電后對系統進行初始化,接著控制電機使小車向前行駛,突然發現系統即刻進入外部中斷1,重復多次測試,結果都是自動進入該中斷。推斷是由剛上電時電機起動所引起,為了避免上電瞬間的影響,在啟動小車后延時幾毫秒,再開外部中斷,結果問題解決。允許的話應采用雙電源供電,即電機和電路應分開供電,L293D與單片機之間采用隔離信號控制。這樣就不會出現小車啟動時程序出錯和數碼管顯示閃動的問題。在計程精度上,可用紅外線原理獲 得較高精度。
6、設計總結
通過本次實訓設計,不僅是對我們課本所學知識的考查,更是對我們的自學能力和收集資料能力及動手能力的考驗,本次實訓使我們對一個項目整體設計有了初步認識。再有對電路板的制作有了一定的了解。并學會了使用keil軟件設計。本次實訓使我們意識到實驗的更重要性,在硬件制作和軟件調試過程中,出現了很多問題,最終都
是通過實驗的方法來解決的。還有以前對程序只是一個模糊的概念。通過這次實訓極大的鍛煉了我們的思考和分析問題能力。并對單片機有利益更深的認識。
總之,實訓過程中,無論是對學習方法還是理論知識,我們都有了新的認識。受益匪淺。這將激勵我們今后再接再勵,不斷完善自己的理論知識提高實踐運作能力。
8、作品實物圖
9、參考文獻
1)、《單片機應用技術》 2)、《周立功單片機》 3)、《單片機原理與應用》
4)、《8051單片機程序設計與實例》 5)、《MCS-51單片機實驗指導》
第二篇:智能小車實訓報告
智能小車實訓報告
摘要:
本課題是基于AT89C52單片機的智能小車的設計與實現,小車完成的主要功能是能夠自主識別黑色引導線并根據黑線走向實現快速穩定的尋線行駛。小車系統以 AT89S52 單片機為系統控制處理器;
采用紅外傳感獲取賽道的信息,來對小車的方向和速度進行控制。此外,對整個控制軟件進行設計和程序的編制以及程序的調試,并最終完成軟件和硬件的融合,實現小車的預期功能。
一、實驗目的:
通過設計進一步掌握51單片機的應用,特別是在嵌入式系統中的應用。進一步學習51單片機在系統中的控制功能,能夠合理設計單片機的外圍電路,并使之與單片機構成整個系統。
二、設計方案
該智能車采用紅外傳感器對賽道進行道路檢測,單片機根據采集到的信號的不同狀態判斷小車當前狀態,通過電機驅動芯片L298N發出控制命令,控制電機的工作狀態以實現對小車姿態的控制。
三.報告內容安排
本技術報告主要分為三個部分。第一部分是對整個系統實現方法的一個概要說明,主要內容是對整個技術原理的概述;第二部分是對硬件電路設計的說明,主要介紹系統傳感器的設計及其他硬件電路的設計原理等;第三部分是對系統軟件設計部分的說明,主要內容是智能模型車設計中主要用到的控制理論、算法說明及代碼設計介紹等。
技術方案概要說明
本模型車的電路系統包括電源管理模塊、單片機模塊、傳感
器模塊、電機驅動模塊。
工作原理:
? 利用紅外采集模塊中的紅外發射接收對管檢測路面上的軌跡 ? 將軌跡信息送到單片機
? 單片機采用模糊推理求出轉向的角度,然后去控制
行走部分
? 最終完成智能小車可以按照路面上的軌跡運行。
硬件電路的設計
1、最小系統:
小車采用atmel公司的AT89C52單片機作為控制芯片,圖1是其最小系統電路。主要包括:時鐘電路、電源電路、復位電路。其中各個部分的功能如下:
1、時鐘電路:給單片機提供一個外接的16MHz的石英晶振。
2、電源電路:給單片機提供5V電源。
3、復位電路:在電壓達到正常值時給單片機一個復位信號。
圖1
單片機最小系統原理圖
2、電源電路設計:
模型車通過自身系統,采集賽道信息,獲取自身速度信息,加以處理,由芯片給出指令控制其前進轉向等動作,各部分都需要由電路支持,電源管理尤為重要。在本設計中,51單片機使用5V電源,電機及舵機使用6V電源。考慮到電源為充電電池組,額定電壓為7.2V,實際充滿電穩壓后的5V電源供電,舵機及電機直接由電池供電。
3、傳感器電路:
光電尋線方案一般由多對紅外收發管組成,通過檢測接收到的反射光強,判斷黑白線。原理圖由紅外對管和電壓比較器兩部分組成,紅外對管輸出的模擬電壓通過電壓比較器轉換成數字電平輸出到單片機。
4、電機驅動電路:
電機驅動芯片L298N是SGS公司的產品,內部包含4通道邏輯驅動 電路。是一種二相和四相電機的專用驅動器,即內含二個H橋的高電壓大電流雙全橋式驅動器,接收標準TTL邏輯電平信號,可驅動46V、2A以下的電機。其引腳排列如圖1中U4所示,1腳和15腳可單獨引出連接電流采樣電阻器,形成電流傳感信號。L298可驅動2個電機,OUT1、OUT2和OUT3、OUT4之間分別接2個電動機。5、7、10、12腳接輸入控制電平,控制電機的正反轉,ENA,ENB接控制使能端,控制電機的停轉。也利用單片機產生PWM信號接到ENA,ENB端子,對電機的轉速進行調節。
由于一片L298N可以直接驅動兩個電機,但是為了加大驅動力,我們采用兩路并聯的方式來驅動電機。
軟件系統的實現
小車循跡規則:
若小車偏左的時候,車輪將向右偏轉;若小車偏右,車輪將向左偏轉;若沒有偏移,小車將繼續向前;若小車完全偏離黑色軌跡,小車后退以尋找黑色軌跡。
心得總結
根據本次設計要求,我們小組系統地閱讀了大量的資料,并認真分析了設計課題的需求,還系統學習了51系列單片機的工作原理及其使用方法,并獨自設計智能小車的整個項目。
雖然條件艱苦,但經過不懈鉆研和努力,購買到了所有所需的元器件,并系統的進行了多項試驗,最終做出了整個小車的硬件系統,然后結合課題任務和小車硬件進行了程序的編制,本系統能夠基本滿足設計要求,能夠較快較平穩的是小車沿引導線行駛,但由于經驗能力有限,該系統還存在著許多不盡人意的地方有待于進一步的完善與改進。
通過本次課題設計,不僅是對我們課本所學知識的考查,更是對我的自學能力和收集資料能力以及動手能力的考驗。本次畢業設計使我們對一個項目的整體設計有了初步認識,還認識了幾種傳感器,并能獨立設計出其接口電路,再有對電路板的制作有了一定的了解,并學會了使用Protel設計電路。本次畢業設計使我們意識到了實驗的重要性,在硬件制作和軟件調試的過程中,出現了很多問題,最終都是通過實驗的方法來解決的。還有以前對程序只是一個很模糊的概念,通過這次的課題設計使我對程序完全有了一個新的認識,并能使用C熟練的進行編程了。通過本次課題設計,極大的鍛煉了我們的思考和分析問題的能力,并對單片機有了一個更深的認識。
總之,在課題設計的過程中,無論是對于學習方法還是理論知識,我們都有了新的認識,受益匪淺,這將激勵我們在今后再接再厲,不斷完善自己的理論知識,提高實踐運作能力。
感謝老師在本次實訓中對我們的指導。
第三篇:智能小車的自動尋跡實驗
智能小車的自動尋跡實驗
【實驗目的】 熟悉光敏電阻的性質 熟悉ICCAVR 編譯環境
進一步熟悉單片機各端口的特性和作用 能夠編寫程序,利用光敏電阻的性質對小車進行控制
【實驗器材】
小車一輛 導線五根 下載線一根
【實驗原理】
(一)光敏電阻
當光照射在物體上,物體內部的原子釋放出電子并不逸出物體表面,而仍留在內部,使 物體的電阻率1/R 發生變化的效應稱為光電導效應。光敏電阻是一種光電導效應半導體器 件。由于光敏電阻沒有極性,工作是可加直流偏壓或交流電壓。當無光照時,光敏電阻的阻 值(暗電阻)很大,電路中電流很小。當它受到一定波長范圍的光照射時,其阻值(亮電阻)
急劇減小,電路中電流迅速增加,用電流表可以測量出電流。
本實驗所采用的光敏電阻是硫化鎘光敏電阻,下圖是硫化鎘光敏電阻的光照特
光敏電阻的檢測
1. 用黑紙片將光敏電阻的透光窗口遮住,此時萬用表的指針基本保持不動,阻值接近無窮 大。此值越大說明光敏電阻性能越好。若此值很小或接近為零,說明光敏電阻已燒穿損
壞,不能再繼續使用。
2. 用一光源對準光敏電阻的透光窗口,此時萬用表的指針應有較大幅度的擺動,阻值明顯 減小。此值越小說明光敏電阻性能越好。若此值很大甚至無窮大,表明光敏電阻內部開
路損壞,也不能再繼續使用。
3. 將光敏電阻透光窗口對準入射光線,用小黑紙片在光敏電阻的遮光窗上部晃動,使其間 斷受光,此時萬用表指針應隨黑紙片的晃動而左右擺動。如果萬用表指針始終停在某一
位置不隨紙片晃動而擺動,說明光敏電阻的光敏材料已經損壞。
(二)Atmega8515的端口特性
由于本實驗主要用到I/O輸入輸出的PA端口,因此主要介紹PA端口的特性。端口 A(PA7..PA0)端口A為8位雙向I/O口,具有可編程的內部上拉電阻。其輸出緩沖器具有對稱 的驅動特性,可以輸出和吸收大電流。作為輸入使用時,若內部上拉電阻使能,端口被外 部電路拉低時將輸出電流。在復位過程中,即使系統時鐘還未起振,端口A處于高阻狀態。作為通用數字I/O使用時,所有AVRI/O端口都具有真正的讀-修改-寫功能。這意味著用 SBI或CBI指令改變某些管腳的方向(或者是端口電平、禁止/使能上拉電阻)時不會無意地改 變其他管腳的方向(或者是端口電平、禁止/使能上拉電阻)。輸出緩沖器具有對稱的驅動能 力,可以輸出或吸收大電流,直接驅動LED。所有的端口引腳都具有與電壓無關的上拉電阻。
并有保護二極管與VCC和地相連。
每個端口都有三個I/O存儲器地址:數據寄存器–PORTx、數據方向寄存器–DDRx和端 口輸入引腳–PINx。數據寄存器和數據方向寄存器為讀/寫寄存器,而端口輸入引腳為只讀 寄存器。當寄存器SFIOR 的上拉禁止位PUD置位時所有端口的全部引腳的上拉電阻都被禁 止。不論如何配置DDxn,都可以通過讀取PINxn寄存器來獲得引腳電平。PINxn寄存器的各 個位與其前面的鎖存器組成了一個同步器。這樣就可以避免在內部時鐘狀態發生改變的短
時間范圍內由于引腳電平變化而造成的信號不穩定。
本實驗主要應用PA端口的輸入引腳PINA。因此當我們把與光敏電阻的輸出電壓相連的 五個數據線連接到PA端口時可以通過讀取寄存器PINAx來獲得光探測裝置輸出的電平,在 AVR中PA端口的反轉電壓是2.1V為高電平。即當外部輸入電壓高于2.1V時,PINAx讀取的輸 入邏輯電平值為“1”,當外部輸入電壓低于2.1V時,PINAx讀取的輸入邏輯電平值為“0”。
根據PINA寄存器放置的五個數據來判斷小車的走向。
(三)本實驗實現原理
當電路接通電源時,由小車主板的穩壓電源電路穩定輸出5 伏電壓為小車下部的光探測 電路提供電源使二極管發光,當路面是白色時,二極管發出的光大部分被反射,光敏電阻就 接收到比較強的光照射,阻值變小,流過光敏電阻的電流變大。由于電阻的分壓作用,使得 光敏電阻的輸出電壓較小,約為1.5V 左右。當路面是黑色時,由于黑色對光有吸收作用,使得二極管發出的光大部分被吸收,只有小部分被反射,光敏電阻接收到的光照就比較小,阻值變大,流過光敏電阻的電流變小,光敏電阻的輸出電壓變大,約為2.5V 左右。共有五個 光敏電阻也就是有五個數據輸出。這五個信號通過數據線與單片機的PA 口相連,最左邊的
電阻連接PA 口的最低位PA0,依次類推,一直連到PA4 口。
【實驗步驟】
(1)連接好電路,把導線,下載線連接好,打開電源
(2)進入ICCAVR 編譯環境,編寫并調試程序直至沒有錯誤,編譯環境簡介請參見
附錄一
(3)下載,燒錄進單片機,看實驗結果(4)反復修改調試程序,逐漸增強其功能(5)寫好實驗報告,實驗心得體會
【實驗電路】 小車的硬件連接圖
小車輪子的驅動詳見實驗一
【程序示例】
由于在實驗中黑線的寬度不同,尋跡中所用到的光敏電阻的部位也不同。下面程序的
例子是黑線的寬度只能覆蓋一個光敏電阻時對小車的驅動程序
#include
#include
unsigned char t;//******************系統自動生成的初始化程序**********************
void port_init(void)
{
PORTA = 0x00;DDRA = 0x00;PORTB = 0x00;DDRB = 0x00;PORTC = 0x00;DDRC = 0x00;PORTD = 0x00;DDRD = 0xFF;PORTE = 0x00;DDRE = 0x04;
} //call this routine to initialize all peripherals
void init_devices(void)
{
//stop errant interrupts until set up
CLI();//disable all interrupts
port_init();MCUCR = 0x00;EMCUCR = 0x00;GICR = 0x00;TIMSK = 0x00;
SEI();//re-enable interrupts //all peripherals are now initialized
} //****************小車前進的子程序*********************
void runforth(void)
{
PORTE=0x04;PORTD=0x70;
} //*****************小車左轉的子程序*********************
void zuozhuan(void)
{
PORTE=0x00;PORTD=0X70;
} //****************小車右轉的子程序*********************
void youzhuan(void)
{
PORTE=0x04;PORTD=0x50;
} //***************小車停止不動的子程序****************
void stop(void)
{
PORTE=0x00;PORTD=0x00;
} //****************主程序***************************
void main(void)
{ while(1)//設置一個死循環,不斷讀取PA口的輸入邏輯電平
{
init_devices();//調用初始化函數
t=PINA&0x1f;//屏蔽掉PA口的高三位數據位
if(t==0x00){stop();} else { switch(t)
{ case 0x01:zuozhuan();break;case 0x07:zuozhuan();break;case 0x02:zuozhuan();break;case 0x03:zuozhuan();break;case 0x04:runforth();break;case 0x0e:runforth();break;case 0x06:zuozhuan();break;case 0x08:youzhuan();break;case 0x10:youzhuan();break;case 0x0c:youzhuan();break;case 0x18:youzhuan();break;case 0x1c:youzhuan();break;
} } } }
第四篇:尋跡小車報告
智能尋跡小車
組員:趙一鵬 艾博文 董羽曦
尋跡小車設計報告
指導教師:
2011年6月12日13:30
小組成員:智能尋跡小車
組員:趙一鵬 艾博文 董羽曦
C8051F單片機的智能尋跡小車
本課題是基于C8051F單片機的智能小車的設計與應用,小車完成的主要功能是能夠自主識別黑色引導線并根據黑色引線能快速自主穩定的尋線行駛。小車系統以單片機為系統控制處理器,對整個控制軟件進行程序的設計和程序的調試,并最終完成軟硬件的結合,完成小車的預期功能。
一、實驗目的:
通過設計能進一步掌握單片機的原理、以及能剛好的運用編程實現對小車的控制。
使小車能自主尋找路線,并且能夠合理設計單片機的外圍電路,并使之與單片機能構成整個 系統。
二、設計方案:
本組小車以單片機為控制處理器、以298為驅動器結合程序,通過芯片發出驅動命令,控制電機的驅動以實現對小車的控制。
三、技術方案概要說明
本模塊車的電路系統包括電源管理模塊、單片機模塊、傳感器模塊、電機驅動模塊、人機界面。
四、工作原理
1、利用紅外采集塊中的紅外發射接收對關檢測路面上的軌跡
2011年6月12日13:30 智能尋跡小車
組員:趙一鵬 艾博文 董羽曦
2、將軌跡信號傳給單片機
3、單片機采用模糊推理求出轉向角度和行走速度,然后去控制行走部分
4、最終完成智能小車可以按照路面上的軌跡運行
五、報告內容安排
第一部分為對整個報告的概括說明,第二部分為整個電路硬件的介紹和說明,第三部分為整個設計的軟件程序設計的說明。
硬件電路的設計
一、尋跡模塊
尋跡共有8路,前后各4路,它通過TCRT5000是否接受到紅外反射光來改變電壓大小,從而使單片機發出指令,使小車進行前進、后退、停止、走正等一系列動作。
1、尋跡電路圖
2011年6月12日13:30 智能尋跡小車
組員:趙一鵬 艾博文 董羽曦
焊接時,可用一個電位器來代替四個電位器,這樣即省材料,也使電路板更加精巧。甚至還能將除TCRT5000以外的部件全部安放到車體板上面。
TCRT5000實物圖與內部結構(與地面距離0.2mm~0.8mm之間)
LM393引腳圖
2011年6月12日13:30 智能尋跡小車
組員:趙一鵬 艾博文 董羽曦
2、檢測
將5V電源連接好,萬用表與各組尋跡的GND與輸出端相連,用白紙來使紅外燈反射,當TCRT5000接收到反射紅外光時輸出低電平,未接收時輸出高電平,最后通過改變電位器阻值來調節尋跡靈敏度。
二、驅動模塊
驅動的核心部件是L298N,它通過單片機指令直接控制小車電機電機轉速,從而來使小車行駛。
驅動電路圖
5,7,10,12與P2.1,P2.2,P2.5,P2.6相連,使能1,2與P0.0,2011年6月12日13:30 智能尋跡小車
組員:趙一鵬 艾博文 董羽曦
P0.1相連,2,3,13,14與小車電機相連,驅動要加散熱片,防止過熱燒壞。
L298n引腳分辨
電機驅動的檢測:
連接好電源,將使能1,2都與電源5V相連,5,10與7,12兩組,一組與5V相連,另一組與GND相連,用萬用表分別測量2,3與13,14兩組引腳,有12V電源輸出,則驅動正常。
三、電源模塊
電源主要是將12V電壓降為5V,輸給小車的各部分模塊。
電源電路圖
電源最好需由兩組并聯而成,以免7805過載而燒壞。J2與外電源12V
2011年6月12日13:30 智能尋跡小車
組員:趙一鵬 艾博文 董羽曦
相連,需要兩個引腳,5V引腳與GND引腳都需要多個,以滿足對各模塊的供電需求。
LM7805
電源模塊的檢測:
將12V與GND連接好,輸出端有穩定的5V電源輸出,則電源正常。
四、1602顯示屏(主要用于顯示小車運動時間)
1602電路圖
2011年6月12日13:30 智能尋跡小車
組員:趙一鵬 艾博文 董羽曦
五、語音模塊
當小車完成所有指令動作到達終點時,蜂鳴器發出響聲。
蜂鳴器的電路圖
六、C8051F020單片機
它是由Cygnal出的一種混合信號系統級單片機。片內含CIP-51的CPU內核,它的指令系統與MCS-51完全兼容。其中的C8051F020單片機含有64kB片內Flash程序存儲器,4352B的RAM、8個I/O端口共64根I/O口線、一個12位A/D轉換器和一個8位A/D轉換器以及一個雙12位D/A轉換器、2個比較器、5個16位通用定時器、5個捕捉/比較模塊的可編程計數/定時器陣列、看門狗定時器、VDD監視器和溫度傳感器等部分。C8051F020單片機支持雙時鐘,其工作電壓范圍為2.7~3.6V(端口I/O,RST和JTAG引腳的耐壓為5V)。與以前的51系列單片機相比,C8051F020增添了許多功能,同時其可靠性和速度也有了很大提高。
2011年6月12日13:30 智能尋跡小車
組員:趙一鵬 艾博文 董羽曦
五、組裝小車
用適當大小的單孔電路板作為小車底板,在適當位置打上小孔,將各個模塊安在上面,使小車質量分布均勻,以免小車走歪。
六、焊接的注意事項
1.呈圓焊接順序,元器件裝焊順序依次為:電阻器、電容器、二極管、三極管、集成電路、大功率管,其它元器件為先小后大。
2.芯片與底座都是有方向的,焊接時,要嚴格按照PCB板上的缺口所指的方向,使芯片,底座與PCB三者的缺口都對應。
3.焊接時,要使焊點周圍都有錫,將其牢牢焊住,防止虛焊。
2011年6月12日13:30 智能尋跡小車
組員:趙一鵬 艾博文 董羽曦
4.在焊接圓形的極性電容器時(一般電容值都是比較大的),其電容器的引腳是分長短的,以長腳對應“+”號所在的孔。
5.芯片在安裝前最好先兩邊的針腳稍稍彎曲,使其有利于插入底座對應的插口中。
6.電位器也是有方向的,其旋鈕要與PCB板上凸出方向相對應。7.取電阻時,找到所需電阻后,拿剪刀剪下所需數目電阻,并寫上電阻,以便查找。
8.裝完同一種規格后再裝另一種規格,盡量使電阻器的高低一致。焊完后將露在印制電路板表面多余引腳齊根剪去。
9.焊接集成電路時,先檢查所用型號,引腳位置是否符合要求。焊接時先焊邊沿對腳的二只引腳,以使其定位,然后再從左到右自上而下逐個焊接。
10.對引腳過長的電器元件(如電容器,電阻等),焊接完后,要將其剪短。
11.焊接后用放大鏡查看焊點,檢查是否有虛焊以及短路的情況的發生。
12.當有連線接入時,要注意不要使連線深入過長,以至于將其旋在電線的橡膠皮上,出現斷路的情況。
13.當電路連接完后,最好用清洗劑對電路的表面進行清洗,以防電路板表面附著的鐵屑使電路短路。
2011年6月12日13:30 智能尋跡小車
組員:趙一鵬 艾博文 董羽曦
14.在多臺儀器老化的時候,要注意電線的連接,零線對零線,火線對火線。
15.當最后組轉時,應將連線扎起,以防線路混亂交叉。16.要進行老化工藝,可發現很多問題,連線要接緊,螺絲要旋緊,當反復插拔多次后,要注意連線接頭是否有破損。
17.焊接上錫時,錫不宜過多,當焊點焊錫錐形時,即為最好。
軟件系統設計
若小車偏左的時候,左輪將向右偏轉;若小車偏右,車輪將向左偏轉;若沒有偏移,小車將繼續向前;若完全偏離黑色軌跡,小車后退以尋找黑色軌跡。
一、程序設計方法
1、確定程序功能。根據機電硬件中的人機界面、電力電子器件和傳感器件的物理特點和運行方式確定外圍部件軟件功能,根據控制系統設計方案確定控制軟件功能,根據系統的功能結構確定前面沒有提到的其他軟件功能。
2、劃分任務。將各類軟件功能劃分成具體的任務。
2011年6月12日13:30 智能尋跡小車
組員:趙一鵬 艾博文 董羽曦
3、確定任務的組合方式。通過分析任務的優先級和相互關系來確定組合方式。因為這個組合方式通常并不是唯一的,可以采取如前文所介紹的概念設計方法的方案排列和方案選擇方法。
4、確定編程方法。根據任務劃分、任務的組合方式、軟件開發能力和軟件開發環境可以確定具體程序編制方法。在確定過程中,也可以采用如前文所介紹的概念設計方法的方案排列和方案選擇方法。
5、編程與調試。
二、資源分配
P0^0----電機1用的PWM輸出信號(左輪)P0^1----電機2用的PWM輸出信號(右輪)L_DIR1A=P3^6----左輪電機方向控制 L_DIR1B=P3^7----左輪電機方向控制 R_DIR1A=P3^4----右輪電機方向控制 R_DIR1B=P3^5----右輪電機方向控制 P3^1----蜂鳴器控制
PCA0CPM0----電機1PWM輸出,工作在8位定時器模式,允許比較器匹配中斷,每次中斷加載新的比較值,實現電機輸出的脈寬、周期控制。
2011年6月12日13:30 智能尋跡小車
組員:趙一鵬 艾博文 董羽曦
PCA0CPM1----電機2PWM輸出,工作在8位定時器模式,允許比較器匹配中斷,每次中斷加載新的比較值,實現電機輸出的脈寬、周期控制。
P5.0-P5.7;傳感器接口 lcdrw=P3^2;----讀寫控制5 lcdcs=P3^0;----E使能6 lcdrs=P3^3;命令數據選擇控制4
三、小車程序
#include
typedef unsigned char uchar;typedef unsigned long ulong;typedef unsigned int uint;
//變量定義#define L_MOTO_BREAK L_DIR1A=L_DIR1B #define L_MOTO_BACK L_DIR1A=0;L_DIR1B=1 #define L_MOTO_FORD L_DIR1A=1;L_DIR1B=0
2011年6月12日13:30
智能尋跡小車
組員:趙一鵬 艾博文 董羽曦
#define R_MOTO_BREAK R_DIR1A=R_DIR1B #define R_MOTO_BACK R_DIR1A=0;R_DIR1B=1 #define R_MOTO_FORD R_DIR1A=1;R_DIR1B=0 //前走與后走的定義 sbit L_DIR1A=P3^6;sbit L_DIR1B=P3^7;sbit R_DIR1A=P3^4;sbit R_DIR1B=P3^5;sbit P3_1=P3^1;
sbit lcdrw=P3^2;//5 sbit lcdcs=P3^0;//6 sbit lcdrs=P3^3;//4
int a=0;//定時器計數用 uchar minute=0,second=0,sign=0;uchar fb=0;//控制前后方向
//全局變量的聲明
//1602液晶的管腳定義
//I/O管腳的定義
/********************************************/ /* 名稱:config
*/ /* 用途:初始化配置, 以保證單片機控制功能工作 */ /********************************************/ void config(void)
2011年6月12日13:30 智能尋跡小車
組員:趙一鵬 艾博文 董羽曦
{
WDTCN = 0x07;
//看門狗禁止
WDTCN = 0xde;
WDTCN = 0xad;
XBR0 = 0x50;
XBR1 = 0x00;XBR2 = 0x40;
//配置交叉開關,//交叉開關允許
P0MDOUT=0x00;
P1MDOUT=0x00;
P2MDOUT=0x00;
P3MDOUT=0xfd;//I/O口的推挽與漏極輸出 P74OUT=0x00;
//p4--p6 I/O口的推挽與漏極輸出
P5=0xff;
OSCXCN = 0x00;
OSCICN = 0x16;//采用內部晶振,頻率為 8MHZ }
2011年6月12日13:30 智能尋跡小車
組員:趙一鵬 艾博文 董羽曦
/********************************************/ /* 名稱: delay1ms
*/ /* 用途: 延時
*/ /********************************************/ void delay(uint z){ uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);
}
void delay1(uint time){ uint ii;uint jj;for(ii=0;ii