機(jī)械制造課程實(shí)踐(基于Matlab上位機(jī)的自動(dòng)捕捉裝置)_第1頁(yè)
機(jī)械制造課程實(shí)踐(基于Matlab上位機(jī)的自動(dòng)捕捉裝置)_第2頁(yè)
機(jī)械制造課程實(shí)踐(基于Matlab上位機(jī)的自動(dòng)捕捉裝置)_第3頁(yè)
機(jī)械制造課程實(shí)踐(基于Matlab上位機(jī)的自動(dòng)捕捉裝置)_第4頁(yè)
機(jī)械制造課程實(shí)踐(基于Matlab上位機(jī)的自動(dòng)捕捉裝置)_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、機(jī)械制造基礎(chǔ)課程實(shí)踐報(bào)告機(jī)械工程學(xué)院機(jī)械電子工程 XX班指導(dǎo)老師:XXX2014年11月18日目 錄一系統(tǒng)總體設(shè)計(jì)3(一)設(shè)計(jì)目標(biāo)及完成功能3(二)系統(tǒng)結(jié)構(gòu)設(shè)計(jì)3二詳細(xì)設(shè)計(jì)4(一)人員任務(wù)分配4(二)各子功能設(shè)計(jì)5串口通信設(shè)計(jì)8微控制器電機(jī)控制設(shè)計(jì)9電路設(shè)計(jì)11三使用說(shuō)明11四測(cè)試11模式二進(jìn)行測(cè)試:12附件一:模式電腦端程序(Matlab2014A版)13附件二:模式電腦端程序(Matlab2014A版)16附件三:微處理器電機(jī)控制程序(AT89C52RC Keil 編譯)19一系統(tǒng)總體設(shè)計(jì)(一)設(shè)計(jì)目標(biāo)及完成功能設(shè)計(jì)搭建一個(gè)小型機(jī)電系統(tǒng)。由伺服電機(jī)、微處理器、無(wú)線圖傳模塊、藍(lán)牙模塊、圖像采

2、集器、個(gè)人電腦組成。在不同模式下實(shí)現(xiàn)如下功能:模式一,運(yùn)動(dòng)跟蹤:在電腦端實(shí)時(shí)顯示視頻采集器的視頻信息。對(duì)圖簽采集器視野范圍內(nèi)的物體運(yùn)動(dòng)進(jìn)行捕捉??刂茍D像采集器對(duì)目標(biāo)進(jìn)行跟蹤,使目標(biāo)保持在采集器視野中心。模式二,動(dòng)態(tài)監(jiān)控:在電腦端實(shí)時(shí)顯示視頻采集器的視頻信息。在視頻瀏覽窗口,通過(guò)移動(dòng)鼠標(biāo)控制采集器采樣角度。(二)系統(tǒng)結(jié)構(gòu)設(shè)計(jì)1.信息流設(shè)計(jì)計(jì)算機(jī)單片機(jī)舵機(jī)視頻采集器無(wú)線圖傳藍(lán)牙圖 Error! Main Document Only.系統(tǒng)信息流2.各部分功能設(shè)計(jì):計(jì)算機(jī):信息綜合處理。1. 響應(yīng)用戶要求。2. 接收無(wú)線圖像信號(hào)。3. 顯示圖像信息。4. 根據(jù)用戶不同要求和圖像信息計(jì)算控制數(shù)據(jù)。5.

