久久久国产精品视频袁燕,99re久久精品国产,亚洲欧美日韩国产综合v,天天躁夜夜躁狠狠久久,激情五月婷婷激情五月婷婷

  • 回復(fù)
  • 收藏
  • 點(diǎn)贊
  • 分享
  • 發(fā)新帖

【風(fēng)采匯】+滾球控制系統(tǒng)

摘要:本文設(shè)計(jì)并實(shí)現(xiàn)了板球控制系統(tǒng),通過(guò)OV7725攝像頭模塊作為圖像識(shí)別傳感器對(duì)圖像進(jìn)行處理,獲取小球的位置坐標(biāo)。采用STM32F103ZET6 單片機(jī)作為主控制器,根據(jù)圖像信息通過(guò)PID 控制算法控制數(shù)字舵機(jī),舵機(jī)帶動(dòng)曲柄搖桿機(jī)構(gòu)驅(qū)動(dòng)平板運(yùn)動(dòng),以此調(diào)整小球在平板上的位置,實(shí)現(xiàn)小球在板上任意點(diǎn)的穩(wěn)定,以及任意區(qū)域之間的轉(zhuǎn)移。測(cè)試表明,本系統(tǒng)能完成紅外控制小球運(yùn)動(dòng),畫(huà)線,控制小球走正方形,控制小球畫(huà)圓。

關(guān)鍵詞:滾球控制系統(tǒng);OV2275攝像頭;圖像處理;PID算法

一、系統(tǒng)方案的論證

本系統(tǒng)主要由采集模塊、處理模塊、執(zhí)行模塊、電源模塊組成,下面分別論證這幾個(gè)模塊的選擇。

1、機(jī)械結(jié)構(gòu)的論證與選擇

方案一:四邊懸吊結(jié)構(gòu)。采用四邊懸吊結(jié)構(gòu),結(jié)構(gòu)簡(jiǎn)單,但是不穩(wěn)定,重心不固定,而重心的變化會(huì)影響平板的調(diào)整,從而影響數(shù)據(jù)處理周期,造成延時(shí)。。

方案二:正交搖臂支撐結(jié)構(gòu)。中間采用萬(wàn)向節(jié)固定支桿,另外兩邊使用舵機(jī)固定,平板與舵機(jī)支桿之間通過(guò)萬(wàn)向節(jié)連接,三角形結(jié)構(gòu)穩(wěn)定,固定支桿使平板重心不偏移,控制更為簡(jiǎn)單。

綜合以上二種方案,選擇方案二。

2、控制系統(tǒng)的論證與選擇

方案一:STC89C51。采用STC89C51單片機(jī)做控制芯片,該系列單片機(jī)價(jià)格低廉,入門(mén)簡(jiǎn)單,實(shí)用范圍廣,資料豐富。但是是傳統(tǒng)的8位單片機(jī),處理速度不行。

方案二:MSP430。采用TI的MSP430系列單片機(jī)做主控制器,該系列單片機(jī)資源較豐富,易控制且低功耗。但是由于單片機(jī)自身主頻較低,因而處理速度一般。

方案三:STM32F103。采用STM32F103系列單片機(jī)做主控芯片,該單片機(jī)控制較為復(fù)雜,且內(nèi)部定時(shí)器,IIC,SPI等資源豐富,運(yùn)算處理速度快,適合控制系統(tǒng)的實(shí)時(shí)控制。

綜合以上三種方案,選擇方案三。

3、電機(jī)的論證與選擇

方案一:直流電機(jī)。直流電機(jī)力量大,調(diào)速范圍廣,動(dòng)態(tài)特性好,傳遞函數(shù) 較為簡(jiǎn)單,速度快。但只能對(duì)轉(zhuǎn)速進(jìn)行控制,可控性差,較難控制電機(jī)停止位置。

方案二:步進(jìn)電機(jī)。步進(jìn)電機(jī)可以實(shí)現(xiàn)開(kāi)環(huán)控制,無(wú)需反饋信號(hào),適合高精度的控制,使用短距離頻繁動(dòng)作較佳,但控制復(fù)雜,延遲值高,轉(zhuǎn)速慢,扭矩小,且動(dòng)態(tài)特性差,難以處理,不適合實(shí)時(shí)控制。

