




已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
智能机电系统综合设计实验指导书智能机电系统综合设计实验指导书电子科技大学机械电子工程学院2013年01月28日目录目录1实验一 步进电机控制卡的设计2实验二 硬件寻址方式控制机器手运动11实验三 基于动态链接库方式控制机器手运动20实验四 视频图像采集2531/32实验一 步进电机控制卡的设计一 实验配置1、安装有protel dxp电路设计软件的计算机1台。二 实验内容与步骤1、实验平台的组成与原理。4自由度机器手采用平面关节结构型式,其原理如图1-1所示。机器手的1、2和3轴在水平面上旋转运动,z轴通过螺旋副将电机的旋转转换为垂直升降运动,其中1、2轴由交流伺服电机驱动,3、z轴由两相混合式步进电机驱动。图1-1 机器手结构原理简图电气控制采用“计算机+运动控制卡”方式,其原理如图1-2所示。计算机内部安装了基于isa总线的电机运动信号接口卡,通过编写程序可输出电机驱动器所需的相应控制指令和信号,例如,控制步进电机运动的脉冲信号,控制方向的电平信号。此外,各轴运动的极限位置安装有光电开关,通过程序检测逻辑信号可防止相应的轴超出运动范围,起到保护作用。 图1-2 4自由度机器手实验平台原理图2、通过protel dxp2004创建一个新工程。新建一个工程,选择file new project pcb project,projects面板出现。新的项目文件,pcb project1.prjpcb,与“no documents added”文件夹一起列出,如图1-3所示。图1-3 新建工程通过选择filesave project as来将新项目重命名(扩展名为*.prjpcb)。指定你要把这个项目保存在你的硬盘上的位置,在文件名栏里键入文件名“stepctrl.prjpcb”并点击save。2、在工程里创建原理图纸,添加集成元件库。选择file new并点击schematic。一个名为sheet1.schdoc的原理图图纸出现在设计窗口中,并且原理图文件夹也自动地添加(连接)到项目stepctrl.prjpcb。这个原理图图纸现在列表在projects标签中的紧挨着项目名下的schematic sheets文件夹下。通过选择filesave as来将新原理图文件重命名(扩展名为*.schdoc)。指定你要把这个原理图保存在你的硬盘中的位置,在文件名栏键入stepctrl.schdoc,并点击save。当空白原理图纸打开后,工作区发生了变化,左边出现了新的工具栏,此时处于原理图编辑器中,如图1-4所示,应出现原理图元件库(图中的“1”),如果没出现,点击右下角的system(图中的“2”)后,把libraries打上钩。图1-4 编辑原理图纸往空白原理图纸中添加元器件前,先确定元件库中是否有名为stepctrl.intlib的集成元件库(图中的“3”),如果没有,则进行如图1-5的操作,点击librariesinstall,在跳出的对话框中,找到本实验相关文档的路径,添加stepctrl.intlib集成元件库。在stepctrl.intlib元件库中就有设计主控制器电路时用到的所有元件封装。图1-5 添加元件库3、绘制主控制器的原理图。按图1-6绘制步进电机控制卡的原理图。图1-6 步进电机控制卡原理图2个计数器芯片8253控制机器手的3轴和z轴。每个8253共有3个计数器,工作在方式2(分频器)下的计数器2,为计数器0提供时钟输入,它将外部晶振的2mhz信号分频为134khz,原因是步进电机的最高运行频率一般不大于200khz;计数器0工作在方式3(方波发生器)下,输出频率可控的脉冲驱动步进电机转动,频率的高低决定了相应机器手关节的运动速度;计数器1工作在方式0(计数器)下,用于计数0输出脉冲的计数,当计数达到预设值时,其out1引脚变为高电平,经过反相器74hc04后使计数器0的门控信号为低电平,停止脉冲输出,从而实现了机器手关节的角位移量控制。并口芯片8255的pc0与pc1引脚输出步进电机转向控制信号,pb0pb3引脚用于检测限位开关信号,防止机器手的运动超出极限范围。计算机地址总线a23a2位的状态通过译码器74hc138转为各芯片的片选信号,a1、a0位则对应了芯片中相应的寄存器地址,各功能控制指令的端口地址如表1-1所示。表1-1 控制指令地址功能地址作用z轴步进电机控制0x267控制指令端口地址0x264脉冲频率端口地址(计数器0)0x265位置控制端口地址(计数器1)0x266时钟分频端口地址(计数器2)3轴步进电机控制0x263控制指令端口地址0x260电机频率端口地址(计数器0)0x261位置脉冲端口地址(计数器1)0x262时钟分频端口地址(计数器2)i/o接口控制0x269限位开关端口地址(pb0pb3)0x26b电机方向控制端口地址双击元件库中需要添加到原理图里的元件,然后就可以添加到原理图里,鼠标右键是取消。如果要旋转或镜向元件,用鼠标左键一直点住元件,然后按空格或按“x”键。双击原理图里的元件,可以看到该元器件的属性,其中就包括pcb封装,如图1-7所示。图1-7 元器件属性以下有一些快捷键,在设计的过程中会用到:esc 退出当前操作pagedown or ctrl+ mouse wheel 以光标为中心缩小画面pageup or ctrl+ mouse wheel 以光标为中心放大画面mouse wheel 以鼠标滚动上下移动画面shift + mouse wheel 以鼠标滚动左右移动画面ctrl + z 撤消上一次操作ctrl + y 重复上一次操作ctrl + a 全选ctrl + s 保存当前文件ctrl + c 复制ctrl + x 剪切ctrl + v 粘贴delete 删除p+w 电气连接线(元件之间的连接一定要用这个)p+n 放置网络编号(如图中的d0、d1等)p+o 放置电源符号(如图中的gnd或+5v)完成原理图的元件摆放和连接后,需要给所有零件进行唯一编号,可以采用自动编号方式,过程如图1-8所示。点击toolsannotate,在跳出的对话框里点击reset all,先将所有器件的编号清除;然后点击update changes list,给所有零件进行唯一编号;最后点击accept changes(create eco),在跳出的对话框里点击execute changes接受编号的修改。图1-8 零件自动编号4、在工程里创建印制电路板图纸,将原理图的信息导入pcb图中。此前只是完成了主控制器的原理图设计,要制作真正的电路板,还需要进行pcb设计,对实际电路板的大小、走线、元器件的位置等进行设计,所形成的扩展名为*.pcbdoc的文档就是将来要生产实际电路板时,需要交给厂家的信息文件。选择file new并点击pcb。一个名为pcb1. pcbdoc的pcb图纸出现在设计窗口中,并且该图纸文件也自动地添加(连接)到项目stepctrl.prjpcb。通过选择filesave as来将pcb1. pcbdoc文件重命名(扩展名为*.pcbdoc)。指定你要把这个原理图保存在你的硬盘中的位置,在文件名栏键入stepctrl.pcbdoc,并点击save。回到原理图stepctrl.schdoc设计的界面,点击designupdate pcb document stepctrl.pcbdoc,如图1-9所示。在跳出的对话框里点击execute changes,如果没有报错的话,电路的所有信息将导入pcb文件stepctrl.pcbdoc中,那么在stepctrl.pcbdoc文件中可以看到如图1-10所示,红色圈的就是所有器件。图1-9 原理图信息导入pcb图图1-10 pcb图5、pcb图中元件布局与电气布线。元器件导入到pcb文件中,仅仅是将元器件的封装信息以及引脚电气连接信息导入,器件的位置、走线和电路板尺寸还没有确定,需要设计者手动完成。图1-11是本实验所用主控制器元器件排布的pcb图,供参考。元件布局原则是:1、按电路模块进行布局,模块中的元件采用就近集中原则;2、重要的单元电路、核心元器件应当优先布局;3、总的连线尽可能短,关键信号线最短;4、相同结构电路部分,尽可能采用“对称式”标准布局;5、贴片单边对齐,字符方向一致,封装方向一致。图1-11 主控制器元件布局如果要旋转元件,用鼠标左键一直点住元件,然后按空格键。元件布局完成后,选择keep-out layer,按p+l键为电路板画出外形,这就是将来制作出来的电路板实际尺寸。接下来需要进行布线(走线),可以手工布线也可以自动布线,手工布线的快捷键是p+t;自动布线则点击auto routeall,在跳出的窗口中点击route all,则启动布线引擎,最后显示100%则表示所有的电气连接线都能成功地布完。图1-12 pcb布线三 实验报告需要包括的内容1、绘制的主控制器原理图(截图,打印)。2、绘制的主控制器pcb图(截图,打印)。实验二 硬件寻址方式控制机器手运动一 实验配置1、装有windows 系统的pc 一台。2、安装visual c+ 6.0。3、u盘一个。4、4自由度机器手一台。二 实验步骤1、建立对话框界面程序。从“开始”菜单里打开 microsoft visual c+ 6.0。利用vc+开发平台编写控制程序。mfc 是mfc 是microsoft foundation class 缩写,即微软基础类库,是一个架构在windows api 之上c+ 类别库(c+ class library),里面包含了很多现成的窗体控件类,意图使windows 程式设计过程更有效率,更符合物件导向的精神。visual c+里可以创建的mfc 窗体程序有三种:对话框、单文档视图和多文档视图。其中以对话框结构最为简单,所以我们就以对话框作为我们的第一个windows 视窗程序。按照如下步骤:点击左上角菜单项“文件”“新建”选择mfc appwizard输入工程名:test确定。图2-1 选择工程性质图2-2 选择界面类型图2-3 设置对话框属性图2-4 生成的对话框界面这里我们可以看到visual c+的界面主要分为三个栏,左侧的工作区视图、右侧的代码编辑客户区以及下侧的信息输出窗口。工作区可以按类或文件的方式组织程序的源代码,另外还可以查看工程里的资源(如显示窗体、图标、图片等)。代码编辑客户区在工作区选择类视图和文件视图时可以显示类和文件里的源代码,在工作区选择资源时可显示资源的内容。图2-5 visual c+编程环境代码编辑客户区在工作区选择类视图和文件视图时可以显示类和文件里的源代码,在工作区选择资源时可显示资源的内容。类视图:在左侧工作区下侧选取类视图,双击各个类察看客户区的代码显示,这里可以看到类组织形式的特点:双击类名显示的是类的声明,双击类的成员函数则进入该成员函数的具体定义。资源视图:在左侧工作区下侧选取资源视图,展开各项,双击察看客户区里窗体图表等资源,这里主要是dialog 对话框资源和icon 图标资源。文件视图:在左侧工作区下侧选取文件视图,展开各项,双击察看客户区里各文件的内容显示。这里可以看到与类组织形式的异同,.h 头文件里多是类的声明,而类的定义则在对应的.cpp 文件里。2、建立控制按钮。窗体已经建立,下面我们可以在上面添加我们需要的按钮控件。下面我们为“z轴上升”功能建立按钮,用于启动z轴步进电机正向转动,使机器手沿z轴上升。首先,我们找到visual c+的控件工具栏。图2-6 控件工具栏点击按钮控件,在对话框上按下鼠标左键拖动,即可画出一个按钮。鼠标右击该按钮,在弹出的菜单里选择“属性”,即可以修改该按钮控件的资源id和显示文字,因为我们后面需要为这个按钮映射出一个函数,所以这里最好将资源id修改为容易识别而没有其他重复的单词,这里改为“idc_zaxis_up”。图2-7 控件菜单图2-8 按钮控件属性同理,添加“z轴下降”、“机械爪正转”、“机械爪反转”、“所有电机停止”控件,id分别为:idc_zaxis_down、idc_claw_turn0、idc_claw_turn1、idc_stop。图2-9 添加按钮控件3、添加控制机器手所需的文件。将本实验文件夹中,“机器手所需资源文件”中的kld.dll、kld.lib、winio.dll、winio.lib、winio.sys、winio.vxd、winmm.lib共7个资源文件拷贝到工程(test)下的debug文件夹中。将winio.h、kld.h共2个头(*.h)文件拷贝到工程(test)根目录下。添加上述这些文件到工程中,如图2-10中的左边所示。添加完成后,应如图2-10右边所示。 图2-10 添加文件4、编写控制按钮响应函数。在编写控制按钮响应函数前,先在对话框程序文件testdlg.cpp中,包含3个头文件,如图2-11所示。然后,在对话框初始化函数oninitdialog()中,加入如图2-12所示的机器手运动控制卡初始化函数。图2-11 包含头文件图2-12 机器手运动控制卡初始化函数如图2-13,回到对话框界面,双击相应控制按钮,编写其响应函数。 图2-13 编写控制按钮响应函数现在以z轴步进电机的控制原理,来说明如何通过硬件寻址方式控制机器手。根据实验一设计的步进电机控制卡电路原理(图1-6),z轴步进电机的控制脉冲由1片8253时钟芯片提供,一般只用到其中的两个计数器:计数器0,工作在方式3下,产生步进电机运动所需要的脉冲,可以设置频率。计数器1,工作在方式0下,记录已经产生的脉冲个数,当已产生脉冲数达到预设上限,计数器0将停止工作。在使用之前,先要设置控制寄存器,指定相应计数器的工作方式,然后给计数器写入16位的值(计数上限或分频数)。此外,步进电机的运动方向是需要设置的,由8255i/o扩展口芯片的pc0口给出。由表1-1可知,z轴的8253芯片控制指令端口地址是0x267,脉冲频率端口地址是0x264,位置控制端口地址是0x265。8253芯片的使用方法请查看实验文件目录下的8253数据手册。对硬件的确定地址写入1个数,由_outp(addr, data)函数实现,如图2-14中所示。其他控制按钮函数如图2-15至图2-17所示。图2-14 z轴向上运动图2-15 z轴向下运动图2-16 机械爪运动控制图2-17 所有电机停止运动5、编译程序并排除错误。按下键盘f7,在输出窗口里观察程序的编译组建信息,排除语法错误或是连接错误。6、将编译后的程序在机器手的控制计算机中运行。将编译后的整个工程文件夹复制到u盘,然后将u盘插到机器手的控制计算机usb接口上,直接在u盘上运行debug文件夹中的“test.exe”程序。三 实验报告需要包括的内容1、按钮的映射函数。(打印,附在实验报告后)2、程序运行的对话框界面。(截图打印,附在实验报告后)实验三 基于动态链接库方式控制机器手运动一 实验配置1、装有windows 系统的pc 一台。2、安装visual c+ 6.0。3、u盘一个。4、4自由度机器手一台。三 实验步骤1、按实验二的方法,建立工程与对话框程序。建立工程后,将 “机器手所需资源文件”中的kld.dll、kld.lib、winio.dll、winio.lib、winio.sys、winio.vxd、winmm.lib共7个资源文件拷贝到工程(test)下的debug文件夹中。将winio.h、kld.h共2个头(*.h)文件拷贝到工程(test)根目录下。添加上述这些文件到工程中,如图3-1中的左边所示。添加完成后,应如图3-1右边所示。 图3-1 添加文件在编写控制按钮响应函数前,先在对话框程序文件testdlg.cpp中,包含3个头文件,如图3-2所示。然后,在对话框初始化函数oninitdialog()中,加入如图3-3所示的机器手运动控制卡初始化函数。图3-2 包含头文件图3-3 机器手运动控制卡初始化函数在本实验中,要通过动态链接库中的控制函数,驱动机器手的4个自由度关节运动,因此在对话框界面上添加9个控制按钮。图3-4 对话框界面2、利用动态链接库,编写控制按钮响应函数。动态链接库英文为dll,是dynamic link library 的缩写形式,dll是一个包含可由多个程序同时使用的代码和数据的库,dll不是可执行文件。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个 dll 中,该 dll 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。dll 还有助于共享数据和资源。多个应用程序可同时访问内存中单个dll 副本的内容。dll 是一个包含可由多个程序同时使用的代码和数据的库。机器手的生产厂商为用户提供了kld.dll文件,方便用户控制机器手,不需要像实验二那样,通过繁琐的操作才能实现控制。kld.dll中,我们用到的函数说明如下:(1)伺服电机位置运动函数(对应大臂、小臂):sevon_output(channel, direction, freq, number);channel为轴号,取值为1-2,对应机器人伺服电机1、2轴(即大臂、小臂);direction为方向,0为正方向,1负方向;freq为频率,相当于转动的速度,取值为1-20000;number为脉冲数,相当于转动的角度。(2)步进电机位置运动函数(对应z轴、 机械爪):kld_position(axis, direction, freq, number);axis为轴号,取值为1-2,对应机器人步进电机1、 2轴(即z轴、 机械爪);direction为方向,0为正方向,1负方向;freq为频率,相当于转动的速度,取值为1-2000; number为脉冲数,相当于转动的角度。(3)电机停止函数(对应全部电机):kld_motor_off(axis);axis 为轴号,取值为1-5,1轴为机器人大臂,2轴为机器人小臂,3轴为机器人z轴,4轴为机器人的机械爪,5轴为机器人的机械爪张开、闭合动作。双击相应控制按钮,编写其响应函数。图3-5 z轴运动控制图3-6 机械爪转动运动控制图3-7 大臂运动控制图3-8 小臂运动控制3、编译程序并排除错误。按下键盘f7,在输出窗口里观察程序的编译组建信息,排除语法错误或是连接错误。4、将编译后的程序在机器人的机载电脑中运行。将编译后的整个工程文件夹复制到u盘,然后将u盘插到机器手的控制计算机usb接口上,直接在u盘上运行debug文件夹中的“test.exe”程序。四 实验报告需要包括的内容1、按钮的映射函数。(打印,附在实验报告后)2、程序运行的对话框界面。(截图打印,附在实验报告后)实验四 视频图像采集一 实验配置1、装有windows 系统的pc 一台。2、安装visual c+ 6.0。3、usb摄相头1个。三 实验步骤1、按前面实验中的方法,建立工程与对话框界面。2、安装directx 9.0 sdk,并在vc+工程中进行相应设置。1)安装directx 9.0b sdk ,如:安装在c盘下的dxsdk。2)打开安装目录下的baseclasses.dsw,进行编译,操作过程如下:首先,在baseclasses工程project-setting-library下设置output file name,设置为debug_unicodestrmbasd_uni.lib,默认的为debug_unicodestrmbasd.lib。其次,编译工程,编译后会生成debug_unicode目录,里面就含有我们要的strmbasd_uni.lib库。把它拷贝到你所要的项目工程目录下即可。最后,在你所在的工程中,打开project-setting-link的object/library modules下添加如下几个库名,strmbasd_uni.lib strmiids.lib winmm.lib uuid.lib3)在vc+的tools/option/directory的include中加入:c:dxsdkinclude c:dxsdksamplesc+directshowbaseclasses c:dxsdksamplesc+commoninclude 在library中加入:c:dxsdklib c:dxsdksamplesc+directshowbaseclassesdebug_unicode需要注意的是以上路径和文件名是严格区分大小写的,务必保证准确无误。3、在vc+工程中添加与摄像头视频捕捉的相应配置。在stdafx.h 文件里包含三个directshowsdk 的头文件:#include #include #include #include 编译一下工程,排除编译上的错误。图4.1 包含相应头文件将“机器手所需资源文件”文件中的capturevideo.cpp和capturevideo.h文件添加到工程中: 图4.2 添加capturevideo.cpp和capturevideo.h文件4、添加界面控件。在界面上划定一个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论