《机械制造基础》课程实践报告-基于Matlab上位机的自动捕捉装置.docx_第1页
《机械制造基础》课程实践报告-基于Matlab上位机的自动捕捉装置.docx_第2页
免费预览已结束,剩余25页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

机械制造基础课程实践报告机械工程学院机械电子工程 xx班指导老师:xxx2014年11月18日目 录一系统总体设计3(一)设计目标及完成功能3(二)系统结构设计3二详细设计4(一)人员任务分配4(二)各子功能设计5串口通信设计8微控制器电机控制设计9电路设计11三使用说明11四测试11模式二进行测试:12附件一:模式电脑端程序(matlab2014a版)13附件二:模式电脑端程序(matlab2014a版)16附件三:微处理器电机控制程序(at89c52rc keil 编译)19一系统总体设计(一)设计目标及完成功能设计搭建一个小型机电系统。由伺服电机、微处理器、无线图传模块、蓝牙模块、图像采集器、个人电脑组成。在不同模式下实现如下功能:模式一,运动跟踪:在电脑端实时显示视频采集器的视频信息。对图签采集器视野范围内的物体运动进行捕捉。控制图像采集器对目标进行跟踪,使目标保持在采集器视野中心。模式二,动态监控:在电脑端实时显示视频采集器的视频信息。在视频浏览窗口,通过移动鼠标控制采集器采样角度。(二)系统结构设计1.信息流设计计算机单片机舵机视频采集器无线图传蓝牙图 error! main document only.系统信息流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图 error! main document only.电机控制时序电平示意图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)zkb1)pwm1=0;elsepwm0=0;mark=2;th0=delay2h;tl0=delay2l;buzzer=0;break;case 2:if(zkb0zkb1)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(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-zkb0)%256;delay2h=0xff;delay2l=0xff;delay3h=(65536-(18432

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论