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

上传人:牧羊曲112 文档编号:4265055 上传时间:2023-04-12 格式:DOC 页数:28 大小:316KB
返回 下载 相关 举报
机械制造课程实践(基于Matlab上位机的自动捕捉装置).doc_第1页
第1页 / 共28页
机械制造课程实践(基于Matlab上位机的自动捕捉装置).doc_第2页
第2页 / 共28页
机械制造课程实践(基于Matlab上位机的自动捕捉装置).doc_第3页
第3页 / 共28页
机械制造课程实践(基于Matlab上位机的自动捕捉装置).doc_第4页
第4页 / 共28页
机械制造课程实践(基于Matlab上位机的自动捕捉装置).doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《机械制造课程实践(基于Matlab上位机的自动捕捉装置).doc》由会员分享,可在线阅读,更多相关《机械制造课程实践(基于Matlab上位机的自动捕捉装置).doc(28页珍藏版)》请在三一办公上搜索。

1、机械制造基础课程实践报告机械工程学院机械电子工程 XX班指导老师:XXX2014年11月18日目 录一系统总体设计3(一)设计目标及完成功能3(二)系统结构设计3二详细设计4(一)人员任务分配4(二)各子功能设计5串口通信设计8微控制器电机控制设计9电路设计11三使用说明11四测试11模式二进行测试:12附件一:模式电脑端程序(Matlab2014A版)13附件二:模式电脑端程序(Matlab2014A版)16附件三:微处理器电机控制程序(AT89C52RC Keil 编译)19一系统总体设计(一)设计目标及完成功能设计搭建一个小型机电系统。由伺服电机、微处理器、无线图传模块、蓝牙模块、图像采

2、集器、个人电脑组成。在不同模式下实现如下功能:模式一,运动跟踪:在电脑端实时显示视频采集器的视频信息。对图签采集器视野围的物体运动进行捕捉。控制图像采集器对目标进行跟踪,使目标保持在采集器视野中心。模式二,动态监控:在电脑端实时显示视频采集器的视频信息。在视频浏览窗口,通过移动鼠标控制采集器采样角度。(二)系统结构设计1.信息流设计计算机单片机舵机视频采集器无线图传蓝牙图 1系统信息流2.各部分功能设计:计算机:信息综合处理。1. 响应用户要求。2. 接收无线图像信号。3. 显示图像信息。4. 根据用户不同要求和图像信息计算控制数据。5. 发送控制信号。蓝牙模块:数据传输。1. 接收计算机控制

3、信号。2. 将收到信号发送给单片机。单片机:信息处理与控制。1. 接收控制信息。2. 处理接收信息。3. 电平输出,控制舵机运动。舵机:运动执行。1. 执行控制命令,调整图像采集器空间状态。视频采集器:采集视频信号。1. 采集器与舵机固定连接。2. 将采集的信号传送至无线图传模块。无线图传模块:传送图像信息。1. 接收采样信息。2. 传送采样信息至电脑端。二详细设计(一)人员任务分配XXX:模式二电脑端程序编写,项目报告汇总。XXX:微处理器串口程序编写,幻灯片制作。XXX:模式一电脑端程序编写、微处理器控制程序编写,幻灯片制作。XXX:元件安装、固定,小组讨论记录。(二)各子功能设计模式一一

4、、概述通过采集一定时间差的两帧图像,然后将其做差运算,将所得数据处理之后便可知道视野中有无运动物体二、具体实现Step1:捕获图像主要函数:getsnapshot(vid)图像a 图像bStep2:将所得两组数据作差Step3:二值化所得图像,以便后续处理主要函数:im2bw Step1:作差所得图像 step2:二值化所得图像Step4:对数据处理后,求出移动区域围及其质心主要函数:regionprops 最终所得结果模式二任务:1. 在制定窗口处于激活状态时,获得鼠标实时窗口坐标。2. 按照要求处理获得坐标,生成发送数据。3. 按要求发送生成数据至下一模块。任务目的:支持实时控制监视视角的

