欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    机械制造课程实践(基于Matlab上位机的自动捕捉装置).doc

    • 资源ID:4265055       资源大小:316KB        全文页数:28页
    • 资源格式: DOC        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    机械制造课程实践(基于Matlab上位机的自动捕捉装置).doc

    机械制造基础课程实践报告机械工程学院机械电子工程 XX班指导老师:XXX2014年11月18日目 录一系统总体设计3(一)设计目标及完成功能3(二)系统结构设计3二详细设计4(一)人员任务分配4(二)各子功能设计5串口通信设计8微控制器电机控制设计9电路设计11三使用说明11四测试11模式二进行测试:12附件一:模式电脑端程序(Matlab2014A版)13附件二:模式电脑端程序(Matlab2014A版)16附件三:微处理器电机控制程序(AT89C52RC Keil 编译)19一系统总体设计(一)设计目标及完成功能设计搭建一个小型机电系统。由伺服电机、微处理器、无线图传模块、蓝牙模块、图像采集器、个人电脑组成。在不同模式下实现如下功能:模式一,运动跟踪:在电脑端实时显示视频采集器的视频信息。对图签采集器视野围的物体运动进行捕捉。控制图像采集器对目标进行跟踪,使目标保持在采集器视野中心。模式二,动态监控:在电脑端实时显示视频采集器的视频信息。在视频浏览窗口,通过移动鼠标控制采集器采样角度。(二)系统结构设计1.信息流设计计算机单片机舵机视频采集器无线图传蓝牙图 1系统信息流2.各部分功能设计:计算机:信息综合处理。1. 响应用户要求。2. 接收无线图像信号。3. 显示图像信息。4. 根据用户不同要求和图像信息计算控制数据。5. 发送控制信号。蓝牙模块:数据传输。1. 接收计算机控制信号。2. 将收到信号发送给单片机。单片机:信息处理与控制。1. 接收控制信息。2. 处理接收信息。3. 电平输出,控制舵机运动。舵机:运动执行。1. 执行控制命令,调整图像采集器空间状态。视频采集器:采集视频信号。1. 采集器与舵机固定连接。2. 将采集的信号传送至无线图传模块。无线图传模块:传送图像信息。1. 接收采样信息。2. 传送采样信息至电脑端。二详细设计(一)人员任务分配XXX:模式二电脑端程序编写,项目报告汇总。XXX:微处理器串口程序编写,幻灯片制作。XXX:模式一电脑端程序编写、微处理器控制程序编写,幻灯片制作。XXX:元件安装、固定,小组讨论记录。(二)各子功能设计模式一一、概述通过采集一定时间差的两帧图像,然后将其做差运算,将所得数据处理之后便可知道视野中有无运动物体二、具体实现Step1:捕获图像主要函数:getsnapshot(vid)图像a 图像bStep2:将所得两组数据作差Step3:二值化所得图像,以便后续处理主要函数:im2bw Step1:作差所得图像 step2:二值化所得图像Step4:对数据处理后,求出移动区域围及其质心主要函数:regionprops 最终所得结果模式二任务:1. 在制定窗口处于激活状态时,获得鼠标实时窗口坐标。2. 按照要求处理获得坐标,生成发送数据。3. 按要求发送生成数据至下一模块。任务目的:支持实时控制监视视角的功能,为后续控制伺服电机提供依据。环境:Matlab运行环境。实现原理:任务1.1. 创建Matlab 下的窗口,获得句柄。2. 设置窗口大小及其他参数。3. 绑定鼠标移动事件,通过系统调用获得鼠标坐标信息。任务2.1. 将获得的坐标按比例缩放。任务3.1.将处理后数据,延时发送。详细:1. 任务二中,最大输出值20,按比例缩放。2. 考虑参数的传递和系统性能,将坐标计算部分放置在定时处理中。3. 优化用户体验,设置无效区,在该区域的鼠标坐标无效,发送使电机停止的数据。4. 延迟发送控制数据,降低系统负荷。5. 不能在鼠标事件处理例程中进行延时操作。6. 使用定时事件代替延时操作。7. 设置窗口关闭事件例程,清理系统资源,增强健壮性。8. 对更新速度快的鼠标坐标资源用定向传送代替global声明,降低切换开销。9. 鼠标事件分为 鼠标移动事件,鼠标点击事件a) 鼠标移动事件:i. 获得鼠标坐标。ii. 使用UserData属性,定向传送坐标。b) 鼠标点击事件:i. 直接发送串口控制信号。ii. 考虑到使用频率低,串口句柄由global标识符导入。10定时事件a)检查坐标信息。b)若信息有效,进行比例缩放。C)若信息无效,进行置位。d)通过串口发送控制信息。11.窗口关闭事件a)获取各资源句柄。b)清除各资源。C)退出程序。图 2 模式二电脑端流程图串口通信设计要实现在线控制单片机,就需要与单片机相互传输数据。这样就会用到通信。实现数据传递给单片机有串行通信,并行通信等,并行通信传输速度快,串行通信速度较慢,但是相对并行通信其传输成本较低。我选择使用串行通信实现数据传输,整体过程是:首先编写接收数据程序,将程序下载至单片机部,使得单片机可以接收数据,且接收到数据后执行一个操作(比如点亮一个LED灯,代表数据传输成功);然后通过串口助手,发送数据给单片机;观察灯亮/灭。关于串口通信参数设置:串口通信必须要设置串口工作方式,设置哪个定时器产生波特率,设置定时器时钟频率、工作方式、初值,设置波特率是否翻倍。要实现数据的传输,就要保证发送端和接收端波特率一致,晶振频率一致才不会出错。关于数据接收程序:采用中断程序来接收数据,这样做的好处在于单片机不用一直处于等待接收数据状态,直到串口有数据进入时,中断执行接收数据程序,将接收到的数据存储于变量中。微控制器电机控制设计a.矩形波的产生1由功能需要可知,单片机要产生两路占空比分别可调、周期为20ms的矩形波信号。通过分析,可将20ms分为三部分,如下图所示,用单片机定时器依次得到三个时间片,并在合适的时间片中将对应的I/O口(P10,P11)置相应的电平即可。Time2舵机1 P10:0Time3Time1舵机2 P11:20ms图 3电机控制时序电平示意图b.舵机速度控制为了实现向任意方向转动,必须控制两个舵机的速度大小,以合成任意方向的合速度。在相同的时间段,两个矩形波占空比的增加量不同,则舵机转动的角度也会不同。将时间段缩小后,在宏观的连续时间上看,两个舵机的转动速度也会不同。基于此思路,设计算法,将从串口中得到的两轴转动速度量与上述增加量对应,便可实现上位机对转动方向的控制。(注意,在上述时间段占空比的最大增加量应小于舵机全速转动相同时间所对位置的占空比增量)3.激光及蜂鸣器的控制激光与蜂鸣器均由通讯协议中的第三个字节控制。激光:检查每次接收的第三个字节,当为1时,使控制激光的单片机引脚置高电平,否则,置低电平。蜂鸣器:产生一定占空比和周期的矩形波,将此信号与接收数据的第三个字节求“与”运算,将结果对应到控制蜂鸣器的端口。电路设计三使用说明1.在matlab2014版环境下运行。2.运行DNMV.m3.根据界面提示使用。四测试模式一进行测试:1.实现基本功能。2.响应速度有待提高。模式二进行测试:1.反应速度与用户体验度合理。2.图像显示流畅。附件一:模式电脑端程序(Matlab2014A版)clcclose allclear vid c51=serial('COM3','BAUD',9600,'OutputBufferSize',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 = imabsdiff(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).Centroid(:,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(timeout),'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('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);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(usbvid,'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=timer_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 = 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附件三:微处理器电机控制程序(AT89C52RC Keil 编译)#include "STC89C5xRC.H"sbit 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 tick=0;bit buzzer_mark=0;void timeINT()TMOD=0X01;TH0=delay1h;TL0=delay1l;ET0=1;TR0=1; /初始计数器、串口工作方式 void serialINT(void) /9600bps11.0592MHz PCON &= 0x7F;/波特率不倍速SCON = 0x50;/8位数据,可变波特率AUXR &= 0xBF;/定时器1时钟为Fosc/12,即12TAUXR &= 0xFE;/串口1选择定时器1为波特率发生器TMOD &= 0x0F;/清除定时器1模式位TMOD |= 0x20;/设定定时器1为8位自动重装方式TL1 = 0xFD;/设定定时初值TH1 = 0xFD;/设定定时器重装值ET1 = 0;/禁止定时器1中断ES=1;TR1 = 1;/启动定时器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)pwm0=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; /中断接收数据存入数组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;delay3l=(65536-(18432-zkb0)%256;else if(zkb0=zkb1)delay1h=(65536-zkb0)/256;delay1l=(65536-zkb0)%256;delay2h=0XFF;delay2l=0XFF;delay3h=(65536-(18432-zkb0)/256;delay3l=(65536-(18432-zkb0)%256;elsedelay1h=(65536-zkb0)/256;delay1l=(65536-zkb0)%256;delay2h=(65536-(zkb1-zkb0)/256;delay2l=(65536-(zkb1-zkb0)%256;zkb1+=A1;if(zkb1>=1844)zkb1=1843;if(zkb1<=921)zkb1=922;if(zkb1>zkb0)delay2h=(65536-(zkb1-zkb0)/256;delay2l=(65536-(zkb1-zkb0)%256;delay3h=(65536-(18432-zkb1)/256;delay3l=(65536-(18432-zkb1)%256;else if(zkb0=zkb1)delay1h=(65536-zkb1)/256;delay1l=(65536-zkb1)%256;delay2h=0XFF;delay2l=0XFF;delay3h=(65536-(18432-zkb1)/256;delay3l=(65536-(18432-zkb1)%256;elsedelay1h=(65536-zkb1)/256;delay1l=(65536-zkb1)%256;delay2h=(65536-(zkb0-zkb1)/256;delay2l=(65536-(zkb0-zkb1)%256;tick=0;

    注意事项

    本文(机械制造课程实践(基于Matlab上位机的自动捕捉装置).doc)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开