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