3、發(fā)送控制信號(hào)。藍(lán)牙模塊:數(shù)據(jù)傳輸。1. 接收計(jì)算機(jī)控制信號(hào)。2. 將收到信號(hào)發(fā)送給單片機(jī)。單片機(jī):信息處理與控制。1. 接收控制信息。2. 處理接收信息。3. 電平輸出,控制舵機(jī)運(yùn)動(dòng)。舵機(jī):運(yùn)動(dòng)執(zhí)行。1. 執(zhí)行控制命令,調(diào)整圖像采集器空間狀態(tài)。視頻采集器:采集視頻信號(hào)。1. 采集器與舵機(jī)固定連接。2. 將采集的信號(hào)傳送至無(wú)線圖傳模塊。無(wú)線圖傳模塊:傳送圖像信息。1. 接收采樣信息。2. 傳送采樣信息至電腦端。二詳細(xì)設(shè)計(jì)(一)人員任務(wù)分配XXX:模式二電腦端程序編寫(xiě),項(xiàng)目報(bào)告匯總。XXX:微處理器串口程序編寫(xiě),幻燈片制作。XXX:模式一電腦端程序編寫(xiě)、微處理器控制程序編寫(xiě),幻燈片制作。XXX:元

4、件安裝、固定,小組討論記錄。(二)各子功能設(shè)計(jì)模式一一、概述通過(guò)采集一定時(shí)間差的兩幀圖像,然后將其做差運(yùn)算,將所得數(shù)據(jù)處理之后便可知道視野中有無(wú)運(yùn)動(dòng)物體二、具體實(shí)現(xiàn)Step1:捕獲圖像主要函數(shù):getsnapshot(vid)圖像a 圖像bStep2:將所得兩組數(shù)據(jù)作差Step3:二值化所得圖像,以便后續(xù)處理主要函數(shù):im2bw Step1:作差所得圖像 step2:二值化所得圖像Step4:對(duì)數(shù)據(jù)處理后,求出移動(dòng)區(qū)域范圍及其質(zhì)心主要函數(shù):regionprops 最終所得結(jié)果模式二任務(wù):1. 在制定窗口處于激活狀態(tài)時(shí),獲得鼠標(biāo)實(shí)時(shí)窗口坐標(biāo)。2. 按照要求處理獲得坐標(biāo),生成發(fā)送數(shù)據(jù)。3. 按要求

5、發(fā)送生成數(shù)據(jù)至下一模塊。任務(wù)目的:支持實(shí)時(shí)控制監(jiān)視視角的功能,為后續(xù)控制伺服電機(jī)提供依據(jù)。環(huán)境:Matlab運(yùn)行環(huán)境。實(shí)現(xiàn)原理:任務(wù)1.1. 創(chuàng)建Matlab 下的窗口,獲得句柄。2. 設(shè)置窗口大小及其他參數(shù)。3. 綁定鼠標(biāo)移動(dòng)事件,通過(guò)系統(tǒng)調(diào)用獲得鼠標(biāo)坐標(biāo)信息。任務(wù)2.1. 將獲得的坐標(biāo)按比例縮放。任務(wù)3.1.將處理后數(shù)據(jù),延時(shí)發(fā)送。詳細(xì):1. 任務(wù)二中,最大輸出值20,按比例縮放。2. 考慮參數(shù)的傳遞和系統(tǒng)性能,將坐標(biāo)計(jì)算部分放置在定時(shí)處理中。3. 優(yōu)化用戶體驗(yàn),設(shè)置無(wú)效區(qū),在該區(qū)域內(nèi)的鼠標(biāo)坐標(biāo)無(wú)效,發(fā)送使電機(jī)停止的數(shù)據(jù)。4. 延遲發(fā)送控制數(shù)據(jù),降低系統(tǒng)負(fù)荷。5. 不能在鼠標(biāo)事件處理例程中

6、進(jìn)行延時(shí)操作。6. 使用定時(shí)事件代替延時(shí)操作。7. 設(shè)置窗口關(guān)閉事件例程,清理系統(tǒng)資源,增強(qiáng)健壯性。8. 對(duì)更新速度快的鼠標(biāo)坐標(biāo)資源用定向傳送代替global聲明,降低切換開(kāi)銷。9. 鼠標(biāo)事件分為 鼠標(biāo)移動(dòng)事件,鼠標(biāo)點(diǎn)擊事件a) 鼠標(biāo)移動(dòng)事件:i. 獲得鼠標(biāo)坐標(biāo)。ii. 使用UserData屬性,定向傳送坐標(biāo)。b) 鼠標(biāo)點(diǎn)擊事件:i. 直接發(fā)送串口控制信號(hào)。ii. 考慮到使用頻率低,串口句柄由global標(biāo)識(shí)符導(dǎo)入。10定時(shí)事件a)檢查坐標(biāo)信息。b)若信息有效,進(jìn)行比例縮放。C)若信息無(wú)效,進(jìn)行置位。d)通過(guò)串口發(fā)送控制信息。11.窗口關(guān)閉事件a)獲取各資源句柄。b)清除各資源。C)退出程序。

