国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于STM32的智能物料搬運(yùn)小車*

2022-08-15 06:48白煥鑫劉文飛薛茜藝
科技與創(chuàng)新 2022年16期
關(guān)鍵詞:舵機(jī)樹(shù)莓串口

白煥鑫,劉文飛,孟 鑫,薛茜藝

(臺(tái)州學(xué)院航空工程學(xué)院,浙江 臺(tái)州 318000)

隨著中國(guó)工業(yè)化進(jìn)程不斷深入,工業(yè)生產(chǎn)中的物料搬運(yùn)工作逐漸趨于自動(dòng)化、信息化、智能化,在一些高精度、高網(wǎng)絡(luò)化、高風(fēng)險(xiǎn)的作業(yè)環(huán)境中,智能物流小車已逐漸取代人工搬運(yùn)。2021年第七屆浙江省大學(xué)生工程訓(xùn)練綜合能力競(jìng)賽要求設(shè)計(jì)并制作一臺(tái)通過(guò)掃描二維碼領(lǐng)取搬運(yùn)任務(wù),在指定的工業(yè)場(chǎng)景內(nèi)行走與避障,并按任務(wù)要求將物料搬運(yùn)至指定地點(diǎn)并精準(zhǔn)擺放的智能物料搬運(yùn)小車。

1 總體方案設(shè)計(jì)

浙江省大學(xué)生工程訓(xùn)練綜合能力競(jìng)賽要求設(shè)計(jì)的智能小車需具有定位、移動(dòng)、避障、讀取條形碼及二維碼、物料位置和顏色識(shí)別、物料抓取與載運(yùn)、上坡和下坡、路徑規(guī)劃等功能。

根據(jù)此要求,對(duì)小車各功能模塊進(jìn)行設(shè)計(jì),主控采用嵌入式方案,其上帶有電機(jī)驅(qū)動(dòng)電路以及任務(wù)內(nèi)容顯示裝置(OLED);由于機(jī)械臂夾取部分需要現(xiàn)場(chǎng)制作,因此機(jī)械臂應(yīng)結(jié)構(gòu)簡(jiǎn)潔,易于加工。車輪選擇普通海綿內(nèi)膽輪,上料與下料使用五自由度機(jī)械臂,樹(shù)莓派搭載攝像頭獲取物料搬運(yùn)順序、物料顏色與形狀信息,姿態(tài)傳感器實(shí)現(xiàn)小車的全局定位;尋跡模塊實(shí)現(xiàn)自主移動(dòng)與路徑規(guī)劃,單片機(jī)進(jìn)行數(shù)據(jù)分析與處理。總體方案如圖1所示。

圖1 總體方案圖

2 硬件設(shè)計(jì)

2.1 主控模塊設(shè)計(jì)

主控芯片采用STM32,樹(shù)莓派、舵機(jī)控制板、姿態(tài)傳感器與主控之間的數(shù)據(jù)傳輸采用串口通信,由于還需實(shí)現(xiàn)移動(dòng)、避障、任務(wù)顯示的功能,因此選擇I/O口較多的STM32F103ZET6主控芯片[1],其具有4路UART串口、112個(gè)快速I/O口、多個(gè)定時(shí)器時(shí)鐘,且配有512 KB的閃存程序存儲(chǔ)器,可滿足設(shè)計(jì)要求。

2.2 電源模塊設(shè)計(jì)

小車以12 V航模電池為電源,利用穩(wěn)壓器將電壓穩(wěn)定在12 V后并聯(lián)供電,分別作為電機(jī)驅(qū)動(dòng)、PCB控制板的電源,其中PCB板通過(guò)LMS2596模塊將輸入電壓降到5 V后給電路板上的其他模塊供電。穩(wěn)壓器流出的12 V電壓通過(guò)降壓器后分別給機(jī)械臂控制板、樹(shù)莓派供電,電路原理如圖2所示。

圖2 電源模塊電路原理圖

2.3 電機(jī)驅(qū)動(dòng)模塊設(shè)計(jì)

