<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 汽車電子 > 設(shè)計(jì)應(yīng)用 > 基于單片機(jī)的AGV智能車的設(shè)計(jì)

          基于單片機(jī)的AGV智能車的設(shè)計(jì)

          作者: 時(shí)間:2012-04-09 來源:網(wǎng)絡(luò) 收藏

          隨著計(jì)算機(jī)和信息技術(shù)的快速發(fā)展,在運(yùn)輸、倉儲(chǔ)等工業(yè)領(lǐng)域獲得了廣泛的應(yīng)用。特別是隨著現(xiàn)代物流業(yè)的飛速發(fā)展,運(yùn)輸以及倉儲(chǔ)成本問題已成為物流企業(yè)在成本核算中一個(gè)無法忽視的問題,實(shí)現(xiàn)產(chǎn)品的零庫存是節(jié)約成本、提高產(chǎn)品競爭力的目標(biāo)之一。一方面是為了節(jié)約成本,實(shí)現(xiàn)零庫存;另一方面是為了獲得規(guī)模效益而不斷擴(kuò)大的儲(chǔ)備倉庫,要實(shí)現(xiàn)不同產(chǎn)品的自動(dòng)歸庫和自動(dòng)出倉,需要一種可以實(shí)現(xiàn)自動(dòng)化操作的智能設(shè)備,來完成這些無人化工作,從而實(shí)現(xiàn)高效管理和自動(dòng)控制的目標(biāo)。恰好可以實(shí)現(xiàn)這樣的功能。本文基于的原理,探討和模擬了在倉庫中實(shí)現(xiàn)對(duì)產(chǎn)品的自動(dòng)歸庫和自動(dòng)出倉的工作方式。

          本文引用地址:http://www.ex-cimer.com/article/196984.htm

          1 方案選擇及硬件電路設(shè)計(jì)

          1.1 MC9S12DJ128

          MC9S12DJ128 MCU是一種16 bit的MCU,其內(nèi)部主要由MCU的基本部分和CAN功能模塊組成。MCU的基本部分主要包括:

          (1)時(shí)鐘和復(fù)位產(chǎn)生模塊CRG(Clock and Reset Generator)。包括低電流振蕩器或是標(biāo)準(zhǔn)振蕩器的選擇、鎖相環(huán)時(shí)鐘頻率放大器、看門狗、實(shí)時(shí)中斷和時(shí)鐘監(jiān)控器。

          (2)存儲(chǔ)器包括128 KB的Flash、 8 KB的RAM、 2 KB的EEPROM。具有5V輸入和驅(qū)動(dòng)能力,CPU的工作頻率可達(dá)到50 MHz,并支持單線背景調(diào)試模式(BDM),可以在線調(diào)試。

          (3)29路獨(dú)立的數(shù)字I/O接口,20路帶中斷和喚醒功能的數(shù)字I/O接口;2個(gè)8通道的10位A/D轉(zhuǎn)換器、具有外部轉(zhuǎn)接觸能力;具有8通道的輸入捕捉/輸出比較,還具有8個(gè)可編程PWM通道,可配置成8通道8位或4通道16位PWM,其每個(gè)通道的周期和占空比均可以通過編程獨(dú)立設(shè)置。

          (4)具有2個(gè)串行異步通信接口SCI、2個(gè)同步串行外設(shè)接口SPI、Byteflight,Inter-IC總線以及SAE J1850 Class B數(shù)據(jù)通信網(wǎng)絡(luò)接口[1]。

          為了實(shí)現(xiàn)AGV智能車的控制實(shí)現(xiàn)無人化操作,硬件電路的設(shè)計(jì)主要包括路徑信息采集分離模塊、電源管理模塊、舵機(jī)控制模塊、電機(jī)驅(qū)動(dòng)控制模塊及速度檢測控制電路等。其設(shè)計(jì)框圖如圖1所示。

          11.jpg

          為了方便硬件電路調(diào)試、便于硬件電路的分割處理、避免硬件電路可能出現(xiàn)的信號(hào)干擾、串?dāng)_問題,方便機(jī)械結(jié)構(gòu)的設(shè)計(jì),本設(shè)計(jì)采用模塊化設(shè)計(jì),不同模塊之間可以通過屏蔽線或同軸電纜實(shí)現(xiàn)信號(hào)傳輸,通過實(shí)驗(yàn),其效果比較理想。

          1.2 電源管理模塊

          本設(shè)計(jì)中AGV智能車采用7.2 V的電池組供電。常用的直流低壓控制電路可采用開關(guān)穩(wěn)壓和串聯(lián)穩(wěn)壓方式。開關(guān)穩(wěn)壓芯片的工作效率高但電路有較大的電源噪聲,適用于耗電量較大的電路[2]。當(dāng)電路的電池電壓由于消耗變低時(shí),通用的LM7805芯片輸出電壓就難以保證,容易造成的自復(fù)位。另外在考慮到驅(qū)動(dòng)電機(jī)有較大的電流,尤其智能車在啟動(dòng)和加速時(shí),可能會(huì)造成電池比較大的輸出壓降。

          基于以上的考慮,本設(shè)計(jì)電源模塊的主控芯片分別采用MAX1771CSA和MAX1626ESA,該芯片有較大的電壓輸入范圍,能有效地保證由于電池的損耗輸出電壓降低而造成的穩(wěn)壓電路的較大電壓波動(dòng)輸出。采用MAX1771CSA構(gòu)成12 V升壓電路,MAX1626ESA構(gòu)成5 V降壓電路。單片機(jī)主控制電路、舵機(jī)驅(qū)動(dòng)、速度檢測均需要+5 V的控制電壓,而視頻采集電路需+12 V控制電壓。該電源供電模塊設(shè)計(jì)完全可以滿足控制要求。

          1.3 CCD視頻采集分離模塊

          本文采用Clarion CC-450型車載前端攝像頭,該攝像為NTSC制式,掃描525線30幀/s的圖像。CCD攝像頭輸出標(biāo)準(zhǔn)的視頻復(fù)合信號(hào),通過行掃描的方式,將圖像信息轉(zhuǎn)換為一維的視頻模擬信號(hào)輸出。通過對(duì)比S12單片機(jī)采集圖像分辨率的特點(diǎn)及路徑檢測所需圖像分辨率的要求可以發(fā)現(xiàn),在安裝CCD攝像頭的時(shí)候,只要將其旋轉(zhuǎn)90°,則圖像信息也將旋轉(zhuǎn)90°,如圖2所示。通過A/D轉(zhuǎn)換器采集的圖像信息,水平分辨率與垂直分辨率會(huì)發(fā)生互換,從原來的水平分辨率低、垂直分辨率高的圖像,變成水平分辨率高、垂直分辨率低的圖像,正好可以滿足道路參數(shù)檢測的要求。

          22.jpg

          由于攝像頭采集的信號(hào)數(shù)據(jù)量較大,采用單片機(jī)本身自帶的A/D轉(zhuǎn)換I/O口可能出現(xiàn)轉(zhuǎn)換速度無法滿足要求的情況,所以,在本設(shè)計(jì)中另外采用了1片A/D信號(hào)轉(zhuǎn)換芯片ADC1775CIMTC,以滿足攝像頭信號(hào)采集和轉(zhuǎn)換使用。步信號(hào)分離芯片LM1881和ADC1775CIMTC的A/D轉(zhuǎn)換可以對(duì)視頻信號(hào)進(jìn)行采集,從而得到CCD的灰度圖像數(shù)據(jù),經(jīng)二值化處理就可以在圖像上得到黑色路徑軌跡的點(diǎn)陣[3],視頻信號(hào)通過比較器與設(shè)定的值進(jìn)行比較,從而得到視頻電壓的二值化。二值化電路原理圖如圖3所示。A/D信號(hào)轉(zhuǎn)換芯片ADC1775CIMTC如圖4所示。調(diào)節(jié)設(shè)定電壓比較值,將該值設(shè)定為視頻信號(hào)中黑白亮色的分界電壓值,以提高輸出圖像識(shí)別效果。攝像頭采集電路如圖5所示。

          33.jpg

          44.jpg

          55.jpg

          1.4 電機(jī)驅(qū)動(dòng)模塊

          AGV智能車上采用RS-380SH型驅(qū)動(dòng)電機(jī),為了可靠保證智能車的速度,提高其負(fù)載能力,本設(shè)計(jì)采用2片并聯(lián)使用的具有短路保護(hù)、欠壓保護(hù)與過溫保護(hù)功能的MC33887芯片驅(qū)動(dòng)電機(jī),保證電機(jī)的驅(qū)動(dòng)能力,實(shí)現(xiàn)對(duì)速度進(jìn)行控制。通過將各種狀態(tài)引入單片機(jī)的中斷口,使單片機(jī)能對(duì)外界的異常情況進(jìn)行實(shí)時(shí)處理。采用2部分電路對(duì)稱布置,如圖6所示為其中的1片硬件電路。

          66.jpg

          1.5 舵機(jī)控制模塊

          本設(shè)計(jì)采用SRM-102型舵機(jī),其響應(yīng)速度為0.2s/60°。控制舵機(jī)的脈沖可以使用S12單片機(jī)的1路PWM產(chǎn)生。單片機(jī)中有8路PWM輸出端口,可以將其中相鄰的2路PWM輸出級(jí)聯(lián)成一個(gè)16位PWM輸出。在單片機(jī)為24 MHz時(shí),設(shè)置級(jí)聯(lián)PWM周期常數(shù)為60 000,對(duì)應(yīng)PWM周期為20 ms的脈沖信號(hào),PWM占空比常數(shù)為4 500時(shí)對(duì)應(yīng)輸出為1.5 ms。改變占空比常數(shù)可以改變輸出脈沖的寬度。另外,脈沖寬度與轉(zhuǎn)角的線性關(guān)系計(jì)算公式為:

          a=(L-1.5)×90°

          式中,a是舵機(jī)的轉(zhuǎn)角,單位為度(°);L是脈沖寬度,單位是ms。

          其轉(zhuǎn)角和脈沖寬度對(duì)應(yīng)關(guān)系如圖7所示。

          77.jpg

          測試過程中,發(fā)現(xiàn)舵機(jī)一定的轉(zhuǎn)角有時(shí)間的延遲,時(shí)間延遲正比于旋轉(zhuǎn)過的角度,反比于舵機(jī)的響應(yīng)速度,通過分析可知,舵機(jī)的響應(yīng)速度直接影響小車轉(zhuǎn)彎的速度。而且在實(shí)際的控制現(xiàn)場,還影響轉(zhuǎn)向的精確度。通過不斷的測試發(fā)現(xiàn)可以適當(dāng)抬高攝像頭的高度,使其能夠探測更遠(yuǎn)的距離,提前采集彎道信息,提前對(duì)舵機(jī)給以響應(yīng)。但同樣存在一個(gè)問題,攝像頭抬得過高會(huì)出現(xiàn)采集回來的路徑的灰度值偏低,必須通過不斷的實(shí)驗(yàn)找到一個(gè)合適的結(jié)合點(diǎn)。

          1.6 速度檢測模塊

          本設(shè)計(jì)采用齒槽圓盤加直射式光電對(duì)射傳感器構(gòu)成車速檢測電路。通過光電傳感器讀取齒槽圓盤轉(zhuǎn)動(dòng)脈沖。傳感器輸出的電壓信號(hào)可以由單片機(jī)的A/D端口進(jìn)行讀取,其余的輸出脈沖信號(hào)可以利用單片機(jī)I/O端口輸入到單片機(jī)內(nèi)部的定時(shí)器/計(jì)數(shù)器模塊中進(jìn)行測量。通過周期讀取計(jì)數(shù)器的計(jì)數(shù)數(shù)值,可以反映脈沖的頻率,從而得到車速信息。

          假設(shè)n為后軸的轉(zhuǎn)速(單位為r/s);N為1個(gè)采樣周期T內(nèi)光電傳感器記錄的脈沖個(gè)數(shù);P為齒槽盤的齒數(shù);T為采樣周期(單位s)。則:

          N=T×n×P (1)

          因此小車后輪的轉(zhuǎn)速為:

          n=N/(P×T) (2)

          經(jīng)測量,小車后輪直徑D=55 mm,則可以得到小車瞬時(shí)速度為:

          V=π×n×D (3)

          固定在后軸上的齒槽盤是1個(gè)圓周被分成60個(gè)等份的齒槽圓盤。齒槽盤上的1個(gè)齒和1個(gè)缺口連續(xù)通過速度傳感器后,速度傳感器就會(huì)生成1個(gè)脈沖信號(hào)。經(jīng)過整形處理有單片機(jī)的I/O口對(duì)其進(jìn)行計(jì)數(shù)捕捉,每捕捉到1個(gè)脈沖信號(hào),智能車前進(jìn)的路程就可用下式得到:

          L=1/60×π×D (4)

          把D=55 mm代入公式(4)中可以得到:

          L=1/60×π×55 mm=2.879 mm (5)

          通過測試可以確定,當(dāng)速度采樣周期為0.2 s時(shí)效果最佳。如果采樣周期太長,則脈沖累加器得到的數(shù)量太多,在軟件編程時(shí)對(duì)算法不利?;谏鲜龇治?,將定時(shí)器時(shí)間設(shè)定為48 ms,即每隔48 ms定時(shí)器就產(chǎn)生1次中斷并讀取脈沖累加器中的數(shù)值。設(shè)定經(jīng)過4個(gè)間隔后做1次PID算法來改變電機(jī)的驅(qū)動(dòng)信號(hào),進(jìn)而改變智能車的速度。在PID算法中的檢測值(反饋值)由這4次讀取脈沖累加器的值平均后得到,其目的在于防止檢測信號(hào)突變而干擾控制。為了濾除干擾信號(hào),在PID控制算法中加1個(gè)滑動(dòng)平均濾波器。按上述設(shè)定定時(shí)器設(shè)定值和脈沖累加器后,可以推算出智能車的速度表達(dá)式如式(6)所示,從而完成對(duì)智能車的速度的測量。
          V=(L×N)/48 (6)

          1.7 鍵盤顯示控制模塊

          本設(shè)計(jì)采用的單片機(jī)自身帶有可用于擴(kuò)展鍵盤和顯示的I/O口,硬件設(shè)計(jì)直接采用外置式8針插拔4×4鍵盤,以及帶有字庫的外置式點(diǎn)陣液晶顯示模塊,以方便在調(diào)試過程中及時(shí)糾正智能車在運(yùn)行過程中的路徑偏差。在實(shí)際的控制現(xiàn)場,可以采用無線通信模塊來給AGV傳輸指令,實(shí)現(xiàn)遠(yuǎn)距離操控[1]。

          2 系統(tǒng)軟件設(shè)計(jì)

          2.1 系統(tǒng)初始化

          在系統(tǒng)運(yùn)行開始時(shí),首先需要進(jìn)行初始化,初始化主要包括時(shí)鐘初始化、A/D口初始化、PWM初始化、IRQ初始化以及I/O口初始化。其中,A/D和IRQ在CCD圖像采集過程中使用,PWM主要應(yīng)用在舵機(jī)的控制和電機(jī)驅(qū)動(dòng)的控制上。

          2.2 PID算法設(shè)計(jì)

          舵機(jī)轉(zhuǎn)角與電機(jī)轉(zhuǎn)速算法從最遠(yuǎn)的一行圖像開始,根據(jù)預(yù)設(shè)的標(biāo)志位判斷該行是否有效。如果不是有效行,則判斷下一行,直到找到有效的第1行為止。找到有效行就可以獲得中心線的位置信息,繼續(xù)尋找最后一行有效黑線,據(jù)此計(jì)算出黑線的斜率。將黑線中心位置及黑線的斜率代入本設(shè)計(jì)的舵機(jī)控制量與中心位置公式,計(jì)算出舵機(jī)應(yīng)有的控制量,從而確定相應(yīng)的舵機(jī)轉(zhuǎn)角及電機(jī)的轉(zhuǎn)速。計(jì)算公式如下:

          舵機(jī)控制量=比例控制量+積分控制量+微分空置量 (7)

          式中,比例控制量根據(jù)黑線中心位置乘以比例系數(shù)得到,積分控制量根據(jù)黑線斜率計(jì)算得到,微分空置量則是第K次與第K-1次比例控制量的差值[5]。各控制量的系數(shù)值均通過測試選定。

          對(duì)于電機(jī)速度的控制,主要根據(jù)在起始時(shí)給定智能車的運(yùn)行速度以及啟動(dòng)后計(jì)算出的舵機(jī)控制量判斷智能車是否行駛在直道上,如果是在直道上則加快速度,否則根據(jù)控制量的大小進(jìn)行適當(dāng)?shù)臏p速,以保證智車能在過彎時(shí)能更加順暢和精確。

          2.3 CCD圖像采集

          本設(shè)計(jì)采用的CCD圖像傳感器采集圖像的幀周期為33.4 ms,行周期為63.6 μs。在智能車行駛過程中需要對(duì)采集的圖像進(jìn)行實(shí)時(shí)處理,并不斷進(jìn)行反饋以對(duì)舵機(jī)轉(zhuǎn)角和速度進(jìn)行控制,因此,在采集工程中以半幀為1個(gè)采集周期,每8線采集1線,剩余時(shí)間執(zhí)行其他任務(wù)。

          2.4 圖像處理

          通過CCD采集獲得的是一幅灰度圖像,為了確定路徑,需要進(jìn)行二值化并對(duì)中心線進(jìn)行直線擬合。由于單片機(jī)要不斷地進(jìn)行圖像采集,所以計(jì)算時(shí)間剩余十分有限,為此進(jìn)行二值化和直線擬合就需要采用計(jì)算量最小的算法來完成。

          2.5 圖像閾值的確定

          由于攝像頭采集的圖像信息數(shù)據(jù)量比較大,而且必須是動(dòng)態(tài)實(shí)時(shí)的路徑信息?;趩纹瑱C(jī)的處理速度和時(shí)間,本文采用固定的閾值進(jìn)行圖像的二值化。單片機(jī)本身無法進(jìn)行動(dòng)態(tài)計(jì)算,所以需要確定一個(gè)比較合理的方法來確定一個(gè)固定閾值。本設(shè)計(jì)利用分割最優(yōu)閾值迭代算法進(jìn)行閾值計(jì)算[6]。當(dāng)采集完1幅圖像之后進(jìn)行最優(yōu)閾值計(jì)算,計(jì)算完成后將計(jì)算結(jié)果發(fā)給單片機(jī),然后進(jìn)行下一幅圖像采集,如此循環(huán)。

          在迭代算法中,需要對(duì)分割出的圖像分別求出其灰度平均值,計(jì)算如下:

          8.jpg

          式中,E{g(x,y)}表示灰度平均值,f(x,y)表示圖像二維定義,e(x,y)表示偏差函數(shù)。
          (8)式、(9)式說明了隨著迭代次數(shù)的增加,平均灰度值將趨向于真值。因此,用迭代算法求得的最佳值不受噪聲干擾的影響。

          在計(jì)算過程中,首先選擇一個(gè)近似值作為初始值,然后進(jìn)行分割,產(chǎn)生子圖像;并根據(jù)子圖像的特性選取新的值,然后用新的值分割圖像,經(jīng)過幾次循環(huán),使錯(cuò)誤分割圖像像素點(diǎn)降到最少。這樣做的結(jié)果明顯優(yōu)于用初始值直接分割圖像的效果,值的改進(jìn)策略是用迭代算法的關(guān)鍵[7]。具體步驟如下:
          (1)選擇一個(gè)初始值的估算值

          10.jpg

          14.jpg

          通過分析,確定16為圖像的固定閾值。實(shí)驗(yàn)證明,經(jīng)過以16為閾值的二值化處理后的圖像比較清晰,在實(shí)驗(yàn)室光照較好的條件下,沒有出現(xiàn)離散斑點(diǎn),智能車的自主識(shí)別效果很好。在軟硬件程序的聯(lián)合調(diào)試過程中,在實(shí)驗(yàn)室正常燈光環(huán)境下,智能車能很好地沿線行駛,在實(shí)際的調(diào)試中發(fā)現(xiàn)如果光線太暗,會(huì)造成CCD攝像頭采集回來的圖形灰度值偏低的情況。針對(duì)這種情況,可以嘗試采用補(bǔ)光的措施,來滿足攝像頭對(duì)環(huán)境光照的要求。智能車控制系統(tǒng)流程如圖8所示。

          88.jpg

          智能車在直線行駛過程中,舵機(jī)與前軸夾角為90°,考慮到車輛行駛中偏離路徑出現(xiàn)的誤差,當(dāng)其夾角范圍在80°~100°范圍內(nèi)時(shí),直接輸出舵機(jī)的計(jì)算值;當(dāng)檢測到的夾角超出此范圍值時(shí),為保證智能車的正確行駛方向,由光電傳感器進(jìn)一步檢測其行駛路徑,并輸出計(jì)算的舵機(jī)轉(zhuǎn)角。

          智能車是在預(yù)先設(shè)置好的路徑上行駛。在實(shí)際的倉庫環(huán)境中,由于智能車會(huì)有較大的負(fù)載,為了保證安全,在智能車出現(xiàn)錯(cuò)道情況時(shí),必須讓其強(qiáng)制停止。在到達(dá)箱體貨物跟前必須減速。所以針對(duì)這種情況可以安裝其他設(shè)備,如紅外傳感器和行程開關(guān),以保證檢測信息足夠讓智能車安全行駛。

          本文通過模擬在大型倉庫中,AGV自主尋跡智能車,來實(shí)現(xiàn)倉庫的無人化管理。通過實(shí)驗(yàn)證明,本智能車在這種環(huán)境中實(shí)現(xiàn)的可行性。基于多傳感器信息導(dǎo)航系統(tǒng)在大型倉庫管理中實(shí)現(xiàn)智能車無人化管理,給工業(yè)現(xiàn)場多信息導(dǎo)航智能系統(tǒng)提供有益的參考。

          pid控制相關(guān)文章:pid控制原理


          pwm相關(guān)文章:pwm是什么


          單片機(jī)相關(guān)文章:單片機(jī)教程


          單片機(jī)相關(guān)文章:單片機(jī)視頻教程


          單片機(jī)相關(guān)文章:單片機(jī)工作原理




          關(guān)鍵詞: AGV 單片機(jī) 智能車

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();