方案三:舵機(jī)。舵機(jī)具有較高的穩(wěn)定性,控制簡(jiǎn)單,扭力大,成本低,且加速和減速時(shí)也更加迅速,柔和,可以提供更好的精度和更好的固定力量,且防抖動(dòng)性能優(yōu)越,響應(yīng)速度快。但對(duì)相應(yīng)的周期有要求,滿足周期條件后,適合實(shí)時(shí)控制。

綜合以上三種方案,選擇方案三。

 

二、系統(tǒng)理論分析與計(jì)算1、小球檢測(cè)方法分析

小球的檢測(cè)是通過(guò)OV7725攝像頭模塊完成的,本系統(tǒng)設(shè)計(jì)采用顏色識(shí)別來(lái)檢測(cè)小球,平板為黑色,使用白色小球提高對(duì)比度。STM32將攝像頭采集回來(lái)的彩色圖像做二值化處理,得到一個(gè)數(shù)組,然后通過(guò)搜索整個(gè)數(shù)組里面所有白色像素點(diǎn)的最大X、Y坐標(biāo)與最小X、Y坐標(biāo),分別對(duì)應(yīng)小球在圖像中上下左右四個(gè)頂點(diǎn),通過(guò)四個(gè)頂點(diǎn)取中值進(jìn)行確定質(zhì)心位置。也就是小球的位置坐標(biāo)。

2、控制方法的分析

  1

本系統(tǒng)通過(guò)控制舵機(jī)帶動(dòng)曲柄搖桿機(jī)構(gòu)從而控制小球在平板上的運(yùn)動(dòng),采用PID位置環(huán)控制舵機(jī)輸出量使小球到達(dá)指定位置。采用PID速度環(huán)控制舵機(jī)輸出量使小球速度為0。

位置環(huán)PID計(jì)算公式:

Error_Postion=X1-X0;

Error_Postion_last=Error_Postion;

PID_Postion=KP*Error_Postion+KD*(Error_Postion-Error_Postion_last);

速度環(huán)PID計(jì)算公式:

Error_V=(X1-X0)/T-0;

Error_V_last=Error_V;

PID_V=KP*Error_V+KD*(Error_V-Error_V_last);

舵機(jī)輸出PWM計(jì)算公式:

PID_PWM=PID_Postion+PID_V;

    Y軸的PID與舵機(jī)的輸出計(jì)算與X軸類似。

 

三、電路與程序設(shè)計(jì)1、電路的設(shè)計(jì)(1)系統(tǒng)總體框圖

本系統(tǒng)電路共分為四個(gè)部分:采集模塊,主控制器模塊,執(zhí)行模塊和電源模塊,系統(tǒng)總體框圖如圖3.3.1所示。攝像頭負(fù)責(zé)采集小球在平板上的位置,并將信息送回到STM32F103控制器;STM32F103經(jīng)過(guò)PID運(yùn)算輸出PWM波控制舵機(jī)轉(zhuǎn)角,以此控制小球在平板上的運(yùn)動(dòng),從而形成一個(gè)閉合反饋回路,達(dá)到系統(tǒng)功能要求;電源模塊為以上模塊提供所需電源。

2 

圖3.1.1

(2)降壓系統(tǒng)電路

3 

                                             圖3.1.2

2、程序的設(shè)計(jì)(1)程序功能描述與設(shè)計(jì)思路

1、程序功能描述

根據(jù)題目要求軟件部分主要實(shí)現(xiàn)攝像頭模塊的采集處理,紅外設(shè)置和顯示功能。

1)攝像頭圖像的采集:使用OV7725攝像頭處理圖像信息,提取小球的坐標(biāo)與運(yùn)動(dòng)信息。

2)紅外控制的設(shè)置:使用紅外控制模塊,通過(guò)按鍵控制模式選擇,基本實(shí)現(xiàn)要求。

3)顯示部分:采用LCD實(shí)時(shí)顯示小球的運(yùn)動(dòng)坐標(biāo)與運(yùn)動(dòng)信息,方便觀察與調(diào)試。

2、程序設(shè)計(jì)思路

(2)程序流程圖

1、主程序流程圖

如圖3.2.1所示為主程序流程圖,當(dāng)按下按鍵時(shí),檢測(cè)按鍵狀態(tài),實(shí)現(xiàn)對(duì)應(yīng)功能要求,過(guò)程如下:攝像頭檢測(cè)小球運(yùn)動(dòng)的軌跡,處理后,輸出PWM波,控制舵機(jī)轉(zhuǎn)動(dòng)角度,同時(shí)攝像頭檢測(cè)小球運(yùn)動(dòng)狀態(tài),判斷是否達(dá)到指定區(qū)域。若沒(méi)有,繼續(xù)調(diào)整舵機(jī),直至到達(dá)指定區(qū)域?yàn)橹埂?