小車?yán)?個(gè)電機(jī)實(shí)現(xiàn)移動(dòng)功能,電機(jī)采用直流減速電機(jī),電機(jī)型號(hào)為MG513P30_12V,外形尺寸73 mm×33 mm,質(zhì)量145 g,輸出軸徑6 mm,D型軸,額定參數(shù)12 V、0.36 A、293 r/min、扭矩1 kg·cm,通過(guò)調(diào)節(jié)PWM占空比實(shí)現(xiàn)轉(zhuǎn)速的控制,進(jìn)而通過(guò)輪間差速實(shí)現(xiàn)轉(zhuǎn)彎功能。電機(jī)驅(qū)動(dòng)采用大功率隔離電機(jī)驅(qū)動(dòng)模塊,可頻繁正反轉(zhuǎn)而不燒驅(qū)動(dòng),且使用方便,只需要將電機(jī)正負(fù)線連接驅(qū)動(dòng),驅(qū)動(dòng)IN1~I(xiàn)N4分別接STM32F103ZET6的PWM輸出I/O口就可以實(shí)現(xiàn)PWM信號(hào)控制。

2.4 尋跡模塊設(shè)計(jì)

小車的尋跡是沿著地圖中的黑線移動(dòng),在指定位置根據(jù)特定邏輯判斷實(shí)現(xiàn)停車。本小車尋跡分為2部分:一部分是黑線位于小車中間尋跡,主要利用12路灰度尋跡模塊[2],其上的LED燈通電后發(fā)光,經(jīng)過(guò)地面的反射后光敏電阻根據(jù)光強(qiáng)改變電阻大小,由于地圖的色差不同,調(diào)節(jié)尋跡模塊的靈敏度后可實(shí)現(xiàn)在黑線上返回高電平,深黃色區(qū)域返回低電平,STM32芯片根據(jù)返回的電平改變電機(jī)轉(zhuǎn)速實(shí)現(xiàn)尋跡功能;另一部分是2條黑線位于小車兩邊,小車靠近2條黑線的其中1條尋跡,利用2個(gè)一路灰度尋跡模塊檢測(cè)小車相對(duì)于黑線的位置并實(shí)時(shí)調(diào)節(jié),實(shí)現(xiàn)走中間尋跡功能,能夠解決小車在夾取下層貨架的物料時(shí)機(jī)械臂長(zhǎng)度限制的問(wèn)題。2種尋跡效果如圖3和圖4所示。

圖3 小車巡中間

圖4 小車巡兩邊

2.5 樹(shù)莓派模塊設(shè)計(jì)

樹(shù)莓派是一個(gè)開(kāi)放源代碼的硬件平臺(tái),它是一款基于ARM的微型電腦主板,以SD/MicroSD卡為內(nèi)存硬盤,并且只有信用卡大小,功能強(qiáng)大,可以通過(guò)開(kāi)源的Linux系統(tǒng)安裝軟件實(shí)現(xiàn)各種功能,并且處理數(shù)據(jù)效率高,不易出錯(cuò),能夠滿足對(duì)圖像識(shí)別的要求,因此選擇用它安裝python-opencv并搭載200萬(wàn)像素?cái)z像頭實(shí)現(xiàn)二維碼的讀取、物料位置和顏色的識(shí)別。

2.6 姿態(tài)傳感器模塊設(shè)計(jì)

小車在轉(zhuǎn)彎時(shí)由于場(chǎng)地摩擦力、電池電壓、重心、輪間距等原因不能每次都精確地轉(zhuǎn)到相同的角度,因此需要額外增加姿態(tài)傳感器模塊,與STM32通過(guò)串口通信,采用閉環(huán)控制,在旋轉(zhuǎn)角度與預(yù)定不符的時(shí)候,姿態(tài)傳感器檢測(cè)當(dāng)前角度并反饋給單片機(jī),單片機(jī)經(jīng)過(guò)處理后調(diào)整輪間差速,旋轉(zhuǎn)后姿態(tài)傳感器再次檢測(cè)角度,反復(fù)多次,最終實(shí)現(xiàn)對(duì)小車旋轉(zhuǎn)角度的準(zhǔn)確控制。

2.7 舵機(jī)及舵機(jī)控制板模塊設(shè)計(jì)

物料的抓取和放置需要準(zhǔn)確且快速,因此選擇串行總線舵機(jī),它與傳統(tǒng)的PWM舵機(jī)相比,舵機(jī)之間通過(guò)雙接口進(jìn)行上下串聯(lián),極大地減少了布線,使得結(jié)構(gòu)更加清晰簡(jiǎn)單,而且減少了串口的占用,同時(shí),總線舵機(jī)具有角度反饋,可以快速讀取舵機(jī)角度,進(jìn)行機(jī)械臂關(guān)節(jié)的位置捕捉。舵機(jī)控制板通過(guò)降壓后的7.5 V供電,與STM32串口通信,小車到指定位置后單片機(jī)發(fā)送指令,控制板收到信息后控制舵機(jī)執(zhí)行動(dòng)作組。

