?AGV小車指裝備有電磁或光學等自動導引裝置 能夠沿規定的導引路徑行駛,具有安全保護以及各種移載功能的運輸車,工業應用中不需駕駛員的搬運車,以可充電之蓄電池為其動力來源。一般可通過電腦來控制其行進路線以及行為,或利用電磁軌道(electromagnetic path-following system)來設立其行進路線,電磁軌道黏貼於地板上,無人搬運車則依靠電磁軌道所帶來的訊息進行移動與動作。

本項目設計的AGV小車可以非常方便地與其它不同的物流系統實現自動連接,例如AS/RS(自動化立體倉庫/存入取出系統)、自動積放鏈、各種緩沖站、升降機和機器人等;從而實現在工作站之間對物料進行跟蹤;按計劃輸送物料并有執行檢查記錄;對輸送進行確認;與生產線和庫存管理系統進行網絡在線連接以向工廠或車間管理系統提供實時物流信息。在AGV運輸物料過程中,由于AGV按固定規劃路徑行駛,不易與其它加工設備或其他障礙物碰撞,很少甚至沒有導致產品或生產設備的損壞。AGV小車通過安裝地面電纜、磁導航帶或其他不構成障礙的地面導引物引導,方便。小車中AGVS系統具有極高的可靠性。AGVS是由若干臺AGV小車組成,當一臺AGV損壞無法工作時,其它AGV的生產效率不受影響并可以保持高度的系統可調度性。AGV小車采用蓄電池作為動力來源,既節約能源又保護環境。AGV小車的充電和驅動系統耗能少,能源利用率高,并且AGV工作噪音低對制造和倉儲環境沒有不良影響。

項目實施過程,通過分組分工及各研發階段分期實施完成。柯昌權同學在導師指導下負責整體規劃和過程實施;張清同學主要進行市場調研和數據分析,確定AGV小車設計功能和成本核算;杜永康、謝延同同學基于機電一體化技術專業知識,完成AGV小車硬件結構搭建;團體進行基于自動化傳感檢測技術和智能控制算法,完成AGV小車軟件程序設計,以及AGV小車測試和改進。

具體內容:第一階段對AGV進行結構框架設計,包括傳感器位置安裝;第二階段對AGV小車進行程序編程,包括實現AGV功能應用各類傳感器的程序邏輯結構框架設計、AGV前進與后退等狀態的編寫,以及整體程序的調試;第三階段對AGV小車整體功能進行試驗,對故障修理、程序微調及改善等。

?

智能AGV小車的設計與實現

[摘要]?AGV(Automated Guided Vehicle)即自動導引運輸車,是指裝備有電磁或光學等傳感器的自動導引裝置,它能夠沿著規定好的路徑行駛,并且具有安全保護以及各種移載功能裝置的運輸車。

AGV由計算機,電控設備,導航設備等控制,它的自動化程度高,目前已經廣泛的應用工業、軍事、交通運輸、電子等領域。AGV屬于輪式移動機器人(WMR――Wheeled Mobile Robot)的范疇。自第一輛AGV于1953年誕生以來,AGV技術不斷發展并趨向成熟。在歐、美等發達國家應用也最為廣泛。由于AGV技術門檻較低,在我國已有多家企業生產此類產品,并逐漸應用于各行各業。

本項目根據控制系統設計要求,選定以STM32單片機作為CPU進行控制系統設計。本文分析研究了AGV硬件設計基本要求及并給出實現方案,軟件設計方面采用嵌入式系統的設計方案,采用無刷直流電機作動力驅動以及 電機驅動器PID參數調整方案。

首先,介紹AGV小車車體結構設計基本要求及方案,本項目設計作品為前輪轉向,后輪獨立驅動的四輪式設計結構。

其次,本項目將AGV自動引導小車控制硬件設計組成,主要內容有:供電系統設計方案、控制電路原理圖設計方法、各類傳感器設計原理方法。

最后,介紹AGV軟件設計方法,主要內容為利用定時器中斷、串口中斷、I/O口數據傳輸、定時器定時等方法實現AGV自動控制功能。

關鍵詞:AGV,STM32單片機,磁導航設計,PWM。

 

 

 

 

 

 

 

 

?

?

第一章緒論

1.1 ?AGV小車的背景和發展

AGV小車一直以來都作為為物料搬運使用。世界上第一輛AGV由Barrett電子公司于1953年在美國開發成功,并且其具有一個以真空管為基礎的控制器。上世紀五十年代末到六十年代初期時,已有多種類型的牽引式AGV作用于工廠和倉庫。

在上世紀六十年代和七十年代AGV技術則主要在歐洲得到發展。當時的導引技術主要依靠地面控制器開關埋在地下的導線產生的電磁頻率指引AGV沿著規劃路徑行駛。到了20世紀八十年代,發展中心又轉移到美國,無線式引導技術被引入到AGV系統中,例如激光和慣性進行導引。

自20世紀80年代以來,AGV系統已經逐步發展成為生產物流系統中最大的專業分支之一,并趨向產業化發展,成為現代化企業不可缺少的自動化裝備之一。

1.2??自動引導小車(AGV)定義和特點

AGV(Automatic Guided Vehicle),即自動導引車,根據美國物流協會定義,AGV是指裝備有電磁或光學傳感器等自動導引裝置,并且能夠沿著規劃好的導引路徑行駛,且具有小車編程和停車選擇裝置、安全保護以及各種移載或裝卸物料功能的輪式運輸車。AGV是以電池為動力來源、車體裝有非接觸導向裝置,具備獨立尋址系統的無人駕駛自動運輸車。

AGVS(Automatic Guided Vehicle?System)即自動導引車系統,它由AGV小車、上位機管理系統、路徑導引系統、通信系統、小車停靠工位以及充電工位等組成。AGVS的上位機管理系統通過通信系統與系統內的AGV小車通信,控制和制定AGV小車作業調度和計劃,并優化AGV的作業過程和控制AGV的運行路線、實時監控AGV的運行狀態,使AGV在計算機的管制下有條不紊地作業,并通過物流系統軟件而集成于整個工廠與車間的生產監控和管理系統中。自動導引車系統(AGVS)易于和其他自動化系統集成,并且容易擴展。

應用AGV小車具有很多特點:

1)AGV可以非常方便地與其它不同的物流系統實現自動連接,例如AS/RS(自動化立體倉庫/存入取出系統)、自動積放鏈、各種緩沖站、升降機和機器人等;從而實現在工作站之間對物料進行跟蹤;按計劃輸送物料并有執行檢查記錄;對輸送進行確認;與生產線和庫存管理系統進行網絡在線連接以向工廠或車間管理系統提供實時物流信息。

2)采用AGV后,可以大大減少人工檢取或堆置物料的人力勞動力輸出,同時操作人員可以直接的減少為跟蹤物料而進行大量的報表工作,進而加快勞動生產率。另外,可以直接取消或者減少非直接勞動力如物料倉庫會計員、運貨車調度員以及發料員的工作。

3)在AGV運輸物料過程中,由于AGV按固定規劃路徑行駛,不易與其它加工設備或其他障礙物碰撞,很少甚至沒有導致產品或生產設備的損壞。

4)AGV的最初投入可能較高,但絕大多數購置AGV的使用者均證明,2到3年間內均能收回AGV的投資成本。

5)AGV通過安裝地面電纜、磁導航帶或其他不構成障礙的地面導引物引導,方便。

6)AGVS系統具有極高的可靠性。AGVS由若干臺AGV小車組成,當一臺AGV損壞無法工作時,其它AGV的生產效率不受影響并可以保持高度的系統可調度性。

7)AGV采用蓄電池作為動力來源,既節約能源又保護環境。AGV小車的充電和驅動系統耗能少,能源利用率高,并且AGV工作噪音低對制造和倉儲環境沒有不良影響。

1.3 ?自動引導小車(AGV)引導方式

AGV技術是生產過程自動化先進性的重要體現,AGV之所以能夠實現無人駕駛,導航和導引對其起到了至關重要的作用,而AGV的導航引導方式是決定AGV能否進一步應用于復雜、惡劣環境的關鍵因素。隨著技術的發展,目前能夠用于實際運行AGV的導航/導引技術主要有:電磁引導方式、磁帶導引、光學導引、激光導航、慣性導航、視覺導航、GPS導航等。本項目采用了磁帶引導。

技術名稱 成熟度 技術難度 成本 應用 先進性 前景
電磁導引 成熟 較廣 一般 較好
光學導引 成熟 中低 較廣 一般 較好
磁帶導引 成熟 一般 很好
超聲定位 較成熟 一般 一般
激光定位 較成熟 較先進
視覺導引 較成熟 很先進

表 1-1 AGV常用引導應用現狀比較

1.3.1 ?磁帶導引(Magnetic Tape Guidance)

磁導引方式與電磁導引相近,用鐵氧(磁體)體料粉與合成橡膠組成的磁帶替代在地面下埋設金屬線,通過磁感應信號實現導引,其特點是靈活性比較好,改變或擴充路徑容易,磁帶鋪設簡單,適用于小型或臨時設備,但此導引方式易受環路周圍磁性和金屬物質的影響,容易受到機械損傷,因此,此導引方式受外界影響較大。

磁導航方式被認為是一項非常有應用前景的技術,主要通過磁傳感器測量路徑上的磁場強度信號來獲取AGV自身相對于磁導引帶之間的位置偏差,從而實現車輛的姿態控制及導航。磁導航具有很高的測量精度及良好的重復性,磁導航不受光線變化及路面污損破壞等影響,在應用運行過程中,磁傳感系統具有很高的可靠性和魯棒性。磁條鋪設成本低,維護費用低,使用壽命長,且增減、變更路徑容易。

1.4 ?AGV的應用現狀

由于AGV具有地上系統簡單、機能集中、易施工和系統構成等優點,被廣泛地應用在汽車制造、港口貨運、機械加工、發電廠、電子產品裝配、電子行業、造紙行業等諸多行業。AGV的運輸速度及負載能力遠高于人力運輸,速度可達每分鐘百米,負載能力可從幾千克到幾十噸,相比人類而言它具備非常高的實用價值。可以看出,AGV無人自動引導小車是一種非常有發展前途的物料運輸裝備,它在柔性裝配系統(FAS)和柔性制造系統(FMS)中更是一種最有效的物料運輸設備。

隨著電子技術和自動控制技術的快速發展,AGV的功能以及其導航技術也在不斷進步,并朝著性能優越、自由度更高、廉價、超大型化和微型化方向發展。AGV的應用領域也在不斷擴展,從起初只是用作于工廠內的物料運輸,到現在己經不僅僅局限于工廠或車間之內,而是已經在飯店、醫院、辦公室、物流和超市等諸多行業成功的運用,并且取得了很好的運用效果。

AGV主要應用在制造業領域,在重型機械運輸以及部分非制造行業中也有運用。AGV在制造業中的運用主要有物料裝配、物料分發和物料加工制方面。其中在裝配作業中AGV的運用量最大,并且AGV也是汽車制造工業的應用大戶。美國通用汽車公司的汽車裝配線有90%應用了AGV,在西歐國家更是有57%的運用中的AGV被應用于汽車裝配。

隨著電子行業技術的快速發展,電子工業領域中的AGV運用潛力越來越大。由于消費者需求加大,市場對生產系統的需求增加, FMS(柔性制造系統)作為靈活的生產方式滿足了市場變化的要求,而將AGV用作中小批量元件的運輸更是適應了這一需求,并且AGV可以根據不同運用場合需要進行輸送路徑的編程,從而達到指定運輸任務。這在超凈電子行業凈化室中,AGV代替人工作業更是發揮了巨大的優勢。

而在重型機械制造行業中,AGV主要用來運輸中大型物料和重型物料。而設計功率較大并配置重型物件移栽裝置的AGV便可用來代替人工裝卸運輸中的大量勞動力輸出,更是增加了生產過程中的安全性。

AGV運用在非制造業中也越來越普遍。例如醫療部門、郵政部門、食品生產、餐廳點菜等。并且AGV可以代替人類,在具有核輻射危險的地方,用于核材料的搬運。

1.4.1??國外AGV的應用現狀

在世界范圍內,隨著市場需求的增長,近幾年先進制造技術、工廠物流自動化有了很大發展。AGV技術的發展,則進一步促成了先進的柔性生產線、自動化物流系統的實現。國外發達國家中日本、美國、德國、意大利、瑞典AGV產品種類齊全,技術先進,處于領先地位。