4 

圖3.2

2、小球運(yùn)動(dòng)檢測(cè)程序流程圖

小球檢測(cè)的前提是獲取平板的坐標(biāo)系,每次系統(tǒng)上電時(shí)完成坐標(biāo)系的標(biāo)定,攝像頭進(jìn)行圖像的獲取,小球位置實(shí)時(shí)檢測(cè)流程圖如圖3.2.2.2所示。

5 

圖3.2.2小球位置檢測(cè)流程圖

3、執(zhí)行機(jī)構(gòu)控制算法流程圖

小球的目標(biāo)位置與實(shí)際測(cè)得的位置有偏差,運(yùn)用PID控制器計(jì)算舵機(jī)輸出量,通過(guò)MG996R舵機(jī)和曲柄連桿結(jié)構(gòu)帶動(dòng)平板,實(shí)現(xiàn)系統(tǒng)功能,控制算法如圖3.2.2.3所示。

                                           6

圖3.2.3 PID位置控制算法

 

四、測(cè)試方案與測(cè)試結(jié)果1、測(cè)試方案

測(cè)量前,首先檢測(cè)直流穩(wěn)壓電源和舵機(jī)是否工作正常,測(cè)量時(shí),使用秒表測(cè)量小球運(yùn)動(dòng)時(shí)間和停留時(shí)間,觀察實(shí)驗(yàn)結(jié)果。

2、測(cè)試條件與儀器

測(cè)試條件:檢查多次,仿真電路和硬件電路必須與系統(tǒng)原理圖完全相同,并且檢查無(wú)誤,硬件電路保證無(wú)虛焊。

測(cè)試儀器:秒表,小球(直徑小于2cm)。

3、測(cè)試結(jié)果及分析(1)測(cè)試結(jié)果(數(shù)據(jù))

1)基本要求

① 小球在區(qū)域2內(nèi)停留不少于5s。

測(cè)試方法:將球丟到平板上,記錄小球在區(qū)域2停留的時(shí)間。

測(cè)試結(jié)果:小球可以實(shí)現(xiàn)在區(qū)域2穩(wěn)定5s以上。

② 控制小球在15s內(nèi)從區(qū)域1運(yùn)動(dòng)到區(qū)域5,且在區(qū)域5停留2s以上。

測(cè)試方法:手動(dòng)將小球放置在區(qū)域1內(nèi),啟動(dòng)1-5模式,并開(kāi)始計(jì)時(shí),記

錄小球從區(qū)域1到區(qū)域5所用時(shí)間以及在區(qū)域5停留的時(shí)間。

測(cè)試結(jié)果:小球可以完成從區(qū)域1到區(qū)域5,并且在區(qū)域5停留時(shí)間在2s以上,未進(jìn)入其他區(qū)域。

③ 控制小球在20s內(nèi)完成從區(qū)域1到區(qū)域4,在區(qū)域4停留2s以上,之后

進(jìn)入?yún)^(qū)域5,在區(qū)域5停留2s以上。

測(cè)試方法:手動(dòng)將小球放置在區(qū)域1內(nèi),啟動(dòng)1-4-5模式,并開(kāi)始計(jì)時(shí),記錄小球完成兩個(gè)動(dòng)作的總時(shí)間以及在區(qū)域4和區(qū)域5停留的時(shí)間。

測(cè)試結(jié)果:小球可以完成從區(qū)域1到區(qū)域4再到區(qū)域5,并且在區(qū)域4,區(qū)域5停留時(shí)間均達(dá)到2s以上。

④控制小球在30s內(nèi)從區(qū)域1運(yùn)動(dòng)到區(qū)域9,且在區(qū)域9停留2s以上。

測(cè)試方法:手動(dòng)將小球放置在區(qū)域1內(nèi),啟動(dòng)1-9模式,并開(kāi)始計(jì)時(shí),記錄小球完成運(yùn)動(dòng)的總時(shí)時(shí)間以及在區(qū)域9停留的時(shí)間。