3 機(jī)械結(jié)構(gòu)設(shè)計(jì)

小車機(jī)械結(jié)構(gòu)包含2個(gè)部分:小車主體和機(jī)械臂。小車主體由直流電機(jī)驅(qū)動(dòng)的海綿內(nèi)膽輪、各種模塊以及底板組成,車載布局空間高效利用,使小車整體空間利用率最大化。底板采用亞克力板,亞克力板質(zhì)量小、加工方便,并且成本不高。

機(jī)械臂由舵機(jī)和機(jī)械爪組成。機(jī)械臂各關(guān)節(jié)使用鋁制材料制作,可以最大程度地減輕整車質(zhì)量,并且將機(jī)械臂設(shè)計(jì)[3]為折疊形式,節(jié)省空間。使用5個(gè)大功率總線舵機(jī)驅(qū)動(dòng)機(jī)械臂的每一個(gè)關(guān)節(jié),使機(jī)械臂具有5個(gè)自由度,夾取物料靈活快捷,控制精度高而且比較穩(wěn)定;機(jī)械爪采用籠式抓手,使用亞克力板制作,內(nèi)部夾持面設(shè)計(jì)為深溝狀且?guī)в蟹阑瑮l紋,2個(gè)亞克力板之間以銅柱連接,在夾取時(shí)能夠更加穩(wěn)定、準(zhǔn)確;物料倉(cāng)使用斜坡式,物料只需放到一定范圍內(nèi)即可在重力作用下滑到指定位置,提高容錯(cuò)率,并且在后方間隔一定距離固定2根銅柱卡住物料,防止物料掉落。結(jié)構(gòu)設(shè)計(jì)采用SOLIDWORKS進(jìn)行整體仿真以及有限元與力學(xué)分析,確保在實(shí)際情況下能夠滿足設(shè)計(jì)要求。

4 軟件設(shè)計(jì)

4.1 主程序設(shè)計(jì)

根據(jù)競(jìng)賽要求,主程序設(shè)計(jì)流程如圖5所示。

圖5 主程序設(shè)計(jì)流程圖

4.2 電機(jī)控制單元

采用STM32的TIM3定時(shí)器的2個(gè)通道輸出PWM方波,通過(guò)電機(jī)驅(qū)動(dòng)實(shí)現(xiàn)電機(jī)控制,控制電機(jī)的PWM頻率需要在6~16 kHz之間。高頻率驅(qū)動(dòng)電機(jī)的振動(dòng)比較大、開(kāi)關(guān)損耗比較大、電磁噪聲較明顯,且電機(jī)參數(shù)本身也不推薦太高的載頻,所以采用了10 kHz的頻率,確保電機(jī)平穩(wěn)運(yùn)行。PWM輸出可以實(shí)現(xiàn)基本的電機(jī)控制,但是隨著供電電壓和負(fù)載的變化,電機(jī)的速度會(huì)發(fā)生變化。為了保證電機(jī)的速度達(dá)到理想的效果,采用了霍爾編碼器對(duì)電機(jī)轉(zhuǎn)速進(jìn)行檢測(cè)。根據(jù)編碼器正反轉(zhuǎn)輸出信號(hào)的相位差,通過(guò)STM32芯片對(duì)其進(jìn)行正交解碼,獲取電機(jī)運(yùn)轉(zhuǎn)狀態(tài),存入CNT寄存器之中。任何時(shí)候CNT寄存器的值就是編碼器的位置信息,正轉(zhuǎn)累加,反轉(zhuǎn)遞減,不需要軟件干預(yù)。

為了控制電機(jī)平穩(wěn)運(yùn)轉(zhuǎn),運(yùn)用了增量式PID控制算法[4]。當(dāng)執(zhí)行機(jī)構(gòu)需要的控制量是增量,而不是位置量的絕對(duì)數(shù)值時(shí),可以使用增量式PID控制算法進(jìn)行控制。其公式也是由位置式PID推導(dǎo)出來(lái)。增量式PID控制算法與位置式PID算法公式相比,計(jì)算量小的多,計(jì)算公式如下所示:

其中:

經(jīng)過(guò)上述方案調(diào)節(jié),精度雖然足夠高,但出現(xiàn)了超調(diào)現(xiàn)象,不能達(dá)到理想的加速效果,速度超調(diào)會(huì)使得小車的整體運(yùn)行不平穩(wěn),在加速的時(shí)候由于加速度過(guò)快,會(huì)發(fā)生前輪上翹,在剎車時(shí)會(huì)出現(xiàn)后輪上翹。嘗試了去整定PID的參數(shù),如果把Kp調(diào)小,可以解決加減速過(guò)快的問(wèn)題,但是響應(yīng)速度受到了嚴(yán)重的影響。在保持Kp不變的情況下增大Kd值去抑制電機(jī)過(guò)調(diào)量。這樣能達(dá)到一定的平緩速度,但是在速度變化量較大的時(shí)候小車的運(yùn)行依舊不平穩(wěn)。因此,采取對(duì)每次增量進(jìn)行限幅的措施,當(dāng)速度差很大的時(shí)候限制了單位時(shí)間內(nèi)的增量,這樣就能保證平穩(wěn)加速減速控制。具體程序如下。

if(abs(Target2-pid_speed_2_last)>30)

{

if(Target2>Encoder2)

pid_speed_2=pid_speed_2_last+Car_Max_Chang e_Speed;

else

pid_speed_2=pid_speed_2_last-Car_Max_Change_Speed;

}

小車限幅后的速度控制曲線如圖6所示。

圖6 小車限幅后的速度控制曲線

4.3 二維碼識(shí)別單元

使用樹(shù)莓派4b+opencv+200萬(wàn)像素?cái)z像頭,二維碼的識(shí)別通過(guò)pyzbar包實(shí)現(xiàn),攝像頭處于時(shí)刻開(kāi)啟狀態(tài),對(duì)準(zhǔn)二維碼,單片機(jī)發(fā)送指令,讀取當(dāng)前幀轉(zhuǎn)為灰度圖像后提取條形碼的邊界框的位置,使用pyzbar內(nèi)置函數(shù)讀取二維碼內(nèi)容,轉(zhuǎn)化為字符串后發(fā)送給單片機(jī),單片機(jī)內(nèi)通過(guò)串口中斷,如果接收到內(nèi)容,判斷是否為二維碼內(nèi)容,若是,則讓任務(wù)顯示裝置逐位顯示。

4.4 顏色識(shí)別單元

使用樹(shù)莓派4b+opencv+200萬(wàn)像素?cái)z像頭,單片機(jī)發(fā)送指令后先將目標(biāo)對(duì)象圖片的特征數(shù)據(jù)提取出來(lái),將圖像進(jìn)行色彩模型轉(zhuǎn)換,由RGB模型變?yōu)镠SV模型。HSV表色系由色度(Hue)、飽和度(Saturation)、亮度(Value)3個(gè)分量構(gòu)成。提前設(shè)置物料顏色的HSV范圍,對(duì)轉(zhuǎn)換后的HSV圖像中的顏色進(jìn)行檢測(cè),用白色像素將其標(biāo)記出來(lái),其余背景標(biāo)記為黑色像素,生成二值圖像。對(duì)顏色篩選后的圖像進(jìn)行形態(tài)學(xué)處理[5]。二值圖像的形態(tài)學(xué)運(yùn)算主要包括腐蝕、膨脹、開(kāi)操作、閉操作,用來(lái)提取圖像目標(biāo)分量。最后使用opencv內(nèi)置函數(shù)inrange(),并將在指定范圍內(nèi)的顏色框選出來(lái),判斷輪廓的面積,如果面積大于0則說(shuō)明檢測(cè)到指定顏色并標(biāo)號(hào),并且攝像頭可以一次識(shí)別3種顏色,3種顏色全部檢測(cè)完成后通過(guò)串口返回給單片機(jī)進(jìn)行處理。

4.5 任務(wù)顯示單元

任務(wù)碼的顯示采用0.96 in(1 in≈2.54 cm)7引腳OLED屏幕,為使字符高度達(dá)到規(guī)則要求的8 mm,通過(guò)PCtoLCD2002軟件對(duì)字符取模,取模設(shè)置為陰碼,列行式,逆向,十六進(jìn)制數(shù),最后得到32×160像素的字模。成功識(shí)別二維碼后,樹(shù)莓派通過(guò)串口傳回一組如“312”的字符串,通過(guò)單個(gè)數(shù)字所在位置決定在OLED上顯示的位置,核心程序如下所示。

