基于arduino的超聲波避障小車設計含28張CAD圖
基于arduino的超聲波避障小車設計含28張CAD圖,基于,arduino,超聲波,小車,設計,28,cad
摘要
隨著5G技術的日趨成熟,無人駕駛有了更加有力的技術支持。無人駕駛技術是未來幾十年汽車和科技公司的一個重要研究方向,避障技術是無人駕駛技術中最基礎、最核心的一項技術,具有廣闊的發(fā)展前景。
本論文的設計內(nèi)容為設計一輛基于Arduino的超聲波避障小車,本設計將基于Arduino單片機作為控制中心,使用超聲波傳感器和紅外尋跡傳感器來獲取環(huán)境信息,使用舵機來轉動超聲波傳感器,使用L298N模塊作為電機驅動模塊驅動四輪小車,解決了小車繞過障礙物后返回原路線的難題,實現(xiàn)了設計要求。
經(jīng)過實驗驗證,本文所設計的小車能夠檢測障礙物并進行避障,并能夠在避障后按照原路線進行行駛。達到了預期的目標和要求。
關鍵詞 Arduino 超聲波 避障 小車
Abstract
As 5G technology matures, driverless driving has more powerful technical support. Unmanned driving technology is an important research direction for automobile and technology companies in the next few decades. Obstacle avoidance technology is the most basic and core technology in unmanned driving technology, and has broad development prospects.
The design of this paper is to design an Arduino-based ultrasonic obstacle avoidance car. This design will be based on the Arduino single-chip microcomputer as the control center, using ultrasonic sensors and infrared tracking sensors to obtain environmental information, using steering gear to rotate the ultrasonic sensor, using L298N As a motor drive module, the module drives the four-wheeled car, which solves the problem of the car returning to the original route after bypassing the obstacle, and realizes the design requirements.
After experimental verification, the car designed in this paper can detect obstacles and avoid obstacles, and then follow the original route after avoiding obstacles. Achieved the expected goals and requirements.
Key wards Arduino;ultrasound;avoidance;car
目錄
摘要 I
Abstract II
第1章緒論 1
1.1 選題背景 1
1.2 研究的目的和意義 2
1.2.1研究目的 2
1.2.2研究意義 2
1.3 國內(nèi)外研究現(xiàn)狀 3
1.3.1國外研究現(xiàn)狀 3
1.3.2國內(nèi)研究現(xiàn)狀 3
1.4 論文的研究內(nèi)容 4
1.5 本章小結 4
第2章系統(tǒng)設計 5
2.1 系統(tǒng)設計 5
2.2 本章小結 5
第3章超聲波測距原理 6
3.1 超聲波測距原理 6
3.2 本章小結 6
第4章硬件設計 7
4.1 硬件選擇 7
4.1.1單片機選擇 7
4.1.2超聲波模塊選擇 8
4.1.3舵機選擇 8
4.1.4紅外尋跡模塊選擇 9
4.1.5電機驅動模塊選擇 10
4.1.6其它器件選擇 10
4.2 硬件組裝 11
4.3 本章小結 11
第5章軟件設計 12
5.1 各個模塊程序設計 12
5.1.1Arduino UNO單片機 12
5.1.2超聲波模塊 12
5.1.3舵機模塊 13
5.1.4紅外尋跡模塊 13
5.1.5電機驅動模塊 14
5.2 小車子程序設計 16
5.2.1靠近障礙物 16
5.2.2檢測障礙物 16
5.2.3沿壁行駛 18
5.2.4檢測黑線 19
5.2.5尋跡行駛 20
5.3 小車完整程序設計 21
5.4 本章小結 22
第6章工程定額概算 23
6.1 小車制作過程成本預算 23
6.2小車對環(huán)境的影響及其可持續(xù)性 23
6.2.1材料污染環(huán)境問題 23
6.2.2噪音污染問題 23
6.2.3工業(yè)三廢問題 23
6.2.4社會可持續(xù)發(fā)展問題 23
6.3 本章小結 23
第7章總結 24
參考文獻 25
致謝 26
第1章緒論
智能小車是一種由多個輪子驅動的能夠自動完成一定任務的智能機器人。科學技術的不斷發(fā)展,為智能小車提供了強有力的技術支持,使得智能小車的實現(xiàn)成為了可能,智能小車也因此成為了科學技術研究的一個熱門的、重要的方向。智能小車自身也有著很多的優(yōu)點,其中最為明顯的優(yōu)點是能夠不需要人為干預地、自主地完成一定的任務;智能小車還擁有其它的一些優(yōu)點,它具有體積比較小、重心比較低、運動靈活等優(yōu)點[1]。避障技術就是智能小車通過自身的控制中心執(zhí)行一定的避障程序來使智能小車實現(xiàn)躲避障礙物的一項技術,這項技術能夠大大提高智能小車在執(zhí)行任務過程中的安全性,避免智能小車受到損傷。
1.1 選題背景
智能小車在生活服務、工業(yè)制造、軍事等行業(yè)已經(jīng)有了廣泛的應用[1],使得智能小車的避障技術成為了國內(nèi)外很多研究機構關注的焦點。智能小車避障技術的實現(xiàn)需要硬件和軟件,硬件就是為智能小車添加控制芯片以及各種能夠采集智能小車所處空間信息的傳感器,軟件就是基于智能小車所搭載的基于硬件系統(tǒng)編寫的能夠實現(xiàn)小車躲避障礙物功能的程序。智能小車避障系統(tǒng)目前已經(jīng)處于大規(guī)模發(fā)展階段,但是避障系統(tǒng)還存在諸多的缺陷和局限性,同時也有著廣闊的發(fā)展前景,這使得更多的從事相關領域研究的人投入智能小車技術的研究之中。近些年來,經(jīng)過所有從事研究智能小車人員的不斷探索和研究,智能小車的避障算法越來越先進,智能小車在躲避障礙物的時候能夠更加精準、更加準確,傳統(tǒng)的避障智能小車變得更加智能、更能夠適應復雜的工作環(huán)境。
在生活服務領域:在汽車行業(yè)之中,5G技術的日趨成熟,為自動駕駛技術的實現(xiàn)提供了強大的技術支持,自動駕駛技術將會成為各個汽車品牌的一項核心賣點。自動駕駛技術中不可或缺、最為重要的一項技術就是避障技術,避障技術能夠保證乘客在乘坐汽車時的安全性。在快遞服務行業(yè)之中,快遞行業(yè)的巨頭們都在研究自主運行的快遞車,旨在解決快遞配送服務的最后一公里的難題,無人快遞車目前已經(jīng)在部分大學之中進行定點試運行,避障技術無疑是無人快遞車的一項核心技術,避障技術能夠避免快遞車撞到行人或者其它障礙物。相信在不遠的未來,我們收到的快遞都是由無人快遞車進行配送的,快遞車成為我們生活中的重要組成部分。此外,在2020年伊始,新冠病毒蔓延全球,人類的生命受到了巨大的威脅,很多人因此喪命,但這次疫情也是一次機遇,為了盡量避免人與人之間的交叉感染,很多的科技公司拿出他們的正在研究的智能車輛,進行了試運行。順豐快遞公司使用它們公司的無人車為武漢配送瓜果蔬菜等生活物資;京東集團所研究的無人車為武漢的醫(yī)院配送醫(yī)療物資。還有其它的智能小車配合5G技術使得醫(yī)生能夠遠程會診、遠程查房。還有智能小車能夠裝載消毒劑,對空氣進行消毒;搭載紫外線生成器,對病房進行紫外線消毒;還能夠運送垃圾。這些智能小車,全部需要運用避障技術,這也正好體現(xiàn)了避障技術在未來智能生活、智能城市中的重要性。
在工業(yè)制造領域:在快遞分揀中心,上千個無人“小黃車”快速地、自主地分揀快遞。我國的上海洋山港四期碼頭,最為吸引人的地方莫過于該碼頭高度的自動化。高度的自動化實現(xiàn)的方式是采用了上百臺自動引導運輸車,也被稱為AGV。通過“智能”大腦,AGV可以自定行車路線,有效規(guī)避碰撞。洋山四期的鋰電池驅動AGV采用了當今最前沿的技術,除了無人駕駛、自動導航、路徑優(yōu)化、主動避障外,還支持自我故障診斷、自我電量監(jiān)控等功能[2]。顯而易見,若想讓上述的情況變成現(xiàn)實,必定離不開避障技術。
在軍事領域:無人機能夠承擔偵察、轟炸等任務。無人車還能夠承擔巡邏等任務。這一切也都離不開避障技術。
綜上所述:避障技術是未來智能時代最重要、最核心、最基礎的一項技術,避障技術的研究對于實現(xiàn)理想的智慧城市有著極其重要的意義。
1.2 研究的目的和意義
1.2.1研究目的
(1)設計一輛基于arduino單片機的利用超聲波傳感器模塊來實現(xiàn)避障的小車,此外,小車能夠在繞過障礙物后繼續(xù)按照原路線進行行駛。
(2)由于本科階段的課程之中未涉及到arduino單片機的原理及應用的學習,但是本科的課程學習了最基礎的51單片機,在學習的過程中積累了學習單片機的思路及學習方法,根據(jù)學習51單片機的方法和思路的積累,自己通過網(wǎng)上視頻教程和相關書籍學習一種新的單片機:arduino的使用方法。
(3)由于arduino使用類C語言進行編程,本科階段的對C語言進行了學習。該設計能夠提高C語言的編程能力。
(4)通過自己動手搭建一個智能小車平臺,能夠掌握智能小車平臺的搭建方法,提高動手能力。
(5)該設計分為硬件搭建和軟件編程兩個方面,該設計能夠掌握硬件與軟件結合調(diào)試的基本方法和技巧。
(6)設計過程可能會出現(xiàn)意想不到的問題,因此需要學會分析問題的原因,能夠提高解決問題的能力。
1.2.2研究意義
智能小車在生活服務、工業(yè)制造、軍事領域都有著深遠的研究意義。
生活服務:避障技術對于無人駕駛技術的最終實現(xiàn)有著極其重要的意義,它可以保證無人駕駛技術的安全性,保護了人們的生命財產(chǎn)安全,它本身就是自動駕駛技術中的一部分。此外,餐廳服務機器人、銀行服務機器人等各種各樣的機器人,想要真正實現(xiàn),都離不開避障技術的支持。
工業(yè)制造:快遞中心的自動分揀機器人、無人碼頭的自動引導運輸車的實現(xiàn),都需要避障技術作為其技術基礎。
軍事領域:隨著信息技術近些年的飛速發(fā)展,戰(zhàn)爭已經(jīng)從過去傳統(tǒng)的機械化戰(zhàn)爭變成了信息化戰(zhàn)爭,信息化戰(zhàn)爭對于軍事裝備提出了新的要求,無人機,無人偵察車等多種裝備成為了軍事領域研究的重要方向。而這一切都離不開避障技術的支持。
無人化、智能化、自動化才是未來人們的生活方式的常態(tài),而這一切都離不開避障技術的支持,避障技術的研究有著深遠的影響。
1.3 國內(nèi)外研究現(xiàn)狀
1.3.1國外研究現(xiàn)狀
國外智能小車的研究歷史較長,始于上世紀50年代。它的發(fā)展歷程大體可以分為三個階段[3]。
第一階段:這個階段仍處于智能小車研究的起步階段,剛開始有科研人員開始了對智能小車的研究。1954年美國Barrett Electronics公司研究開發(fā)了世界上第一臺自主引導車系統(tǒng)AGVS(Automated Guided Vehicle System)[3]。該系統(tǒng)是為了提高企業(yè)工廠物品搬運的自動化水平而進行的探索研究,實現(xiàn)了拖車在固定線路上的自主運行的功能。這也是人類對于智能小車技術最早的探索和研究。
第二階段:這個階段是智能小車研究逐漸風行的階段。在歐洲、美洲的美國以及亞洲的日本等國家意識到了智能小車發(fā)展的重要性,紛紛成立機構來加大對智能小車技術的研究和探索,這就促進了智能小車技術的整體進步。緊接著,智能小車的研究浪潮席卷了整個世界,大量的世界著名的公司陸續(xù)地投入到智能小車的研究之中。
第三階段:這個階段智能小車的研究已經(jīng)進入了深入、系統(tǒng)、大規(guī)模研究階段[3],國外對于智能小車的研究目前仍處于第三階段。美國卡內(nèi)基.梅隆大學、麻省理工大學、德意志聯(lián)邦大學、日本大阪大學等很多的學校對智能小車進行了深入的研究。這個階段,對于智能小車的研究成果呈現(xiàn)井噴狀態(tài),各種方案被用于實驗驗證,其中充滿了大量的具有深遠影響意義的解決方案。例如:UBM視覺系統(tǒng)、Combi road系統(tǒng)、航位推測系統(tǒng)。
1.3.2國內(nèi)研究現(xiàn)狀
相對于國外,我國開展智能小車技術方面的研究起步較晚,開始于上個世紀的80年代。雖然我國在智能車輛技術方面的研究總體上落后于發(fā)達國家,并且存在一定的技術差距[4],但是隨著我國政府和企業(yè)認識到了科技創(chuàng)新的重要性并加大了對科技創(chuàng)新的投入,以及我國科學技術研究人員的不懈努力,截止到今天,我國的智能小車技術的研究取得了豐碩的成果,在某些方面趕上了、甚至超越了世界先進水平。
中國第一汽車集團公司和國防科技大學機電工程與自動化學院與2003年研制成功我國第一輛自主駕駛轎車[4]。這輛轎車除了能夠完成在高速公路上的正常行駛之外,還能夠實現(xiàn)超車這種復雜的自動控制。在當時,這輛的總體技術水平已經(jīng)和世界上最為先進的智能小車水平不相上下。南京理工大學、北京理工大學、浙江大學、國防科技大學、清華大學等多所院校聯(lián)合研制了7B.8軍用室外自主車,該車裝有彩色攝像機、激光雷達、陀螺慣導定位等傳感器[4]。其體系結構以水平式結構為主,采用傳統(tǒng)的“感知-建模-規(guī)劃-執(zhí)行”算法。智能車輛研究也是智能交通系統(tǒng)ITS的關鍵技術。隨著ITS研究的興起,我國已形成一支ITS技術研究開發(fā)的技術專業(yè)隊伍。并且各交通、汽車企業(yè)越來越加大了對ITS及智能車輛技術研發(fā)的投入,整個社會的關注程度在不斷提高[4]。
總而言之,近些年我國經(jīng)濟的高速發(fā)展,為發(fā)展智能小車技術提供了經(jīng)濟基礎;國家對于科技創(chuàng)新越來越重視,為發(fā)展智能小車技術提供了政策基礎;各個大學培養(yǎng)出了大批的高素質(zhì)人才,為發(fā)展智能小車技術提供了人才基礎,可以肯定,我國對于智能小車的研究必然會越來越好,避障技術作為其中重要的一項組成部分,其研究也必然會越來越好。
1.4 論文的研究內(nèi)容
該論文在四輪小車平臺上基于arduino單片機進行研究,研究的主要內(nèi)容為利用超聲波模塊、舵機模塊、紅外尋跡模塊所采集環(huán)境信息并通過執(zhí)行避障程序來使得小車實現(xiàn)避障,并且在避障之后智能小車能夠按照原路線進行行駛。
小車整個運行過程:在地面上鋪設黑線作為小車的行駛路線,使用超聲波傳感器來檢測小車距離障礙物的距離,當小車距離障礙物小于10cm時,小車先停止前進;然后小車向左行駛,并使超聲波朝向障礙物,通過超聲波傳感器所測量的距離判斷障礙物的左邊界,然后向右行駛判斷右邊界,從而判斷小車從障礙物左側避障還是右側避障,以保證小車采用最佳避障路線;繞過障礙物的過程采用沿壁行駛;然后通過紅外尋跡傳感器檢測地面上的黑線,使小車車頭回正;繼續(xù)尋跡沿著黑線行駛,當小車檢測到橫向黑線時,小車停止運動。至此,小車完成全部任務。
1.5 本章小結
了解了避障技術的發(fā)展歷程,認識到了避障技術的重要性和研究的深遠意義。明確了該設計的研究內(nèi)容。
第2章系統(tǒng)設計
2.1 系統(tǒng)設計
本設計的設計目的是設計一臺基于Arduino的超聲波避障小車,因此,選擇Arduino單片機作為整個系統(tǒng)的控制中心,使用超聲波傳感器作為該設計測量距離的傳感器。小車在避障之前需要判斷從哪一側繞行,采用的方案為小車在障礙物前方橫向行駛,超聲波朝向障礙物,通過超聲波測量的距離來判斷障礙物的邊界。因為需要轉動超聲波,所以需要一個舵機。小車繞過障礙物的過程選擇小車沿著障礙物的側面距離一定距離繞行的方案。由于小車需要在躲避障礙物之后繼續(xù)沿著原路線行駛,因此選擇在地上鋪設黑線作為小車行駛的原路線,為小車配置紅外尋跡傳感器用來識別黑白線,使小車在躲避障礙物以后通過檢測黑線回到原路線進行行駛,同時在小車繞過障礙物以后進行尋跡行駛,這樣可以通過鋪設黑線來自由規(guī)定小車的行駛路線,到小車檢測到橫向黑線時,小車停止前進。
通過上述分析,可知該設計共分為7個部分,分別為:Arduino、超聲波、紅外尋跡、舵機、電機、電機驅動、電池。由此可以繪制整個小車系統(tǒng)框架,如圖2-1所示。
圖2-1 小車系統(tǒng)框架
2.2 本章小結
分析了小車系統(tǒng)各個部分,建立了設計的小車的系統(tǒng)框架。
第3章超聲波測距原理
3.1 超聲波測距原理
超聲波是一種頻率高于20000赫茲的聲波。它的方向性好、穿透能力墻,易于獲得較集中的聲能,在水中傳播距離遠,可用于測距、測速、清洗、焊接、碎石、殺菌消毒等。在醫(yī)學、軍事、工業(yè)、農(nóng)業(yè)上有很多的應用[5]。
超聲波測距原理:超聲波發(fā)射器向某一個方向發(fā)射一定頻率的超聲波信號,并在超聲波發(fā)射的同時,計時器開始計時,超聲波在空氣中進行傳播,當遇到物體的時候,超聲波信號反射或者漫反射回來,當超聲波接收器接收到反射波時,計時器停止計時,便可以得到超聲波信號傳播到物體并反射回來的時間,取超聲波在空氣中傳播的速度為340m/s,便可以得到超聲波到物體的距離為:
距離=(時間*340m/s)/2
超聲波測距原理如圖3-1所示。
圖3-1 超聲波測距原理
3.2 本章小結
介紹了超聲波的定義、優(yōu)點及超聲波測距的原理。
第4章硬件設計
硬件設計包括硬件選擇和硬件組裝兩個部分。
4.1 硬件選擇
4.1.1單片機選擇
由于該設計題目要求,因此選擇該設計所使用的單片機為Arduino單片機。
Arduino單片機是一款簡單的、入門級別單片機,常作為新手學習的第一塊單片機。其分為硬件(各種型號的Arduino板)和軟件(Arduino IDE),于2005年冬季由一個歐洲團隊開發(fā)[6]。
Arduino單片機擁有著諸多的型號,人們接觸較多的、常見的型號有Arduino Uno R3和Arduino Nano;此外Arduino單片機還有多種初學者用不到的型號,如Arduino LilyPad、Arduino Due。Arduino單片機所使用的編程軟件是名為“Arduino”的軟件,這款軟件是推出Arduino的團隊所推出的,可在Arduino官網(wǎng)下載。
考慮到該設計要求采用四輪小車平臺,并且會使用多個傳感器,對于單片機的管腳需求較大, 因此選擇管腳較多的型號:Arduino UNO。Arduino單片機是開源平臺,市場上所售賣的Arduino單片機有兩類,一類是意大利原裝正版單片機,另一類是由第三方廠家根據(jù)Arduino官方公布的資料自己生產(chǎn)的;價格方面,意大利原裝正版的該型號的單片機價格較高,一般是138元左右,第三方廠家所生產(chǎn)的該型號的單片機的價格較低,從十幾元到幾十元不等。經(jīng)過對兩種單片機的了解,綜合考慮到小車的成本和運行的穩(wěn)定性,最終選擇第三方廠家生產(chǎn)的單片機。Arduino UNO單片機圖片如圖4-1所示。
圖4-1 Arduino UNO單片機
4.1.2超聲波模塊選擇
超聲波傳感器有很多的型號,精度和價格也各不相同,經(jīng)過對超聲波各種型號的參數(shù)的了解和研究,綜合考慮設計需求、設計成本和運行穩(wěn)定性,選擇的超聲波傳感器為大多數(shù)新手開始學習所使用的型號,即HC-SR04。該傳感器的圖片如圖4-2所示。
圖4-2 超聲波模塊
該型號超聲波傳感器性能穩(wěn)定,測量精度高,盲區(qū)小。該傳感器廣泛應用于機器人避障、物體測距、液位檢測、公共安防、停車場檢測等領域[7]。
該型號超聲波傳感器的電氣參數(shù)如表4-1所示。
表4-1 HC-SR04超聲波電氣參數(shù)
電氣參數(shù)
HC-SR04超聲波模塊
工作電壓
DC 5V
工作電流
15mA
工作頻率
40Hz
最遠射程
4m
最近射程
2cm
測量角度
15度
輸入回響信號
10uS的TTL脈沖
輸出回響信號
輸出TTL電平信號,與射程成比例
4.1.3舵機選擇
舵機的型號也多種多樣,經(jīng)過對舵機的各型號參數(shù)的了解和研究,綜合考慮設計需要、設計成本和運行穩(wěn)定性,選擇的舵機為較為常用到的型號,即SG90。該舵機的圖片如圖4-3所示。
圖4-3 SG90舵機
舵機主要由以下幾個部分組成:舵盤、減速齒輪組、位置反饋電位儀、直流電機、控制電路板等[8]。
該型號舵機的電氣參數(shù)如表4-2所示。
表4-2 SG90舵機電氣參數(shù)
電氣參數(shù)
SG90舵機
工作電壓
DC 4.8V-6V
無負載速度
0.12秒/60度(4.8V)
堵轉扭矩
1.2-1.4公斤/厘米(4.8V)
使用溫度
-30~+60攝氏度
死區(qū)設定
7微秒
重量
9克
4.1.4紅外尋跡模塊選擇
紅外尋跡模塊也多種多樣,經(jīng)過對紅外尋跡模塊各個型號的了解和研究,綜合考慮設計需要、設計成本和運行穩(wěn)定性,選擇紅外尋跡模塊的型號為TCRT5000??紤]到設計需要小車尋跡行駛,因此需要兩個該型號的傳感器。該紅外尋跡模塊圖片如圖4-4所示。
圖4-4 紅外尋跡模塊
該傳感器的應用范圍為:電度表脈沖數(shù)據(jù)采樣、傳真機碎紙機紙張檢測、障礙檢測和黑白線檢測[9]。
該型號紅外尋跡傳感器的電氣參數(shù)如表4-3所示。
表4-3 TCRT5000紅外反射傳感器電氣參數(shù)
電氣參數(shù)
TCRT5000紅外反射傳感器
工作電壓
DC 3.3V-5V
檢測距離
1mm~8mm使用,焦點距離為2.5mm
輸出形式
數(shù)字開關量輸出(0和1)
4.1.5電機驅動模塊選擇
經(jīng)過對電機驅動模塊各型號的了解和研究,并結合設計的需要,選擇電機驅動模塊的型號為L298N。由于該設計平臺為4輪小車,一個L298N能夠驅動兩個電機,因此需要兩個L298N模塊。該電機驅動模塊的圖片如圖4-5所示。
圖4-5 L298N模塊
L298N是ST公司生產(chǎn)的一種高電壓、大電流的電機驅動芯片,該芯片采用15腳封裝。主要特點是:工作電壓高,最高工作電壓可達46V;輸出電流大,瞬間峰值電流可達3A,持續(xù)工作電流為2A;額定功率25W[10]。該電機驅動模塊可以同時驅動兩臺直流電動機。
該型號電機驅動模塊的電氣參數(shù)如下表4-4所示。
表4-4 L298N電機驅動模塊電氣參數(shù)
電氣參數(shù)
L298N電機驅動模塊
驅動電壓
5V-35V
邏輯電壓
5V
工作模式
H橋驅動(雙路)
主控芯片
L298N
邏輯電流
0mA-36mA
驅動電流
2A(MAX單橋)
儲存溫度
-20°C~+35°C
最大功率
25W
4.1.6其它器件選擇
小車選擇:選擇一臺四輪雙層的小車作為設計所用小車。
電池選擇:選擇常見的可充電式電池18650鋰電池作為供電電池,18650電池額定電壓為3.7V,選擇3節(jié)電池供電。并配置充電器。
面包板選擇:選擇最小的面包板即可,主要用于將各模塊的供電引腳接在一起。
還需要配置18650的電池盒、開關、數(shù)量足夠的杜邦線、舵機超聲波支架、螺釘、螺母等。
4.2 硬件組裝
將各個模塊和零件按照正確的方式組裝在一起。小車圖片如圖4-6所示。
圖4-6 小車圖片
4.3 本章小結
對該設計所使用的零件選定型號,并組裝好小車。
第5章軟件設計
5.1 各個模塊程序設計
5.1.1Arduino UNO單片機
Arduino UNO微控制器采用的是Atmel的ATmega328。Arduino UNO開發(fā)板有很多的接口和引腳,其中使用到的接口是USB接口,使用到的引腳為部分數(shù)字引腳、5V和GND引腳。USB接口可以用來給單片機下載程序,同時還兼具供電的功能。5V和GND引腳用于小車在運行過程中給Arduino供電。20個數(shù)字引腳的名稱為0-13和A0-A5,其中A0-A5兼具模擬輸入的功能,0-13引腳之中,引腳3、5、6、9、10、11具有PWM功能。
5.1.2超聲波模塊
超聲波傳感器共有4個引腳,分別為Vcc、GND、 Trig、 Echo,其中Vcc、GND接上5V直流電源為超聲波供電, Trig控制發(fā)出的超聲波信號,Echo接收反射回來的超聲波信號。
超聲波傳感器的工作原理:通過Trig引腳發(fā)一個10uS以上的高電平,模塊內(nèi)部便會自動發(fā)送8個40kHz的方波,然后檢測Echo引腳由低電平變?yōu)楦唠娖奖汩_始計時,直到Echo引腳從高電平變?yōu)榈碗娖綖橹?,讀取這段時間。便可以利用測得的時間和聲音在空氣中傳播的速度計算出測得的距離,測量距離=(高電平持續(xù)時間*聲速(取340m/s))/2。
超聲波時序圖如圖5-1所示。
圖5-1 超聲波時序圖
將超聲波傳感器的Trig引腳連接在A1引腳,Echo引腳連接在A2引腳;因此可編寫超聲波模塊測量距離的程序為:
int Trig=A1;
int Echo=A2;
void setup() {
pinMode(Trig,OUTPUT);
pinMode(Echo,INPUT);
}
void loop() {
Distance_test( ();
}
float Distance_test(){
digitalWrite(Trig,LOW);
delayMicroseconds(2);
digitalWrite(Trig,HIGH);
delayMicroseconds(10);
digitalWrite(Trig,LOW);
delayMicroseconds(2);
distance=pulseIn(Echo,HIGH)*340/2/10000.00;
}
5.1.3舵機模塊
舵機模塊一共有3個引腳,分別是Vcc(紅色)、GND(棕色)和控制線(橙色)。Vcc和GND引腳接在5V電源上,控制線用來控制舵機所旋轉的角度。
工作原理:舵機內(nèi)部有一個基準電壓,微處理器產(chǎn)生的PWM信號通過信號線進入舵機產(chǎn)生直流偏置電壓,與舵機內(nèi)部的基準電壓作比較,獲得電壓差輸出。電壓差的正負輸出到電機驅動芯片上,從而決定正反轉。當舵機開始旋轉的時候,舵機內(nèi)部通過級聯(lián)減速齒輪帶動電位器旋轉,使得電壓差為零,電機停止轉動[11]。
舵機的控制需要一個20mS左右的時基脈沖,該脈沖的高電平部分一般為0.5mS-2.5mS范圍,總間隔為2mS。脈沖的寬度了決定馬達轉動的角度。例如:1.5mS的脈沖,電機將轉向90度的位置。如果脈沖寬度小于1.5mS,那么馬達將會轉向0度方向。如果脈沖寬度大于1.5mS,那么馬達會轉向180度方向。脈沖的寬度和馬達停止的角度成正相關。
由于該設計所用的平臺為Arduino UNO單片機,單片機的庫函數(shù)包含對舵機進行控制的程序,調(diào)用庫函數(shù)“Servo.h”能夠使程序更加簡單,只需要一條程序“myservo.write(degree)”便可以控制舵機的旋轉角度。舵機的控制線接在具有PWM的9號引腳??梢跃帉懚鏅C的控制程序為:
#include
Servo myservo;
void setup() {
myservo.attach(9);
}
void loop() {
myservo.write(degree);
}
5.1.4紅外尋跡模塊
紅外尋跡模塊共有4個引腳,分別為Vcc、GND、D0和A0,Vcc和GND引腳用來連接3V-5V的電源給傳感器供電,D0引腳為數(shù)字信號輸出引腳,A0引腳在該設計中用不到。
該紅外尋跡模塊包含有發(fā)射管和接收管,其中發(fā)射管會不斷向外界發(fā)射紅外線,接收管則不斷檢測環(huán)境中的紅外線強度。當發(fā)射管發(fā)射出的紅外線沒有被反射回來或反射回來但強度不夠大時,此時模塊的輸出端為高電平,模塊上的指示燈處于熄滅狀態(tài);當被檢測物體出現(xiàn)在檢測范圍內(nèi)時,紅外線被反射回來且強度足夠大時,模塊的輸出端為低電平,指示燈被點亮。
該設計一共使用了兩個該型號的紅外尋跡模塊,Vcc和GND用來接在5V的電源上供電,左側紅外尋跡模塊的D0引腳接在A3引腳,右側紅外尋跡模塊的D0引腳接在A4引腳。因此紅外尋跡模塊的程序為:
int hw_left=A3;
int hw_right=A4;
int l,r;
void setup() {
pinMode(hw_left,INPUT);
pinMode(hw_right,INPUT);
}
l=digitalRead(hw_left);
r=digitalRead(hw_right);
5.1.5電機驅動模塊
L298N模塊共有13個引腳,其中左側兩個引腳為輸出A,右側兩個引腳為輸出B;前方左側三個藍色引腳從左到右分別為:12V供電引腳、GND、5V供電引腳;前方右側六個引腳從左到右分別為:通道A使能、兩個通道A控制引腳(IN1、IN2),兩個通道B控制引腳(IN1、IN2),通道B使能。使用三節(jié)串聯(lián)的18650鋰電池給L298N模塊進行供電,連接在L298N模塊的12V供電引腳和GND引腳,兩個L298N模塊進行并聯(lián)。L298N的5V供電引腳用來給單片機供電。
L298N電機驅動模塊的邏輯功能表如下表5-1所示。
表5-1 L298N邏輯功能表
ENA
IN1
IN2
直流電機狀態(tài)
0
--
--
停止
1
0
0
制動
1
0
1
正轉
1
1
0
反轉
1
1
1
制動
將小車車輪的電機分別連接在兩個L298N對應的輸出引腳,前方左輪、前方右輪、后方左輪、后方右輪的使能管腳分別連接在具有PWM功能的3、5、6、11引腳。前方左輪、前方右輪、后方左輪、后方右輪的控制引腳分別連接在0、1、2、4、7、8、10、12引腳??梢跃帉懙男≤囆羞M的程序為:
int ENA1=3;
int flmotor1=0;
int flmotor2=1;
int ENB1=5;
int frmotor1=2;
int frmotor2=4;
int ENA2=6;
int blmotor1=7;
int blmotor2=8;
int ENB2=11;
int brmotor1=10;
int brmotor2=12;
void setup() {
pinMode(ENA1,OUTPUT);
pinMode(flmotor1,OUTPUT);
pinMode(flmotor2,OUTPUT);
pinMode(ENB1,OUTPUT);
pinMode(frmotor1,OUTPUT);
pinMode(frmotor2,OUTPUT);
pinMode(ENA2,OUTPUT);
pinMode(blmotor1,OUTPUT);
pinMode(blmotor2,OUTPUT);
pinMode(ENB2,OUTPUT);
pinMode(brmotor1,OUTPUT);
pinMode(brmotor2,OUTPUT);
}
void loop() {
forward();
}
void forward(){
analogWrite(ENA1,70);
analogWrite(ENB1,70);
analogWrite(ENA2,70);
analogWrite(ENB2,70);
digitalWrite(flmotor1,HIGH);
digitalWrite(flmotor2,LOW);
digitalWrite(frmotor1,HIGH);
digitalWrite(frmotor2,LOW);
digitalWrite(blmotor1,HIGH);
digitalWrite(blmotor2,LOW);
digitalWrite(brmotor1,HIGH);
digitalWrite(brmotor2,LOW);
}
(注:該程序僅列出小車前進的程序,其它行進情況的程序會在完整程序的文件中展示。)
5.2 小車子程序設計
小車整個運行過程可分為靠近障礙物、檢測障礙物邊界、沿壁行駛、檢測黑線和尋跡行駛五個過程。為模塊化編寫程序,將上述5個過程分開進行編程。
5.2.1靠近障礙物
靠近障礙物是為了更好地執(zhí)行沿壁程序。當小車距離障礙物距離大于30cm時,小車尋跡前行,當小車距離障礙物距離小于30cm時,小車間歇前進,目的是降低小車的速度,因為小車行駛過程中測得的距離與實際距離差值較大。當小車距離障礙物距離小于10cm時,小車停止。由此可編寫程序為:
myservo.write(90);
delay(500);
Distance_test();
while(distance>30){
track();
Distance_test();
}
stoprun();
delay(100);
Distance_test();
while(distance>10){
forward();
delay(100);
stoprun();
delay(100);
Distance_test();
}
stoprun();
delay(1000);
5.2.2檢測障礙物
檢測障礙物子程序所要完成的任務是確定小車從障礙物的哪一側繞過障礙物,為實現(xiàn)上述任務,實現(xiàn)的方案為小車先向左轉過90度,舵機帶動超聲波傳感器轉向障礙物一側,不斷測量距離,同時每隔100mS記一次數(shù),當距離小于一定值時,小車向前進行檢測障礙物的沿壁行駛,否則小車右轉180度,同樣轉動舵機帶動超聲波傳感器朝向障礙物,不斷測量距離,同樣間隔計數(shù),當距離小于一定數(shù)值并且計數(shù)值小于向左計數(shù)值的兩倍時,小車向前進行檢測障礙物的沿壁行駛,否則,小車停止。此時,如果向右計數(shù)值等于兩倍的向左計數(shù)值并且距離小于一定值,說明小車距離障礙物左側邊界更近,小車應該從障礙物左側繞行,小車向左轉動180度,并向左行駛向左計數(shù)值乘100mS的時間。否則,便說明小車距離障礙物右側邊界更近,小車應該從障礙物右側繞行。由此可編寫檢測障礙物子程序為:
void zhangaiwu(){
turnleft();
delay(370);
stoprun();
delay(1000);
myservo.write(0);
delay(500);
Distance_test();
while(distance<50){
zhangaiwu_yanbileft();
delay(100);
left=left+1;
Distance_test();
}
stoprun();
delay(1000);
turnright();
delay(650);
stoprun();
delay(1000);
myservo.write(180);
delay(500);
Distance_test();
while(distance<50&&(right<2*left)){
zhangaiwu_yanbiright();
delay(100);
right=right+1;
Distance_test();
}
stoprun();
delay(1000);
if((right==2*left)&&(distance<50)){
myservo.write(0);
turnleft();
delay(650);
stoprun();
delay(1000);
zhangaiwu_yanbileft();
delay(left*100);
stoprun();
delay(100);
}
}
void zhangaiwu_yanbiright(){
if(distance>=20&&distance<=24)
forward();
else if(distance<20)
runright();
else if(distance>24)
runleft();
}
void zhangaiwu_yanbileft(){
if(distance>=20&&distance<=24)
forward();
else if(distance<20)
runleft();
else if(distance>24)
runright();
}
(注:小車行進相關程序詳細代碼可在完整程序的文件中查看。)
5.2.3沿壁行駛
沿壁行駛子程序所要完成的任務是讓小車能夠距離障礙物外邊界一定距離沿障礙物外邊界進行行駛。為實現(xiàn)此任務,實現(xiàn)的方案為旋轉舵機使超聲波傳感器朝向障礙物一側,當小車距離障礙物距離在一定范圍之內(nèi)時,小車向前行駛;當小車距離障礙物過遠時,小車向靠近障礙物一側行駛;當小車距離障礙物過近時,小車向遠離障礙物一側行駛;當小車距離障礙物超過一定限制時,小車以較大的轉彎半徑向靠近障礙物一側進行行駛。由此,可編寫沿壁行駛的子程序為:
void yanbi_right(){
Distance_test();
if(distance>=23&&distance<=27)
forward();
else if(distance<23)
turnright();
else if(distance>27&&distance<=35)
turnleft();
else
runleft();
}
void yanbi_left(){
Distance_test();
if(distance>=23&&distance<=27)
forward();
else if(distance<23)
turnleft();
else if(distance>27&&distance<=35)
turnright();
else
runright();
}
(注:小車行進相關程序詳細代碼可在完整程序的文件中查看。)
5.2.4檢測黑線
檢測黑線子程序的任務是使黑線重新位于兩個紅外尋跡模塊之間,使小車能夠尋跡。為了實現(xiàn)該任務,實現(xiàn)的方案為當小車沿壁程序執(zhí)行過程中兩個紅外尋跡模塊檢測是否有黑線,當檢測到黑線時,小車向前行駛一段距離(約半個車身的距離),然后小車停止片刻,小車右側紅外尋跡模塊檢測黑線同時小車向右轉動,當小車檢測到黑線時,小車繼續(xù)向右轉動并繼續(xù)檢測黑線,當檢測不到黑線時,黑線已經(jīng)位于小車兩個紅外尋跡模塊之間。由此,編寫檢測黑線子程序為:
void jchx_right(){
forward();
delay(200);
stoprun();
delay(1000);
r=digitalRead(hw_right);
while(r==LOW){
hx_turnright();
r=digitalRead(hw_right);
}
while(r==HIGH){
hx_turnright();
r=digitalRead(hw_right);
}
}
void jchx_left(){
forward();
delay(200);
stoprun();
delay(1000);
l=digitalRead(hw_left);
while(l==LOW){
hx_turnleft();
l=digitalRead(hw_left);
}
while(r==HIGH){
hx_turnleft();
l=digitalRead(hw_left);
}
}
(注:小車行進相關程序詳細代碼可在完整程序的文件中查看。)
5.2.5尋跡行駛
尋跡行駛子程序的任務是使小車能夠按照即定路線進行行駛。為了實現(xiàn)該任務,實現(xiàn)的方案為在地上(盡量選擇顏色亮的顏色,減少對紅外線的吸收)貼上黑線作為小車行駛的路線,使用兩個紅外尋跡來檢測黑線,當兩側的紅外尋跡模塊均未檢測到黑線時,小車向前行駛;當左側紅外尋跡模塊檢測到黑線時,小車向右側轉彎行駛;當右側紅外尋跡模塊檢測到黑線時,小車向左側轉彎行駛;當左右兩側兩個紅外尋跡傳感器都檢測到黑線時,小車停止前進。由此,可編寫尋跡行駛子程序為:
void track(){
l=digitalRead(hw_left);
r=digitalRead(hw_right);
if(l==LOW&&r==LOW)
forward();
else if(l==HIGH&&r==LOW)
turnleft();
else if(l==LOW&&r==HIGH)
turnright();
else if(l==HIGH&&r==HIGH){
stoprun();
while(1){}
}
}
(注:小車行進相關程序詳細代碼可在完整程序的文件中查看。)
5.3 小車完整程序設計
通過上述對各個模塊的研究和對各個子程序的編寫可以設計出該設計的完整程序。小車主程序的流程圖如圖5-2所示。
圖5-2 主程序流程圖
5.4 本章小結
本章介紹了各模塊的使用方法并進行了編程,同時對各個子程序進行了編程。并確定了主程序執(zhí)行流程。
第6章工程定額概算
6.1 小車制作過程成本預算
小車制作所用零件均從網(wǎng)絡購物平臺上進行購買。小車所有零部件價格如表6-1所示。
表6-1 小車各零件價格
(單位:元)
零件名稱
價格
零件名稱
價格
小車底盤
41.9
超聲波
2.4
舵機
4.8
超聲波舵機支架
4.5
Arduino UNO
14.9
L298N(兩個)
9.65
18650電池(3節(jié))
24
18650充電器
16
18650電池盒
2.54
紅外尋跡模塊(兩個)
6
面包板
0.65
杜邦線
4.75
黑色膠帶
2
--
--
6.2小車對環(huán)境的影響及其可持續(xù)性
6.2.1材料污染環(huán)境問題
本設計所采用的零件由亞克力板、塑料、PCB板、電池、少量金屬和橡膠做成。該設計所用到的小車在使用過程中不會污染環(huán)境,當小車報廢以后,小車中亞克力不會對環(huán)境產(chǎn)生污染,可以隨生活垃圾進行處理;塑料和橡膠零件需要特殊處理,處理之后可減輕對環(huán)境的污染;PCB板和電池會對土壤和水源產(chǎn)生污染,因此需要特殊處理。金屬零件可以回收再利用。
6.2.2噪音污染問題
該設計所用小車在運行過程中產(chǎn)生噪聲的是舵機轉動和車輪轉動,經(jīng)測試,運行過程中最大噪聲在噪音污染的標準之內(nèi),不會造成噪音污染。
6.2.3工業(yè)三廢問題
“工業(yè)三廢”廣義上是指包括工業(yè)生產(chǎn)和人類生活在內(nèi)所產(chǎn)生的廢水、廢氣、廢渣[12]。該設計所用小車使用電力進行驅動,運行過程中不會產(chǎn)生廢氣、廢水、廢渣,因此不涉及工業(yè)三廢。
6.2.4社會可持續(xù)發(fā)展問題
該設計所用電池為可充電式鋰電池,可大大降低由一次性干電池所帶來的污染,該設計的設計理念符合社會可持續(xù)發(fā)展。
6.3 本章小結
確定了制作成本,分析設計的可持續(xù)性和環(huán)保性。
第7章總結
該設計在Arduino平臺上實現(xiàn)了四輪小車檢測障礙物,然后沿著最佳的線路繞過障礙物,然后繼續(xù)按照原路線進行行駛。該設計解決了小車在繞過障礙物后返回原路線的難題。設計采用了超聲波作為距離探測傳感器,超聲波傳感器不受環(huán)境光線的影響,所選用的紅外尋跡模塊具有對環(huán)境光適應能力強的優(yōu)點,因此該設計能夠在一些弱光的環(huán)境中使用。在繞過障礙物的過程中采用沿壁的方案可以保證小車不會向遠離障礙物的一側行駛,導致小車無法回到原路線的情況,并且對于各種類型障礙物的障礙物具有較強的適應性。此外,該設計還有一些不足之處:加上小車檢測障礙物邊界的行駛路程,小車繞行的路線可能并不是最短的路線的情況;超聲波傳感器面對小型障礙物可能出現(xiàn)測量距離不準的情況;小車所設定的原路線不易出現(xiàn)半徑過小的彎道,否則小車會沖出設定路線的情況。
通過該設計,我學習了一種新的單片機:Arduino UNO單片機,提高了自己的編程能力,提高了自己軟件和硬件結合調(diào)試的能力,提高了自己分析問題和解決問題的能力,提高了自學和探索的能力,提高了運用模塊化設計的能力。
總而言之,這次設計對我來說受益匪淺。
參考文獻
[1]潘元驍.基于Arduino的智能小車自動避障系統(tǒng)設計與研究[D].長安大學,2015-05-04.
[2]seawaymaritime. 13.6億中國人的驕傲!全球綜合自動化程度最高的碼頭--洋山港“魔鬼碼頭”今天開港啦!.https://www.sohu.com/a/209639609_276266,2017-12-10.
[3]俞凡.基于單片機的廠區(qū)智能循跡滅火模型的設計和實現(xiàn)[D].安徽農(nóng)業(yè)大學,2016-06-01.
[4]孫穎.基于路徑規(guī)劃的智能小車控制系統(tǒng)研究[D].青島大學,2007-05-16.
[5]小宇聊電子.超聲波測距原理(帶原理圖及源碼).https://baijiahao.baidu.com/s?id=1651773925685360513&wfr=spider&for=pc,2019-12-02.
[6]張哲,陳麗銀,汪棟,覃耀,黃世玲.基于 Arduino UNO大型汽車盲區(qū)檢測與報警裝置的設計[J].科技創(chuàng)新與應用,2018(28):49-50.
[7]陳翠.超聲波測距模塊工作原理_HC-SR04模塊詳解.http://www.elecfans.com/tongxin/tongxinmokuai/2018/0517/678551.html,2018-05-17.
[8]林志遠,王忠策.機器人舵機控制器設計[J].產(chǎn)業(yè)與科技論壇,2014(11):54-55.
[9]百納信達.TCRT5000光電傳感器模塊產(chǎn)品說明書.http://www.doc88.com/p-0611401603467.html,2009-01-10.
[10]陳駿.基于超聲波測距與控制的運動實驗平臺研發(fā)[D].南京郵電大學,2014-03-01.
[11]我只是過于低調(diào).淺淡用單片機控制SG90舵機(原理+編程).http://www.51hei.com/bbs/dpj-156595-1.html,2019-04-16.
[12]任光前,曹凡,黃琳琳,林守江.中國“三廢”產(chǎn)生排放量的年際變化研究[J].安徽農(nóng)業(yè)通報,2015(17):84-85.
致謝
首先感謝我的畢業(yè)論文的指導教師,感謝王志勝老師在該設計上給予我從構思、資料收集、運行過程確定、程序編寫、調(diào)試以及畢業(yè)論文上的細心指導,是老師的悉心指導讓我在設計過程中遇到問題時有了解決問題的思路。然后感謝大學四年所有老師對我在學習上的耐心教導和生活上的悉心照顧。感謝大學四年的同窗同學,感謝他們四年
收藏