測(cè)試結(jié)果:小球通過(guò)設(shè)置的中轉(zhuǎn)點(diǎn)(在區(qū)域1到區(qū)域9路徑上設(shè)置),可以完成題目要求,且在區(qū)域9停留時(shí)間2s以上。

2) 發(fā)揮部分

   ① 控制小球在40s內(nèi),從區(qū)域1先后經(jīng)過(guò)區(qū)域2和區(qū)域6停在區(qū)域9,在區(qū)域9停留2s以上。

測(cè)試方法:手動(dòng)將小球放置在區(qū)域1,啟動(dòng)1-2-6-9模式,并開(kāi)始計(jì)時(shí),記錄小球運(yùn)動(dòng)的總時(shí)間以及在區(qū)域9停留的時(shí)間。

測(cè)試結(jié)果:小球可以完成題目要求,且在區(qū)域9停留時(shí)間2s以上。

③ 通過(guò)控制使得小球從區(qū)域4出發(fā),繞區(qū)域5(不進(jìn)入)做不少于3周運(yùn)動(dòng)后在區(qū)域9停留2s以上。

測(cè)試方法:手動(dòng)將小球放置在區(qū)域4,啟動(dòng)繞區(qū)域5做環(huán)繞運(yùn)動(dòng)的模式,

觀察小球的運(yùn)動(dòng)軌跡,記錄小球在區(qū)域9停留時(shí)間。

測(cè)試結(jié)果:小球在區(qū)域4出發(fā),圍繞區(qū)域5做正方形路徑,完成題目要求,且最后在區(qū)域9停留時(shí)間達(dá)2s以上。

(2)測(cè)試分析與結(jié)論

根據(jù)上述測(cè)試數(shù)據(jù),本系統(tǒng)能充分完成指標(biāo)要求,響應(yīng)速度快,可以實(shí)現(xiàn)小球在指定位置的穩(wěn)定,能夠按照指定的要求在平板上完成指定動(dòng)作,測(cè)試中發(fā)現(xiàn)系統(tǒng)在平衡位置附近出現(xiàn)小幅度的抖動(dòng),分析原因是由于小球位置識(shí)別的微小偏差,解決方案是采用更精準(zhǔn)的圖像識(shí)別算法從而達(dá)到減小抖動(dòng)的目的。還有機(jī)械結(jié)構(gòu)搭建得不是特別好,導(dǎo)致平板在水平方向有稍微的偏移。

綜上所述,本設(shè)計(jì)達(dá)到設(shè)計(jì)要求。

五、結(jié)論與心得

經(jīng)過(guò)這次制作,我們?cè)谠O(shè)計(jì)硬件和搭建機(jī)械結(jié)構(gòu)有了更大的全局觀,提升了小組三人的合作能力,我們?cè)诿鎸?duì)系統(tǒng)共地問(wèn)題,電路故障分析的運(yùn)用也能通過(guò)設(shè)計(jì)電路來(lái)檢測(cè)。同時(shí)我們更加了解了基本圖像處理方法,對(duì)PID算法運(yùn)用更熟練,為我們之后的制作過(guò)程做了很好的鋪墊。

 

六:部分程序

int main(void)

 { 

u8 msgbuf[15];//消息緩存區(qū)

u8 tm=0;

delay_init();     //延時(shí)函數(shù)初始化  

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設(shè)置中斷優(yōu)先級(jí)分組

uart_init(115200); //串口初始化為115200

uart3_init(9600);     //藍(lán)牙模塊波特率初始化-9600

 usmart_dev.init(72);//初始化USMART

 LED_Init();  //初始化與LED連接的硬件接口

KEY_Init();//初始化按鍵

LCD_Init();   //初始化LCD  

TPAD_Init(6);//觸摸按鍵初始化

 POINT_COLOR=RED;//設(shè)置字體為紅色

TIM2_Init();    //定時(shí)器2進(jìn)行5ms中斷

PWM_1_Init();       //舵機(jī)pwm輸出TIM3

Remote_Init();//紅外模塊初始化--需要添加開(kāi)啟

//OV7725初始化

if(OV7725_Init()==0)

{

OV7725_Window_Set(240,240,0);//設(shè)置寬度與高度,QVGA模式輸出

  OV7725_CS=0;        //關(guān)閉位選

}

EXTI8_Init();//使能外部中斷8,捕獲幀中斷

LCD_ShowString(135,282,297,12,12,"KD_X:");

 

T_X=0;

T_Y=0;                    

 while(1)

{

   OV7725_camera_refresh();//更新顯示,進(jìn)行尋點(diǎn)尋點(diǎn)操作

remote_key();          //紅外鍵值獲取,模式切換

      LCD_Show();            //lcd顯示函數(shù)

}  

}

 

 