7、圖 2 模式二電腦端流程圖串口通信設(shè)計(jì)要實(shí)現(xiàn)在線控制單片機(jī),就需要與單片機(jī)相互傳輸數(shù)據(jù)。這樣就會(huì)用到通信。實(shí)現(xiàn)數(shù)據(jù)傳遞給單片機(jī)有串行通信,并行通信等,并行通信傳輸速度快,串行通信速度較慢,但是相對(duì)并行通信其傳輸成本較低。我選擇使用串行通信實(shí)現(xiàn)數(shù)據(jù)傳輸,整體過(guò)程是:首先編寫(xiě)接收數(shù)據(jù)程序,將程序下載至單片機(jī)內(nèi)部,使得單片機(jī)可以接收數(shù)據(jù),且接收到數(shù)據(jù)后執(zhí)行一個(gè)操作(比如點(diǎn)亮一個(gè)LED燈,代表數(shù)據(jù)傳輸成功);然后通過(guò)串口助手,發(fā)送數(shù)據(jù)給單片機(jī);觀察燈亮/滅。關(guān)于串口通信參數(shù)設(shè)置:串口通信必須要設(shè)置串口工作方式,設(shè)置哪個(gè)定時(shí)器產(chǎn)生波特率,設(shè)置定時(shí)器時(shí)鐘頻率、工作方式、初值,設(shè)置波特率是否翻倍。要實(shí)現(xiàn)數(shù)據(jù)

8、的傳輸,就要保證發(fā)送端和接收端波特率一致,晶振頻率一致才不會(huì)出錯(cuò)。關(guān)于數(shù)據(jù)接收程序:采用中斷程序來(lái)接收數(shù)據(jù),這樣做的好處在于單片機(jī)不用一直處于等待接收數(shù)據(jù)狀態(tài),直到串口有數(shù)據(jù)進(jìn)入時(shí),中斷執(zhí)行接收數(shù)據(jù)程序,將接收到的數(shù)據(jù)存儲(chǔ)于變量中。微控制器電機(jī)控制設(shè)計(jì)a.矩形波的產(chǎn)生1由功能需要可知,單片機(jī)要產(chǎn)生兩路占空比分別可調(diào)、周期為20ms的矩形波信號(hào)。通過(guò)分析,可將20ms分為三部分,如下圖所示,用單片機(jī)定時(shí)器依次得到三個(gè)時(shí)間片,并在合適的時(shí)間片中將對(duì)應(yīng)的I/O口(P10,P11)置相應(yīng)的電平即可。Time2舵機(jī)1 P10:0Time3Time1舵機(jī)2 P11:20ms圖 Error! Main Do

9、cument Only.電機(jī)控制時(shí)序電平示意圖b.舵機(jī)速度控制為了實(shí)現(xiàn)向任意方向轉(zhuǎn)動(dòng),必須控制兩個(gè)舵機(jī)的速度大小,以合成任意方向的合速度。在相同的時(shí)間段內(nèi),兩個(gè)矩形波占空比的增加量不同,則舵機(jī)轉(zhuǎn)動(dòng)的角度也會(huì)不同。將時(shí)間段縮小后,在宏觀的連續(xù)時(shí)間上看,兩個(gè)舵機(jī)的轉(zhuǎn)動(dòng)速度也會(huì)不同。基于此思路,設(shè)計(jì)算法,將從串口中得到的兩軸轉(zhuǎn)動(dòng)速度量與上述增加量對(duì)應(yīng),便可實(shí)現(xiàn)上位機(jī)對(duì)轉(zhuǎn)動(dòng)方向的控制。(注意,在上述時(shí)間段內(nèi)占空比的最大增加量應(yīng)小于舵機(jī)全速轉(zhuǎn)動(dòng)相同時(shí)間所對(duì)位置的占空比增量)3.激光及蜂鳴器的控制激光與蜂鳴器均由通訊協(xié)議中的第三個(gè)字節(jié)控制。激光:檢查每次接收的第三個(gè)字節(jié),當(dāng)為1時(shí),使控制激光的單片機(jī)引腳置