國內外在先進的加工制造生產線上采用柔性加工系統(FMS),在裝配生產線上使用柔性裝配系統(FAS)技術,在倉庫存取輸送線上使用自動化柔性物流系統技術, 進而增加了制造生產線和物流系統的柔性, 加快了生產效率, 適應了生產多品種產品的市場需求。

1.4.2??國內AGV的應用現狀

目前,由于國內汽車行業的快速發展,其對配套生產廠家的產品質量及產量要求不斷提高,特別是裝配制造業。基于這種情況對柔性裝配系統的需求正在不斷提高。

1.5 ?本項目的研究內容及AGV的關鍵技術

1.5.1??項目主要研究的內容

本項目旨在設計一款實用的AGV車開發平臺,為保證AGV車的導航準確性、快速糾正性,以及本設計作品中所有的軟件和硬件開發研究,將主要涉及以下幾個方面:

1)AGVS配送系統相關研究

2)AGV車體機械結構設計

3)AGV控制器硬件設計。將對控制器與各傳感器進行模塊化設計。

4)AGV軟件設計。涉及傳感器檢測程序、無刷直流電機驅動程序等。

5)項目設計任務作系統實驗調試,保證AGV車運行性能。

1.5.2 ?AGV的關鍵技術

設計為一款既具有實用價值同時利于后期拓展開發的AGV小車平臺,AGV將在手動開機情況下,自主抵達發出信息的各個工位,并進行任務將物料搬運抵達至目標工位,其中將主要包括如下幾個關鍵問題:

  • AGV如何實時判斷當前周圍環境的障礙物并及時躲避
  • AGV如何與工位進行位置數據通信以及物料數據通訊。
  • AGV如何擇優選擇運行路徑并抵達目標工位。
  • AGV如何獲取當前位置信息并確定當前行徑方向。

5)AGV如何適當的在直道彎道加減速度并始終在路徑上行走。

這些問題是對于實時性要求較高的AGV所必需解決的問題,將對應到AGV的傳感器技術、定位技術、路徑規劃策略和運動控制技術。對于AGV而言,及時響應系統下達的任務指令,并安全、準確、無物料丟損、無碰撞的完成指令任務,是AGV最基本的功能。而在各種復雜環境中,有效的完成任務,將很大程度上取決于AGV車自身的導航與環境識別能力,而這樣一個自主式程度高的AGV系統一直都為很多AGV研究者重視,而這樣的一種AGV也具有更廣闊的應用前景。

?

?

第二章 ?AGV總體結構設計

2.1 ?AGVS(Automatic Guided Vehicle System)配送系統組成

AGV自動導引小車配送系統由帶輔助裝卸裝置的AGV車、在線自動充電系統、地面導航系統、周邊工位及倉庫輸送系統、AGV控制臺(調度計算機)和網絡通訊系統等構成,部分系統工作任務如下:

1)AGV(Automatic Guided Vehicle)

帶輔助裝卸裝置的AGV小車,完成系統指定從各個工位的之間輸送任務。

2)在線自動充電系統

為了保證AGV小車全天候運行任務的可靠性,系統會采用大電流快速充電的方式為AGV蓄電池充電。AGV小車的充電過程是由電量不足情況下向控制臺發送電量不足信息,并由控制臺下達允許指令后方可執行充電程序。

3)地面導航系統

地面導航系統主要由磁導航帶或激光反光板等地面路徑指示標志構成,使得AGV在規定的路徑下運行運輸任務。

4)周邊輸送系統

周邊輸送系統主要是AGV的自動上下貨工位所處的位置,這些設備在與AGV進行裝卸貨物的過程,會在對應系統監控下實現動作的互鎖和協調配合,保證物料運輸的生產安全性。

5)AGV控制臺(調度計算機)

控制臺是AGV小車的上位機管理系統,是所有處在本系統內的AGV小車的調度管理中心。此系統負責與監控計算機交換物料及AGV運行數據信息,分配系統下各個AGV的運行任務,解決多臺AGV之間的協調問題。同時將AGV系統的物料搬運完成度等狀態反饋給中心控制管理系統。

6)通訊系統

通訊系統由AGV控制臺和各AGV之間組成無線局域網(此通訊系統頻率采用開放的2.4GHz頻道,覆蓋范圍500米內)并進行信息交換。控制臺通過多個無線接入點組合通信,從而覆蓋整個AGV工作區域,使得AGV在遠距離跨越區域時實現信息連接。

各系統之間的具體關系如圖2-1所示。

2.2 AGV車身結構及運動學分析

2.2.1 AGV車身硬件結構性能指標

1、車身額定載重量:即自動導引搬運車所能承載貨物的最大重量。通常AGV的載重量范圍在50kg到20000kg,多以中小型噸位。本設計的AGV車的載重量在60KG左右,最大載重量70KG,并可以調整車身部件增加載重量。

2、車體尺寸 :車體尺寸是指車體的長、寬、高外形尺寸。本設計作品車體數據為650mm*330mm*250mm。

3、導航精度 :指AGV行走時的精度,本設計作品精度±10 mm。

4、停位精度 :指AGV到達目的工位處并準備自動移載物料時時所處的實際位置與程序設定的位置之間的偏差值(mm)。停位精度確定移載方式的主要依據,不同的裝卸方式要求不同的停位精度。本設計作品停位精度為。

5、最小轉彎半徑:是指AGV在空載低速行駛、偏轉程度最大時,瞬時轉向中心到AGV縱向中心線的距離。它是確定車輛彎道路徑運行所需空間的重要參數。本項目作品最小轉彎半徑。

6、運行速度:指自動導引搬運車在額定載重量下行駛時所能達到的最大速度。它是確定車輛作業周期和搬運效率的重要參數。本設計作品運行速度0-200m/min。

7、導引方式:采用磁導航方式。

8、控制方式:按鈕開關、計算機遙控、工位調度控制器。

9、電源:36V15AH鋰電池組。

10、安全裝置:故障報警、急停按鈕、遠程非接觸防碰防碰裝置。

11、驅動方式:直流伺服驅動。

12、驅動形式:后置雙輪驅動
13、通訊方式:AGV控制臺與AGV間采用無線局域網通訊交換信息。

