arduino循跡小車畢業(yè)論文.doc
《arduino循跡小車畢業(yè)論文.doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《arduino循跡小車畢業(yè)論文.doc(22頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、福建船政交通學(xué)院 目 錄 摘要 2 引 言 2 1 Arduino智能小車設(shè)計(jì)方案與參數(shù) 3 1.1 Arduino智能小車設(shè)計(jì)方案簡介 3 1.1.1 功能要求 3 1.1.2 基本原理 3 1.2 循跡小車參數(shù) 4 2 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
2、單片機(jī)的介紹 6 2.2.2 51單片機(jī)的功能 6 2.3 Arduino比51更好的地方 7 3 循跡小車設(shè)計(jì) 8 3.1 硬件設(shè)計(jì) 8 3.1.1 單片機(jī)最小系統(tǒng) 8 3.1.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) 22 Arduino循跡小車設(shè)計(jì)與實(shí)現(xiàn) 摘要:循跡小車是
3、Arduino單片機(jī)的一種典型應(yīng)用。本智能小車是由ardiuno單片機(jī)和外部電路組成,包括檢測(cè)模塊,控制模塊,電源模塊。循跡車設(shè)計(jì)采用Arduino單片機(jī)作為小車的控制核心,采用灰度傳感器作為小車的檢測(cè)模塊來識(shí)別綠色路面中央的黑色引導(dǎo)線,采集信號(hào)并將信號(hào)轉(zhuǎn)換為能被ardiuno單片機(jī)識(shí)別的數(shù)字信號(hào);采用驅(qū)動(dòng)芯片L298N構(gòu)成雙H橋控制直流電機(jī)。其中軟件系統(tǒng)采用C程序。 關(guān)鍵詞:Arduino單片機(jī),自動(dòng)循跡,驅(qū)動(dòng)電路。 引言 自第一臺(tái)工業(yè)機(jī)器人誕生以來,機(jī)器人的民展已經(jīng)遍及機(jī)械、電子、冶金、交通、宇航、國防等領(lǐng)域。近年來機(jī)器人的智能水平不斷提高,并且迅速地改變著人們的生活方式。人
4、們?cè)诓粩嗵接憽⒏脑?、認(rèn)識(shí)自然的過程中,制造能替代人工作的機(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é)生,掌握單片機(jī)是最基礎(chǔ)的要求。為進(jìn)一步豐富和鞏固單片機(jī)知識(shí),也為能更好的聯(lián)系實(shí)際應(yīng)用,本次畢業(yè)設(shè)計(jì)選擇了基于單片機(jī)Arduino循跡車,并做出實(shí)物。鑒于電子技術(shù)、計(jì)算機(jī)技術(shù)以及各種更先進(jìn)的仿真軟件的出現(xiàn),使用高級(jí)語言如C代替匯編語言進(jìn)行編程和控
5、制已成為現(xiàn)實(shí),單片機(jī)C語言編程相對(duì)于MC51匯編語言編程有如下優(yōu)點(diǎn): 對(duì)單片機(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í)間,增加程序的可讀性和可維護(hù)性。 事實(shí)上,當(dāng)今許多硬件的開發(fā)都已開始用C語言編程,如各種單片機(jī)、DSP、ARM等,用C語言進(jìn)行工業(yè)控制也已成為一種趨勢(shì),為了更好的適應(yīng)當(dāng)今社會(huì)形勢(shì),為了更好的面對(duì)挑戰(zhàn)、把握機(jī)遇,此次畢業(yè)設(shè)計(jì)決定嘗試
6、用C語言編程完成。也希望能在進(jìn)一步熟悉單片機(jī)控制的同時(shí),對(duì)數(shù)字電子技術(shù)、模擬電子技術(shù)、計(jì)算控制技術(shù)以及常用外圍芯片有更深層次的了解,提高自己的綜合能力。 1 Arduino智能小車設(shè)計(jì)方案與參數(shù) 根據(jù)設(shè)計(jì)要求,Arduino智能小車要沿著山道環(huán)山跑一圈。Arduino智能小車主要由四部分組成:分別為大腦-微控制器Arduino、眼睛-灰度傳感器、軀體-電機(jī)驅(qū)動(dòng)模塊和心臟-電源模塊。 1.1 Arduino智能小車方案簡介 依據(jù)所需功能的要求,設(shè)計(jì)計(jì)價(jià)器系統(tǒng)的結(jié)構(gòu)圖和硬件電路,繪制出智能小車的電路圖,再繪制程序框圖,之后編程并燒錄到單片機(jī);將各模塊組合進(jìn)行調(diào)試。 1.1.1功能要求
7、 小車以Arduino 為控制核心, 用單片機(jī)產(chǎn)生PWM波,控制小車速度。利用灰度傳感器對(duì)路面黑色軌跡進(jìn)行檢測(cè),并將路面檢測(cè)信號(hào)反饋給單片機(jī)內(nèi)。單片機(jī)對(duì)采集到的信號(hào)予以分析判斷,及時(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)模塊、能源-電源模塊, 智能車循跡行駛過程是:首先灰度傳感器將檢測(cè)到黑線的信號(hào)傳送給單片機(jī)最小系統(tǒng),然后通過單片機(jī)最小系統(tǒng)的控制算法對(duì)信號(hào)進(jìn)行計(jì)算處理,將此信號(hào)在通過控制算法驅(qū)動(dòng)電機(jī),最后實(shí)現(xiàn)對(duì)智能車運(yùn)動(dòng)軌跡進(jìn)
8、行實(shí)時(shí)控制。 微控制器-Arduino為內(nèi)部核心處理處理單元,將外部給予的電平信號(hào)通過以植入的c語言程序?yàn)橹鬟M(jìn)行處理?;叶葌鞲衅鳛橹悄苄≤嚨难劬?,通過辨別地面的黑色線條的物理信號(hào),灰度再將之轉(zhuǎn)換為單片機(jī)能夠處理的電平信號(hào)。單片機(jī)將信號(hào)傳輸給電機(jī)驅(qū)動(dòng)模塊,即我們小車結(jié)構(gòu)的手腳接受指令運(yùn)行。智能車總體模塊設(shè)計(jì)圖如圖1-1所示。 L298N 驅(qū)動(dòng)模塊 Arduino 單片機(jī) 電源模塊 灰度傳感器模塊 直流電機(jī) 小車 路徑 圖1-1 循跡車
9、總體模塊設(shè)計(jì)圖 1.2 循跡小車參數(shù) 系統(tǒng)參數(shù)如下表所示: 微控制器 Arduino 路徑檢測(cè)模塊 灰度傳感器 倆輪驅(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是一款便捷靈活、方便上手的開源電子原型平臺(tái),包含硬件(各種型號(hào)的Arduino板)和軟件(Arduino IDE)。它適用于愛好者、藝術(shù)家、設(shè)計(jì)師和對(duì)于"互動(dòng)"有興趣的朋友們。是一個(gè)基于開放原始碼的軟硬件平臺(tái),構(gòu)建
10、于開放原始碼simple I/O介面版,并且具有使用類似Java、C語言的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接口供電,不需外接電源,也可以
11、使用外部9VDC輸入。Arduino支持ISP在線燒,可以將新的"bootloader"固件燒入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á)成單人或多人
12、游戲互動(dòng)。 2.1.3 Arduino單片機(jī)的功能 在功能上可以快速使用Arduino與Adobe 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ā)出更多令人
13、驚艷的互動(dòng)作品。 在更多功能上有基于知識(shí)共享開放元源碼的電路圖設(shè)計(jì),有基于知識(shí)共享開放源碼的程式開發(fā)環(huán)境。Arduino可使用ICSP線上燒入器,將「bootloader」燒入新的IC晶片,可依據(jù)官方電路圖,簡化Arduino模組,完成獨(dú)立運(yùn)作的微處理控制,可簡單地與傳感器,各式各樣的電子元件連接(例如:紅外線,超聲波,熱敏電阻,光敏電阻,伺服馬達(dá)等),USB接口上,不需外接電源。另外有提供9V直流電源輸入。 2.2 51單片機(jī) 2.2.1 51單片機(jī)的介紹 51單片機(jī)是對(duì)所有兼容Intel 8031指令系統(tǒng)的單片機(jī)的統(tǒng)稱。該系列單片機(jī)的始祖是Intel的8031單
14、片機(jī),后來隨著Flash rom技術(shù)的發(fā)展,8031單片機(jī)取得了長足的進(jìn)展,成為應(yīng)用最廣泛的8位單片機(jī)之一,其代表型號(hào)是ATMEL公司的AT89系列,它廣泛應(yīng)用于工業(yè)測(cè)控系統(tǒng)之中。很多公司都有51系列的兼容機(jī)型推出,今后很長的一段時(shí)間內(nèi)將占有大量市場(chǎng)。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條指令,大部分為單
15、字節(jié)指令,21個(gè)專用寄存器,2個(gè)可編程定時(shí)/計(jì)數(shù)器5個(gè)中斷源,2個(gè)優(yōu)先級(jí)(52有6個(gè)),一個(gè)全雙工串行通信口,外部數(shù)據(jù)存儲(chǔ)器尋址空間為64kB,外部程序存儲(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è)中斷源的中斷控制系
16、統(tǒng); 一個(gè)全雙工UART(通用異步接收發(fā)送器)的串行I/O口,用于實(shí)現(xiàn)單片機(jī)之間或單片機(jī)與微機(jī)之間的串行通信;片內(nèi)振蕩器和時(shí)鐘產(chǎn)生電路,石英晶體和微調(diào)電容需要外接。最佳振蕩頻率為6M-12M。 2.3 Arduino比51更好的地方 Arduino與51單片機(jī)相比:變更人性化,編程相對(duì)人性化和直觀,沒有單片機(jī)基礎(chǔ)的人也能很快上手。硬件性能上,Arduino更加穩(wěn)定,不會(huì)像51一樣時(shí)常出現(xiàn)跑飛的現(xiàn)象。Arduino作為開源的一款的單片機(jī),更重要的是在這個(gè)4g時(shí)代可搜尋的學(xué)習(xí)資料是非常多的。綜上所述,Arduino無疑是比51更適合新手和用于比賽專用的。 3 循跡
17、小車設(shè)計(jì) 3.1 硬件設(shè)計(jì) 3.1.1單片機(jī)最小系統(tǒng) 主控機(jī)系統(tǒng)采用Arduino mega2560單片機(jī),采用USB接口的核心電路板,它最大的特點(diǎn)就是具有多達(dá)54路數(shù)字輸入輸出,特別適合需要大量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ù): 處理器 AT
18、mega2560,工作電壓 5V,輸入電壓(推薦) 7-12V,輸入電壓(范圍) 6-20V,數(shù)字IO腳 54 (其中16路作為PWM輸出),模擬輸入腳 16,IO腳直流電流 40 mA,3.3V腳直流電流 50 mA,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路串口信
19、號(hào),6路外部中斷,14路脈沖寬度調(diào)制PWM(0--13),SPI(53(SS),51(MOSI),50(MISO),52(SCK)):SPI通信接口,16路模擬輸入,特別LED(13號(hào)):Arduino專門用于測(cè)試LED的保留接口,和TWI接口(專門支持通信)。 3.1.2 灰度傳感器模塊 灰度傳感器是利用黑線對(duì)紅外線不同的反射能力通過光敏二極管或光敏三極管,接收反射回的不同光強(qiáng)信號(hào),把不同光強(qiáng)轉(zhuǎn)換為電流信號(hào),最后通過電阻,轉(zhuǎn)換為單片機(jī)可識(shí)別的高低電平?;叶葌鞲衅鲗?shí)現(xiàn)循跡的基本電路如3-2所示。 圖3-2 灰度傳感器電路圖 (1)灰度傳感器工作原理 傳感器的紅外發(fā)射二極管不斷發(fā)射紅
20、外線,當(dāng)發(fā)射出的紅外線沒有被反射回來或被反射回來但強(qiáng)度不夠大時(shí),光敏三極管一直處于關(guān)斷狀態(tài),此時(shí)模塊的輸出端為低電平,指示二極管一直處于熄滅狀態(tài);而當(dāng)紅外線被反射回來且強(qiáng)度足夠大,光敏三極管飽和,此時(shí)模塊的輸出端為高電平,指示二極管被點(diǎn)亮。 小車行駛過程中向地面發(fā)射紅外光,當(dāng)紅外光遇到綠色路線,地板發(fā)生漫反射,安裝在小型車的反射光接收器會(huì)接收;如果是遇到黑色路線,紅外光將被黑線吸收,安裝在小車上的接收管沒有收到紅外光??刂破鲿?huì)根據(jù)是否收到反射的紅外光為判斷依據(jù)來確定的黑線的位置和小車的路線。這種探測(cè)方法,即利用紅外線在不同顏色的表面特征,具有不同的反射性能。 紅外發(fā)射和接收紅外線感應(yīng)器,可
21、以直接使用集成的紅外探頭,選擇寬度為3-5厘米的黑線。該傳感器的靈敏度是可調(diào)的,傳感器有時(shí)遇到黑線卻不能送出相應(yīng)的信號(hào),通過調(diào)節(jié)傳感器上的可調(diào)電阻,適當(dāng)?shù)脑龃蠡驕p小可改變靈敏度。 (2)傳感器分布 傳感器通過信號(hào)采集,向單片機(jī)提供信息。因此傳感器合理的布局很重要,傳感器布局需要考慮小車行駛過程中信息檢測(cè)的準(zhǔn)確度和前瞻性,能使在相同數(shù)量的傳感器下,獲得更多的數(shù)據(jù)。 而由于考慮到我們改造車的車座較窄、不平整,且車身較請(qǐng),適合放多的傳感器,最終決定選用對(duì)6個(gè)傳感器來進(jìn)行布局,即在車子底座前端放6個(gè)傳感器。這種布局是目前最適合我們改造車的布局方法。 3.1.3 電機(jī)驅(qū)動(dòng)電路 本設(shè)計(jì)采用L29
22、8N電機(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)邏輯電平信號(hào)控制,直接連接單片機(jī)管腳,具有兩個(gè)使能控制端,使能端在不受輸入信號(hào)影響的情況下不允許器件工作。L298N有一個(gè)邏輯電源輸入端,使內(nèi)部邏輯電路部分在低電壓下工作。 (1) L298N引腳結(jié)構(gòu)如表3-1 圖3-3 L298N 驅(qū)動(dòng)芯片 表3-1 L298N引腳編號(hào)與功能: 引腳編號(hào) 名稱 功能 1 電流傳感器A 在該引腳和地之間接小阻值電阻可用來檢測(cè)電流 2 輸出引腳1 內(nèi)置
23、驅(qū)動(dòng)器A的輸出端1,接至電機(jī)A 3 輸出引腳2 內(nèi)置驅(qū)動(dòng)器A的輸出端2,接至電機(jī)A 4 電機(jī)電源端 電機(jī)供電輸入端,電壓可達(dá)46V 5 輸入引腳1 內(nèi)置驅(qū)動(dòng)器A的邏輯控制輸入端1 6 使能端A 內(nèi)置驅(qū)動(dòng)器A的使能端 7 輸入引腳2 內(nèi)置驅(qū)動(dòng)器A的邏輯控制輸入端2 8 邏輯地 邏輯地 9 邏輯電源端 邏輯控制電路的電源輸入端為5V 10 輸入引腳3 內(nèi)置驅(qū)動(dòng)器B的邏輯控制輸入端1 11 使能端B 內(nèi)置驅(qū)動(dòng)器B的使能端 12 輸入引腳4 內(nèi)置驅(qū)動(dòng)器B的邏輯控制輸入端2 13 輸出引腳3 內(nèi)置驅(qū)動(dòng)器B的輸出端1,接至電機(jī)B 14
24、輸出引腳4 內(nèi)置驅(qū)動(dòng)器B的輸出端2,接至電機(jī)B 15 電流傳感器B 在該引腳和地之間接小阻值電阻可用來檢測(cè)電流 (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)通對(duì)角線上的一對(duì)三極管?;诓煌龢O管對(duì)的導(dǎo)通情況可以控制電機(jī)的轉(zhuǎn)向,電流可可以從左至右流過電機(jī),也可以從右至左流過電機(jī)。當(dāng)Q1管和Q4管導(dǎo)通時(shí),電流就從電源正極經(jīng)Q1從左至右流過電機(jī),然后再經(jīng)Q4回到電源負(fù)極,該流向的電
25、流將驅(qū)動(dòng)電機(jī)順時(shí)針轉(zhuǎn)動(dòng)。下面分析另一對(duì)三極管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ī)為控制核心,將紅外光電傳感器輸出的電信號(hào)送至單片機(jī)電路,再由單片機(jī)向L298N電機(jī)驅(qū)動(dòng)模塊發(fā)送指
26、令,控制后輪電機(jī)驅(qū)動(dòng)小車行進(jìn),控制前輪電機(jī)驅(qū)動(dòng)小車轉(zhuǎn)向,從而自動(dòng)循跡。 3.2.1 系統(tǒng)主程序 在主程序模塊中,需要完成對(duì)各參量和接口的初始化、檢測(cè)黑線、前進(jìn)或轉(zhuǎn)向判斷等工作。當(dāng)小車探測(cè)到黑線后,根據(jù)檢測(cè)到黑線的傳感器的編號(hào)不同,小車要做出相應(yīng)的動(dòng)作。當(dāng)小車左邊的傳感器檢測(cè)到黑線時(shí),說明小車車頭向右邊偏移,這時(shí)主控芯片控制前輪電機(jī)反轉(zhuǎn),車體向左邊修正;同理當(dāng)小車的右邊傳感器檢測(cè)到黑線時(shí),主控芯片控制前輪電機(jī)正轉(zhuǎn),車體向右邊修正;當(dāng)黑線在車體的中間,中間的傳感器一直檢測(cè)到黑線,這樣小車就會(huì)沿著黑線自動(dòng)循跡。主程序流程如圖3-6所示。 圖3-6 循跡車程序流程圖 3.2.2 本系統(tǒng)編
27、譯器 本設(shè)計(jì)采用C語言來編譯程序。模塊化結(jié)構(gòu)程序的設(shè)計(jì),可以使系統(tǒng)軟件便于調(diào)試與優(yōu)化,也使其他人更好地理解和閱讀系統(tǒng)的程序設(shè)計(jì)。因此,軟件的設(shè)計(jì)上,運(yùn)用了模塊化程序的結(jié)構(gòu)對(duì)軟件進(jìn)行設(shè)計(jì),使得程序變得更加直觀易懂。 隨著單片機(jī)開發(fā)技術(shù)的不斷發(fā)展,從普遍使用匯編語言到逐漸使用高級(jí)語言開發(fā),單片機(jī)的開發(fā)軟件也在不斷發(fā)展,ARDUINO IDE軟件是目前Arduino專用開發(fā)的軟件,界面清晰整潔,編程簡便。. ARDUINO IDE開發(fā)系統(tǒng)可用于編輯C。由編譯器編譯可以生成目標(biāo)文件(.ino)。 3.2.3 實(shí)物展示 圖3-7 小車全景圖 19
28、 3.4 部分程序展示 unsigned int p_1=22; unsigned int p_2=24; unsigned int p_3=26; unsigned int p_4=28; unsigned int p_5=30; unsigned int p_6=32; #define l 1 #define r 2 #define rl 3 unsigned int num,co,c=0,mum,d=0; int t; void setup() { pinMode(2,OUTPUT);//lift back
29、 pinMode(3,OUTPUT);//lift go pinMode(4,OUTPUT);//right back pinMode(5,OUTPUT);//right go for(t=22;t<=52;t++) { pinMode(t, INPUT); } } void stop (unsigned char m) { switch(m) { case r : analogWrite(5,0); analogWrite(4,0); case l : analogWrite(3,0);
30、analogWrite(2,0); case rl : analogWrite(5,0); analogWrite(4,0); analogWrite(3,0); analogWrite(2,0); default : break; } } void FOLL_FINE(unsigned int ti) { while(1) { num=0; p_1=digitalRead(22); p_2=digitalRead(24); p_3=digitalRead(26); p_4=digitalRead(28
31、); p_5=digitalRead(30); p_6=digitalRead(32); if(p_1) num++; if(p_2) num++; if(p_3) num++; if(p_4) num++; if(p_5) num++; if(p_6) num++; if(num>3) { //for(co=0;co<200;co++); num=0; p_1=digitalRead(22); p_2=digitalRead(24); p_3=d
32、igitalRead(26); p_4=digitalRead(28); p_5=digitalRead(30); p_6=digitalRead(32); if(p_1) num++; if(p_2) num++; if(p_3) num++; if(p_4) num++; if(p_5) num++; if(p_6) num++; if(num>3) { c=c+1; } if(c==ti) { analogWri
33、te(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) {
34、analogWrite(2,0); analogWrite(4,0); analogWrite(3,90); analogWrite(5,90); } else if(p_2) { analogWrite(2,30); analogWrite(4,0); analogWrite(3,0); analogWrite(5,40); } else if(p_5) { analogWrite(2,0); analogWrite(4,30);
35、 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); analogWrite(5,
36、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=dig
37、italRead(22); p_2=digitalRead(24); p_3=digitalRead(26); p_4=digitalRead(28); p_5=digitalRead(30); p_6=digitalRead(32); if(p_4||p_3) { delay (3); p_1=digitalRead(22); p_2=digitalRead
38、(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);
39、 analogWrite(4,0); analogWrite(3,0); analogWrite(5,60); delay (450); do { p_1=digitalRead(22); //讀取12位灰度 p_2=digitalRead(24); p_3=digitalRead(26); p_4=digitalRead(28); p_5=digitalRead(30); p_6=digitalRead(32)
40、; 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)); }
41、 stop(rl); delay (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é)的知識(shí)已經(jīng)很完善,但是通過這次對(duì)《Arduino智能小車》實(shí)務(wù)專題的畢業(yè)設(shè)計(jì),讓我認(rèn)識(shí)到自己所學(xué)的東西不過是
42、冰山一角,認(rèn)識(shí)到理論和實(shí)踐相合的重要性。之后,我會(huì)更加勤奮地去學(xué)習(xí)。如果說完成畢業(yè)設(shè)計(jì)是我們這幾個(gè)月艱苦奮斗的“硬件”成果,那么能夠激起我對(duì)知識(shí)的不斷渴求則是這幾月不懈努力的“軟件”成果。 通過這“最后一次的大學(xué)作業(yè)”,我深刻理解了理論和實(shí)踐相結(jié)合的重要性,理論與實(shí)踐相結(jié)合不僅可以鞏固我們所學(xué)的的知識(shí),還加深與鞏固了原有的知識(shí),更重要的是還拓寬了我們的知識(shí)面,學(xué)到了更多更深的東西,與此同時(shí),自己的動(dòng)手能力也大大的提高。在說明文的編寫過程中,查閱了不少的相關(guān)資料,使我Arduino單片機(jī)、L298N驅(qū)動(dòng)芯片、灰度傳感器、光電傳感器等電子元器件有了更進(jìn)一步的了解和掌握,同時(shí)也襯托出自己專業(yè)知識(shí)學(xué)
43、得還不扎實(shí)。特別是在電路制作過程中,由于缺少實(shí)際經(jīng)驗(yàn),對(duì)單片機(jī)的很多功能還不能熟練的掌握。所以在今后的工作和學(xué)習(xí)過程中,應(yīng)加強(qiáng)專業(yè)知識(shí)的學(xué)習(xí),不段以理論和實(shí)踐相結(jié)合,鍛煉出具有突出的專業(yè)技能,不段完善自己,拓寬知識(shí)面,最終成為復(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í)
44、對(duì)我的鼓勵(lì),讓我不懈怠、不退縮、也讓我更有信心;可以說我的每一點(diǎn)進(jìn)展都與童老師的付出是分不開的。 當(dāng)然在此,我還要向身邊關(guān)心我的老師、同學(xué)致以誠摯的謝意!最后感謝母校對(duì)我這幾年的辛勤培養(yǎng)。還有其他老師和同學(xué),都幫了我不少忙,在此不再一一陳述。謹(jǐn)祝老師們工作順利,萬事如意,桃李滿天下;同學(xué)們學(xué)業(yè)有成,前程似錦! 參考文獻(xiàn) [1]基于Arduino的趣味電子制作 Simon Monk、張寶玲、吳蘭臻、 鄭海昕 科學(xué)出版社(2011-07出版) [2] (英)Simon M
45、onk,ARDUINO 編程從零開始, 科學(xué)出版社 [3] 單成祥,牛彥文,傳感器設(shè)計(jì)基礎(chǔ),北京: 國防工業(yè)出版社,2007 [4] 竇振中,單片機(jī)外圍部件實(shí)用手冊(cè)輸出通道器件分冊(cè),北京:北京航空航天大學(xué)出版社,2003. [5] 楊素行,模擬電子技術(shù)基礎(chǔ)簡明教程(第三版),北京:高等教育出版社,2005 [6] 閻石,數(shù)字電子技術(shù)(第五版),北京:高等教育出版社,2006 [7] 孫余凱,傳感器應(yīng)用電路300例[M],北京: 電子工業(yè)出版社,2008. [8] 陳曉莉,張俊濤,KEIL C51單片機(jī)仿真器的設(shè)計(jì)第二版,陜西科技大學(xué)出版社,2006:19-20 [9] 張一斌,余建坤,單片機(jī)原理課程設(shè)計(jì),長沙:中南大學(xué)出版社,2008 21
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 設(shè)備采購常用的四種評(píng)標(biāo)方法
- 車間員工管理須知(應(yīng)知應(yīng)會(huì))
- 某公司設(shè)備維護(hù)保養(yǎng)工作規(guī)程
- 某企業(yè)潔凈車間人員進(jìn)出管理規(guī)程
- 企業(yè)管理制度之5S管理的八個(gè)口訣
- 標(biāo)準(zhǔn)化班前會(huì)的探索及意義
- 某企業(yè)內(nèi)審員考試試題含答案
- 某公司環(huán)境保護(hù)考核管理制度
- 現(xiàn)場(chǎng)管理的定義
- 員工培訓(xùn)程序
- 管理制度之生產(chǎn)廠長的職責(zé)與工作標(biāo)準(zhǔn)
- 某公司各級(jí)專業(yè)人員環(huán)保職責(zé)
- 企業(yè)管理制度:5S推進(jìn)與改善工具
- XXX公司環(huán)境風(fēng)險(xiǎn)排查及隱患整改制度
- 生產(chǎn)車間基層管理要點(diǎn)及建議