基于arduino的分揀小車設(shè)計(jì)【小型物流分揀運(yùn)輸含SW三維及仿真】
【需要咨詢購(gòu)買全套設(shè)計(jì)請(qǐng)加QQ1459919609】圖紙預(yù)覽詳情如下:
I基于 arduino 的小型物流分揀運(yùn)輸小車設(shè)計(jì)摘 要本論文主要介紹基于 Arduino 平臺(tái)設(shè)計(jì)的能夠用于小型物流分揀運(yùn)輸且可以和手機(jī)設(shè)備進(jìn)行藍(lán)牙通訊的小車的設(shè)計(jì)過程。在論文中先后闡述了該設(shè)計(jì)的背景和在國(guó)內(nèi)外的研究狀況,通過系統(tǒng)思路設(shè)定,經(jīng)分析當(dāng)前主流控制板的優(yōu)缺點(diǎn)后決定使用Arduino UNO 控制板對(duì)系統(tǒng)進(jìn)行控制,運(yùn)用 Solidworks 軟件完成分揀小車的三維建模及各零件的裝配過程。為了實(shí)現(xiàn)分揀小車的預(yù)期功能,選擇超聲波傳感器作為距離判斷的元件,通過 L298N 電機(jī)驅(qū)動(dòng)模塊控制小車的轉(zhuǎn)向和轉(zhuǎn)速,依據(jù)電阻電橋的特性且結(jié)合 HX711 A/D 轉(zhuǎn)換芯片完成電子秤的設(shè)計(jì),對(duì)分揀小車上承載物件的信息通過LCD12864 顯示屏呈現(xiàn)。此外根據(jù) Arduino 平臺(tái)和 Android 平臺(tái)耦合性強(qiáng)的特性,選用藍(lán)牙模塊實(shí)現(xiàn) Android 手機(jī)設(shè)備和搭載 Arduino 控制板的分揀小車之間的通信。完成電路連接后初步編寫程序流程框圖后用 IDE 實(shí)現(xiàn)對(duì)分揀小車的軟件控制,經(jīng)過程序編譯、上傳,利用 IDE 串口監(jiān)視器的便利性和分揀小車的實(shí)物模型完成整體程序的調(diào)試后,本論文設(shè)計(jì)的分揀小車能夠?qū)崿F(xiàn)自動(dòng)搬運(yùn)、稱重、顯示、尋軌跡等預(yù)期功能。關(guān)鍵詞:分揀;Arduino;藍(lán)牙通信;循跡IIABSTRACTThis dissertation mainly introduces the design process of a car designed based on the Arduino platform that can be used for small-scale logistics sorting and transportation and can communicate with mobile devices via Bluetooth. In the thesis, the background of the design and the research status at home and abroad were explained successively. After the analysis of the current advantages and disadvantages of the mainstream control, the design of the system was controlled using the Arduino UNO control board and the sorting was performed using Solidworks software. The three-dimensional modeling of the car and the assembly process of each part. In order to achieve the desired function of sorting trolleys, ultrasonic sensors are selected as distance-determining components. The L298N motor drive module is used to control the steering and rotation speed of the car, and the electronic scale is designed based on the characteristics of the resistance bridge and combined with the HX711 A/D conversion chip. The information on the carrying objects on the sorting cart is presented through the LCD12864 display. In addition, according to the strong coupling between the Arduino platform and the Android platform, the Bluetooth module is used to implement communication between the Android mobile device and the sorting cart equipped with the Arduino control panel. After the circuit connection is completed, the program flow diagram is preliminarily written to use the IDE to implement software control of the sorting cart. After the program is compiled and uploaded, the convenience of the IDE serial monitor and the physical model of the sorting cart are used to complete debugging of the entire program. The sorting cart designed by the dissertation can realize the expected functions such as automatic handling, weighing, display, and tracking.Keywords: Sorting; Arduino; Bluetooth communication; trackingIII目 錄摘 要 ...........................................................IABSTRACT........................................................II1 緒論 ..........................................................11.1 設(shè)計(jì)研究的背景及意義 ............................................................................11.2 國(guó)內(nèi)外發(fā)展?fàn)顩r ........................................................................................12 系統(tǒng)整體設(shè)計(jì) ..................................................42.1 系統(tǒng)思路設(shè)計(jì) ............................................................................................42.2 控制芯片的選擇 ........................................................................................42.3 Arduino 相關(guān)介紹及型號(hào)選擇 .................................................................52.4 分揀小車的三維建模 ................................................................................63 小車硬件介紹 .................................................103.1 Arduino UNO...........................................................................................103.2 超聲波模塊 ..............................................................................................113.3 電機(jī)驅(qū)動(dòng)模塊(L293N) ......................................................................123.4 5KG 壓力傳感器和 HX711 模塊 ...........................................................133.5 LCD 12864 顯示屏 ..................................................................................173.6 藍(lán)牙模塊 .................................................................................................193.7 擺臂舵機(jī) ..................................................................................................204 分揀小車程序編寫 .............................................214.1 分揀小車整體控制流程 ..........................................................................214.2 避障功能的流程框圖 ..............................................................................214.3 循跡功能的流程框圖 ..............................................................................224.4 稱重功能的流程框圖 ..............................................................................234.5 LCD 屏顯示功能的流程框圖 .................................................................244.6 藍(lán)牙通信功能的流程框圖 ......................................................................254.7 舵機(jī)擺臂功能的流程框圖 ......................................................................255 系統(tǒng)調(diào)試 .....................................................265.1 串口監(jiān)視器使用 ......................................................................................265.2 藍(lán)牙模塊 AT 設(shè)置 .................................................................................265.3 調(diào)試中遇到的問題 ..................................................................................276 總結(jié) .........................................................28IV參考文獻(xiàn) ........................................................29致 謝 ..........................................................30附錄 1:外文譯文 ................................................31附錄 2:外文原文 ................................................36附錄 3:系統(tǒng)程序 ................................................411基于 arduino 的分揀小車設(shè)計(jì)1 緒論1.1 設(shè)計(jì)研究的背景及意義自動(dòng)分揀設(shè)備和系統(tǒng)的概念首先是從美國(guó)、日本等發(fā)達(dá)國(guó)家在二戰(zhàn)后出現(xiàn)的,之后在國(guó)外各大物流中心被廣泛運(yùn)用。自動(dòng)分揀系統(tǒng)的作業(yè)過程可以簡(jiǎn)單地描述如下:物流中心每天需要接收成百上千家供應(yīng)商或貨主通過各種運(yùn)輸工具送來的成千上萬種商品,在在最短的時(shí)間內(nèi)將這些商品卸下并按商品品種、貨主、儲(chǔ)位或發(fā)送地點(diǎn)進(jìn)行快速準(zhǔn)確的分類,將這些商品運(yùn)送到指定地點(diǎn)(如指定的貨架、加工區(qū)域、出貨站臺(tái)等),同時(shí),當(dāng)供應(yīng)商或貨主通知物流中心按配送指示發(fā)貨時(shí),自動(dòng)分揀系統(tǒng)在最短時(shí)間內(nèi)從龐大的高層貨架存儲(chǔ)系統(tǒng)中準(zhǔn)確找到要出庫(kù)的商品所在位置,并按所需數(shù)量出庫(kù),將從不同儲(chǔ)位上取出的不同數(shù)量的商品按配送進(jìn)點(diǎn)的不同運(yùn)送到不同的理貨區(qū)域或配送站臺(tái)集中,以便裝車配送 [1]。2016 年以來,我國(guó)的快遞市場(chǎng)迅猛發(fā)展,每天各快遞公司需要接收和分揀的郵件數(shù)量不計(jì)其數(shù)。尤其是當(dāng)各大購(gòu)物網(wǎng)站促銷時(shí),更大大增加了對(duì)物流行業(yè)能力的考驗(yàn)。一方面是用工慌的問題依然沒有得到解決,面對(duì)郵件多工作人員少的情況,依舊在采用著傳統(tǒng)的物流分揀方案。第二方面是郵件數(shù)量多且繁雜的問題,導(dǎo)致分揀效率低且容易丟失貨物。如今物流行業(yè)一般采用三種分揀方案,第一種是采用全自動(dòng)化設(shè)備進(jìn)行分揀,雖然效率極高,但同時(shí)企業(yè)成本也大大提高,不能適用于全部的物流分揀中心。第二種是采用傳送膠帶機(jī)的方式,不僅分揀線長(zhǎng)且效率較低,但是具有柔性強(qiáng),占用場(chǎng)地小等有點(diǎn)。其次是純?nèi)斯みM(jìn)行分揀,這種方案效率極低,所以運(yùn)用的場(chǎng)合較少。降低物流成本是物流分揀、運(yùn)輸、包裝中的核心問題,只有降低物流總成本,才能提高企業(yè)和社會(huì)經(jīng)濟(jì)效益的目的。改變傳統(tǒng)的物流分揀方式,引進(jìn)全新的分揀設(shè)備,加快分揀效率的同時(shí)降低分揀失誤的概率。設(shè)計(jì)一套自動(dòng)化程度高、成本適中且效率高的分揀設(shè)備和系統(tǒng)來提高作業(yè)設(shè)備的柔性,能符合不同規(guī)模的分揀中心的需求,這是一件迫在眉睫的事情。1.2 國(guó)內(nèi)外發(fā)展?fàn)顩r從國(guó)內(nèi)外近幾年物流自動(dòng)分揀系統(tǒng)的發(fā)展?fàn)顩r來看,國(guó)內(nèi)采用自動(dòng)化分揀設(shè)備的時(shí)間相對(duì)于國(guó)外較晚且設(shè)備的自動(dòng)化程度不及國(guó)外高,但是其運(yùn)用的方面還是比較廣泛。在國(guó)外自動(dòng)化分揀系統(tǒng)出現(xiàn)在各個(gè)領(lǐng)域,大大提高了整個(gè)物流行業(yè)的發(fā)展水平。尤其是美國(guó)、日本和一些歐洲地區(qū)的發(fā)達(dá)國(guó)家,自動(dòng)化分揀設(shè)備的自動(dòng)化程度越來越高,因?yàn)槊總€(gè)國(guó)家的貨物都要進(jìn)行運(yùn)送,包括國(guó)內(nèi)貿(mào)易和進(jìn)出口貿(mào)易。物流運(yùn)輸?shù)男?基于 arduino 的分揀小車設(shè)計(jì)率也決定著一個(gè)國(guó)家的經(jīng)濟(jì)發(fā)展?fàn)顩r,所以物流自動(dòng)分揀系統(tǒng)已經(jīng)是國(guó)家不可缺少的一部分?,F(xiàn)如今的自動(dòng)分揀系統(tǒng)主要運(yùn)用在各大中型物流集散地、貨物中心、流通中心、郵局分揀等場(chǎng)所,其系統(tǒng)都會(huì)隨著交流自動(dòng)控制技術(shù)的發(fā)展而進(jìn)行技術(shù)更新,特別是在電子技術(shù)迅猛發(fā)展和計(jì)算機(jī)被廣泛使用的時(shí)代。自動(dòng)化分揀系統(tǒng)的概念雖然出現(xiàn)的早,但在 20 世紀(jì) 70 年代才被引入中國(guó),最初運(yùn)用在郵政系統(tǒng)方面。之后被用于其他運(yùn)輸領(lǐng)域并在長(zhǎng)期的實(shí)踐中不斷技術(shù)創(chuàng)新。例如,郵電部相關(guān)部門相繼開發(fā)和研制出具國(guó)際水平的 CORE-NT 物料自動(dòng)分揀系統(tǒng),性價(jià)比很高的扁平郵件高速物料自動(dòng)分揀系統(tǒng);上海郵政通用技術(shù)公司研制成功了速遞郵件網(wǎng)絡(luò)化物料自動(dòng)分揀系統(tǒng)等。1.2.1 國(guó)內(nèi)發(fā)展?fàn)顩r在物流中心分揀系統(tǒng)的研究中,主要有三方面內(nèi)容。一方面是物流分揀設(shè)備和控制技術(shù)的研究,如用于郵政系統(tǒng)的交叉帶式分揀機(jī)研究、應(yīng)用于煙草行業(yè)的通道式分揀機(jī)研究等等。第二方面是對(duì)物流中心存儲(chǔ)策略和分揀路徑優(yōu)化的研究,如用 BOM 表進(jìn)行倉(cāng)儲(chǔ)位置優(yōu)化的研究,用蟻群算法實(shí)現(xiàn)分揀路徑的優(yōu)化等等。第三方面是對(duì)分揀作業(yè)數(shù)據(jù)信息與分析決策問題,華南理工大學(xué)、中國(guó)人民大學(xué)、華中科技大學(xué)、浙江大學(xué)等國(guó)內(nèi)高等院校的學(xué)者都進(jìn)行了定性與定量的研究。如馬士華、文堅(jiān)的分批策略根據(jù)時(shí)間延遲思想,綜合考慮了揀貨作業(yè)環(huán)節(jié)和分揀包裝環(huán)節(jié)的工作效率,提出了一種消除因時(shí)窗分批不平衡而導(dǎo)致的等待時(shí)問和閑忙不均的動(dòng)態(tài)時(shí)窗設(shè)計(jì)與判斷方法,從而保證分揀系統(tǒng)的連續(xù)性和均衡性。李凱就卷煙分揀的幾種優(yōu)化模型展開了較深入的探討,并以仿真的手段進(jìn)行了驗(yàn)證。朱巖就卷煙分揀機(jī)的控制策略和不同設(shè)備參數(shù)下的分揀系統(tǒng)整體性能進(jìn)行了研究,并通過仿真程序模擬驗(yàn) [2]。 如今,國(guó)際競(jìng)爭(zhēng)日益加劇,為了發(fā)展我國(guó)物流業(yè),國(guó)內(nèi)的許多企業(yè)和政府部門也在做更大的努力,也已取得了一定的成效。例如,郵電部相關(guān)部門相繼開發(fā)和研制出具國(guó)際水平的 CORE-NT 物料自動(dòng)分揀系統(tǒng),性價(jià)比很高的扁平郵件高速物料自動(dòng)分揀系統(tǒng);上海郵政通用技術(shù)設(shè)備公司研制成功了速遞郵件網(wǎng)絡(luò)化物料自動(dòng)分揀系統(tǒng)等。郵政系統(tǒng)還推出了新的信封標(biāo)準(zhǔn)以更好的配合自動(dòng)化的信件物料自動(dòng)分揀系統(tǒng)。太原剛玉倉(cāng)儲(chǔ)設(shè)備公司和貴陽普天通信機(jī)械廠已設(shè)計(jì)生產(chǎn)貨架電子標(biāo)簽揀選系統(tǒng)、小車式數(shù)字顯示揀選系統(tǒng)、郵件自動(dòng)分揀系統(tǒng)等;珠海普天慧科信息技術(shù)有限公司研發(fā)出 PTL(Pick-to- light&Put-to-1ight)電子標(biāo)簽揀選系統(tǒng),除具備電子標(biāo)簽揀選系統(tǒng)的一般優(yōu)點(diǎn)之外,還具有彈性控制揀貨作業(yè)流程、即時(shí)現(xiàn)場(chǎng)監(jiān)控緊急訂單處理和缺貨通知等強(qiáng)大的功能。雖然在郵政系統(tǒng)外的其它行業(yè),國(guó)內(nèi)對(duì)物料自動(dòng)分揀系統(tǒng)的使用還非常少,但有關(guān)部門和企業(yè)正在為此做出不懈的努力??梢钥隙?隨著物流大壞境的逐步改善物料自動(dòng)分揀系統(tǒng)在我國(guó)流通領(lǐng)域一定會(huì)大有用武之地。3基于 arduino 的分揀小車設(shè)計(jì)1.2.2 國(guó)外發(fā)展?fàn)顩r以美國(guó)、日本及歐洲為代表的發(fā)達(dá)國(guó)家,在分揀系統(tǒng)的應(yīng)用上呈現(xiàn)出自動(dòng)化程度越來越高的特點(diǎn)。自動(dòng)分揀系統(tǒng)已成為發(fā)達(dá)國(guó)家大中型物流中心、配送中心或流通中心不可缺少的一部分。在分揀系統(tǒng)等物流中心子系統(tǒng)規(guī)劃設(shè)計(jì)中,各發(fā)達(dá)國(guó)家的規(guī)劃原則有很大的差異。日本的物流中心大都規(guī)模適中,采用先進(jìn)的自動(dòng)分揀系統(tǒng)和無線通訊設(shè)備,美國(guó)主要采用立體倉(cāng)庫(kù)以節(jié)約地價(jià)支出,但分揀等設(shè)備大都采用機(jī)械化或半自動(dòng)化,不盲目采用全自動(dòng)設(shè)備。他們共同的特點(diǎn)是均實(shí)現(xiàn)較成熟的電腦網(wǎng)絡(luò)化管理,保證了配送的及時(shí)準(zhǔn)確性,節(jié)約勞動(dòng)力成本。國(guó)外的學(xué)者專家如 Goetschalckx 和 Ratliff 提出利用動(dòng)態(tài)規(guī)劃法來求解寬通道內(nèi)的揀貨路徑問題, Roodbergen 和 Koster 研究在多橫向通道倉(cāng)儲(chǔ)系統(tǒng)環(huán)境下,針對(duì)各種分揀策略比較在不同通道數(shù)目、不同貨物品項(xiàng)及不同通道寬度的揀貨路徑的問題, ElizabethJewkes 等對(duì)商品儲(chǔ)存位置等對(duì)分揀的影響展開研究, Loon c.Tang 等論述了分批與存儲(chǔ)分配策略對(duì)分揀的影響,RichardL. Daniels 等對(duì)倉(cāng)庫(kù)訂單分揀的研究,M.I. Johansson 對(duì)貨物存儲(chǔ)位置的分配對(duì)減少分揀時(shí)間的作用進(jìn)行了研究,美國(guó)麻省理工院 Dimitr1s. Bertsimas 和 Robert.M. Freund 及 W.L.Winston,Jeremy.Shapiro,Lacksonen T).Whitley 等學(xué)者也做了相關(guān)的研究工作 [2]。就目前來講,國(guó)外的自動(dòng)分揀系統(tǒng)發(fā)展極為迅速。如: Auchan,Mark 將分揀系統(tǒng)歸納為 5 個(gè)子系統(tǒng):訂單挑選、感應(yīng)、合并前聚集、合并、搬運(yùn)分揀,以此使訂單與不同傳送帶有機(jī)地的結(jié)合起來,形成一個(gè)高效的物料分揀系統(tǒng)。Mase1D.T 研究了如今關(guān)于評(píng)估環(huán)形物料分揀系統(tǒng)的分揀時(shí)間的解析公式,這個(gè)類型的分揀系統(tǒng)主要是用來分揀固定形狀的貨物; Norman Saene jr 從配送中心里物料搬運(yùn)這個(gè)方面研究了如何構(gòu)建物料分揀系統(tǒng)傳送帶、如何搭配傳送帶以及如何構(gòu)建一個(gè)良好的物流分揀搬運(yùn)系統(tǒng)。4基于 arduino 的分揀小車設(shè)計(jì)2 系統(tǒng)整體設(shè)計(jì)2.1 系統(tǒng)思路設(shè)計(jì)本設(shè)計(jì)題目為基于 Arduino 的分揀小車設(shè)計(jì),目的在于通過藍(lán)牙通串口方式連接Arduino 和 Android 兩平臺(tái)之間的通信。操作者只需將手機(jī)和小車上的藍(lán)牙接通,即可在 Android 手機(jī)上操控小車。每一個(gè)物流集散地都對(duì)應(yīng)著一個(gè)數(shù)字,例如小型物件的目的地為北京,而在系統(tǒng)程序中北京對(duì)應(yīng)的串口數(shù)字為 2,操作者將物件放至小車上并在手機(jī)上按下“2”后,小車會(huì)自動(dòng)稱重,在 LCD 屏幕上顯示出物件的重量和運(yùn)輸?shù)馁M(fèi)用及所要到達(dá)的集散地。稱重結(jié)束后小車會(huì)自動(dòng)按照運(yùn)輸路徑將物件送至對(duì)應(yīng)貨箱中,再原路返回。在運(yùn)輸過程中可能會(huì)遇上其他小車或著障礙物出現(xiàn)在前方,這時(shí)小車需停止運(yùn)輸直至前方檢測(cè)不到障礙物,這就是系統(tǒng)設(shè)計(jì)中一套完整的運(yùn)輸過程和小車運(yùn)行狀態(tài),分揀小車的整體設(shè)計(jì)框架如下所示。2.2 控制芯片的選擇如今在簡(jiǎn)單的軟件編程方面,一般主流的有 Arduino、樹莓派等軟硬件開源的控制芯片,另外就是以 C51 和 STM32 為代表的控制芯片。這幾類單片機(jī)都會(huì)經(jīng)常用在不同的場(chǎng)合,每一款都有各自的優(yōu)缺點(diǎn),下面將簡(jiǎn)單介紹一下。Arduino 是一款比較容易上手的控制芯片,備受電子愛好初學(xué)者的青睞。由于軟硬件開源的原因,經(jīng)常被用來做一些有創(chuàng)意的物品,比如智能澆花系統(tǒng)、藍(lán)牙小車、避障小車等。在軟件編程方面,只需將現(xiàn)成的庫(kù)文件放在 Arduino 的 Libraries 文件夾中即可,編程時(shí)只需調(diào)用即可,無需了解庫(kù)文件是怎么寫的。因此 Arduino 適合電子知識(shí)功底比較薄弱的學(xué)者使用,編寫程序的過程也比較簡(jiǎn)單且能快速學(xué)會(huì)使用編程軟件??刂瓢宄暡▊鞲衅魉{(lán)牙模塊稱重芯片電機(jī)驅(qū)動(dòng)顯示屏舵機(jī)電機(jī)5基于 arduino 的分揀小車設(shè)計(jì)樹莓派是一款比 Arduino 性能更強(qiáng)大的控制板,同樣它的許多軟硬件都是開源的。它存儲(chǔ)數(shù)據(jù)的空間較大,且運(yùn)算速度比較快,性能比較優(yōu)越。但是它的價(jià)格比較昂貴,開發(fā)成本比較高,讓一些想接觸它的初學(xué)者望而卻步。C51 和 STM32 這一類的單片機(jī)較 Arduino 和樹莓派開源程度沒那么高,許多工程文件和驅(qū)動(dòng)代碼需要自己寫,甚至有些時(shí)候使用時(shí)需要把驅(qū)動(dòng)代碼從集成的工程文件中剝離出來,并且在硬件方面需要自己選型、設(shè)計(jì) PCB 板、焊接、調(diào)試硬件。但此類單片機(jī)的開發(fā)成本是最低的雖然對(duì)開發(fā)者的要求高于前二者。因此,在考慮開發(fā)成本和難易程度及對(duì)設(shè)計(jì)內(nèi)容的匹配程度來看,Arduino 是最合適選擇。2.3 Arduino 相關(guān)介紹及型號(hào)選擇Arduino 起初是 2005 年由意大利的一位老師老師 Massimo Banzi 和到西班牙的芯片工程師 David Cuartielles 共同創(chuàng)作出的項(xiàng)目,之后國(guó)外運(yùn)用它的人越來越多。此外還得益于 Arduino 的開放性、易用性、交流性等幾大特點(diǎn),電子愛好者可以在網(wǎng)上找到其他作者作品的開源硬件及軟件,并且可以隨意修改使用,在國(guó)內(nèi)還有專門的交流網(wǎng)站“Arduino 中文社區(qū)”。Arduino 是一個(gè)以 ATmega 單片機(jī)為基礎(chǔ)的控制板,整體還包括穩(wěn)壓電路、A/D 轉(zhuǎn)換器、I/O 等。和其他控制平臺(tái)一樣,Arduino 有許多的型號(hào),每一個(gè)都有不同的 I/O口和其他接口,對(duì)應(yīng)著不同的功能和場(chǎng)合。其中運(yùn)用最廣泛的就是 Arduino UNO(如圖2.1)。圖 2.1 UNO 控制板 6基于 arduino 的分揀小車設(shè)計(jì)其次是比 UNO 接口多,體積大且價(jià)格較高的 Mega2560(如圖 2.2)圖 2.2 Mega2560 控制板還有有兩款比 UNO 體積小,但接口沒有那么多的 Mini(如圖 2.3)和 Nano(如圖2.4)圖 2.3 Mini 控制板 圖 2.4 Nano 控制板 Arduino UNO 相對(duì)于其他 Arduino 控制板價(jià)格較為便宜,且 I/O 口的個(gè)數(shù)適中,所以 UNO 是用來做搭載本設(shè)計(jì)的最好選擇。系統(tǒng)整體除了需要 Arduino UNO 芯片控制以外,還需要其他的硬件來支撐分揀小車的完成。其中藍(lán)牙藍(lán)牙模塊是用來連接手機(jī)和小車之間的通訊橋梁,在稱重環(huán)節(jié)需要壓力傳感器和 HX711 芯片組成的稱重模塊對(duì)物件的重量進(jìn)行測(cè)量,測(cè)量出的結(jié)果需要 LCD 屏幕將信息顯示出來。驅(qū)動(dòng)電機(jī)則要靠驅(qū)動(dòng)模塊來完成,在小車行走中依靠超聲波傳感器進(jìn)行避障,在小車到達(dá)目的地需要把物件揚(yáng)起時(shí)用舵機(jī)來執(zhí)行此動(dòng)作。2.4 分揀小車的三維建模(1)設(shè)計(jì)底盤尺寸,預(yù)留減速電機(jī)支座孔位、車身框架孔位、平行梁安裝孔位、控制板和電機(jī)驅(qū)動(dòng)板安裝孔位及走線孔等如圖 2.5。7基于 arduino 的分揀小車設(shè)計(jì)圖 2.5 小車底盤(2)安裝電機(jī)、電機(jī)支架及平行梁如圖 2.6 。圖 2.6 安裝底盤后效果(3)設(shè)計(jì)小車整體框架如圖 2.7圖 2.7 小車框架8基于 arduino 的分揀小車設(shè)計(jì)(4)設(shè)計(jì)小車包圍如圖 2.8、2.9、2.10、2.11圖 2.8 車前板 圖 2.9 小車后板圖 2.10 小車左板 圖 2.11 小車右板(5)設(shè)計(jì)顯示屏支架(如圖 2.12)、舵機(jī)支架(如圖 2.13)和小車卸貨翻板(如圖 2.14)圖 2.12 顯示屏支架 圖 2.13 舵機(jī)支架圖 2.14 小車卸貨翻板9基于 arduino 的分揀小車設(shè)計(jì)(6)對(duì)小車進(jìn)行整體三維裝配,效果圖如圖 2.15、2.16圖 2.15 小車前側(cè)效果圖 圖 2.16 小車后側(cè)效果圖(7)安裝舵機(jī),確定舵機(jī)擺臂的長(zhǎng)度(如圖 2.17)圖 2.17 舵機(jī)安裝示意圖根據(jù)測(cè)量數(shù)據(jù),將擺臂的長(zhǎng)度設(shè)計(jì)為 67mm 并進(jìn)行安裝如圖 2.18。圖 2.18 舵機(jī)擺臂安裝10基于 arduino 的分揀小車設(shè)計(jì)3 小車硬件介紹3.1 Arduino UNOArduino 控制板是以 ATmega AVR 單片機(jī)為最小系統(tǒng)開發(fā)的,而 ATmega 單片機(jī)又分為很多種類,但它們的特性都有以下幾條:(1)內(nèi)置閃存,用于存放代碼(2)靜態(tài)隨機(jī)訪問存儲(chǔ)器(SRAM)用于儲(chǔ)存運(yùn)行時(shí)的數(shù)據(jù),斷電丟失(3)可擦除只讀存儲(chǔ)器(EEPROM)用于長(zhǎng)期保存數(shù)據(jù),斷電不丟失(4)有數(shù)字 I/O 口(5)A/D 轉(zhuǎn)換器(ADC),可把模擬輸入信號(hào)轉(zhuǎn)變?yōu)閿?shù)字輸入信號(hào)而 UNO 采用的是 ATmega328 微控制器,閃存(Flash)為 32KB,SRAM 為2KB,EEPROM 為 1KB,雖然存儲(chǔ)空間比較小,但應(yīng)付簡(jiǎn)單的程序存儲(chǔ)還是足夠的。UNO 有14 個(gè)數(shù)字 I/O 口(D0~D13),用于數(shù)字信號(hào)的輸入輸出,其中有 6 個(gè) PWM 口,可輸出模擬信號(hào),調(diào)節(jié)電機(jī)轉(zhuǎn)速等;另外有 6 個(gè)模擬信號(hào)輸入口(A0~A5),也可以做數(shù)字信號(hào)的輸入輸出。在 6 個(gè)模擬信號(hào)輸入口中有兩個(gè)接口為 IIC 通信的接口(SCL、SDA),分別對(duì)應(yīng)著 A5 和 A4,控制板的接口位置可見圖 3.1。圖 3.1 Arduino UNO 控制板接口分布11基于 arduino 的分揀小車設(shè)計(jì)3.2 超聲波模塊超聲波傳感器模塊上面通常有兩個(gè)超聲波元器件,一個(gè)用于發(fā)射,一個(gè)用于接收,如圖 3.2 。圖 3.2 超聲波模塊一般常見的超聲波模塊是收、發(fā)分離的超聲波模塊,電路板上有四個(gè)引腳,分別是 VCC(正電源)、Trig(觸法)、Echo(回應(yīng))和 GND(接地)。根據(jù)廠商提供的技術(shù)文檔指出,此模塊的主要參數(shù)如下。(1)工作電壓與電流:5V、15mA(2)感應(yīng)距離:2-400cm(3)感應(yīng)角度:不大于 15°(4)被測(cè)物的面積不要小于 500cm2并且盡量平整在超聲波模塊的觸發(fā)腳位輸入 10 微秒以上的高電位,即可發(fā)射超聲波,發(fā)射超聲波之后,與接收到回傳的超聲波之前,響應(yīng)腳位將呈現(xiàn)高電位,觸發(fā)腳和接收腳的電位變化可見圖 3.3。因此,程序可從“響應(yīng)”腳位的高電位脈沖持續(xù)時(shí)間,換算出被測(cè)物體的距離。圖 3.3 觸發(fā)腳與接受腳電位變化12基于 arduino 的分揀小車設(shè)計(jì)3.3 電機(jī)驅(qū)動(dòng)模塊(L293N)3.3.1 電機(jī)驅(qū)動(dòng)選擇由于 Arduino 的微處理輸出功率有限,無法直接驅(qū)動(dòng)電機(jī)等大型負(fù)載,所以需要其他的驅(qū)動(dòng)裝置進(jìn)行驅(qū)動(dòng)。其中晶體管就是最基本的驅(qū)動(dòng)元件,但它只能通過 PWM 調(diào)節(jié)電機(jī)轉(zhuǎn)速,若需調(diào)節(jié)電機(jī)轉(zhuǎn)向則需要其他的電機(jī)驅(qū)動(dòng)模塊。如ULN2003A、754410、L293D、L298N 等,L293D 和 L298N 相對(duì)于其他驅(qū)動(dòng)使用較為簡(jiǎn)便,且容易買到,但 L293D 是兼容 Arduino 開發(fā)的,會(huì)占用許多 I/O 口,因此本設(shè)計(jì)采用L298N 進(jìn)行實(shí)驗(yàn)。3.3.2 H 橋式電機(jī)控制電路介紹電機(jī)驅(qū)動(dòng)模塊中都有若干個(gè) H 橋電路,可以控制電機(jī)的正轉(zhuǎn)與反轉(zhuǎn),電路中有 4個(gè)三極管,其作用類似于開關(guān)。它連接著一路電機(jī)的 A、B 兩個(gè)輸入口,只有當(dāng) A、B兩個(gè)輸入呈相反電位時(shí)電機(jī)才會(huì)轉(zhuǎn)動(dòng),兩輸入口電位顛倒,引起電流方向變化,電機(jī)又進(jìn)行反轉(zhuǎn),簡(jiǎn)單的電路示意圖可見圖 3.4 。圖 3.4 H 橋電路示意圖3.3.3 L298N 電機(jī)驅(qū)動(dòng)介紹L298N 電機(jī)驅(qū)動(dòng)模塊中內(nèi)置 2 個(gè) H 橋控制電路,可以控制兩路直流電機(jī)的轉(zhuǎn)速及轉(zhuǎn)向,其引腳說明如圖 3.5。13基于 arduino 的分揀小車設(shè)計(jì)圖 3.5 L298N 引腳圖L298N 電機(jī)驅(qū)動(dòng)模塊有兩種供電方式,一種是從 Arduino 控制板上取電,需要正向給電壓的腳與控制板上的 vin 口相連接,輸入的電壓為 5V;而另外一種可以采用干電池或鋰電池等外部電源對(duì)驅(qū)動(dòng)板進(jìn)行供電,但最大的供電電壓不要超過 24V。這兩種方式都能驅(qū)動(dòng)電機(jī),但輸出的功率有所不同,外部電壓供電的方式可以帶動(dòng)更大的電機(jī)負(fù)載。在編程時(shí)若想控制一路直流電機(jī)的正反轉(zhuǎn)和轉(zhuǎn)速,需對(duì)電機(jī)驅(qū)動(dòng)的 3 個(gè)引腳進(jìn)行狀態(tài)控制,引腳輸入 A 和輸入可以控制電機(jī)的轉(zhuǎn)向,而使能 EN 引腳只能控制電機(jī)轉(zhuǎn)速。三個(gè)狀態(tài)參數(shù)決定著電機(jī)的運(yùn)行狀況,參數(shù)及電機(jī)運(yùn)行狀況如下表 1表 1 電機(jī)轉(zhuǎn)向與 3 個(gè)引腳電位關(guān)系使能 輸入 A 輸入 B 電機(jī)運(yùn)行狀況高 高 低 正轉(zhuǎn)高 低 高 反轉(zhuǎn)高 高 高 電機(jī)停止高 低 低 電機(jī)停止低 電機(jī)不轉(zhuǎn)所以只有當(dāng)在電機(jī)驅(qū)動(dòng)模塊使能腳上輸入高電位,且兩個(gè)輸入引腳存在高低電位差時(shí),電機(jī)才能轉(zhuǎn)動(dòng)。當(dāng)兩個(gè)輸入引腳的高低電位交換時(shí),導(dǎo)致驅(qū)動(dòng)中的電流方向變換,使電機(jī)反向轉(zhuǎn)動(dòng)。3.4 5KG 壓力傳感器和 HX711 模塊設(shè)計(jì)中采用 5KG 壓力傳感器和 HX711 24bit A/D 芯片的組合來測(cè)量物件的重量。3.4.1 壓力傳感器原理壓力傳感器就是《工程測(cè)試技術(shù)》中提及的電阻直流電橋應(yīng)用的實(shí)例,所謂電橋就是將電阻、電感、電容等物理量很小的數(shù)值變化量變換為電壓或電流等容易測(cè)量且直觀的數(shù)值變化量,再將其數(shù)據(jù)信息放大后可直接測(cè)量出對(duì)應(yīng)的數(shù)值。在設(shè)計(jì)中感知物體重量的元件為平行梁稱重傳感器(如圖 3.6),由于它測(cè)量精準(zhǔn),在制作生產(chǎn)中較為容易,抗壓能力比其他傳感器強(qiáng),所以通常用來作為測(cè)量重物的傳感器。14基于 arduino 的分揀小車設(shè)計(jì)圖 3.6 平行梁稱重傳感器平行梁上下各貼有兩個(gè)電阻應(yīng)變片,阻值分別為 R1=R2=R3=R4=1KΩ,傳感器受力時(shí)各應(yīng)變片工作狀態(tài)如圖 3.7。圖 3.7 傳感器受力時(shí)各應(yīng)變片狀態(tài) 電阻應(yīng)變片的阻值隨著彈性元件上壓力的變化而變化,當(dāng)平行梁受壓力時(shí)梁上兩個(gè)應(yīng)變片受拉力,梁下兩個(gè)應(yīng)變片受壓力。根據(jù)電阻的計(jì)算公式可知,當(dāng)材料的的長(zhǎng)度及橫截面積發(fā)生變化時(shí),阻值也產(chǎn)生變化,所以輸出的電壓也是變化的(電橋中的連線可見圖 3.8)。因此可以根據(jù)電壓的變化來計(jì)算出阻值變化,進(jìn)一步推算出平行梁上施加的力。 圖 3.8 傳感器電橋15基于 arduino 的分揀小車設(shè)計(jì)3.4.2 HX711 模塊介紹依據(jù)電阻橋的特點(diǎn),電阻的變化和輸出電壓的關(guān)系,而輸出電壓=輸入電壓×靈敏度。輸入電壓為 5V,靈敏度為 1mV/V,則滿量程時(shí)輸出電壓為 5mV。這就說明當(dāng)測(cè)量5Kg 的重物時(shí),輸出的電壓為 5mV。由于輸出的電壓太小,用普通的方法是難以測(cè)出來的,所以需要用能測(cè)量傳感器輸出電壓值的 HX711 芯片(如圖 3.9),芯片內(nèi)包含著一個(gè)可以放大電壓信號(hào)的電路和一個(gè)進(jìn)行數(shù)模轉(zhuǎn)換的電路,它可以把微小電壓值轉(zhuǎn)換為數(shù)字量。圖 3.9 HX711 芯片HX711 是一塊高精度的 24 位 A/D 轉(zhuǎn)換的芯片,它內(nèi)部包含了穩(wěn)壓電路,時(shí)針振蕩器電路等,可以抵抗外部的干擾,對(duì)系統(tǒng)輸入的數(shù)據(jù)處理速度比較快。就是因?yàn)樾酒w積小且把許多電路都集成在上面,降低了在制造方面的成本,提高了系統(tǒng)的穩(wěn)定性和可靠性。在控制方面也十分簡(jiǎn)便,只需要控制板發(fā)出信號(hào)控制芯片的管腳即可實(shí)現(xiàn)對(duì)芯片的整體控制,無需按照通常對(duì)其他芯片一樣地對(duì)寄存器進(jìn)行編程操作。HX711 芯片在選擇數(shù)據(jù)輸入通道時(shí)有兩通道可選擇,一個(gè)為 A 通道,一個(gè)為 B 通道。其中選擇 A 通道時(shí)數(shù)據(jù)的增益為 128 或 64,當(dāng)增益為 128 時(shí)對(duì)應(yīng)的輸入電壓為±20mV,選擇 64 增益時(shí)所輸入的電壓為±40mV。而選擇 B 通道時(shí)數(shù)據(jù)的增益為 32,對(duì)應(yīng)的輸入電壓為±80mV,一般情況下用它對(duì)系統(tǒng)的參數(shù)進(jìn)行檢測(cè)工作。如果在編程時(shí)選擇了 A 通道作為數(shù)據(jù)輸入口且數(shù)據(jù)的增益為 128,那么芯片電路中對(duì)應(yīng)的最大輸入電壓為±20mV,經(jīng)過 128 增益后變?yōu)椤?.56V,再通過 24bit A/D 轉(zhuǎn)換器轉(zhuǎn)換為相對(duì)應(yīng)的數(shù)字量,其內(nèi)部圖如圖 3.10 和引腳說明如圖 3.11 。16基于 arduino 的分揀小車設(shè)計(jì)圖 3.10 HX711 內(nèi)部電路圖 3.11 HX711 芯片引腳雖然 HX711 芯片的引腳數(shù)較多,但芯片與控制板進(jìn)行連接時(shí)只接出了 4 個(gè)引腳,分別為 GND、VCC、DOUT 和 SCK 引腳。說明若要連接 Arduino 與芯片之間的通訊不用考慮其他引腳的控制方法,只需通過控制 DOUT、SCK 引腳的高低電平狀態(tài)即可輸入和輸出數(shù)據(jù),決定輸入通道和增益。當(dāng)引腳 PD_SCK 的狀態(tài)一直為低電平,而 DOUT 引腳的狀態(tài)一直為高電平時(shí),意味著芯片中 A/D 轉(zhuǎn)換器還沒有為數(shù)據(jù)轉(zhuǎn)換做好準(zhǔn)備。當(dāng)引腳 DOUT 的狀態(tài)改變時(shí),說明A/D 轉(zhuǎn)換器已經(jīng)可以開始進(jìn)行數(shù)據(jù)轉(zhuǎn)換的工作, PD_SCK 先輸入 24 個(gè)脈沖信號(hào),相對(duì)應(yīng)著向 DOUT 引腳輸出 24 位數(shù)據(jù)。24 個(gè)脈沖信號(hào)結(jié)束,意味著 HX711 把 24 位 ADC 值全部輸出。之后 PD_SCK 又輸入 1-3 個(gè)脈沖信號(hào),也就是第 25-27 個(gè)時(shí)針脈沖,來選擇下一次 ADC 轉(zhuǎn)換的通道和增益(可見表 2)。由此可說明 PD_SCK 引腳需要輸入 25-27 個(gè)時(shí)針脈沖信號(hào)。需要說明的是,在芯片斷電復(fù)位后默認(rèn)選擇 A 通道及增益為 128,此后的通道及增益選擇由 PD_SCK 引腳輸入第 25-27 個(gè)時(shí)針脈沖決定。17基于 arduino 的分揀小車設(shè)計(jì)表 2 第 25-27 個(gè)脈沖與通道、增益的關(guān)系PD_SCK 時(shí)針脈沖數(shù) 輸入通道 增益選擇25 A 12826 B 3227 A 643.4.3 A/D 轉(zhuǎn)換過程:(1)計(jì)算芯片提供電壓:芯片與壓力傳感器連接時(shí)需連接 4 個(gè)引腳,其中兩個(gè)為 A 通道的正負(fù)端,另外兩個(gè)為 E+和 E-。傳感器中電橋的輸入的電壓由 E+和 E-兩端的電壓決定,稱為 。??????????的數(shù)值可通過 (R1+R2)/R2 公式計(jì)算得出??芍?=1.25V(模塊基?????????? ??????????=?????? ??????準(zhǔn)電壓),其中 R1、R2 為芯片電路中的分壓電阻,阻值分別為 20KΩ 和 8.2KΩ,所以通過計(jì)算 。??????????=4.3??(2)計(jì)算 AD 輸出最大值:在 5KG 傳感器電路中可輸出的最大電壓=4.3×1mV=4.3mV,經(jīng)過芯片 128 增益放大后=550.4mV。再由 24bitA/D 轉(zhuǎn)化器進(jìn)行轉(zhuǎn)換后最大數(shù)值=550.4× /4.3=2147483。此224數(shù)據(jù)過于太大,存放在 long 數(shù)據(jù)類型中較占空間,所以將數(shù)據(jù)進(jìn)一步處理除以 100 后存放在 int 數(shù)據(jù)類型中,因此最大的 AD 數(shù)值為 21474。(3)將重力值轉(zhuǎn)換為 AD 數(shù)值:假設(shè)物體為 A Kg,輸出的 AD 數(shù)值為 y由于物體的重量與輸出的電壓具有正比的關(guān)系,所以測(cè)量 A Kg 的重物時(shí)電橋所產(chǎn)生的電壓=A×4.3/5mV=0.86AmV。經(jīng) 128 增益后輸出電壓=0.86A×128=110.08mV輸出電壓經(jīng)過 24bit A/D 轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換后輸出數(shù)值=110.08× /4.3=429496.7296A224所以 y=429496.7296AA=y/429.4967296 g3.5 LCD 12864 顯示屏由于普通的 LCD 屏與 Arduino 控制板的接口需要 6 個(gè)接口且 Arduino UNO 的數(shù)字信號(hào) I/O 口的數(shù)量有限,大部分 I/O 口還得分配給其他硬件連接使用。所以設(shè)計(jì)實(shí)驗(yàn)中采用帶 IIC 通信的 LCD12864 顯示屏顯示稱重的數(shù)據(jù)(如圖 3.12),它不僅使用方便,18基于 arduino 的分揀小車設(shè)計(jì)只需 3 根接線就可與控制板的模擬信號(hào)輸入口連接,其余的引腳可以不用連接,不占用字信號(hào) I/O 口(引腳說明見表 3)圖 3.12 LCD 顯示屏及引腳示意圖表 3 LCD12864 引腳說明序號(hào) 符號(hào) 說明1 A0 IIC 地址信號(hào) A02 A1 IIC 地址信號(hào) A13 BUSY 忙信號(hào),高電位為忙,低電位為閑,忙狀態(tài)下不接收指令4 SDA IIC 數(shù)據(jù)信號(hào)5 SCL IIC 時(shí)針信號(hào)6 RST 復(fù)位信號(hào),低電平有效7 VDD 電壓正8 GND 電源地各引腳與 Arduino 模擬信號(hào)口連接方式:BUSY--------------A3SDA---------------A4(SDA)SCL---------------A5(SCL)VDD---------------5VGND---------------GND19基于 arduino 的分揀小車設(shè)計(jì)3.6 藍(lán)牙模塊HC-05 藍(lán)牙模塊是一個(gè)即能發(fā)送數(shù)據(jù)也能接收數(shù)據(jù)的通訊模塊(見圖 3.13),HC-05 的使用方法比較簡(jiǎn)單,這就意味著當(dāng)藍(lán)牙模塊與藍(lán)牙設(shè)備連接成功后無需考慮內(nèi)部的通信方式,直接把藍(lán)牙當(dāng)做串口來使用。當(dāng)藍(lán)牙模塊與手機(jī)設(shè)備連接成功時(shí)可共用一個(gè)數(shù)據(jù)傳輸串口通道,這就說明手機(jī)從藍(lán)牙串口通道發(fā)送數(shù)據(jù)后,藍(lán)牙模塊可從通道中接收手機(jī)設(shè)備發(fā)出的數(shù)據(jù)。圖 3.13 HC-05 藍(lán)牙模塊藍(lán)牙模塊上雖然有六個(gè)引腳,但配對(duì)和傳輸數(shù)據(jù)時(shí)只需將其中的 4 個(gè)引腳與Arduino 控制板連接。4 個(gè)引腳與 Arduino 控制板的接口連線如下:RXD---------------TX(D1)TXD---------------RX(D0)VCC---------------5VGND---------------GNDHC-05 模塊參數(shù):(1)輸入電壓:3.7V-6V,禁止超過 7V(2)接口電平 3.3V,可以直接連接各種單片機(jī)(3)可以通過 AT 命令切換主機(jī)和從機(jī)模式(4)空曠地帶有效傳輸距離 10 米20基于 arduino 的分揀小車設(shè)計(jì)3.7 擺臂舵機(jī)為了實(shí)現(xiàn)小車自動(dòng)揚(yáng)起卸貨板進(jìn)行卸貨的功能,需安裝一個(gè)舵機(jī)來完成此動(dòng)作,小車的卸貨能力與使用的舵機(jī)力矩有關(guān)。設(shè)計(jì)實(shí)驗(yàn)中用到的是可 180 度轉(zhuǎn)動(dòng)的 MG996R模擬舵機(jī)(如圖 3.14),可提供 13Kg·cm 的力矩,轉(zhuǎn)動(dòng)范圍為 0 度到 180 度,其角度可以通過 PWM(脈沖寬度調(diào)制)的方法來進(jìn)行調(diào)節(jié)。圖 3.14 MG996R 模擬舵機(jī)舵機(jī)內(nèi)包括小型電機(jī)、減速齒輪和位置反饋電路,因此舵機(jī)也屬于伺服電機(jī)的范疇。舵機(jī)會(huì)隨著脈沖持續(xù)的時(shí)間來轉(zhuǎn)動(dòng),不同的脈沖時(shí)間對(duì)應(yīng)著不同的角度,比如說1ms 的脈沖可以是舵機(jī)轉(zhuǎn)到一個(gè)極端,而 2ms 可以使舵機(jī)轉(zhuǎn)到另外一個(gè)極端??刂埔粋€(gè)舵機(jī)需要大約 20ms 的時(shí)鐘脈沖,而在全部的時(shí)鐘脈沖中只需一小部分的高電平就可控制舵機(jī)的旋轉(zhuǎn)角度,這個(gè)高電平的持續(xù)時(shí)間為 0.5ms-2.5ms。設(shè)計(jì)中所用到的舵機(jī)轉(zhuǎn)動(dòng)時(shí)的脈沖寬度變化及對(duì)應(yīng)的角度如圖 3.15圖 3.15 脈沖寬度與舵機(jī)角度21基于 arduino 的分揀小車設(shè)計(jì)4 分揀小車程序編寫4.1 分揀小車整體控制流程根據(jù)小車系統(tǒng)整體設(shè)計(jì),將控制板與各硬件相連接,從手機(jī)設(shè)備到每個(gè)執(zhí)行元件之間的控制流程如下所示:發(fā)送 感知距離數(shù)據(jù)讀取數(shù)據(jù)發(fā)送指令 控制AD 值 轉(zhuǎn)化為重 量 顯示信息感知電壓變化4.2 避障功能的流程框圖避障過程中采用超聲波傳感器來檢測(cè)距離,若檢測(cè)到分揀小車前方有障礙物并且距離小于 30cm,小車就執(zhí)行停車程序。在程序中使用定時(shí)中斷函數(shù)每隔 100ms 調(diào)用距離判斷函數(shù),框圖如下:控制板手機(jī)設(shè)備藍(lán)牙模塊HX711 模塊壓力傳感器電機(jī)驅(qū)動(dòng)顯示屏超聲波模塊減速電機(jī)超聲波模塊觸發(fā)腳高電平持續(xù) 5 微秒超聲波模塊接收腳寫入低電平讀出接收腳高電位的時(shí)間用時(shí)間等效換算為障礙物距離將距離存儲(chǔ)在變量中進(jìn)行判斷若距離小于 30 厘米則分揀小車停止 2 秒每隔 100 毫秒調(diào)用距離判斷程序定義變量 distance22基于 arduino 的分揀小車設(shè)計(jì)4.3 循跡功能的流程框圖簡(jiǎn)單地可以把路徑簡(jiǎn)化為直走、轉(zhuǎn)彎、直走、停、掉頭、直走、轉(zhuǎn)彎、直走等,每條路徑都是在執(zhí)行直走、轉(zhuǎn)彎的過程,只是對(duì)應(yīng)動(dòng)作的時(shí)間不同。但執(zhí)行一條路徑時(shí)就要具體到控制每一路電機(jī)的高低電平差和使能量及動(dòng)作持續(xù)時(shí)間。具體路徑控制流程圖如下:直走動(dòng)作執(zhí)行 2 秒左路電機(jī)輸入腳 A 寫入高電平,左路電機(jī)輸入腳 B 寫入低電平右路電機(jī)輸入腳 A 寫入高電平,右路電機(jī)輸入腳 B 寫入低電平左路電機(jī)使能腳輸入速度值,右路電機(jī)使能腳輸入速度值右轉(zhuǎn)動(dòng)作執(zhí)行 700 毫秒(右路電機(jī)輸入 A、B 腳電位顛倒)直走動(dòng)作執(zhí)行 2 秒停車 5 秒(兩路電機(jī)輸入腳輸入相同電位,使能輸入為 0)掉頭(等效于右轉(zhuǎn)動(dòng)作持續(xù)1400 毫秒)直 走左轉(zhuǎn)動(dòng)作執(zhí)行 700 毫秒(左路路電機(jī)輸入 A、B 腳電位顛倒)直走回到起始位置23基于 arduino 的分揀小車設(shè)計(jì)4.4 稱重功能的流程框圖HX711 芯片是 24bit A/D 轉(zhuǎn)換的,所以需要從高到低地將數(shù)據(jù)輸出,然后將 AD 值等比轉(zhuǎn)化為重量值即可,具體轉(zhuǎn)化過程可見以下流程圖。定義變量 count 并賦初始值DOUT 引腳寫入高電平(表示 A/D 轉(zhuǎn)換器未做好準(zhǔn)備)SCK 引腳寫入低電位讀取 DOUT 電位變化(為低則開始轉(zhuǎn)換)計(jì)數(shù)器開始計(jì)數(shù)SCK 引腳寫入高電位開始輸入數(shù)據(jù),SCK 引腳寫入低電位結(jié)束數(shù)據(jù)輸入,將 DOUT 引腳輸出的數(shù)據(jù)存儲(chǔ)在 count 變量中計(jì)數(shù)器滿 24 停止輸入數(shù)據(jù)提取出前 24 位數(shù)據(jù)再次輸入第 25 個(gè)脈沖決定下一次通道和增益返回 count 變量中的 24 位 A/D 數(shù)值利用公式計(jì)算承載的重量24基于 arduino 的分揀小車設(shè)計(jì)4.5 LCD 屏顯示功能的流程框圖需在 LCD12864 顯示屏上顯示出稱重物件的重量,并按照路徑對(duì)應(yīng)的單價(jià)計(jì)算出相應(yīng)的運(yùn)費(fèi),并顯示出貨物所到達(dá)的城市。通過流程圖來說明一件貨物的重量、運(yùn)費(fèi)、目的地顯示的過程:創(chuàng)建第一個(gè)數(shù)組名并定義其數(shù)組中數(shù)據(jù)個(gè)數(shù)利用 dtostrf()函數(shù)將重量值存儲(chǔ)在數(shù)組中在顯示屏右側(cè)第一行顯示重量,并在后面顯示”Kg ”單位創(chuàng)建第二個(gè)數(shù)組名并定義其數(shù)組中數(shù)據(jù)個(gè)數(shù)利用 dtostrf()函數(shù)將金額數(shù)存儲(chǔ)在數(shù)組中重量值乘單價(jià)所得到的值存在“money”變量中在顯示屏右側(cè)第二行顯示重量,并在后面顯示”yuan”單位在顯示屏右側(cè)第三行顯示目的地25基于 arduino 的分揀小車設(shè)計(jì)4.6 藍(lán)牙通信功能的流程框圖4.7 舵機(jī)擺臂功能的流程框圖在分揀小車到達(dá)目的地時(shí),舵機(jī)轉(zhuǎn)動(dòng)一定角度,將載物板揚(yáng)起,物件順勢(shì)滑落至集裝箱中。舵機(jī)擺動(dòng)的指令可見下面流程框圖說明:讀取藍(lán)牙串口的數(shù)據(jù)將讀取數(shù)據(jù)存儲(chǔ)在變量“c”中判斷變量中的數(shù)是否等于程序中的數(shù)若等于則執(zhí)行相對(duì)應(yīng)的程序 若不等于則分揀小車停止不動(dòng)定義舵機(jī)轉(zhuǎn)動(dòng)至 90 度擺動(dòng)至 90 度后延遲2 秒定義舵機(jī)轉(zhuǎn)動(dòng)至 45 度延遲 2 秒再次舵機(jī)轉(zhuǎn)動(dòng)至 90 度并延遲 2 秒(防止第一次擺動(dòng)時(shí)物件未滑落)再次定義舵機(jī)轉(zhuǎn)動(dòng)到 45 度(舵機(jī)位置歸中)26基于 arduino 的分揀小車設(shè)計(jì)5 系統(tǒng)調(diào)試5.1 串口監(jiān)視器使用在 Arduino 控制板與電腦連接的狀態(tài)下打開 IDE 的菜單欄“工具”列表中的“串口監(jiān)視器”。 在程序調(diào)試的過程中,可以把程序分幾部分上傳到控制板后進(jìn)行分步測(cè)試。比如說超聲波測(cè)距,可以在串口上顯示距離,在稱重測(cè)試時(shí),也可以打開串口監(jiān)視器就能顯示重量。5.2 藍(lán)牙模塊 AT 設(shè)置藍(lán)牙模塊需要 T 設(shè)置 A 后才能與設(shè)備正常匹配,比如說恢復(fù)出廠設(shè)置、更改藍(lán)牙名稱、設(shè)置主從模式、設(shè)置密碼。在調(diào)試中使用 Arduino 控制板進(jìn)行設(shè)置,連接圖如圖 6.1 。圖 5.1 藍(lán)牙 AT 設(shè)置連接AT 設(shè)置程序如下:#include SoftwareSerial BT(10, 11); char val;void setup() {Serial.begin(38400); Serial.println("BT is ready!");BT.begin(38400); // HC-05 默認(rèn),38400}27基于 arduino 的分揀小車設(shè)計(jì)void loop() {if (Serial.available()) {val = Serial.read();BT.print(val);}if (BT.available()) {val = BT.read();Serial.print(val);}}編譯下載到控制板之后打開串口監(jiān)視器,把波特率設(shè)為 38400,在發(fā)送框輸入以下幾個(gè)命令:AT+ORGL 恢復(fù)出廠設(shè)置AT+NAME=cho5 修改藍(lán)牙模塊名稱為 ch05AT+ROLE=0 藍(lán)牙模式設(shè)置為從模式AT+CMODE=1 藍(lán)牙連接模式為任意地址連接模式AT+PSWD=0000 藍(lán)牙配對(duì)密碼為 0000輸入指令后出現(xiàn)“OK”即完成 AT 設(shè)置,可以與手機(jī)藍(lán)牙連接。5.3 調(diào)試中遇到的問題(1)在電機(jī)與舵機(jī)一塊調(diào)試時(shí),發(fā)現(xiàn)電機(jī)能轉(zhuǎn)動(dòng)但舵機(jī)不能轉(zhuǎn)動(dòng),在程序沒有問題的條件下,將舵機(jī)引腳接到了 PWM 的 11 引腳。重新下載程序后執(zhí)行問題就迎刃而解,通過上網(wǎng)了解后發(fā)現(xiàn)是引腳沖突所導(dǎo)致的問題。(2)藍(lán)牙 AT 設(shè)置中,串口提示欄顯示錯(cuò)誤,因?yàn)?IDE 串口監(jiān)視器的默認(rèn)波特率