5、功能,为后续控制伺服电机提供依据。环境:Matlab运行环境。实现原理:任务1.1. 创建Matlab 下的窗口,获得句柄。2. 设置窗口大小及其他参数。3. 绑定鼠标移动事件,通过系统调用获得鼠标坐标信息。任务2.1. 将获得的坐标按比例缩放。任务3.1.将处理后数据,延时发送。详细:1. 任务二中,最大输出值20,按比例缩放。2. 考虑参数的传递和系统性能,将坐标计算部分放置在定时处理中。3. 优化用户体验,设置无效区,在该区域的鼠标坐标无效,发送使电机停止的数据。4. 延迟发送控制数据,降低系统负荷。5. 不能在鼠标事件处理例程中进行延时操作。6. 使用定时事件代替延时操作。7. 设置窗

6、口关闭事件例程,清理系统资源,增强健壮性。8. 对更新速度快的鼠标坐标资源用定向传送代替global声明,降低切换开销。9. 鼠标事件分为 鼠标移动事件,鼠标点击事件a) 鼠标移动事件:i. 获得鼠标坐标。ii. 使用UserData属性,定向传送坐标。b) 鼠标点击事件:i. 直接发送串口控制信号。ii. 考虑到使用频率低,串口句柄由global标识符导入。10定时事件a)检查坐标信息。b)若信息有效,进行比例缩放。C)若信息无效,进行置位。d)通过串口发送控制信息。11.窗口关闭事件a)获取各资源句柄。b)清除各资源。C)退出程序。图 2 模式二电脑端流程图串口通信设计要实现在线控制单片机

7、,就需要与单片机相互传输数据。这样就会用到通信。实现数据传递给单片机有串行通信,并行通信等,并行通信传输速度快,串行通信速度较慢,但是相对并行通信其传输成本较低。我选择使用串行通信实现数据传输,整体过程是:首先编写接收数据程序,将程序下载至单片机部,使得单片机可以接收数据,且接收到数据后执行一个操作(比如点亮一个LED灯,代表数据传输成功);然后通过串口助手,发送数据给单片机;观察灯亮/灭。关于串口通信参数设置:串口通信必须要设置串口工作方式,设置哪个定时器产生波特率,设置定时器时钟频率、工作方式、初值,设置波特率是否翻倍。要实现数据的传输,就要保证发送端和接收端波特率一致,晶振频率一致才不会

8、出错。关于数据接收程序:采用中断程序来接收数据,这样做的好处在于单片机不用一直处于等待接收数据状态,直到串口有数据进入时,中断执行接收数据程序,将接收到的数据存储于变量中。微控制器电机控制设计a.矩形波的产生1由功能需要可知,单片机要产生两路占空比分别可调、周期为20ms的矩形波信号。通过分析,可将20ms分为三部分,如下图所示,用单片机定时器依次得到三个时间片,并在合适的时间片中将对应的I/O口(P10,P11)置相应的电平即可。Time2舵机1 P10:0Time3Time1舵机2 P11:20ms图 3电机控制时序电平示意图b.舵机速度控制为了实现向任意方向转动,必须控制两个舵机的速度大

9、小,以合成任意方向的合速度。在相同的时间段,两个矩形波占空比的增加量不同,则舵机转动的角度也会不同。将时间段缩小后,在宏观的连续时间上看,两个舵机的转动速度也会不同。基于此思路,设计算法,将从串口中得到的两轴转动速度量与上述增加量对应,便可实现上位机对转动方向的控制。(注意,在上述时间段占空比的最大增加量应小于舵机全速转动相同时间所对位置的占空比增量)3.激光及蜂鸣器的控制激光与蜂鸣器均由通讯协议中的第三个字节控制。激光:检查每次接收的第三个字节,当为1时,使控制激光的单片机引脚置高电平,否则,置低电平。蜂鸣器:产生一定占空比和周期的矩形波,将此信号与接收数据的第三个字节求“与”运算,将结果对

10、应到控制蜂鸣器的端口。电路设计三使用说明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);

11、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)

12、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,HorizontalAli

13、gnment,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,Wind

14、owButtonDownFcn,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)=winvideoinf

15、o.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

16、,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)zkb1)pwm1=0;elsepwm0=0;mark=2;TH0=delay2h;TL0=delay2l;buzzer=0;break;case 2:if(zkb

17、0zkb1)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()i

18、nt sysm = 0;EA=1;timeINT();serialINT();laser=0;buzzer=0;while(1)if(tick)zkb0+=A0;if(zkb0=1844)zkb0=1843;if(zkb0zkb1)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-

19、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(zkb1zkb0)delay2h=(65536-(zkb1-zkb0)/256;delay2l=(

20、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;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号