10、高電平,否則,置低電平。蜂鳴器:產(chǎn)生一定占空比和周期的矩形波,將此信號(hào)與接收數(shù)據(jù)的第三個(gè)字節(jié)求“與”運(yùn)算,將結(jié)果對(duì)應(yīng)到控制蜂鳴器的端口。電路設(shè)計(jì)三使用說(shuō)明1.在matlab2014版環(huán)境下運(yùn)行。2.運(yùn)行DNMV.m3.根據(jù)界面提示使用。四測(cè)試模式一進(jìn)行測(cè)試:1.實(shí)現(xiàn)基本功能。2.響應(yīng)速度有待提高。模式二進(jìn)行測(cè)試:1.反應(yīng)速度與用戶體驗(yàn)度合理。2.圖像顯示流暢。附件一:模式電腦端程序(Matlab2014A版)clcclose allclear vid c51=serial('COM3','BAUD',9600,'OutputBufferSize'

11、,3);vid = videoinput('winvideo',1);triggerconfig(vid,'manual');start(vid);h=strel('disk',10);pause(1);data2 = getsnapshot(vid);timeout=5;fopen(c51);while timeout tic data1 = getsnapshot(vid); % »ñȡͼÏñÊý¾Ý outim = i

12、mabsdiff(data1,data2); % Á½Ö¡Ïà¼õ BW=im2bw(outim,0.2); BW=bwareaopen(BW,50); BW=imclose(BW,h); BW=int8(BW); STATS = regionprops(BW,'BoundingBox','Centroid'); toc imshow(data1); hold on if isempty(STATS) plot(STATS(1).Centroid(:,1),STATS(1).Cent

13、roid(:,2),'r*'); rectangle('Position',STATS(1).BoundingBox,'LineWidth',2,'EdgeColor','b'); writedate=int8(0 0 1); fwrite(c51,writedate,'int8'); end hold off if sum(BW) timeout=timeout-1; a,b,c=size(outim); text(b/2,a/2,'colorred',num2str(timeou

14、t),'FontSize',a/2,'HorizontalAlignment','center'); writedate=int8(0 0 0); fwrite(c51,writedate,'int8'); pause(0.5); else timeout=4; end toc data2 = getsnapshot(vid); tocendfclose(c51); flushdata(vid,'all');delete(vid)clear vid附件二:模式電腦端程序(Matlab2014A版)h=figure(

15、'CloseRequestFcn',figure_close_handler,'WindowButtonMotionFcn',ButtonMotionFcn,'WindowButtonDownFcn',ButtonDown_handler);hold on;global II.p=640 480;. 50 50;pt=0 0; I.s_port=serial('COM3','BAUD',9600,'OutputBufferSize',3); set(h,'UserData',pt);