14、信息顯示終端:AGV上帶有顯示信息液晶觸摸屏幕

2.2.2 AGV車身設計

本項目采用四輪布置結構,前輪由數字舵機控制的一組差數轉向組件來實現AGV小車轉向,后輪由兩組無刷直流電機獨立驅動。傳動系統如圖2-2所示。

 

 

 

 

 

 

 

AGV的車架結構采用2525鋁合金材料制作而成,既符合了AGV小車的載重設計要求同時也在外觀上符合了審美。車架三視圖設計如圖2-3所示,圖2-4為小車車架實物。

 

 

本項目設計的AGV小車轉向結構采用數字舵機控制轉向組件,達到AGV小車的轉向功能,具體轉向部件設計細節如下圖所示。

 

項目設計的AGV小車機身結構考慮了作為AGV開發平臺的拓展性,因而在外形以及結構形狀設計上充分考慮了后期的改造方便性,并且始終兼顧了它的實用性能,最終小車的機身設計實物圖如圖2-8所示。

 

2.2.3 AGV驅動電機選型

AGV小車的主要功能是作為物料運輸用途,因此要特別考慮小車的負載驅動能力(電機功率參數),同時要需要考慮在小車運行過程中的停車精度問題,因此選擇一款既具備高低速運行情況下力矩良好同時精度有高的驅動電機極為重要。因此項目將通過以下參數計算選擇電機型號。

1、計算小車最大負載時拉力(F)值,圖2-9為小車受力分析。

 

 

 

 

小車自身重量

最大負載重量

滾動摩擦力f值得大小在零與靜摩擦力之間,即

則小車牽引力為 :

2、本項目中小車驅動輪尺寸為6寸,半徑約為9.9cm,換算得出負荷力矩為:

為了使得AGV具備適當的爬坡能力,使小車在爬坡過程中仍具備較大力矩,經過爬過過程的小車受力計算(如圖2-10所示),本設計中提高了電機輸出扭距參數要求使之達到5.9的力矩。

 

 

 

 

 

????3、小車設計最大速度為200m/min,驅動輪半徑為9.9cm

則,輪子周長 :

得出電機輸出軸轉速為 :

4、根據電機功率計算公式,得出 :

經過上面的詳細參數計算,選擇的是一款型號為Z5BLD250-24A-30S的無刷直流電機,通過1:7.5減速箱減速,可以達到空載轉速400r/min,力矩達到5.97N·m,滿足了AGV設計的要求。表2-1為電機性能參數。

型號 Z5BLD250-24A-30S
額定電壓 24V
額定功率 250W
額定電流 13.0A±10%
額定轉速 3000RPN±10%
額定力矩 0.796
空載電流  
空載轉速 3600RPN±10%
電機壽命 5000h
電氣強度 660V/S
絕緣等級 B
防護等級 IP20
使用環境溫度  

 

 

 

 

?

第三章 ?AGV硬件設計

本項目設計的AGV是采用次導航技術,其系統技術構成如圖3-1所示。其中主要包括:供電單元、主控單元、驅動單元、安全感應系統、導向系統、站點識別單元、通訊單元、車體。其中供電單元、主控單元、驅動單元、導向系統是本章節敘述核心。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3.1 AGV小車供電系統

AGV的供電系統用以給主控單元、導向系統、驅動單元等設備提供電能,是AGV小車的連續工作、穩定工作、安全工作的重要保證。AGV小車的電壓采集模塊通過 A/D 轉換,實時采集當前AGV電池的電量,將電壓數據反饋給AGV主控制器。控制器通過監控當前電壓及時調整AGV的工作任務。當控制器監測到當前電池電壓值即將低于正常工作電壓時,則將需要充電的信息反饋調度計算機,同時AGV小車顯示屏報警顯示電量不足,并在完成當前任務后自行回到充電站充電,充電完成后,解除報警信號,發送上位機當前充電完成信號,并接受上位機調度任務。

3.1.1 AGV電池選配

AGV電池一般采用鎳鎘蓄電池、鎳氫蓄電池、鋰電池、鉛酸蓄電池。

本項目選擇的是一款36V15AH的高能鋰電池,體積小,能量大,非常適合作為本文設計AGV小車的動力電源。如圖3-2是本車電池實物圖。電池采用DC充電接口,T型供電插口。鋰電池擁有高能量密度,與高容量鎳鎘電池相比,體積能量是其1.5倍,能量密度是其2倍,高電壓,平均使用電壓為3.7V,是鎳鎘電池和鎳氫電池的3倍,使用是電壓穩定而且高容量,在溫度-20度-60度使用時,充放電壽命長,經過500次放電后其電源容量至少還有70%以上。由于鋰電池具備了能量密度高電壓高,工作穩定的特點,通常使用在航模等大電流放電設備上。

 

 

 

3.1.2 供電電路設計

為了增加AGV供電可靠性,保證電路設計的安全性,本項目中的電路采用電源一鍵啟動,增設急停按鈕,電壓顯示器,電源指示燈。以下是電路設計圖。

1)電源充電及電源部分電氣圖,圖3-3

 

2)電機驅動器供電接線圖,圖3-4

3.2 控制器選型與設計

3.2.1 STM32F4簡介

STM32F4是由意法半導體(ST)推出的以基于ARM Cortex-M4為內核的高性能微控制器,其采用了90nm的NVM工藝和ART技術(自適應實時存儲器加速器,Adaptive Real-Time Memory Accelerator)。ART技術可實現程序零等待執行,提升程序執行效率,將M4架構的性能發揮到了極致,使得CPU最大可以運行于168MHZ。STM32F4系列的微控制集成了單周器DSP指令和FPU(浮點單元),提升計算能力,實現了一些復雜的計算和控制。

作為Cortex M3市場的最大占有者,STM32F4主要優勢如下:

1、內核更加先進。STM32F1采用的是Cortex M3內核,不帶FPU和DSP指令集,然而STM32F4采用CortexM4內核,帶FPU和DSP指令集,優勢明顯。

2、STM32F4有更多的資源,高達1M字節的片上閃存,擁有多達192KB的片內SRAM,增設了攝像頭接口(DCMI)、加密處理器(CRYP)、USB高(480Mbit/s)速OTG功能、32位真隨機數發生器(RNG)、OTP 存儲器等。