Pid算法程序:

 

V_X = (X_white-Error_X_Last)/T;

V_Y = (Y_white-Error_Y_Last/T;

Set_point();  //紅外控制函數(shù)

//===計(jì)算坐標(biāo)偏差值===////===計(jì)算速度偏差值===//

 Error_X=X_white-T_X;Error_V_X=V_X;

    Error_Y=Y_white-T_Y;Error_V_Y=V_Y;

 //=位置計(jì)算微分偏差值=////=速度計(jì)算微分偏差值=//

    Bais_X=Error_X-Error_X_Last; Bais_V_X=Error_V_X-Error_V_X_Last;

Bais_Y=Error_Y-Error_Y_Last; Bais_V_Y=Error_V_Y-Error_V_Y_Last;

//======計(jì)算相對(duì)偏離位置用于計(jì)算速度======//

if(Bais_X!=0||Bais_Y!=0)

{

D_Bais_X=Bais_X;

D_Bais_Y=Bais_Y;

}

//============PID計(jì)算位置環(huán)PWM============//

//計(jì)算位置環(huán)PWM

PWM_X_P=(KP_X*Error_X + KD_X*D_Bais_X);

PWM_Y_P=(KP_Y*Error_Y + KD_Y*D_Bais_Y);

//============PID計(jì)算速度環(huán)PWM============//

PWM_V_X_P=(KP_V_X*Error_V_X + KD_V_X*Bais_V_X); PWM_V_Y_P=(KP_V_Y*Error_V_Y + KD_V_Y*Bais_V_Y);

//=============計(jì)算總輸出PWM==============//

PWM_X=PWM_X_P+zhongzhi_X+PWM_V_X_P;

PWM_Y=PWM_Y_P+zhongzhi_Y+PWM_V_Y_P;

   //================PWM限幅=================//

if(PWM_X>1850) PWM_X=1850;

if(PWM_X<1200) PWM_X=1200;//X軸限幅1157+-200

if(PWM_Y>1550) PWM_Y=1500;

if(PWM_Y<850) PWM_Y=850;//Y軸限幅1405+-200

    //=========保存(坐標(biāo),速度)偏差=========//

Error_X_Last=Error_X;                      

Error_Y_Last=Error_Y;

 

 

圖像處理函數(shù):

for(i=0;i

 {

//    length_white=0;//換行清零 方案B啟用

for(j=0;j

{

   OV7725_RCK_L;

color=GPIOC->IDR&0XFF;//讀數(shù)據(jù)

OV7725_RCK_H;

color<<=8;  

OV7725_RCK_L;

color|=GPIOC->IDR&0XFF;//讀數(shù)據(jù)

OV7725_RCK_H;

LCD->LCD_RAM= color;//顯示rgb像素點(diǎn)

      //獲取RGB圖像并對(duì)其計(jì)算

gm_red = color>>11;

         gm_green = (color&0x07E0)>>5;

gm_blue = color&0x001F;

gray=(gm_red*19595 + gm_green*38469 +gm_blue *7472) >> 16;

if(gray>42) //白色處理

{

//LCD->LCD_RAM= WHITE;

if(((i>15&&i<220)&&(j>15&&j<220)))  //過(guò)濾掉周?chē)h(huán)境的噪點(diǎn),

{

total_white++;

x_total_white +=i;

y_total_white +=j;

}

}

m=(x_total_white)/(total_white);

   n=(y_total_white)/(total_white);//計(jì)算坐標(biāo)  

   if(m>0&&n>0)//濾除0.0這個(gè)點(diǎn)

  {

 X_white=m;

 Y_white=n;

 if(total_white>20)//只標(biāo)記最大的白色球體

{

devieat = (u8)(sqrt(total_white/3.14));//根據(jù)面積求出白球半徑

}

LCD_Draw_Circle(Y_white,X_white,devieat);//在lcd上畫(huà)圓標(biāo)記

LCD_Draw_Circle(Y_white,X_white,devieat+1);//在lcd上畫(huà)圓標(biāo)記

 

全部回復(fù)(1)
正序查看
倒序查看
2019-10-31 09:47

更新更新啊~

0
回復(fù)
發(fā)