16、xlim(0 I.p(1,1);ylim(0 I.p(1,2);axis ij;winvideoinfo=imaqhwinfo('winvideo'); k=length(winvideoinfo.DeviceIDs);for i=1:k usb_candidancy(i+1)=winvideoinfo.DeviceIDsi;endusbvid=videoinput('winvideo',winvideoinfo.DeviceIDs1,winvideoinfo.DeviceInfo(1).SupportedFormats7);usbvidRes=get(usbv

17、id,'videoResolution');nBands=get(usbvid,'NumberOfBands');h_image=image(zeros(usbvidRes(2),usbvidRes(1),nBands);preview(usbvid,h_image);global timer_1timer_1=timer('Period',0.1,'BusyMode','queue','ExecutionMode','fixedRate');timer_1.TimerFcn=tim

18、er_handle,I,h;start(timer_1);function timer_handle(,I,h)global P;pt=get(h,'UserData');if(isempty(pt)|(sqrt(pt(1,1)-.5*I.p(1,1)2+(I.p(1,2)-pt(1,2)-.5*I.p(1,2)2)<I.p(2,1) P=0 0elsex=pt(1,1)-.5*I.p(1,1);y=(I.p(1,2)-pt(1,2)-.5*I.p(1,2);P=round(x y./15)endfunction ButtonMotionFcn(src,event)pt

19、= get(gca,'CurrentPoint');set(src,'UserData',pt(1,1) pt(1,2);function figure_close_handler(src,event)try global I global timer_1; stop(timer_1); delete(timer_1); fcose(I.s_port); delete(I.s_port);catchdelete(gcf); end附件三:微處理器電機(jī)控制程序(AT89C52RC Keil 編譯)#include "STC89C5xRC.H"s

20、bit pwm0 = P10;sbit pwm1 = P11;sbit laser= P12;sbit buzzer= P13;unsigned char delay1h=0XFA;unsigned char delay1l=0X9A;unsigned char delay2h=0XFF;unsigned char delay2l=0XFF;unsigned char delay3h=0XBD;unsigned char delay3l=0X66;int zkb0=1382;int zkb1=1382;char mark=1;signed char A3=0,0,0;char i=0;bit

21、tick=0;bit buzzer_mark=0;void timeINT()TMOD=0X01;TH0=delay1h;TL0=delay1l;ET0=1;TR0=1; /初始計(jì)數(shù)器、串口工作方式 void serialINT(void) /9600bps11.0592MHz PCON &= 0x7F;/波特率不倍速SCON = 0x50;/8位數(shù)據(jù),可變波特率AUXR &= 0xBF;/定時(shí)器1時(shí)鐘為Fosc/12,即12TAUXR &= 0xFE;/串口1選擇定時(shí)器1為波特率發(fā)生器TMOD &= 0x0F;/清除定時(shí)器1模式位TMOD |= 0x20;/設(shè)

22、定定時(shí)器1為8位自動(dòng)重裝方式TL1 = 0xFD;/設(shè)定定時(shí)初值TH1 = 0xFD;/設(shè)定定時(shí)器重裝值ET1 = 0;/禁止定時(shí)器1中斷ES=1;TR1 = 1;/啟動(dòng)定時(shí)器1void time1 () interrupt 1switch(mark)case 1:if(zkb0=zkb1)pwm0=0;pwm1=0;mark=3;TH0=delay3h;TL0=delay3l;else if(zkb0>zkb1)pwm1=0;elsepwm0=0;mark=2;TH0=delay2h;TL0=delay2l;buzzer=0;break;case 2:if(zkb0>zkb1)p

23、wm0=0;elsepwm1=0;mark=3;TH0=delay3h;TL0=delay3l;break;case 3:pwm0=1;pwm1=1;mark=1;TH0=delay1h;TL0=delay1l;tick=1;buzzer=buzzer_mark;break;default:break; /中斷接收數(shù)據(jù)存入數(shù)組Ai void receive(void) interrupt 4 Ai=SBUF;i+;if(i=3) i=0;if(A2)laser=1;buzzer_mark=1;elselaser=0;buzzer_mark=0;RI=0; void main()int sysm = 0;EA=1;timeINT();serialINT();laser=0;buzzer=0;while(1)if(tick)zkb0+=A0;if(zkb0>=1844)zkb0=1843;if(zkb0<=921)zkb0=922;if(zkb0>zkb1)delay2h=(65536-(zkb0-zkb1)/256;delay2l=(65536-(zkb0-zkb1)%256;delay3h=(65536-(18432-zkb0)/256;

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論