3、增強了外設功能。對于相同的外設部分,STM32F4 具有更快的ADC模數轉換速度、具備更低的ADC/DAC工作電壓、32 位定時器、帶日歷功能的實時時鐘(RTC)、 IO復用功能大大增強、4K字節的電池備份SRAM以及更快的USART 和SPI通信速度。

4、更高的性能。STM32F4 最高運行頻率可達168Mhz,可運行達到210DMIPS的處理能力,而STM32F1只能達到 72Mhz;STM32F4 擁有ART自適應實時加速器,可以達到相當于FLASH零等待周期的性能,可實現單周期內相乘和相加指令,采用單周期的SIMD指令,可實現同時多個數據參與運算,STM32F1則需要等待周期; STM32F4的FSMC采用32位多重AHB總線矩陣,相比STM32F1的總線訪問速度明顯提高。

5、更低的功耗。 STM32F40x 的功耗為: 238uA/MHZ,其中低功耗版本的 STM32F401 更是低到: 140uA/ MHZ, 而 STM32F1 則高達 421uA/ MHZ。

3.2.2 STM32F407ZGT6硬件資源介紹

STM32F407ZGT6芯片集成FPU和DSP指令,并具有192KB的SRAM、1024KB FLASH、12個16 位定時器、2個32位定時器、 2個DMA控制器(共16個通道)、2個全雙工I2S、2個12位DAC、6個串口、2個USB(支持 HOST /SLAVE)、2個CAN、3個IIC、3個SPI、3個12位ADC、1個RTC(帶日歷功能)、1個SDIO 接口、1個FSMC 接口、1個 10/100M 以太網 MAC 控制器、1個攝像頭接口、1個硬件隨機數生成器、以及112個通用IO口等。

3.3.開發板最小系統

STM32最小系統主要包括:電源電路、外部晶振電路、外部時鐘電路、復位電路、下載電路,如圖3-5為開發板最小系統部分電路原理圖。

 

 

 

 

 

 

 

 

3.4磁導引傳感器控制與設計

3.4.1 傳感器控制原理

導向單元的作用是讓AGV小車根據規定路徑行駛,本項目采用的是磁導航傳感器,安裝在AGV 車體前方的底部,磁導航傳感器利用其內置的8個采樣點,能夠檢測出磁條上方一定程度的微弱磁場,每一個采樣點都有一路信號對應輸出,當采樣點采集到磁場信號時,該路信號就會輸出低電平,而沒有采集到磁場信號的信號輸出則為高電平。AGV運行時,磁導航傳感器內部垂直于磁條上方的連續 1-3 個采樣點會輸出信號,依靠輸出的這幾路信號,可以判斷磁條相對于磁導航傳感器的偏離位置,當AGV的行駛與導引軌跡一致時,由于此時磁導航傳感器正好處于磁條軌跡的上方,傳感器正中間的檢測元件測得的磁感應強度最大,因而中間的霍爾開關傳感器輸出低電平信號,控制器 I/O口采集到這幾路信號,比較發現當前AGV 處于路徑中間,控制器將不對該輸出信號進行處理,AGV保持原行駛軌跡;當AGV偏離磁條軌跡時,由于檢測到最大磁感應強度的霍爾開關傳感器不再處于磁導航傳感器的中間,傳感器將該低電平信號輸出至控制器,控制器 I/O 口采集到這幾路低電平信號,比較發現當前AGV位置與路徑位置有所偏差,據此AGV控制系統自動做出調整,控制電機驅動器,使電機差速糾偏,確保AGV 沿磁條前進。磁導航原理圖如下圖3-6所示。

 

 

3.4.2 導航工作控制

AGV的地面磁導航系統是AGV在運行過程中所能達到的路徑,主要由以下幾部分構成:運行路徑導航線、地標導航線和彎道導航線。采用磁導航的方法,運行路徑導航線由寬30mm、厚度為1mm的磁性橡膠磁帶鋪設而成,根據路徑的具體要求可以進行適當的裁剪。地標導航線由長150mm、寬50mm、厚度為1mm的磁性橡膠鋪設而成,在地圖上地標是各個站點的標志。彎道導航線由路徑導航線和地標導航線構成,如下圖3-7所示:

AGV在彎道的運行分成下述幾個步驟:

1)找到地標。

2)按一定的轉彎半徑,AGV靠碼盤的位置編程來完成圓弧的軌跡。

3)以此,AGV尋找導航線,按導航線的路徑行走。

磁導航傳感器是AGV的眼睛,決定了AGV的運行穩定性。本項目選擇的是LS-06型AGV磁導航傳感器,該傳感器主要應用于磁條導航方式的自動導引車AGV,自動手推車AGC,無軌移動貨架,物流揀選等行業。該磁導航傳感器采用6路采樣點輸出,該系列磁導航傳感器采用8路采樣點輸出,與日本名電舍的ME-9006AM-1性能相同,溫漂,磁飽和等性能指標均優于進口產品

磁條導航方式的自動導引車AGV,沿著地面鋪設的磁條行駛。LS-06型AGV磁導航傳感器,安裝在AGV車體前方的底部,距離磁條表面20-40mm,磁條寬度為30-50mm,厚度1mm.LS-06型AGV磁導航傳感器利用其內部間隔10mm平均排布的8個采樣點,能夠檢測出磁條上方100gauss以下的微弱磁場,每一個采樣點都有一路信號對應輸出。AGV運行時,磁導航傳感器內部垂直于磁條上方的連續2-3個采樣點會輸出信號。依靠6路通道中輸出的2-3路信號,可以判斷磁條相對于LS-06型AGV磁導航傳感器的偏離位置, AGV會自動作出調整( PID),確保沿磁條前行。

下表為本作品中磁導航傳感器的技術參數。

名稱 內容
檢測距離 30±20mm
檢測極性 N極和S極
紅燈N極
綠燈S極
檢測點數量 6(20mm等距)
輸出極限 耐壓:DC60V
單路輸出電流:50mA
總輸出電流:300mA
相應時間 10mS
保存溫度范圍 -40—+80

 

 

3.4.3 傳感器接線

下圖為傳感器輸出端口定義(圖3-8和圖3-9),表3-2為傳感器接線表)。

 

 

 

 

 

