arduino循跡小車畢業(yè)論文_第1頁(yè)
arduino循跡小車畢業(yè)論文_第2頁(yè)
arduino循跡小車畢業(yè)論文_第3頁(yè)
arduino循跡小車畢業(yè)論文_第4頁(yè)
arduino循跡小車畢業(yè)論文_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 . 目錄摘要2引言21 Arduino智能小車設(shè)計(jì)方案與參數(shù)31.1 Arduino智能小車設(shè)計(jì)方案簡(jiǎn)介 31.1.1功能要求31.1.2 基本原理31.2 循跡小車參數(shù)42 Arduino與51單片機(jī)的區(qū)別52.1 Arduino單片機(jī)52.1.1 Arduino單片機(jī)的介紹52.1.2 Arduino單片機(jī)的特色52.1.3 Arduino單片機(jī)的功能52.2 51單片機(jī)62.2.1 51單片機(jī)的介紹62.2.2 51單片機(jī)的功能62.3 Arduino比51更好的地方73 循跡小車設(shè)計(jì)83.1硬件設(shè)計(jì)83.1.1 單片機(jī)最小系統(tǒng)83.1.2 灰度傳感器模塊 93.1.3 電機(jī)驅(qū)動(dòng)電路1

2、03.2 軟件設(shè)計(jì)123.2.1 系統(tǒng)主程序133.2.2 本系統(tǒng)編譯器133.3 實(shí)物展示143.4 部分程序展示15結(jié)論20致21參考文獻(xiàn)22Arduino循跡小車設(shè)計(jì)與實(shí)現(xiàn)摘要:循跡小車是Arduino單片機(jī)的一種典型應(yīng)用。本智能小車是由ardiuno單片機(jī)和外部電路組成,包括檢測(cè)模塊,控制模塊,電源模塊。循跡車設(shè)計(jì)采用Arduino單片機(jī)作為小車的控制核心,采用灰度傳感器作為小車的檢測(cè)模塊來(lái)識(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)循

3、跡,驅(qū)動(dòng)電路。引言自第一臺(tái)工業(yè)機(jī)器人誕生以來(lái),機(jī)器人的民展已經(jīng)遍與機(jī)械、電子、冶金、交通、宇航、國(guó)防等領(lǐng)域。近年來(lái)機(jī)器人的智能水平不斷提高,并且迅速地改變著人們的生活方式。人們?cè)诓粩嗵接?、改造、認(rèn)識(shí)自然的過(guò)程中,制造能替代人工作的機(jī)器一直是人類的目標(biāo)。單片機(jī)是一種可通過(guò)編程控制的微處理器,雖其自身不能單獨(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)

4、系實(shí)際應(yīng)用,本次畢業(yè)設(shè)計(jì)選擇了基于單片機(jī)Arduino循跡車,并做出實(shí)物。鑒于電子技術(shù)、計(jì)算機(jī)技術(shù)以與各種更先進(jìn)的仿真軟件的出現(xiàn),使用高級(jí)語(yǔ)言如C代替匯編語(yǔ)言進(jìn)行編程和控制已成為現(xiàn)實(shí),單片機(jī)C語(yǔ)言編程相對(duì)于MC51匯編語(yǔ)言編程有如下優(yōu)點(diǎn):對(duì)單片機(jī)的指令系統(tǒng)不需要有很深的理解就可以編程操作單片機(jī)。寄存器分配、不同存儲(chǔ)器的尋址與數(shù)據(jù)類型等細(xì)節(jié)完全由編輯器自動(dòng)處理。程序有規(guī)的結(jié)構(gòu),可分為不同的函數(shù),可使程序結(jié)構(gòu)化。庫(kù)中包括許多標(biāo)準(zhǔn)子程序,具有較強(qiáng)的處理能力,使用方便。具有方便的模塊化編程技術(shù),使已編好的程序便于移植,可極大縮短開(kāi)發(fā)時(shí)間,增加程序的可讀性和可維護(hù)性。事實(shí)上,當(dāng)今許多硬件的開(kāi)發(fā)都已開(kāi)始用

