arduino循跡小車畢業(yè)論文.doc
《arduino循跡小車畢業(yè)論文.doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《arduino循跡小車畢業(yè)論文.doc(22頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、福建船政交通學(xué)院 目錄摘要2引 言21 Arduino智能小車設(shè)計(jì)方案與參數(shù)31.1 Arduino智能小車設(shè)計(jì)方案簡介 31.1.1 功能要求3 1.1.2 基本原理3 1.2 循跡小車參數(shù)42 Arduino與51單片機(jī)的區(qū)別5 2.1 Arduino單片機(jī)5 2.1.1 Arduino單片機(jī)的介紹5 2.1.2 Arduino單片機(jī)的特色5 2.1.3 Arduino單片機(jī)的功能5 2.2 51單片機(jī)6 2.2.1 51單片機(jī)的介紹6 2.2.2 51單片機(jī)的功能6 2.3 Arduino比51更好的地方73 循跡小車設(shè)計(jì)8 3.1 硬件設(shè)計(jì)8 3.1.1 單片機(jī)最小系統(tǒng)8 3.1.2
2、灰度傳感器模塊 9 3.1.3 電機(jī)驅(qū)動(dòng)電路10 3.2 軟件設(shè)計(jì)12 3.2.1 系統(tǒng)主程序13 3.2.2 本系統(tǒng)編譯器13 3.3 實(shí)物展示14 3.4 部分程序展示15結(jié) 論20致 謝21參考文獻(xiàn)22Arduino循跡小車設(shè)計(jì)與實(shí)現(xiàn)摘要:循跡小車是Arduino單片機(jī)的一種典型應(yīng)用。本智能小車是由ardiuno單片機(jī)和外部電路組成,包括檢測模塊,控制模塊,電源模塊。循跡車設(shè)計(jì)采用Arduino單片機(jī)作為小車的控制核心,采用灰度傳感器作為小車的檢測模塊來識別綠色路面中央的黑色引導(dǎo)線,采集信號并將信號轉(zhuǎn)換為能被ardiuno單片機(jī)識別的數(shù)字信號;采用驅(qū)動(dòng)芯片L298N構(gòu)成雙H橋控制直流電機(jī)
3、。其中軟件系統(tǒng)采用C程序。關(guān)鍵詞:Arduino單片機(jī),自動(dòng)循跡,驅(qū)動(dòng)電路。引言自第一臺工業(yè)機(jī)器人誕生以來,機(jī)器人的民展已經(jīng)遍及機(jī)械、電子、冶金、交通、宇航、國防等領(lǐng)域。近年來機(jī)器人的智能水平不斷提高,并且迅速地改變著人們的生活方式。人們在不斷探討、改造、認(rèn)識自然的過程中,制造能替代人工作的機(jī)器一直是人類的目標(biāo)。單片機(jī)是一種可通過編程控制的微處理器,雖其自身不能單獨(dú)用在某項(xiàng)工程或產(chǎn)品上,但當(dāng)其與外圍數(shù)字器件和模擬器件結(jié)合時(shí)便可發(fā)揮強(qiáng)大的功能,現(xiàn)在單片機(jī)已廣泛應(yīng)用于眾多領(lǐng)域。例如:工業(yè)自動(dòng)化,智能儀器儀表,消費(fèi)類電子產(chǎn)品,通信方面,武器裝備等。作為與自動(dòng)化技術(shù)和電子密切相關(guān)的理工科學(xué)生,掌握單片
4、機(jī)是最基礎(chǔ)的要求。為進(jìn)一步豐富和鞏固單片機(jī)知識,也為能更好的聯(lián)系實(shí)際應(yīng)用,本次畢業(yè)設(shè)計(jì)選擇了基于單片機(jī)Arduino循跡車,并做出實(shí)物。鑒于電子技術(shù)、計(jì)算機(jī)技術(shù)以及各種更先進(jìn)的仿真軟件的出現(xiàn),使用高級語言如C代替匯編語言進(jìn)行編程和控制已成為現(xiàn)實(shí),單片機(jī)C語言編程相對于MC51匯編語言編程有如下優(yōu)點(diǎn):對單片機(jī)的指令系統(tǒng)不需要有很深的理解就可以編程操作單片機(jī)。寄存器分配、不同存儲(chǔ)器的尋址及數(shù)據(jù)類型等細(xì)節(jié)完全由編輯器自動(dòng)處理。程序有規(guī)范的結(jié)構(gòu),可分為不同的函數(shù),可使程序結(jié)構(gòu)化。庫中包括許多標(biāo)準(zhǔn)子程序,具有較強(qiáng)的處理能力,使用方便。具有方便的模塊化編程技術(shù),使已編好的程序便于移植,可極大縮短開發(fā)時(shí)間,
5、增加程序的可讀性和可維護(hù)性。事實(shí)上,當(dāng)今許多硬件的開發(fā)都已開始用C語言編程,如各種單片機(jī)、DSP、ARM等,用C語言進(jìn)行工業(yè)控制也已成為一種趨勢,為了更好的適應(yīng)當(dāng)今社會(huì)形勢,為了更好的面對挑戰(zhàn)、把握機(jī)遇,此次畢業(yè)設(shè)計(jì)決定嘗試用C語言編程完成。也希望能在進(jìn)一步熟悉單片機(jī)控制的同時(shí),對數(shù)字電子技術(shù)、模擬電子技術(shù)、計(jì)算控制技術(shù)以及常用外圍芯片有更深層次的了解,提高自己的綜合能力。1 Arduino智能小車設(shè)計(jì)方案與參數(shù)根據(jù)設(shè)計(jì)要求,Arduino智能小車要沿著山道環(huán)山跑一圈。Arduino智能小車主要由四部分組成:分別為大腦-微控制器Arduino、眼睛-灰度傳感器、軀體-電機(jī)驅(qū)動(dòng)模塊和心臟-電源模
6、塊。1.1 Arduino智能小車方案簡介依據(jù)所需功能的要求,設(shè)計(jì)計(jì)價(jià)器系統(tǒng)的結(jié)構(gòu)圖和硬件電路,繪制出智能小車的電路圖,再繪制程序框圖,之后編程并燒錄到單片機(jī);將各模塊組合進(jìn)行調(diào)試。1.1.1功能要求小車以Arduino 為控制核心, 用單片機(jī)產(chǎn)生PWM波,控制小車速度。利用灰度傳感器對路面黑色軌跡進(jìn)行檢測,并將路面檢測信號反饋給單片機(jī)內(nèi)。單片機(jī)對采集到的信號予以分析判斷,及時(shí)控制驅(qū)動(dòng)電機(jī)以調(diào)整小車轉(zhuǎn)向,從而使小車能夠沿著黑色軌跡自動(dòng)行駛,實(shí)現(xiàn)小車自動(dòng)尋跡的目的。1.1.2基本原理智能小車系統(tǒng)主要由四部分組成:大腦-微控制器Arduino、眼睛-灰度傳感器、手腳-電機(jī)驅(qū)動(dòng)模塊、能源-電源模塊,
7、 智能車循跡行駛過程是:首先灰度傳感器將檢測到黑線的信號傳送給單片機(jī)最小系統(tǒng),然后通過單片機(jī)最小系統(tǒng)的控制算法對信號進(jìn)行計(jì)算處理,將此信號在通過控制算法驅(qū)動(dòng)電機(jī),最后實(shí)現(xiàn)對智能車運(yùn)動(dòng)軌跡進(jìn)行實(shí)時(shí)控制。微控制器-Arduino為內(nèi)部核心處理處理單元,將外部給予的電平信號通過以植入的c語言程序?yàn)橹鬟M(jìn)行處理?;叶葌鞲衅鳛橹悄苄≤嚨难劬?,通過辨別地面的黑色線條的物理信號,灰度再將之轉(zhuǎn)換為單片機(jī)能夠處理的電平信號。單片機(jī)將信號傳輸給電機(jī)驅(qū)動(dòng)模塊,即我們小車結(jié)構(gòu)的手腳接受指令運(yùn)行。智能車總體模塊設(shè)計(jì)圖如圖1-1所示。 L298N 驅(qū)動(dòng)模塊 Arduino 單片機(jī) 電源模塊灰度傳感器模塊 直流電機(jī) 小車 路
8、徑 圖1-1 循跡車總體模塊設(shè)計(jì)圖 1.2 循跡小車參數(shù)系統(tǒng)參數(shù)如下表所示:微控制器Arduino路徑檢測模塊灰度傳感器倆輪驅(qū)動(dòng)車模配套直流電機(jī)直流電機(jī)驅(qū)動(dòng)模塊芯片:LM298N電機(jī)電源9V 3A參數(shù)2 Arduino與51單片機(jī)的區(qū)別2.1 Arduino單片機(jī)2.1.1 Arduino單片機(jī)的介紹 Arduino是一款便捷靈活、方便上手的開源電子原型平臺,包含硬件(各種型號的Arduino板)和軟件(Arduino IDE)。它適用于愛好者、藝術(shù)家、設(shè)計(jì)師和對于互動(dòng)有興趣的朋友們。是一個(gè)基于開放原始碼的軟硬件平臺,構(gòu)建于開放原始碼simple I/O介面版,并且具有使用類似Java、C語言
9、的Processing/Wiring開發(fā)環(huán)境。Arduino包含兩個(gè)主要的部分:硬件部分是可以用來做電路連接的Arduino電路板;另外一個(gè)則是Arduino IDE,你的計(jì)算機(jī)中的程序開發(fā)環(huán)境。你只要在IDE中編寫程序代碼,將程序上傳到Arduino電路板后,程序便會(huì)告訴Arduino電路板要做些什么了。2.1.2 Arduino單片機(jī)的特色 開放源代碼的電路圖設(shè)計(jì),程序開發(fā)接口可以免費(fèi)下載,也可依個(gè)人需求自己修改。而且低價(jià)格的微處理控制器 (AVR系列控制器),可以采用USB接口供電,不需外接電源,也可以使用外部9VDC輸入。Arduino支持ISP在線燒,可以將新的bootloader固
10、件燒入AVR芯片。有了bootloader之后,可以通過串口或者USB to RS232線更新固件。也可依據(jù)官方提供的Eagle格式PCB和SCH電路圖簡化Arduino模組,完成獨(dú)立運(yùn)作的微處理控制;可簡單地與傳感器,各式各樣的電子元件連接(例如:紅外線,超音波,熱敏電阻,光敏電阻,伺服馬達(dá),等)支持多種互動(dòng)程序,如:Flash、Max/Msp、vvvv、PD、C、Processing等。應(yīng)用方面:利用Arduino,突破以往只能使用鼠標(biāo)、鍵盤、CCD等輸入的裝置的互動(dòng)內(nèi)容,可以更簡單地達(dá)成單人或多人游戲互動(dòng)。2.1.3 Arduino單片機(jī)的功能在功能上可以快速使用Arduino與Adob
11、e Flash, Processing, Max/MSP, Pure Data, SuperCollider等軟件結(jié)合,作出互動(dòng)作品。 Arduino可以使用現(xiàn)有的電子元件例如開關(guān)或者傳感器或者其他控制器件、LED、步進(jìn)馬達(dá)或其他輸出裝置。 Arduino也可以獨(dú)立運(yùn)行,并與軟件進(jìn)行交互,例如: Macromedia Flash, Processing, Max/MSP, Pure Data, VVVV或其他互動(dòng)軟件等。 Arduino的IDE界面基于開放源代碼,可以免費(fèi)下載使用,開發(fā)出更多令人驚艷的互動(dòng)作品。在更多功能上有基于知識共享開放元源碼的電路圖設(shè)計(jì),有基于知識共享開放源碼的程式開發(fā)環(huán)
12、境。Arduino可使用ICSP線上燒入器,將bootloader燒入新的IC晶片,可依據(jù)官方電路圖,簡化Arduino模組,完成獨(dú)立運(yùn)作的微處理控制,可簡單地與傳感器,各式各樣的電子元件連接(例如:紅外線,超聲波,熱敏電阻,光敏電阻,伺服馬達(dá)等),USB接口上,不需外接電源。另外有提供9V直流電源輸入。 2.2 51單片機(jī)2.2.1 51單片機(jī)的介紹 51單片機(jī)是對所有兼容Intel 8031指令系統(tǒng)的單片機(jī)的統(tǒng)稱。該系列單片機(jī)的始祖是Intel的8031單片機(jī),后來隨著Flash rom技術(shù)的發(fā)展,8031單片機(jī)取得了長足的進(jìn)展,成為應(yīng)用最廣泛的8位單片機(jī)之一,其代表型號是ATMEL公司的
13、AT89系列,它廣泛應(yīng)用于工業(yè)測控系統(tǒng)之中。很多公司都有51系列的兼容機(jī)型推出,今后很長的一段時(shí)間內(nèi)將占有大量市場。51單片機(jī)是基礎(chǔ)入門的一個(gè)單片機(jī),還是應(yīng)用最廣泛的一種。需要注意的是52系列的單片機(jī)一般不具備自編程能力。2.2.2 51單片機(jī)的功能51單片機(jī)的功能特點(diǎn)分別有:8位CPU4kbytes程序存儲(chǔ)器(ROM) (52為8K),128bytes的數(shù)據(jù)存儲(chǔ)器(RAM) (52有256bytes的RAM),32條I/O口線111條指令,大部分為單字節(jié)指令,21個(gè)專用寄存器,2個(gè)可編程定時(shí)/計(jì)數(shù)器5個(gè)中斷源,2個(gè)優(yōu)先級(52有6個(gè)),一個(gè)全雙工串行通信口,外部數(shù)據(jù)存儲(chǔ)器尋址空間為64kB,
14、外部程序存儲(chǔ)器尋址空間為64kB,邏輯操作位尋址功能雙列直插40PinDIP封裝。51單片機(jī)的內(nèi)部結(jié)構(gòu)分別為CPU:由運(yùn)算和控制邏輯組成,同時(shí)還包括中斷系統(tǒng)和部分外部特殊功能寄存器;RAM:用以存放可以讀寫的數(shù)據(jù),如運(yùn)算的中間結(jié)果、最終結(jié)果以及欲顯示的數(shù)據(jù);ROM:用以存放程序、一些原始數(shù)據(jù)和表格;I/O口:四個(gè)8位并行I/O口,既可用作輸入,也可用作輸出;T/C:兩個(gè)定時(shí)/記數(shù)器,既可以工作在定時(shí)模式,也可以工作在記數(shù)模式;五個(gè)中斷源的中斷控制系統(tǒng); 一個(gè)全雙工UART(通用異步接收發(fā)送器)的串行I/O口,用于實(shí)現(xiàn)單片機(jī)之間或單片機(jī)與微機(jī)之間的串行通信;片內(nèi)振蕩器和時(shí)鐘產(chǎn)生電路,石英晶體和微
15、調(diào)電容需要外接。最佳振蕩頻率為6M-12M。2.3 Arduino比51更好的地方Arduino與51單片機(jī)相比:變更人性化,編程相對人性化和直觀,沒有單片機(jī)基礎(chǔ)的人也能很快上手。硬件性能上,Arduino更加穩(wěn)定,不會(huì)像51一樣時(shí)常出現(xiàn)跑飛的現(xiàn)象。Arduino作為開源的一款的單片機(jī),更重要的是在這個(gè)4g時(shí)代可搜尋的學(xué)習(xí)資料是非常多的。綜上所述,Arduino無疑是比51更適合新手和用于比賽專用的。3 循跡小車設(shè)計(jì)3.1 硬件設(shè)計(jì)3.1.1單片機(jī)最小系統(tǒng)主控機(jī)系統(tǒng)采用Arduino mega2560單片機(jī),采用USB接口的核心電路板,它最大的特點(diǎn)就是具有多達(dá)54路數(shù)字輸入輸出,特別適合需要大
16、量IO接口的設(shè)計(jì)。Mega2560的處理器核心是ATmega2560, 同時(shí)具有54路數(shù)字輸入/輸出口(其中16路可作為PWM輸出),16路模擬輸入,4路UART接口,一個(gè)16MHz晶體振蕩器,一個(gè)USB口,一個(gè)電源 插座,一個(gè)ICSP header和一個(gè)復(fù)位按鈕。單片機(jī)最小系統(tǒng)電路圖如圖3-1所示。圖3-1 單片機(jī)最小系統(tǒng)Arduino mega2560的主要參數(shù):處理器 ATmega2560,工作電壓 5V,輸入電壓(推薦) 7-12V,輸入電壓(范圍) 6-20V,數(shù)字IO腳 54 (其中16路作為PWM輸出),模擬輸入腳 16,IO腳直流電流 40 mA,3.3V腳直流電流 50 mA
17、,F(xiàn)lash Memory 256 K,(ATmega328,其中8 KB 用于 bootloader),SRAM 8 KB,EEPROM 4 KB,工作時(shí)鐘 16 MHz。存儲(chǔ)器:ATmega2560包括了片上256KB Flash,其中8KB用于Bootloader。同時(shí)還有8KB SRAM和4KB EEPROM。輸入輸出:一共有數(shù)字輸入輸出口,4路串口信號,6路外部中斷,14路脈沖寬度調(diào)制PWM(0-13),SPI(53(SS),51(MOSI),50(MISO),52(SCK)):SPI通信接口,16路模擬輸入,特別LED(13號):Arduino專門用于測試LED的保留接口,和TWI
18、接口(專門支持通信)。3.1.2 灰度傳感器模塊灰度傳感器是利用黑線對紅外線不同的反射能力通過光敏二極管或光敏三極管,接收反射回的不同光強(qiáng)信號,把不同光強(qiáng)轉(zhuǎn)換為電流信號,最后通過電阻,轉(zhuǎn)換為單片機(jī)可識別的高低電平?;叶葌鞲衅鲗?shí)現(xiàn)循跡的基本電路如3-2所示。圖3-2 灰度傳感器電路圖(1)灰度傳感器工作原理傳感器的紅外發(fā)射二極管不斷發(fā)射紅外線,當(dāng)發(fā)射出的紅外線沒有被反射回來或被反射回來但強(qiáng)度不夠大時(shí),光敏三極管一直處于關(guān)斷狀態(tài),此時(shí)模塊的輸出端為低電平,指示二極管一直處于熄滅狀態(tài);而當(dāng)紅外線被反射回來且強(qiáng)度足夠大,光敏三極管飽和,此時(shí)模塊的輸出端為高電平,指示二極管被點(diǎn)亮。小車行駛過程中向地面發(fā)
19、射紅外光,當(dāng)紅外光遇到綠色路線,地板發(fā)生漫反射,安裝在小型車的反射光接收器會(huì)接收;如果是遇到黑色路線,紅外光將被黑線吸收,安裝在小車上的接收管沒有收到紅外光。控制器會(huì)根據(jù)是否收到反射的紅外光為判斷依據(jù)來確定的黑線的位置和小車的路線。這種探測方法,即利用紅外線在不同顏色的表面特征,具有不同的反射性能。紅外發(fā)射和接收紅外線感應(yīng)器,可以直接使用集成的紅外探頭,選擇寬度為3-5厘米的黑線。該傳感器的靈敏度是可調(diào)的,傳感器有時(shí)遇到黑線卻不能送出相應(yīng)的信號,通過調(diào)節(jié)傳感器上的可調(diào)電阻,適當(dāng)?shù)脑龃蠡驕p小可改變靈敏度。(2)傳感器分布傳感器通過信號采集,向單片機(jī)提供信息。因此傳感器合理的布局很重要,傳感器布局
20、需要考慮小車行駛過程中信息檢測的準(zhǔn)確度和前瞻性,能使在相同數(shù)量的傳感器下,獲得更多的數(shù)據(jù)。而由于考慮到我們改造車的車座較窄、不平整,且車身較請,適合放多的傳感器,最終決定選用對6個(gè)傳感器來進(jìn)行布局,即在車子底座前端放6個(gè)傳感器。這種布局是目前最適合我們改造車的布局方法。3.1.3 電機(jī)驅(qū)動(dòng)電路本設(shè)計(jì)采用L298N電機(jī)專用驅(qū)動(dòng)芯片帶動(dòng)兩個(gè)5V的直流電動(dòng)機(jī)。L298N是一個(gè)內(nèi)部有兩個(gè)H橋的高電壓大電流全橋式驅(qū)動(dòng)芯片,可以用來驅(qū)動(dòng)直流電動(dòng)機(jī)、步進(jìn)電動(dòng)機(jī)。使用標(biāo)準(zhǔn)邏輯電平信號控制,直接連接單片機(jī)管腳,具有兩個(gè)使能控制端,使能端在不受輸入信號影響的情況下不允許器件工作。L298N有一個(gè)邏輯電源輸入端,使
21、內(nèi)部邏輯電路部分在低電壓下工作。(1) L298N引腳結(jié)構(gòu)如表3-1圖3-3 L298N 驅(qū)動(dòng)芯片表3-1 L298N引腳編號與功能:引腳編號名稱功能1電流傳感器A在該引腳和地之間接小阻值電阻可用來檢測電流2輸出引腳1內(nèi)置驅(qū)動(dòng)器A的輸出端1,接至電機(jī)A3輸出引腳2內(nèi)置驅(qū)動(dòng)器A的輸出端2,接至電機(jī)A4電機(jī)電源端電機(jī)供電輸入端,電壓可達(dá)46V5輸入引腳1內(nèi)置驅(qū)動(dòng)器A的邏輯控制輸入端16使能端A內(nèi)置驅(qū)動(dòng)器A的使能端7輸入引腳2內(nèi)置驅(qū)動(dòng)器A的邏輯控制輸入端28邏輯地邏輯地9邏輯電源端邏輯控制電路的電源輸入端為5V10輸入引腳3內(nèi)置驅(qū)動(dòng)器B的邏輯控制輸入端111使能端B內(nèi)置驅(qū)動(dòng)器B的使能端12輸入引腳4
22、內(nèi)置驅(qū)動(dòng)器B的邏輯控制輸入端213輸出引腳3內(nèi)置驅(qū)動(dòng)器B的輸出端1,接至電機(jī)B14輸出引腳4內(nèi)置驅(qū)動(dòng)器B的輸出端2,接至電機(jī)B15電流傳感器B在該引腳和地之間接小阻值電阻可用來檢測電流(2) 電機(jī)驅(qū)動(dòng)原理電路的形狀很像字母H。四個(gè)三極管就是H橋的四條垂直線,而電機(jī)就是H中的橫線,如圖3-4所示。圖3-4 L298N內(nèi)部H橋驅(qū)動(dòng)電路H橋電機(jī)驅(qū)動(dòng)電路包含四個(gè)三極管和一個(gè)電機(jī)。電機(jī)運(yùn)轉(zhuǎn),必須遵循導(dǎo)通對角線上的一對三極管。基于不同三極管對的導(dǎo)通情況可以控制電機(jī)的轉(zhuǎn)向,電流可可以從左至右流過電機(jī),也可以從右至左流過電機(jī)。當(dāng)Q1管和Q4管導(dǎo)通時(shí),電流就從電源正極經(jīng)Q1從左至右流過電機(jī),然后再經(jīng)Q4回到電源
23、負(fù)極,該流向的電流將驅(qū)動(dòng)電機(jī)順時(shí)針轉(zhuǎn)動(dòng)。下面分析另一對三極管Q2和Q3,當(dāng)兩個(gè)三極管同時(shí)導(dǎo)通的情況下,電流將從右至左流過電機(jī)。從而驅(qū)動(dòng)電機(jī)沿逆時(shí)針方向轉(zhuǎn)動(dòng)。電機(jī)控制邏輯如下:以電機(jī)A為例,當(dāng)使能端ENA為高電平時(shí),如果輸入引腳IN1為低電平而輸入引腳IN2為高電平,電機(jī)A反轉(zhuǎn);如果輸入引腳IN1為高電平而輸入引腳IN2為低電平,電機(jī)A正轉(zhuǎn)。電機(jī)A電機(jī)B圖3-5 L298N驅(qū)動(dòng)芯片和直流電機(jī)接線圖3.2 軟件設(shè)計(jì)本設(shè)計(jì)的目的是以Arduino單片機(jī)為控制核心,將紅外光電傳感器輸出的電信號送至單片機(jī)電路,再由單片機(jī)向L298N電機(jī)驅(qū)動(dòng)模塊發(fā)送指令,控制后輪電機(jī)驅(qū)動(dòng)小車行進(jìn),控制前輪電機(jī)驅(qū)動(dòng)小車轉(zhuǎn)向
24、,從而自動(dòng)循跡。3.2.1 系統(tǒng)主程序在主程序模塊中,需要完成對各參量和接口的初始化、檢測黑線、前進(jìn)或轉(zhuǎn)向判斷等工作。當(dāng)小車探測到黑線后,根據(jù)檢測到黑線的傳感器的編號不同,小車要做出相應(yīng)的動(dòng)作。當(dāng)小車左邊的傳感器檢測到黑線時(shí),說明小車車頭向右邊偏移,這時(shí)主控芯片控制前輪電機(jī)反轉(zhuǎn),車體向左邊修正;同理當(dāng)小車的右邊傳感器檢測到黑線時(shí),主控芯片控制前輪電機(jī)正轉(zhuǎn),車體向右邊修正;當(dāng)黑線在車體的中間,中間的傳感器一直檢測到黑線,這樣小車就會(huì)沿著黑線自動(dòng)循跡。主程序流程如圖3-6所示。圖3-6 循跡車程序流程圖3.2.2 本系統(tǒng)編譯器本設(shè)計(jì)采用C語言來編譯程序。模塊化結(jié)構(gòu)程序的設(shè)計(jì),可以使系統(tǒng)軟件便于調(diào)試
25、與優(yōu)化,也使其他人更好地理解和閱讀系統(tǒng)的程序設(shè)計(jì)。因此,軟件的設(shè)計(jì)上,運(yùn)用了模塊化程序的結(jié)構(gòu)對軟件進(jìn)行設(shè)計(jì),使得程序變得更加直觀易懂。隨著單片機(jī)開發(fā)技術(shù)的不斷發(fā)展,從普遍使用匯編語言到逐漸使用高級語言開發(fā),單片機(jī)的開發(fā)軟件也在不斷發(fā)展,ARDUINO IDE軟件是目前Arduino專用開發(fā)的軟件,界面清晰整潔,編程簡便。.ARDUINO IDE開發(fā)系統(tǒng)可用于編輯C。由編譯器編譯可以生成目標(biāo)文件(.ino)。3.2.3 實(shí)物展示 圖3-7 小車全景圖193.4 部分程序展示unsigned int p_1=22; unsigned int p_2=24;unsigned int p_3=26;u
26、nsigned int p_4=28;unsigned int p_5=30;unsigned int p_6=32;#define l 1 #define r 2 #define rl 3unsigned int num,co,c=0,mum,d=0;int t;void setup() pinMode(2,OUTPUT);/lift back pinMode(3,OUTPUT);/lift go pinMode(4,OUTPUT);/right back pinMode(5,OUTPUT);/right go for(t=22;t3) /for(co=0;co3) c=c+1; if(c=
27、ti) analogWrite(2,0); analogWrite(4,0); analogWrite(3,40); analogWrite(5,40); delay(350); return; if(p_3) analogWrite(2,0); analogWrite(4,0); analogWrite(3,90); analogWrite(5,90); else if(p_4) analogWrite(2,0); analogWrite(4,0); analogWrite(3,90); analogWrite(5,90); else if(p_2) analogWrite(2,30); a
28、nalogWrite(4,0); analogWrite(3,0); analogWrite(5,40); else if(p_5) analogWrite(2,0); analogWrite(4,30); analogWrite(3,40); analogWrite(5,0); else if(p_1) analogWrite(2,40); analogWrite(4,0); analogWrite(3,0); analogWrite(5,50); else if(p_6) analogWrite(2,0); analogWrite(4,40); analogWrite(3,50); ana
29、logWrite(5,0); void TURN_90(unsigned char e) stop(rl); delay (500); if(e=r) delay (10); analogWrite(2,0); analogWrite(4,70); analogWrite(3,60); analogWrite(5,0); delay (450); do p_1=digitalRead(22); p_2=digitalRead(24); p_3=digitalRead(26); p_4=digitalRead(28); p_5=digitalRead(30); p_6=digitalRead(3
30、2); if(p_4|p_3) delay (3); p_1=digitalRead(22); p_2=digitalRead(24); p_3=digitalRead(26); p_4=digitalRead(28); p_5=digitalRead(30); p_6=digitalRead(32); while(!(p_4|p_3); else if(e=l) delay (10); analogWrite(2,70); analogWrite(4,0); analogWrite(3,0); analogWrite(5,60); delay (450); do p_1=digitalRea
31、d(22); /讀取12位灰度 p_2=digitalRead(24); p_3=digitalRead(26); p_4=digitalRead(28); p_5=digitalRead(30); p_6=digitalRead(32); if(p_3|p_4) delay (3); p_1=digitalRead(22); p_2=digitalRead(24); p_3=digitalRead(26); p_4=digitalRead(28); p_5=digitalRead(30); p_6=digitalRead(32); while(!(p_3|p_4); stop(rl);del
32、ay (100); void loop() while(1) FOLL_FINE(1); 結(jié) 論經(jīng)過努力Arduino循跡小車設(shè)計(jì)與實(shí)現(xiàn)實(shí)務(wù)專題的畢業(yè)設(shè)計(jì)終于接近尾聲。較好地實(shí)現(xiàn)了小車自動(dòng)循跡行駛功能。但是仍舊有許多不足的地方,循跡車部分由于是遙控車改造所以無法進(jìn)行大幅度的拐彎,循跡行駛的靈敏度不高,循跡部分的這兩個(gè)問題造成拍攝視頻時(shí)難度加大。以為學(xué)的知識已經(jīng)很完善,但是通過這次對Arduino智能小車實(shí)務(wù)專題的畢業(yè)設(shè)計(jì),讓我認(rèn)識到自己所學(xué)的東西不過是冰山一角,認(rèn)識到理論和實(shí)踐相合的重要性。之后,我會(huì)更加勤奮地去學(xué)習(xí)。如果說完成畢業(yè)設(shè)計(jì)是我們這幾個(gè)月艱苦奮斗的“硬件”成果,那么能夠激起我對知識
33、的不斷渴求則是這幾月不懈努力的“軟件”成果。通過這“最后一次的大學(xué)作業(yè)”,我深刻理解了理論和實(shí)踐相結(jié)合的重要性,理論與實(shí)踐相結(jié)合不僅可以鞏固我們所學(xué)的的知識,還加深與鞏固了原有的知識,更重要的是還拓寬了我們的知識面,學(xué)到了更多更深的東西,與此同時(shí),自己的動(dòng)手能力也大大的提高。在說明文的編寫過程中,查閱了不少的相關(guān)資料,使我Arduino單片機(jī)、L298N驅(qū)動(dòng)芯片、灰度傳感器、光電傳感器等電子元器件有了更進(jìn)一步的了解和掌握,同時(shí)也襯托出自己專業(yè)知識學(xué)得還不扎實(shí)。特別是在電路制作過程中,由于缺少實(shí)際經(jīng)驗(yàn),對單片機(jī)的很多功能還不能熟練的掌握。所以在今后的工作和學(xué)習(xí)過程中,應(yīng)加強(qiáng)專業(yè)知識的學(xué)習(xí),不段以
34、理論和實(shí)踐相結(jié)合,鍛煉出具有突出的專業(yè)技能,不段完善自己,拓寬知識面,最終成為復(fù)合型人才,適應(yīng)社會(huì)的挑戰(zhàn),實(shí)現(xiàn)人生的自我價(jià)值。 致 謝在此次設(shè)計(jì)中,童曉薇老師作為我的指導(dǎo)老師,至始至終都給予我了不少幫助,從下任務(wù)書開始,就幫我制定規(guī)劃,提醒我應(yīng)注意的問題;借給我資料,幫我聯(lián)系硬件;和我一起調(diào)程序,并提出了很多的修改意見以及完善方案;此外還認(rèn)真批閱了我的論文,指出其中很多瑕疵和不清晰的地方;更重要的是在我遇到困難時(shí)對我的鼓勵(lì),讓我不懈怠、不退縮、也讓我更有信心;可以說我的每一點(diǎn)進(jìn)展都與童老師的付出是分不開的。當(dāng)然在此,我還要向身邊關(guān)心我的老師、同學(xué)致以誠摯的謝意!最后感謝母校對我這幾年的辛勤培養(yǎng)
35、。還有其他老師和同學(xué),都幫了我不少忙,在此不再一一陳述。謹(jǐn)祝老師們工作順利,萬事如意,桃李滿天下;同學(xué)們學(xué)業(yè)有成,前程似錦! 參考文獻(xiàn)1基于Arduino的趣味電子制作 Simon Monk、張寶玲、吳蘭臻、 鄭海昕 科學(xué)出版社(2011-07出版)2 (英)Simon Monk,ARDUINO 編程從零開始, 科學(xué)出版社3 單成祥,牛彥文,傳感器設(shè)計(jì)基礎(chǔ),北京: 國防工業(yè)出版社,20074 竇振中,單片機(jī)外圍部件實(shí)用手冊輸出通道器件分冊,北京:北京航空航天大學(xué)出版社,2003.5 楊素行,模擬電子技術(shù)基礎(chǔ)簡明教程(第三版),北京:高等教育出版社,20056 閻石,數(shù)字電子技術(shù)(第五版),北京:高等教育出版社,20067 孫余凱,傳感器應(yīng)用電路300例M,北京: 電子工業(yè)出版社,2008.8 陳曉莉,張俊濤,KEIL C51單片機(jī)仿真器的設(shè)計(jì)第二版,陜西科技大學(xué)出版社,2006:19209 張一斌,余建坤,單片機(jī)原理課程設(shè)計(jì),長沙:中南大學(xué)出版社,2008 21
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)患溝通的重要性
- 最簡單的有機(jī)化合物--甲烷第二課時(shí)
- 《空間幾何體的三視圖》(平行班)
- 八年級物理下冊 認(rèn)識分子(2)課件 滬粵版
- 外研版(一起)六上Module3《Unit2Collectingstampsismyhobby》課件5
- 學(xué)習(xí)思考(無鏈接1)
- 營銷活動(dòng)方案
- 《歸去來兮辭》關(guān)
- 烏鴉喝水演示文稿
- 進(jìn)出口貨物報(bào)關(guān)單的填制
- 投資理財(cái)?shù)倪x擇
- QC成果906849756
- PEP小學(xué)英語五年級下冊_Unit3_My___birthday
- 1-惠民福壽上市宣導(dǎo)(北京劉驪珠)
- 體積單位的進(jìn)率(教育精品)