管教名稱 內容
1 SW1 第1位輸出
2 SW2 第2位輸出
3 NC
4 SW4 第4位輸出
5 SW5 第5位輸出
6 NC
7 SW6 第6位輸出
8 SW7 第7位輸出
9 OV
10 10-30VDC

 

 

3.5超聲波避障傳感器

3.5.1 AGV小車接近裝置及報警、停車工作方式

AGV小車的接近檢測裝置一般有紅外區域掃描、激光測距掃描和超聲探測三種方式,用來檢測AGV運行方向是否存在障礙物。采用光電傳感器安裝在磁導航 AGV 車體正前方中部距離地面150mm 處,該傳感器擁有兩級 I/O 輸出,二級檢測區域分為左中右三個區域,分別能在 0-3m 內調節,當該級監測區域內檢測出障礙物時,該檢測單元對應的輸出電路輸出低電平信號,AGV 控制器接收到該低電平信號后立即控制驅動電機減速,同時發出警告信號并反饋給地面控制中心,通知前方障礙物離開,直到障礙解除才恢復正常速度行駛;一級臨近檢測區域較二級監測區域短,但兩側檢測范圍較二級檢測區域大,同樣具有左中右三個監測區域,分別能夠在 0~1m 內調節,當該級監測區域內檢測出障礙物時,該路對應的輸出電路輸出低電平信號,AGV 控制器接收到該低電平信號后立即發出急停指令同時報警并通知地面控制中心,直至障礙物解除。

警示裝置包括警示燈和警示蜂鳴器,用以提醒應用現場的人們及時發現正在靠近的AGV 并采取相應的措施。

停車按鈕用于 AGV 的受控停車,該按鈕按下之后 AGV 應當安全可靠地停止運行,并且該方式停車能夠通過人工操作簡單快速地使 AGV 恢復運行,該按鈕用以保證 AGV 周圍的臨時工作人員的安全,采用停車按鈕停車方式可以不切斷 AGV 的驅動電源。磁導航 AGV 在地面控制中心、AGV 車用遙控器和 AGV 車身側面等三處均設置停車按鈕,方便操作人員采取停車措施。

緊急停車按鈕用以在緊急情況下中斷 AGV 的運行,為便于緊急情況下操作,磁導航 AGV 在地面控制中心、AGV 車用遙控器和 AGV 車身兩側設置紅色的急停按鈕。當緊急停車按鈕按下后,AGV 切斷一切設備的動力供給,啟動制動器并報警,在排除緊急停車原因之前 AGV 維持停止狀態。

3.5.2 超聲波傳感器原理

超聲波傳感器主要包括發射器和接收器兩大部分,由于超聲波在空氣中傳播的速度為已知(340m/s),我們只需要計算出從發射到接收之間的時間差就可以算出距離。具體的作法是超聲波發射器向某一方向發射超聲波,在發射時刻的同時開始計時,超聲波在空氣中傳播,途中碰到障礙物就立即返回來,超聲波接收器收到反射波就立即停止計時。(超聲波在空氣中的傳播速度為340m/s,根據計時器記錄的時間t,就可以計算出發射點距障礙物的距離(s),即:s=340t/2)。

本項目選用的是HC-SR04型傳感器(圖3-10實物圖),左邊為接收頭,右邊為發射頭,共引出分個引腳,一個電源正極(5V),一個電源地,Trig為觸發信號觸發控制端,Echo為回響信號端。下面介紹一個超聲波傳感器的時序圖。

 

 

 

通過時序圖可知,在使用時,觸發控制端Trig,首先必須給一個10us以上的高電平,然后等待發射頭聲波信號輸出,一旦有信號輸出,回響信號端會產生高電平,此時開始計時。隨后聲波信號一直在空氣中傳播,遇到障礙物會反射回來,當反射回來的信號到達接收頭時,此時回想信號端會由高電平變為低電平,停止計時。此時我們就可以算出檢測的距離S=340*(t1-t2)/2 ( t1為開始計時時間,t2為停止計時時間,注意距離為一邊的距離,所以時間應該除以2)。

3.6 電機驅動器控制和接線

本項目選用的是一款BLCD型號的高性能,多功能,低成本的帶霍爾傳感器的直流無刷電機驅動器。驅動器選用全數字式設計可實現多種輸入控制方式,擁有極高的調速比,噪聲低,軟硬件保護功能完善,可以通過串口通信實現與上位機連接并進行電機的PID參數調整,保護參數調整,電機參數調整,加減速時間等參數設置,同時可以進行IO輸入狀態,模擬量輸入,告警狀態及母線電壓監視。

下圖是電機驅動器參數列表

 

 

3.6.1 無刷直流電機驅動器控制方案

無刷直流電機(brushless direct current?motor ,BLDCM)轉子采用永磁鐵激磁,電機功率密度高控制簡單,調速性能良好,因此在無刷直流電機在交流傳動中受到了廣泛應用。對于本項目AGV對電機的控制要求,采用了閉環控制,與開環控制相比,采用閉環速度控制系統的機械特性有很大優越性。閉環控制系統的機械特性與開環相比,其整體性能大大提高;理想空載轉速相同時,閉環系統的靜差率S(額定負載時電機轉速降落與理想空載轉速之比)要小很多;當要求的靜差率S相同時,那么對比開環系統,則閉環調速系統的調速范圍可以大大提高。無刷直流電機的閉環速度控制方案如下圖所示。

項目驅動器閉環調節方案采用比例積分微分控制(簡稱PID控制),其輸出結果為輸入結果的比例、積分和微分的函數。PID調節器的控制結構比較簡單,參數容易調整,可以不必求出被控對象的數學模型,因此PID調節器受到了廣泛的應用。

3.6.2 無刷直流電機轉速檢測

本項目使用的無刷電機采用了霍爾傳感器,使得電機的實際轉速可通過測量轉子位置信號得到,在電機轉動過程中,通過霍爾傳感器發出的信號可以得到如圖3-6所示的周期信號。

 

 

 

 

由圖3-6可知,電機旋轉一周便可得到兩個周期方波,每一相霍爾傳感器產生2個周期的方波,則周期與電機轉速成正比,如此便可利用霍爾傳感器發出的信號得到電機的實際轉速。為盡可能縮短每次速度的采樣時間,同時為了測得每項霍爾傳感器的正脈沖的寬度,則可計算電機的實際轉速。