if(a==49)

LCD_P32x160Str(0,0,"1");

else if(a==50)

LCD_P32x160Str(0,0,"2");

elseif(a==51)

LCD_P32x160Str(0,0,"3");

4.6 尋跡單元

走直線:走直線使用的是12路灰度尋跡模塊,使用定時(shí)器7中斷函數(shù),每隔5 mm實(shí)時(shí)檢測(cè)模塊當(dāng)前相對(duì)黑線的位置并以高低電平的形式反饋給STM32,同時(shí)在尋跡的程序中加入PID閉環(huán)控制,使小車在偏離直線時(shí)能夠準(zhǔn)確且迅速地返回預(yù)定軌跡。檢測(cè)12路灰度當(dāng)前位置并返回差值部分程序、尋跡位置式PID控制程序如下所示。

檢測(cè)12路灰度程序:

u16 P0=PO_get();

if(P0==0x0600)

{val=0;}

elseif(P0==0xC000)

{val=-110;}

elseif(P0==0x4000)

{val=-102;}

else if(P0==0x4000)

{val=-99;}

PID控制:

void car_fwd_encode(int car_spd)

{

error_last=error;

error=val;

if(val<=100)

{adjust=val*KP/100+(error-error_last)*KD+(error+error_l ast)*KI;

car_run_open(car_spd+adjust-wz ,car_spd-adjust+wz);

}

}

走中間:走中間是通過(guò)檢測(cè)安裝在小車四角的由2個(gè)一路灰度傳感器組成的兩路灰度的位置,當(dāng)檢測(cè)到小車邊緣超過(guò)黑線時(shí),給小車的左右輪子一定偏差,使其實(shí)現(xiàn)貼邊走,部分程序如下所示。

u16 P2=P2_get();

if(P2_get()==0x0000) //0000

{

car_run_go(speed_left,speed_right);

}

else if(P2_get()==0x1000)

{

car_run_go(27,60);

}

elseif(P2_get()==0x3000)

{

car_run_go(27,70);

delay_ms(50);

}

5 小車實(shí)物

小車實(shí)物如圖7所示。

圖7 小車實(shí)物

6 結(jié)語(yǔ)

本文設(shè)計(jì)并制作了一輛智能物流小車,包含實(shí)現(xiàn)電機(jī)驅(qū)動(dòng)、尋跡模塊、樹(shù)莓派的二維碼識(shí)別與顏色識(shí)別、姿態(tài)傳感器、舵機(jī)控制等功能的軟硬件設(shè)計(jì),小車的電機(jī)控制以及尋跡功能都加入了PI閉環(huán)控制,能夠?qū)崿F(xiàn)更精確的移動(dòng)控制,能夠精準(zhǔn)、快速地完成物料搬運(yùn)任務(wù),降低工人風(fēng)險(xiǎn),減少企業(yè)人力成本。

猜你喜歡
舵機(jī)樹(shù)莓串口
MCS—51單片機(jī)中的多串口通訊技術(shù)的應(yīng)用
黃金水果紅樹(shù)莓
樹(shù)莓紅了 游人醉了
海太克HS—1100WP數(shù)字舵機(jī)
超音速舵機(jī)保護(hù)器
e絡(luò)盟率先推出第三代樹(shù)莓派
年度睡姿大盤點(diǎn)(下)
菜鳥(niǎo)看模型
全國(guó)計(jì)算機(jī)等級(jí)考試機(jī)房準(zhǔn)備工作探討
舵機(jī)的應(yīng)用
兴业县| 天津市| 广州市| 眉山市| 来安县| 洛川县| 广德县| 潞城市| 丰顺县| 杭锦后旗| 会泽县| 丹阳市| 普定县| 疏勒县| 明水县| 榕江县| 娱乐| SHOW| 湾仔区| 朝阳市| 靖江市| 股票| 双流县| 衡阳县| 沂水县| 滕州市| 阿巴嘎旗| 白水县| 神农架林区| 盐津县| 泗洪县| 丹棱县| 苗栗市| 锡林浩特市| 巴马| 寿光市| 东乌| 平阳县| 沐川县| 广南县| 桃园县|