5、C語(yǔ)言編程,如各種單片機(jī)、DSP、ARM等,用C語(yǔ)言進(jìn)行工業(yè)控制也已成為一種趨勢(shì),為了更好的適應(yīng)當(dāng)今社會(huì)形勢(shì),為了更好的面對(duì)挑戰(zhàn)、把握機(jī)遇,此次畢業(yè)設(shè)計(jì)決定嘗試用C語(yǔ)言編程完成。也希望能在進(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智能小車方案簡(jiǎn)介依據(jù)所需功能的要求,設(shè)

6、計(jì)計(jì)價(jià)器系統(tǒng)的結(jié)構(gòu)圖和硬件電路,繪制出智能小車的電路圖,再繪制程序框圖,之后編程并燒錄到單片機(jī);將各模塊組合進(jìn)行調(diào)試。1.1.1功能要求小車以Arduino 為控制核心, 用單片機(jī)產(chǎn)生PWM波,控制小車速度。利用灰度傳感器對(duì)路面黑色軌跡進(jìn)行檢測(cè),并將路面檢測(cè)信號(hào)反饋給單片機(jī)。單片機(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)模塊、能源-電源模塊, 智能車循跡行駛過(guò)程是:首先灰度傳感器將檢測(cè)到黑線的信號(hào)傳送給單片

7、機(jī)最小系統(tǒng),然后通過(guò)單片機(jī)最小系統(tǒng)的控制算法對(duì)信號(hào)進(jìn)行計(jì)算處理,將此信號(hào)在通過(guò)控制算法驅(qū)動(dòng)電機(jī),最后實(shí)現(xiàn)對(duì)智能車運(yùn)動(dòng)軌跡進(jìn)行實(shí)時(shí)控制。微控制器-Arduino為部核心處理處理單元,將外部給予的電平信號(hào)通過(guò)以植入的c語(yǔ)言程序?yàn)橹鬟M(jìn)行處理?;叶葌鞲衅鳛橹悄苄≤嚨难劬?,通過(guò)辨別地面的黑色線條的物理信號(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 循跡車總體模塊設(shè)計(jì)圖 1.2 循跡小車參數(shù)系統(tǒng)參數(shù)如下表

8、所示:微控制器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是一款便捷靈活、方便上手的開(kāi)源電子原型平臺(tái),包含硬件(各種型號(hào)的Arduino板)和軟件(Arduino IDE)。它適用于愛(ài)好者、藝術(shù)家、設(shè)計(jì)師和對(duì)于互動(dòng)有興趣的朋友們。是一個(gè)基于開(kāi)放原始碼的軟硬件平臺(tái),構(gòu)建于開(kāi)放原始碼simple I/O介面版,并且具有使用類似Java、C語(yǔ)言的Processing/Wiring開(kāi)發(fā)環(huán)境。Arduino包含兩個(gè)主要

9、的部分:硬件部分是可以用來(lái)做電路連接的Arduino電路板;另外一個(gè)則是Arduino IDE,你的計(jì)算機(jī)中的程序開(kāi)發(fā)環(huán)境。你只要在IDE中編寫程序代碼,將程序上傳到Arduino電路板后,程序便會(huì)告訴Arduino電路板要做些什么了。2.1.2 Arduino單片機(jī)的特色開(kāi)放源代碼的電路圖設(shè)計(jì),程序開(kāi)發(fā)接口可以免費(fèi)下載,也可依個(gè)人需求自己修改。而且低價(jià)格的微處理控制器 (AVR系列控制器),可以采用USB接口供電,不需外接電源,也可以使用外部9VDC輸入。Arduino支持ISP在線燒,可以將新的bootloader固件燒入AVR芯片。有了bootloader之后,可以通過(guò)串口或者USB t

10、o RS232線更新固件。也可依據(jù)官方提供的Eagle格式PCB和SCH電路圖簡(jiǎn)化Arduino模組,完成獨(dú)立運(yùn)作的微處理控制;可簡(jiǎn)單地與傳感器,各式各樣的電子元件連接(例如:紅外線,超音波,熱敏電阻,光敏電阻,伺服馬達(dá),等)支持多種互動(dòng)程序,如:Flash、Max/Msp、vvvv、PD、C、Processing等。應(yīng)用方面:利用Arduino,突破以往只能使用鼠標(biāo)、鍵盤、CCD等輸入的裝置的互動(dòng)容,可以更簡(jiǎn)單地達(dá)成單人或多人游戲互動(dòng)。2.1.3 Arduino單片機(jī)的功能在功能上可以快速使用Arduino與Adobe Flash, Processing, Max/MSP, Pure Dat

11、a, SuperCollider等軟件結(jié)合,作出互動(dòng)作品。 Arduino可以使用現(xiàn)有的電子元件例如開(kāi)關(guān)或者傳感器或者其他控制器件、LED、步進(jìn)馬達(dá)或其他輸出裝置。 Arduino也可以獨(dú)立運(yùn)行,并與軟件進(jìn)行交互,例如: Macromedia Flash, Processing, Max/MSP, Pure Data, VVVV或其他互動(dòng)軟件等。 Arduino的IDE界面基于開(kāi)放源代碼,可以免費(fèi)下載使用,開(kāi)發(fā)出更多令人驚艷的互動(dòng)作品。在更多功能上有基于知識(shí)共享開(kāi)放元源碼的電路圖設(shè)計(jì),有基于知識(shí)共享開(kāi)放源碼的程式開(kāi)發(fā)環(huán)境。Arduino可使用ICSP線上燒入器,將bootloader燒入新的I

12、C晶片,可依據(jù)官方電路圖,簡(jiǎn)化Arduino模組,完成獨(dú)立運(yùn)作的微處理控制,可簡(jiǎ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單片機(jī),后來(lái)隨著Flash rom技術(shù)的發(fā)展,8031單片機(jī)取得了長(zhǎng)足的進(jìn)展,成為應(yīng)用最廣泛的8位單片機(jī)之一,其代表型號(hào)是ATMEL公司的AT89系列,它廣泛應(yīng)用于工業(yè)測(cè)控系統(tǒng)之中。很多公司都有51系列的兼容機(jī)型推出

13、,今后很長(zhǎng)的一段時(shí)間將占有大量市場(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條指令,大部分為單字節(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封裝

14、。51單片機(jī)的部結(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ī)之間的串行通信;片振蕩器和時(shí)鐘產(chǎn)生電路,石英晶體和微調(diào)電容需要外接。最佳振蕩頻率為6M-12M。2.3 Arduino比51更好的地方Ar

15、duino與51單片機(jī)相比:變更人性化,編程相對(duì)人性化和直觀,沒(méi)有單片機(jī)基礎(chǔ)的人也能很快上手。硬件性能上,Arduino更加穩(wěn)定,不會(huì)像51一樣時(shí)常出現(xiàn)跑飛的現(xiàn)象。Arduino作為開(kāi)源的一款的單片機(jī),更重要的是在這個(gè)4g時(shí)代可搜尋的學(xué)習(xí)資料是非常多的。綜上所述,Arduino無(wú)疑是比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ù)字輸入輸出,特別適合需要大量IO接口的設(shè)計(jì)。Mega2560的處理器核心是ATmega2560, 同時(shí)具有54路

16、數(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,F(xiàn)lash Memory 256 K,(ATmega328,其中8 KB 用于 boo

17、tloader),SRAM 8 KB,EEPROM 4 KB,工作時(shí)鐘 16 MHz。存儲(chǔ)器:ATmega2560包括了片上256KB Flash,其中8KB用于Bootloader。同時(shí)還有8KB SRAM和4KB EEPROM。輸入輸出:一共有數(shù)字輸入輸出口,4路串口信號(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ì)紅外線不同的反射能

18、力通過(guò)光敏二極管或光敏三極管,接收反射回的不同光強(qiáng)信號(hào),把不同光強(qiáng)轉(zhuǎn)換為電流信號(hào),最后通過(guò)電阻,轉(zhuǎn)換為單片機(jī)可識(shí)別的高低電平。灰度傳感器實(shí)現(xiàn)循跡的基本電路如3-2所示。圖3-2 灰度傳感器電路圖(1)灰度傳感器工作原理傳感器的紅外發(fā)射二極管不斷發(fā)射紅外線,當(dāng)發(fā)射出的紅外線沒(méi)有被反射回來(lái)或被反射回來(lái)但強(qiáng)度不夠大時(shí),光敏三極管一直處于關(guān)斷狀態(tài),此時(shí)模塊的輸出端為低電平,指示二極管一直處于熄滅狀態(tài);而當(dāng)紅外線被反射回來(lái)且強(qiáng)度足夠大,光敏三極管飽和,此時(shí)模塊的輸出端為高電平,指示二極管被點(diǎn)亮。小車行駛過(guò)程中向地面發(fā)射紅外光,當(dāng)紅外光遇到綠色路線,地板發(fā)生漫反射,安裝在小型車的反射光接收器會(huì)接收;如果是

19、遇到黑色路線,紅外光將被黑線吸收,安裝在小車上的接收管沒(méi)有收到紅外光。控制器會(huì)根據(jù)是否收到反射的紅外光為判斷依據(jù)來(lái)確定的黑線的位置和小車的路線。這種探測(cè)方法,即利用紅外線在不同顏色的表面特征,具有不同的反射性能。紅外發(fā)射和接收紅外線感應(yīng)器,可以直接使用集成的紅外探頭,選擇寬度為3-5厘米的黑線。該傳感器的靈敏度是可調(diào)的,傳感器有時(shí)遇到黑線卻不能送出相應(yīng)的信號(hào),通過(guò)調(diào)節(jié)傳感器上的可調(diào)電阻,適當(dāng)?shù)脑龃蠡驕p小可改變靈敏度。(2)傳感器分布傳感器通過(guò)信號(hào)采集,向單片機(jī)提供信息。因此傳感器合理的布局很重要,傳感器布局需要考慮小車行駛過(guò)程息檢測(cè)的準(zhǔn)確度和前瞻性,能使在一樣數(shù)量的傳感器下,獲得更多的數(shù)據(jù)。而

20、由于考慮到我們改造車的車座較窄、不平整,且車身較請(qǐng),適合放多的傳感器,最終決定選用對(duì)6個(gè)傳感器來(lái)進(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è)部有兩個(gè)H橋的高電壓大電流全橋式驅(qū)動(dòng)芯片,可以用來(lái)驅(qū)動(dòng)直流電動(dòng)機(jī)、步進(jìn)電動(dòng)機(jī)。使用標(biāo)準(zhǔn)邏輯電平信號(hào)控制,直接連接單片機(jī)管腳,具有兩個(gè)使能控制端,使能端在不受輸入信號(hào)影響的情況下不允許器件工作。L298N有一個(gè)邏輯電源輸入端,使部邏輯電路部分在低電壓下工作。(1) L298N引腳結(jié)構(gòu)如表3-1圖3-3 L298N 驅(qū)動(dòng)芯片

21、表3-1L298N引腳編號(hào)與功能:引腳編號(hào)名稱功能1電流傳感器A在該引腳和地之間接小阻值電阻可用來(lái)檢測(cè)電流2輸出引腳1置驅(qū)動(dòng)器A的輸出端1,接至電機(jī)A3輸出引腳2置驅(qū)動(dòng)器A的輸出端2,接至電機(jī)A4電機(jī)電源端電機(jī)供電輸入端,電壓可達(dá)46V5輸入引腳1置驅(qū)動(dòng)器A的邏輯控制輸入端16使能端A置驅(qū)動(dòng)器A的使能端7輸入引腳2置驅(qū)動(dòng)器A的邏輯控制輸入端28邏輯地邏輯地9邏輯電源端邏輯控制電路的電源輸入端為5V10輸入引腳3置驅(qū)動(dòng)器B的邏輯控制輸入端111使能端B置驅(qū)動(dòng)器B的使能端12輸入引腳4置驅(qū)動(dòng)器B的邏輯控制輸入端213輸出引腳3置驅(qū)動(dòng)器B的輸出端1,接至電機(jī)B14輸出引腳4置驅(qū)動(dòng)器B的輸出端2,接至

22、電機(jī)B15電流傳感器B在該引腳和地之間接小阻值電阻可用來(lái)檢測(cè)電流(2) 電機(jī)驅(qū)動(dòng)原理電路的形狀很像字母H。四個(gè)三極管就是H橋的四條垂直線,而電機(jī)就是H中的橫線,如圖3-4所示。圖3-4 L298N部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)向,電流可可以從左至右流過(guò)電機(jī),也可以從右至左流過(guò)電機(jī)。當(dāng)Q1管和Q4管導(dǎo)通時(shí),電流就從電源正極經(jīng)Q1從左至右流過(guò)電機(jī),然后再經(jīng)Q4回到電源負(fù)極,該流向的電流將驅(qū)動(dòng)電機(jī)順時(shí)針轉(zhuǎn)動(dòng)。下面分析另一對(duì)三極管Q2和Q3,當(dāng)兩個(gè)三極管同時(shí)導(dǎo)通的情況下,電流將從右至左流過(guò)電

23、機(jī)。從而驅(qū)動(dòng)電機(jī)沿逆時(shí)針?lè)较蜣D(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ā)送指令,控制后輪電機(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)小

24、車探測(cè)到黑線后,根據(jù)檢測(cè)到黑線的傳感器的編號(hào)不同,小車要做出相應(yīng)的動(dòng)作。當(dāng)小車左邊的傳感器檢測(cè)到黑線時(shí),說(shuō)明小車車頭向右邊偏移,這時(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)編譯器本設(shè)計(jì)采用C語(yǔ)言來(lái)編譯程序。模塊化結(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ì),使得程序變得更

25、加直觀易懂。隨著單片機(jī)開(kāi)發(fā)技術(shù)的不斷發(fā)展,從普遍使用匯編語(yǔ)言到逐漸使用高級(jí)語(yǔ)言開(kāi)發(fā),單片機(jī)的開(kāi)發(fā)軟件也在不斷發(fā)展,ARDUINO IDE軟件是目前Arduino專用開(kāi)發(fā)的軟件,界面清晰整潔,編程簡(jiǎn)便。.ARDUINO IDE開(kāi)發(fā)系統(tǒng)可用于編輯C。由編譯器編譯可以生成目標(biāo)文件(.ino)。3.2.3 實(shí)物展示圖3-7 小車全景圖21 / 223.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=3

26、2;#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=ti) analogWrite(2,0); analogWrite(4,0); analogWrite(3,40)

27、; 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); analogWrite(4,0); analogWrite(3,0); analogWrite(5,40); els

28、e 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); analogWrite(5,0); void TURN_90(unsigned char e) stop(rl); de

29、lay (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(32); if(p_4|p_3) delay (3); p_1=digitalRead(22); p_2=digit

30、alRead(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=digitalRead(22); /讀取12位灰度 p_2=digitalRead(24); p_3=digitalRead(26);

31、 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);delay (100); void loop() while(1) FOLL_FINE(1); 結(jié) 論經(jīng)過(guò)努力Arduino循跡小車設(shè)計(jì)與實(shí)現(xiàn)實(shí)務(wù)專題的畢業(yè)設(shè)計(jì)終于接近尾聲。較好地實(shí)現(xiàn)了小車自動(dòng)循跡行駛功能。但是仍舊有許多不足的地方,循跡車部分由于是遙控車改造所以無(wú)法進(jìn)行大幅度的拐彎,循跡行駛的靈敏度不高,循跡部分的這兩個(gè)問(wèn)題造成拍攝視頻時(shí)難度加大。以為學(xué)的知識(shí)已經(jīng)很完善,但是通過(guò)這次對(duì)Arduino智能小車實(shí)務(wù)專題的畢業(yè)設(shè)計(jì),讓我認(rèn)識(shí)到自己所學(xué)的東西

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論