3.6.3 驅動器接線

3.6.3.1接口定義與連接圖,圖3-15

 

 

 

 

1)引腳列表及相關名稱,表3-3。

端子引腳號 引腳名 定義說明
1 GND 信號地
2 ALM 報警輸出(開漏)電流應限制在20mA內
3 X1 多段速輸入1
4 PG 霍爾信號異或輸出(開漏)電流應限制在20mA內
5 X2 多段速輸入2
6 5V 5V電源輸出,輸出電流應小于20Ma(內部為線性電源,過大電流會導致過熱)
7 X3 多段速輸入3
8 SV 模擬信號輸入
9 FR 方向控制信號
10 GND 信號地
11 EN 使能信號,低電平有效
12 BK 剎車信號,高電平剎車,正常應接GND

 

2)通訊接口

本項目驅動器采用串行通信方式與計算機連接。接口為RS232電平。物理接口采用RJ12-6PIN的電話插座,引腳排列如圖3-17所示,引腳對于說明見表3-4。

 

 

 

端子引腳號 引腳名 定義說明
1 NC 常開/空
2 TXD MCU數據發送端
3 VCC 5V電源
4 RXD MCU數據接收端
5 GND 接地
6 NC 常開/空

 

 

3)驅動器典型接線連接圖,圖3-18所示。圖3-19、連接時驅動器U、V、W端口分別對應電機黃綠藍相線,HA、HB、HC霍爾信號端口分別對應電機黃綠藍霍爾信號線。

 

 

 

?

第四章 ?AGV控制軟件設計

4.1 ?AGV系統程序流程圖設計

STM32微控制器采用中斷方式接受外部傳感器數據,然而,在串行偶爾會出現幀數據丟失的現象,為了防止產生一直等待,項目使用了看門狗定時器進行監視。在串口初始化時放在了系統初始化中,這里給出了串行接受通信程序流程圖(圖4-1),微控制器的串口發送程序比較容易,通常采用查詢方式進行發送,此處就不載列出。

本項目要用到定時器/計數器 0 間隔時間讀取霍爾傳感器轉速脈沖數中斷,串行接受、發送中斷。未使用的中斷,在相應的程序中的中斷地址寫入復位指令。

本項目作品的開機初始化過程進行IO口舒適化、定時器/計數器初始化、各類模塊數據參數的初始化以及電機轉速初始化、PID參數初始化等。給出了程序初始化流程圖圖4-2和系統軟件主要流程圖4-3。

圖4-2 主控程序初始化流程圖

 

4.2??驅動器控制程序設計

根據3.5.3節的電機控制算法,根據本文AGV小車的部分程序設計,這里給出了PID整定輸出產生PWM波main程序。

/******************** (C) COPYRIGHT 2008 STMicroelectronics ********************

* File Name ?????????: main.c

* Author ????????????: MCD Application Team

* Version ???????????: V2.0.1

* Date ??????????????: 06/13/2008

* Description ???????: Main program body

********************************************************************************

* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS

* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.

* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,

* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE

* CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING

* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.

*******************************************************************************/

 

/* Includes ——————————————————————*/

#include “System_init.h”

#include “Adjust.h”

/* Private typedef ———————————————————–*/

/* Private define ————————————————————*/

/* Private macro ————————————————————-*/

/* Private variables ———————————————————*/

extern vu16 ADCConvertedValue;

extern unsigned char Flag_1mS;

extern unsigned char Flag_100mS;

extern unsigned char Flag_1S;

extern int U_Set;

extern u16 CCR1_Val;

/* Private function prototypes ———————————————–*/

/*******************************************************************************

* Function Name ?: main

* Description ???: Main program

* Input ?????????: None

* Output ????????: None

* Return ????????: None

*******************************************************************************/

int main(void)

{

unsigned char N=0;

float Pv;

#ifdef DEBUG

debug();

#endif

System_Configuration();

printf(“This is an example of PID!\n\r”);

while (1)

{

switch (N){

case 0:

if(Flag_1mS==1){

if(U_Set-ADCConvertedValue>=10||U_Set-ADCConvertedValue<=-10){

Pv=Vol(U_Set,ADCConvertedValue);

CCR1_Val=CCR1_Val+Pv/2.04;

if(CCR1_Val>=999)

CCR1_Val=999;

else if(CCR1_Val<=1)

CCR1_Val=1;

 

TIM3->CCR1=CCR1_Val;

}

Flag_1mS=0;

}

break;

case 1:

if(Flag_100mS==1){

printf(“%d,”,ADCConvertedValue);printf(“%d ??“,CCR1_Val);

Flag_100mS=0;

}

break;

case 2:

if(Flag_1S==1){

//printf(“The feedback is %d\n\r”,ADCConvertedValue);

Flag_1S=0;

}

break;

default : break;

}

N++;

if(N==3){

N=0;

}

}

}

4.3 數字舵機控制程序設計

根據3.5.3節的超聲波傳感器原理及相關數據資料,根據本文AGV小車的部分程序設計,這里給出了超聲波傳感器測距程序。

//晶振=8M

//MCU=STC10F04XE

//Trig ?= P1^0

//Echo ?= P3^2

#include <reg52.h> ????//包括一個52標準內核的頭文件

#define uchar unsigned char //定義一下方便使用

#define uint ?unsigned int

#define ulong unsigned long

//***********************************************

sfr ?CLK_DIV = 0x97; //為STC單片機定義,系統時鐘分頻

//為STC單片機的IO口設置地址定義

sfr ??P0M1 ??= 0X93;

sfr ??P0M0 ??= 0X94;

sfr ??P1M1 ??= 0X91;

sfr ??P1M0 ??= 0X92;

sfr P2M1 ??= 0X95;

sfr P2M0 ??= 0X96;

//***********************************************

sbit Trig ?= P1^0; //產生脈沖引腳

sbit Echo ?= P3^2; //回波引腳

sbit test ?= P1^1; //測試用引腳

 

uchar code SEG7[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//數碼管0-9

uint distance[4]; ?//測距接收緩沖區

uchar ge,shi,bai,temp,flag,outcomeH,outcomeL,i; ?//自定義寄存器

bit succeed_flag; ?//測量成功標志

//********函數聲明

void conversion(uint temp_data);

void delay_20us();

//void pai_xu();

 

void main(void) ??// 主程序

{ ?uint distance_data,a,b;

uchar CONT_1;

CLK_DIV=0X03; //系統時鐘為1/8晶振(pdf-45頁)

P0M1 = 0; ??//將io口設置為推挽輸出

P1M1 = 0;

P2M1 = 0;

P0M0 = 0XFF;

P1M0 = 0XFF;

P2M0 = 0XFF;

i=0;

flag=0;

test =0;

Trig=0; ??????//首先拉低脈沖輸入引腳

TMOD=0x11; ???//定時器0,定時器1,16位工作方式

TR0=1; ?????//啟動定時器0

IT0=0; ???????//由高電平變低電平,觸發外部中斷

ET0=1; ???????//打開定時器0中斷

//ET1=1; ???????//打開定時器1中斷

EX0=0; ???????//關閉外部中斷

EA=1; ????????//打開總中斷0

 

while(1) ????????//程序循環

{

EA=0;

Trig=1;

delay_20us();

Trig=0; ????????//產生一個20us的脈沖,在Trig引腳

while(Echo==0); //等待Echo回波引腳變高電平

succeed_flag=0; //清測量成功標志

EX0=1; ?????????//打開外部中斷

TH1=0; ?????????//定時器1清零

TL1=0; ?????????//定時器1清零

TF1=0; ?????????//

TR1=1; ?????????//啟動定時器1

EA=1;

 

while(TH1 < 30);//等待測量的結果,周期65.535毫秒(可用中斷實現)

TR1=0; ?????????//關閉定時器1

EX0=0; ?????????//關閉外部中斷

 

if(succeed_flag==1)

{

distance_data=outcomeH; ???????????????//測量結果的高8位

distance_data<<=8; ??????????????????//放入16位的高8位

distance_data=distance_data|outcomeL;//與低8位合并成為16位結果數據

distance_data*=12; ?????????????????//因為定時器默認為12分頻

distance_data/=58; ??????????????????//微秒的單位除以58等于厘米

} ?????????????????????????????????????//為什么除以58等于厘米, ?Y米=(X秒*344)/2

// X秒=( 2*Y米)/344 ==》X秒=0.0058*Y米 ==》厘米=微秒/58

if(succeed_flag==0)

{

distance_data=0; ???????????????????//沒有回波則清零

test = !test; ??????????????????????//測試燈變化

}

 

/// ??????distance[i]=distance_data; //將測量結果的數據放入緩沖區

/// ???????i++;

/// ?if(i==3)

/// ?????{

/// ???????distance_data=(distance[0]+distance[1]+distance[2]+distance[3])/4;

/// ???????pai_xu();

/// ???????distance_data=distance[1];

 

 

a=distance_data;

if(b==a) CONT_1=0;

if(b!=a) CONT_1++;

if(CONT_1>=3)

{ CONT_1=0;

b=a;

conversion(b);

}

/// ?i=0;

/// }

}

}

//***************************************************************

//外部中斷0,用做判斷回波電平

INTO_() ?interrupt 0 ??// 外部中斷是0號

{

outcomeH =TH1; ???//取出定時器的值

outcomeL =TL1; ???//取出定時器的值

succeed_flag=1; ??//至成功測量的標志

EX0=0; ???????????//關閉外部中斷

}

//****************************************************************

//定時器0中斷,用做顯示

timer0() interrupt 1 ?// 定時器0中斷是1號

{

TH0=0xfd; //寫入定時器0初始值

TL0=0x77;

switch(flag)

{case 0x00:P0=ge; P2=0xfd;flag++;break;

case 0x01:P0=shi;P2=0xfe;flag++;break;

case 0x02:P0=bai;P2=0xfb;flag=0;break;

}

}

//*****************************************************************

/*

//定時器1中斷,用做超聲波測距計時

timer1() interrupt 3 ?// 定時器0中斷是1號

{

TH1=0;

TL1=0;

}

*/

//******************************************************************

//顯示數據轉換程序

void conversion(uint temp_data)

{

uchar ge_data,shi_data,bai_data ;

bai_data=temp_data/100 ;

temp_data=temp_data%100; ??//取余運算

shi_data=temp_data/10 ;

temp_data=temp_data%10; ??//取余運算

ge_data=temp_data;

 

bai_data=SEG7[bai_data];

shi_data=SEG7[shi_data];

ge_data =SEG7[ge_data];

 

EA=0;

bai = bai_data;

shi = shi_data;

ge ?= ge_data ;

EA=1;

}

//******************************************************************

void delay_20us()

{ ?uchar bt ;

for(bt=0;bt<100;bt++);

}

?

第五章 總結與展望

5.1 總結

自動導引小車(Automated?Guided?Vehicle,簡稱AGV)是一種以電池為動力,裝有非接觸式導向裝置的無人駕駛自動運輸車。其主要功能是:在計算機控制下,通過復雜的路徑將物料按一定的停位精度輸送到指定的位置上。

本作品設計的為一款既具有實用價值同時利于后期拓展開發的AGV小車平臺,選定以STM32單片機作為CPU進行控制系統設計,可以在功能可靠性保證的前提下,既降低成本,又增加本設計作品的拓展性。本項目采用磁導航方式,磁導航方式被認為是一項非常有應用前景的技術,具有很高的測量精度及良好的重復性,磁導航不受光線變化及路面污損破壞等影響,在應用運行過程中,磁傳感系統具有很高的可靠性和魯棒性。

5.2 展望

????本項目采用的自主導航方式為磁導航方式,技術成熟,設計較為簡單,成本也較低,但是作為AGV設計人員,我們希望AGV的導航方式更加先進,自主導航能力更加強,為此,在后期的開發中,會采取視覺導航方式,利用視覺攝像頭實現圖像數據采集并進行圖像中各類物體物理數據分析,這一方式會提高軟件開發的成本,但是同時會大大減少硬件傳感器的成本,視覺導航技術發展的越來越快(例如OPENCV),相信日后裝載到AGV的視覺導航技術也會逐步實現。

本項目設計的AGV小車在機械結構上,相對較重,專向組件的轉向半徑較大,需要在車身機械結構上減輕重量,減小轉彎半徑。