履带式机器人-机电一体化综合控制实验报告_第1页
履带式机器人-机电一体化综合控制实验报告_第2页
履带式机器人-机电一体化综合控制实验报告_第3页
履带式机器人-机电一体化综合控制实验报告_第4页
履带式机器人-机电一体化综合控制实验报告_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

机械与运载工程学院机电综合实验机电一体化综合控制实验报告履带式机器人学院机械与运载工程学院班级姓名学号指导教师日期2016年5月6日湖南·长沙绪论1.1实验目的和意义近年来隨着计算机在社会各领域的滲透,单片机的应用正在不断的走向深入,在实时监测和自动控制的单片机应用系统中,单片机往往被作为一个核心部件来使用。在我们日常生活中单片机的应用日益广泛,在工业领域,机器人就是一个常见的单片机控制装置,机器人在工业生产中扮演着十分重要的角色,随着工业自动化的不断发展,机器人的作用将越来越重要。机电一体化是将机械技术、微电子技术和计算机结合在一起,从而产生具有智能化特性的产品,它是现代机械及电子工业的主要发展方向。机电综合实验的开设目的不是让我们去学一门新的知识,而是通过这门课程的学习将自己所学的机械、计算机及自动控制等知识有机的结合。在课程的开展过程中去掌握如何将所学知识统一到一个具体的项目开发和设计中,从而达到提高综合素质的能力。该课程知识点覆盖全面、结构安排紧凑,对我们的实践与应用具有很强的提高作用。1.2实验内容及要求该课程所涉及的内容有:机电一体化,汽车电子设计,智能测量,自动监控系统以及计算机控制及通信。本实验的实验要求:了解和掌握自动化系统集成的一般过程和方法,在课程中逐步掌握使用、调试、维护自动化系统方面的能力。学会分析和使用常用的电子芯片、电子元件和仪器设备的能力。学会将机械运动和自动化(利用软、硬件)紧密结合。学会查阅科技参考资料,收集实验数据,并对结论进行分析,写好实验报告。1.3实验具体做法及步骤根据任务内容查阅相关资料,分辨需要新学的内容与巩固的内容。项目的原理、结构、运行方式、功能模块、指令等的应用和开发。熟悉项目所需的硬件平台。了解硬件,即实验设备所采用的电子元器件的功能及原理。掌握语言的设计和调试。a.根据自己的情况来选择采用何种编程语言(C或者汇编语言);b.依据机械运动的方式制定控制方案;c.依据控制方案画出编程方框图;d.依据方框图编写程序;e.将程序输入控制对象,进行调试。首先完成四边形的运动,在此基础上增加避障、拐弯、红外探测、前后跟随等功能。详细记载试验调试过程中的各项实验数据。1.4本章小结本章首先对本实验的目的、意义进行阐释,说明该实验的必要性和重要性,其次对本实验的实验内容和要求进行阐述,有利于该实验开展,最后对该实验的具体做法和步骤进行说明,让实验者对实验有一个整体的把握,达到实验的效果。实验硬件2.1履带机器人电机履带机器人使用的直流电机调速技术是脉宽调制(PWM)直流调速技术,具有调速范围宽、响应速度快和耗损低等特点。其工作原理是通过AVR单片机ATmega8直接产生PWM波形经过电机驱动芯片L298分别驱动两个直流电机,PWM将占空比不同的脉冲变成不同的电压驱动直流电机转动从而得到不同的转速,且实现电机启动、停止、正反转等功能。2.1.1电机技术参数主要技术指标:常规模式下时主要指标(环境温度=25℃),采用双电源供电(逻辑器件工作电压和电机工作电压)逻辑工作电压:5VDC电机工作电压:12~24VDC输出电流(典型值):2A工作温度范围:0~70℃储存温度范围:-20~80℃模块尺寸大小:69×26mm2.1.2电机接线及安装尺寸图2.1安装尺寸图2.2接线定义2.1.3通讯协议采用9600bps,8位数据位、1位停止位、无校验位;采用半双工通讯,通讯过程采取一问一答方式;控制命令采用5字节如下表所示:1)电机设定:如上表格所示,command命令从D0-D7,一共8位,其功能位A、D0为电机方向,1为正转,0为反转;B、D1为左右电机设定,0为左电机,1为右电机;C、D2为1的时候电机停止;D、2)速度设定:speed0-255可以调整3)时间:Time0-255可以调整2.2C51系列单片机一提到单片机,你就会经常听到这样一些名词:MCS51、8051、C51等等,它们之间究竟是什么关系呢?MCS51是指由美国INTEL公司生产的一系列单片机的总称。这一系列单片机包括了好些品种,如8031,8051,8751等,其中8051是最典型的产品,该系列单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS51系列单片机。INTEL公司将MCS51的核心技术授权给了很多其它公司,所以有很多公司在做以8051为核心的单片机,当然,功能或多或少有些改变,以满足不同的需求。其中较典型的一款单片机AT89C51(简称C51)由于由美国ATMEL公司以8051为内核开发生产。本教材使用的AT89S52单片机是在此基础上改进而来。AT89S52是一种高性能、低功耗的8位单片机,内含8k字节ISP(In-systemProgrammable,系统在线编程)可反复擦写1000次的FLASH只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS51指令系统及其引脚结构。在实际工程应用中,功能强大的AT89S52已成为许多高性价比嵌入式控制应用系统的解决方案。图2.3C51单片机教学版图2.4采用C51单片机的机器人2.3硬件连接2.3.1串口的连接机器人教学板通过串口电缆连接到PC机(或笔记本电脑)上以便与用户交互。如果计算机有串行接口,直接使用串口连接电缆。如果没有,此时需要使用USB转串口适配器,如图2.5所示。只需将该串口线一端的串口连接到机器人教学板,而另一端连接到计算的USB口上。图2.5USB转串口适配器2.3.2ISP下载线的连接机器人程序通过连接到PC机或者笔记本电脑的并口上的ISP下载线来下载到教学板上的单片机内。图2.6所示为ISP下载线。下载线一端连接到PC机或者笔记本的并行接口上,而另一端(小端)连接到教学板上的程序下载口上。图2.6ISP下载线2.4本章小结本章主要对实验所用到的硬件进行介绍,避免实验中的不必要的错误的出现,有利于实验的开展。实验软件3.1软件介绍及获得在本课程的学习中,将反复用到三款软件:KeiluVision2IDE集成开发环境、SLISP下载软件、串口调试软件等。(1)KeiluVision2IDE集成开发环境该软件是德国KEIL公司出品的51系列单片机C语言集成开发系统。在KEIL公司的网站上获得该软件的安装包。(2)SLISP软件下载工具该软件是广州天河双龙电子有限公司推出的一款ISP下载软件,使用该软件可以将可执行文件下载到机器人单片机上。该软件的使用需要计算机有并行口。可以在双龙公司的网站中获得该软件。(3)串口调试软件此软件是用来显示单片机与计算机的交互信息的。在硬件上,计算机至少要有串口或USB接口来与单片机教学板的串口连接。教材光盘中提供了该软件的绿色版本,无需安装即可使用。3.2安装软件从网站上,或从教材配套光盘中获得了软件安装包,在教材配套光盘中提供了几个文件夹,它们分别是KeiluVision2安装包、ISP软件安装包、串口调试终端、头文件和本书例程的源码。软件的安装很简单,与安装的其他软件过程一样。安装KeiluVision2(1)执行KeiluVision2安装程序,选择安装EvalVersion版进行安装(2)在后续出现的窗口中全部选择Next按钮,将程序默认安装在C:\ProgramFiles\Keil文件目录下(3)将光盘“头文件”文件夹中的文件拷贝到C:\ProgramFiles\Keil\C51\INC文件夹里KeiluVisionIDE软件安装到电脑上的同时,会在你的计算机桌面建立一个快捷方式。安装ISP下载软件与此类似。3.3本章小结本章主要介绍了实验软件的获得和安装,是该实验前期的准备工作,也是一个必要工作。编程与软件使用4.1软件使用双击KeiluVisionIDE的图标,启动KeiluVisionIDE程序,就可以得到KeiluVision2IDE的主界面。通过用Project菜单中的NewProject命令建立项目文件,过程如下:(1)点击Project,会出现图4.1所示的菜单画面,然后选择“NewProject”,将出现图4.2所示对话框图4.1Project菜单画面图4.2CreateNewProject对话框(2)在文件名中输入如“HelloRoBot”,保存在你想保存的位置(如D:\中级机器人制作与编程\程序\Chapter1),可不用加后缀名,点击“保存”,后会出现图4.3所示的窗口。图4.3单片机型号选择窗口(3)这里要求我们选择芯片的类型,KeiluVision2IDE几乎支持所有的51核心单片机,并以列表的形式给出。本教材使用的是Atmel公司的AT89S52,在KeiluVision2IDE提供的数据库(Database)列表中找到此款芯片,然后点击确定,会出现图4.4所示的窗口,询问你是否加载8051启动代码,在这里我们选择“否”,不加载。之后会出现图4.5画面,此时即得到了项目文件。图4.4是否加载8051启动代码提示窗口图4.5目标工程窗口项目文件创建后,这时只有一个框架,紧接着需要向项目文件中添加程序文件内容。KeiluVision2支持C语言程序。可以是已经建立好的程序文件,也可以是新建的程序文件。如果是建立好了的程序文件,则直接用后面的方法添加;如果是新建立的程序文件,则先将程序文件.c存盘后再添加。点击按钮(或通过“File->New”操作)为该项目新建一个C语言程序文件,保存后弹出对话窗口,将文件保存在项目文件夹中,在文件类型中填写.C(这里.C为文件扩展名,表示此文件类型为C语言源文件),因为下面将采用C语言编写第一个程序。4.2工程项目1.单击图4.5中的“+”,将出现图4.6所示的列表;2.然后右键点击“SourceGroup1”,在出现的菜单下选择“AddFileToGroup“SourceGroup1”,出现AddFilestoGroupSource‘Group1’对话框。在该对话框中选择需要添加的程序文件,如刚才建立HelloRoBot.c,单击Add按钮,把所选文件添加到项目文件中。一次可添加多个文件。3.程序文件添加到项目文件中去后,这时上图中“SourceGroup1”的前面将出现一个“+”号;单击它将出现刚才添加的源文件名,如图4.7所示(注意:图中显示的文件名是刚才输入的文件名)。图4.6添加C语言文件到目标工程图4.7添加了C语言文件的目标工程双击源文件即可显示源文件的编辑界面。下面来产生下载需要的可执行文件。要产生可执行的.Hex文件,需要对目标工程“Target1”进行编译设置,右键点击“Target1”,选择“Optionfortarget‘Target1’”。点击“output”,选择其中的“CreateHEXFile”,如图4.8所示,点击确定关闭设置窗口。然后点击KeiluVisionIDE快捷工具栏中的,Keil的C编译器开始根据要生成的目标文件类型对目标工程项目中的C语言源文件进行编译。编译过程中,可以观察到源文件中有没有错误产生,如果没有错误产生,在IDE主窗口的下面出现如图4.9的提示信息,表明已成功生成了可执行文件,并存储在C语言源程序存储的目录中,文件名就是HelloRoBot.Hex。图4.8设置目标工程的编译输出文件类型图4.9编译过程的输出提示信息4.3下载可执行文件到单片机点击ISP下载软件图标,打开ISP下载软件窗口如图4.10所示,并将通信参数设置成图中所示的参数。第一个为接口类型选择窗口,该窗口的下拉列表中提供了许多接口类型:串口COM1~COM16、并口LPT1~LPT3以及USB接口等。教材使用并口LPT1。第二个为下载速度选择窗口,该窗口内容与接口类型紧密相连。不同的接口,该窗口就提供不同内容的下载速度。若选择LPT1,则提供了五种下载速度:TURBO模式、FAST模式、NORMAL模式、SLOW模式和TURBOSLOW模式。在这五种模式下,程序下载速度依次减小。教材中的例程使用的是第一个模式TURBO模式,下载速度最快。第三个为单片机型号选择窗口,点击“Flash”,选择要下载的可执行HEX文件——HelloRoBot.Hex,选择后点击编程开始下载。如果下载成功,则下面显示“完成次数:x次”,否则显示“失败次数:x次”。如果芯片是第二次下载程序,请先选中“擦除”复选框。图4.10下载软件4.4本章总结本章主要介绍了软件的使用和编程的初级训练,便于后期实验的开展。履带机器人电机控制程序本章主要对如何使用头文件“BetaRobot.h”进行一个简要介绍。PWM_Init()函数该函数的作用是为初始化第一层与第二层之间的TTL串口连接。其中TTL串口的数据输出口定义为P1.0口,在程序设计的过程中,请回避该端口,避免引起机器人运动控制的错误。在KEIL工程中,如果要使用到机器人的运动控制部分,那么在主程序的开头部分,就必须首先执行该函数,进行TTL串口初始化。如:voidmain(void){…//变量声明PWM_Init();…//其他操作}write_pwm(unsignedcharbDirection,unsignedcharbSide,unsignedcharbStop,unsignedcharTimeFactor,unsignedcharSpeedByte,unsignedcharTimeByte)作用:AT89S52单片机向直流电机发送指令5.1电机控制参数bDirection:方向参数。1(或POSITIVE_DIR)为正向,0(或NEGATIVE_DIR)为反向bSide:左右电机选择参数。0(或LEFT_MOTOR)为左电机,1(或RIGHT_MOTOR)为右电机bStop:是否停止。0(或NOT_STOP)为不停止,1(或STOP)为停止。该参数为1时,电机停止运动,且下面的速度和时间控制参数无效。TimeFactor:时间因数。有3个级别,该值为0时,单位为10毫秒,1为100毫秒,2为1000毫秒。也可以用BY_10MS,BY_100MS,BY_1000MS等宏定义代替。Speed:速度参数。从慢到快,0~255。TimeByte:时间倍数。该数值乘以时间因数,得到的即为实际运动时间。该值范围为0~255。龙人贝塔的运动方向控制:龙人贝塔机器人与实际生活中的坦克车、推土车等依靠履带运动的设备的运动方式是一致的。前进和后退:两轮一个正转,一个反转,以同样的速度运转。具体哪个正转,哪个反转,视前轮驱动和后轮驱动的不同而不同。原地左转或右转:两轮以同样的速度运转,且运动方向一致。成弧线左转或右转:两轮以不一样的速度运转,且运动方向一致。5.2其他头文件uart.h:硬串口的相关程序。包含该文件后,在程序中调用uart_Init()函数,即可完硬串口的初始化。soft_rs232.h:TTL-RS232的实现程序。在该文件中,可修改TTL-RS232的通信波特率以及输出端口。如果在设置的TTL-RS232数据输出端口外接一个RS232电平转换芯片并搭载DB9串口接口,这样相当于构建了C51平台上的第二个串口。该程序构建的串口为单工串口。Movement.h:该文件提供了龙人贝塔的运动控制函数的范例。在包含该文件之前,请包含BetaRobot.h文件。否则,在编译程序的时候会出现错误。5.3电机控制程序示例1.HelloRoBot从单片机往计算机发送一个字符串2.HighLowLED使接在P1.5端口上的LED灯闪烁3.SingleWheel一个轮子转动4.BothWheel两个轮子转动5.ControlMotorWithComputer使用串口调试工具控制机器人的运动6.RobotForwardThreeSeconds机器人向前运动3秒7.ForwardLeftRightBackward机器人按向前、向左转、向右转和后退的顺序动作8.StartAndStopWithRamping机器人做加速、匀速(最大速度)和减速的动作9.MovementsWithFunctions使用多个函数控制机器人的运动10.MovementsWithOneFuntion仅使用一个函数控制机器人的运动11.NavigationWithSwitch使用数组控制机器人的运动12.TestLeftIrPair测试红外发射/接收传感器模块13.FastIrRoaming利用红外蔽障14.TestWhiskers测试触须传感器模块15.RoamingWithWhiskers利用触须蔽障16.TestLeftPhotoresistor测试光敏电阻传感器模块17.RoamingTowardTheLight利用光敏电阻跟随光源5.4本章小结通过本章的学习,对履带机器人的编程有了基本的掌握,对以后的训练学习有极大的帮助,同时本章的学习可以帮助读者快速掌握履带机器人的编程控制,节省时间。履带机器人日字行走6.1程序设计根据电机的行走路径分模块编写程序分模块编程根据电机的行走路径分模块编写程序分模块编程分析日字行走电机转向及直线行走时间开始6.2程序代码#include<BetaRobot.h>#include<uart.h>intmain(void){ inti; uart_Init(); delay_nms(1000); PWM_Init(); for(i=0;i<4;i++) {write_pwm(POSITIVE_DIR,LEFT_MOTOR,NOT_STOP,BY_100MS,200,78);write_pwm(POSITIVE_DIR,RIGHT_MOTOR,NOT_STOP,BY_100MS,200,78);//向右转1/4圈delay_nms(2000); write_pwm(NEGATIVE_DIR,LEFT_MOTOR,NOT_STOP,BY_100MS,200,100);write_pwm(POSITIVE_DIR,RIGHT_MOTOR,NOT_STOP,BY_100MS,200,100); //向前delay_nms(2000); } for(i=0;i<4;i++) {write_pwm(NEGATIVE_DIR,LEFT_MOTOR,NOT_STOP,BY_100MS,200,80);write_pwm(NEGATIVE_DIR,RIGHT_MOTOR,NOT_STOP,BY_100MS,200,80);//向左转1/4圈delay_nms(2000);write_pwm(NEGATIVE_DIR,LEFT_MOTOR,NOT_STOP,BY_100MS,200,100);write_pwm(POSITIVE_DIR,RIGHT_MOTOR,NOT_STOP,BY_100MS,200,100); //向前delay_nms(2000); }delay_nms(4000); while(1); }6.3训练拓展——S形路线#include<BetaRobot.h>#include<uart.h>intmain(void){uart_Init(); //初始化C51串口,波特率为9600bps,8位数据位,1位停止位,无校验位printf("Testingfortwowheels!\r\n");PWM_Init(); //初始化C51单片机与PWM直流电机控制模块之间的连接write_pwm(NEGATIVE_DIR,RIGHT_MOTOR,NOT_STOP,BY_1000MS,250,70);write_pwm(POSITIVE_DIR,LEFT_MOTOR,NOT_STOP,BY_1000MS,250,70);write_pwm(NEGATIVE_DIR,RIGHT_MOTOR,NOT_STOP,BY_1000MS,250,70);delay_nms(1200); write_pwm(NEGATIVE_DIR,LEFT_MOTOR,NOT_STOP,BY_1000MS,250,70)write_pwm(NEGATIVE_DIR,RIGHT_MOTOR,NOT_STOP,BY_1000MS,250,70);delay_nms(900);write_pwm(POSITIVE_DIR,LEFT_MOTOR,NOT_STOP,BY_1000MS,250,70);write_pwm(NEGATIVE_DIR,RIGHT_MOTOR,NOT_STOP,BY_1000MS,250,70);delay_nms(1200); write_pwm(POSITIVE_DIR,LEFT_MOTOR,NOT_STOP,BY_1000MS,250,70);write_pwm(POSITIVE_DIR,RIGHT_MOTOR,NOT_STOP,BY_1000MS,250,70);delay_nms(900);write_pwm(POSITIVE_DIR,LEFT_MOTOR,NOT_STOP,BY_1000MS,250,70);write_pwm(NEGATIVE_DIR,RIGHT_MOTOR,NOT_STOP,BY_1000MS,250,70);delay_nms(1200); write_pwm(NEGATIVE_DIR,LEFT_MOTOR,NOT_STOP,BY_1000MS,250,70);write_pwm(NEGATIVE_DIR,RIGHT_MOTOR,NOT_STOP,BY_1000MS,250,70);delay_nms(900);write_pwm(POSITIVE_DIR,LEFT_MOTOR,NOT_STOP,BY_100MS,250,70);write_pwm(NEGATIVE_DIR,RIGHT_MOTOR,NOT_STOP,BY_100MS,250,70);delay_nms(1200); } 6.4本章小结通过本章的学习,对履带机器人的编程控制进行初步训练,巩固所学的知识,同时对实践应用问题有了初步的认识。在日字行走过程中,由于直流电机的运转不稳定,同样的程序可能会走出不同的效果,这样的情况下理论与实践之间产生隔阂,需要我们去不断试验,不断去寻找最理想的程序。履带机器人触须避障本章将通过给机器人增加触觉传感器学习如何使用这些端口来获取外界信息。实际上,对于任何一个自动化系统(不仅仅是机器人),无非都是通过传感器获取外界信息,通过接口进入计算机(或者单片机),由计算机或单片机根据反馈信息进行计算和决策,生成控制命令,然后通过输出接口去控制系统相应的执行机构,完成系统所要完成的任务。因此,学习如何使用单片机的输入接口同学习使用输出接口同等重要。许多自动化机械都依赖于各种触觉型开关,例如当机器人碰到障碍物时,接触开关就会察觉,通过编程让机器人躲开障碍物;旅客登机桥在靠近飞机时为了保护昂贵的飞机,在登机桥接口安装触须,当登机桥离飞机很近后触须就会碰到飞机,立即通知控制器提醒离飞机已经很近了,需要降低靠近速度;工厂利用触觉开关来计量生产线上的工件数量;在工业加工过程中,也被用来排列物体。在所有这些实例中,触觉开关提供的输入通过计算机或者单片机处理后生成其它形式的程序化的输出。本章中,将在机器人前端安装并测试一个称为胡须的触觉开关。对机器人大脑编程来监视触觉开关的状态,以及决定当它遇到障碍物时如何动作。最终的结果就是通过触觉给机器人自动导航。7.1硬件介绍编程让机器人通过触觉胡须导航之前,首先必须安装并测试胡须。图7.1所示是安装机器人触觉胡须所需的硬件元件清单,包括:金属丝2根平头M3×22盘头螺钉2个13mm圆形立柱2个M3尼龙垫圈2个3-pin公-公接头2个220Ω电阻2个10kΩ电阻2个图7.1胡须硬件7.2安装胡须(1)拆掉连接主板到前支架的两颗螺钉(2)参考图7.2,进行下面操作(3)螺钉依次穿过M3尼龙垫圈、13mm圆形立柱(4)螺钉穿过主板上的圆孔之后,拧进主板下面的支架中,但不要拧紧(5)把须状金属丝的其中一个钩在尼龙垫圈之上,另一个钩在尼龙垫圈之下,调整它们的位置使它们横向交叉但又不接触(6)拧紧螺钉到支架上(7)参考接线图7.3,搭建胡须电路。注意:右边胡须状态信息输入是通过P1口的第4脚完成,而左边胡须状态信息输入是通过P2口的第3脚完成图7.2安装机器人胡须图7.3胡须电路示意图(8)确定两条胡须比较靠近,但又不接触面包板上的3-pin头。推荐保持3mm的距离。(9)图7.4所示是实际的参考接线图。(10)安装好触觉胡须的机器人如图7.5所示。图7.4胡须接线图图7.5安装好触须的机器人7.3避障原理观察一下图7.3所示的胡须电路示意图,显然每条胡须都是一个机械式的、接地常开的开关。胡须接地(GND)是因为教学板外围的镀金孔都连接到GND。金属支架和螺丝钉提供电气连接给胡须。通过编程让单片机探测什么时候胡须被触动。由图7.3可知,连接到每个胡须电路的I/O引脚监视着10K上拉电阻上的电压变化。当胡须没有被触动,连接胡须的I/O管脚的电压是5V;在机器人行走过程中,如果有胡须被触动,那就意味着碰到了什么。导航程序需要接受这些输入信息,判断它的意义,调用一系列使机器人倒退、旋转朝不同方向行走的动作子函数以避开障碍物7.4程序设计开始开始两触须均触障?后退左转左转Y右触须触障?后退左转左触须触障?后退右转YYYNN前进N结束7.5程序代码#include<BetaRobot.h>#include<uart.h>voiddown(void);voidback(void);voidright(void);voidleft(void);intP1_4state(void)//获取P1_4的状态,右触须{ return(P1&0x10)?1:0;}intP2_3state(void)//获取P2_3的状态,左触须{ return(P2&0x08)?1:0;}intmain(void){ uart_Init(); delay_nms(100); PWM_Init(); while(1) { if((P1_4state()==0)&&(P2_3state()==0))//两触须均触障 { back();//向后 delay_nms(500); left();//向左 delay_nms(500); left();//向左 delay_nms(500); } elseif(P2_3state()==0)//右触须触障 { back();//向后 delay_nms(500); left();//向左 delay_nms(500); }elseif(P1_4state()==0)//左触须触障 { back();//向后 delay_nms(500); right();//向右 delay_nms(500); } else down();//向前 }}voidback(){ write_pwm(NEGATIVE_DIR,LEFT_MOTOR,NOT_STOP,BY_1000MS,150,40);write_pwm(POSITIVE_DIR,RIGHT_MOTOR,NOT_STOP,BY_1000MS,150,40);}voiddown(){write_pwm(POSITIVE_DIR,LEFT_MOTOR,NOT_STOP,BY_1000MS,150,40); write_pwm(NEGATIVE_DIR,RIGHT_MOTOR,NOT_STOP,BY_1000MS,150,40);}voidright(){write_pwm(POSITIVE_DIR,LEFT_MOTOR,NOT_STOP,BY_1000MS,150,20); write_pwm(POSITIVE_DIR,RIGHT_MOTOR,NOT_STOP,BY_1000MS,150,20);}voidleft(){ write_pwm(NEGATIVE_DIR,LEFT_MOTOR,NOT_STOP,BY_1000MS,150,20); write_pwm(NEGATIVE_DIR,RIGHT_MOTOR,NOT_STOP,BY_1000MS,150,20);}7.6本章小结通过本章的学习,主要对履带机器人的程序控制进行进一步应用于深入学习,对编程的基本思路有了进一步理解。履带机器人红外避障现在许多遥控装置和PDA都使用频率低于可见光的红外线进行通信,而机器人则可以使用红外线进行导航。本章使用一些价格非常便宜且应用广泛的部件,让机器人的C51微控制器可以收发红外光信号,从而实现机器人的红外线导航。前一章的触须接触导航是依靠接触变形来探测物体,而在许多情况下,你希望不必接触物体就能探测到物体。许多机器人使用雷达(RADAR)或者声纳(SONAR)来探测物体而不需同物体接触。本章的方法是使用红外光来照射机器人前进的路线,然后确定何时有光线从被探测目标反射回来,通过检测反射回来的红外光就可以确定前方是否有物体。由于红外遥控技术的发展,现在红外线发射器和接收器已经很普及并且价格很便宜。当汽车前灯射出的光从障碍物体反射回来时,人的眼睛就发现了障碍物体,然后大脑处理这些信息,并据此控制身体动作驾驶汽车。机器人使用红外线二极管LED作为前灯,如图8.1所示。图8.1用红外光探测障碍物图8.2需要用到的新部件红外线二极管发射红外光,如果机器人前面有障碍物,红外线从物体反射回来,相当于机器人眼睛的红外检测(接收)器,检测到反射回的红外光线,并发出信号来表明检测到从物体反射回红外线。机器人的大脑——单片机AT89S52基于这个传感器的输入控制伺服电机。红外线(IR)接收/检测器有内置的光滤波器,除了需要检测的980nm波长的红外线外,它几乎不允许其它光通过。红外检测器还有一个电子滤波器,它只允许大约38.5kHz的电信号通过。换句话说,检测器只寻找每秒闪烁38,500次的红外光。这就防止了普通光源象太阳光和室内光对IR的干涉。太阳光是直流干涉(0Hz)源,而室内光依赖于所在区域的主电源,闪烁频率接近100或120Hz。由于120Hz在电子滤波器的38.5kHz通带频率之外,它完全被IR探测器忽略。8.1硬件介绍两个红外检测器、两个IRLED、四个470□电阻、两个9013三极管,如图8.2所示。8.2电路原理及硬件接线电路板的每个角安装一个IR组(IRLED和检测器)。(1)断开主板和伺服系统的电源(2)建立图8.3所示的电路,可参考实物图8.4图8.3左侧和右侧IR组原理图图8.4实物图8.3硬件选择说明8.3.1三极管9013因为C51的IO驱动能力较弱,这里我们加入三极管使其工作在开关状态。三极管是一种控制元件,主要用来控制电流大小,简单地说,是用小电流去控制大电流。通过工艺的方法,把两个二极管背靠背地连接起来就组成了三极管。按PN结的组合方式不同分为PNP型和NPN型。本任务中用到的是NPN型三极管9013,结构示意图及符号图如8.5,管脚图如8.6。图8.5结构图及符号图8.49013管脚图9013的工作原理:它的基区做得很薄,当按图5-3连接时,发射结正偏,集电结反偏,发射区向基区注入电子,这时由于集电结反偏,对基区的电子有很强的吸引力,所以由发射区注入基区的电子大部分进入集电区,于是集电极的电流得到了增大。在这个任务中,三极管相当于一个开关:当P1_3(P3_6)置高时,从集电区经基区到发射区电路导通,加载在IRLED上的电压为VCC(5V),IRLED向外发射红外线;当P1_3(P3_6)置低时,电路又断开,IRLED停止发射。8.3.2测试红外发射探测器用P1_3发送持续1毫秒的38.5kHz的红外光,如果红外光被小车路径上的物体反C51单片机与智能机器人射回来,红外检测器将给微控制器发送一个信号,让它知道已经检测到反射回的红外光。让每个IRLED探测器组工作的关键是发送1毫秒频率为38.5kHz的红外信号,然后立刻将IR探测器的输出存储到一个变量中。下面是一个例子,它发送38.5kHz信号给连接到P1_3的IR发射器,然后用整型变量irDetectLeft存储连接到P1_2的IR探测器的输出。当没有红外信号返回时,探测器的输出状态为高。当它探测到被物体反射的38500Hz红外信号时,它的输出为低。因红外信号发送的持续时间为1毫秒,因此IR探测器的输出如果处于低,其持续状态也不会超过1毫秒,因此发送完信号后必须立即将IR探测器的输出存储到变量中。这些存储的值会显示在调试终端或被机器人用来导航8.4程序设计开始开始两侧均检测到物体?后退左转左转Y右侧检测到物体?后退左转左侧检测到物体?后退右转YYNN前进N结束右侧发射右侧接收左侧发射左侧接收8.5程序代码#include<BetaRobot.h>#include<uart.h>#include<intrins.h>sbitLeftIR=P1^2;//左边红外接收连接到P1.2sbitRightIR=P3^5;//右边红外接收连接到P3.5sbitLeftLaunch=P1^3;//左边红外发射连接到P1.3sbitRightLaunch=P3^6;//右边红外发射连接到P3.6voidIRLaunch(unsignedcharIR){intcounter;if(IR=='L')//左边发射for(counter=0;counter<38;counter++){LeftLaunch=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();LeftLaunch=0;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}if(IR=='R')//右边发射for(counter=0;counter<38;counter++){RightLaunch=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();RightLaunch=0;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}}voidback(){ write_pwm(NEGATIVE_DIR,LEFT_MOTOR,NOT_STOP,BY_1000MS,150,40); write_pwm(POSITIVE_DIR,RIGHT_MOTOR,NOT_STOP,BY_1000MS,150,40);//向后}voiddown(){write_pwm(POSITIVE_DIR,LEFT_MOTOR,NOT_STOP,BY_1000MS,150,40); write_pwm(NEGATIVE_DIR,RIGHT_MOTOR,NOT_STOP,BY_1000MS,150,40);//向前}voidleft(){write_pwm(POSITIVE_DIR,LEFT_MOTOR,NOT_STOP,BY_1000MS,150,20); write_pwm(POSITIVE_DIR,RIGHT_MOTOR,NOT_STOP,BY_1000MS,150,20);//向右转}voidright(){ write_pwm(NEGATIVE_DIR,LEFT_MOTOR,NOT_STOP,BY_1000MS,150,20); write_pwm(NEGATIVE_DIR,RIGHT_MOTOR,NOT_STOP,BY_1000MS,150,20);//向右转}intmain(void){ intirDetectLeft,irDetectRight; uart_Init(); printf("ProgramRunning!\n");PWM_Init(); while(1) { IRLaunch('R');//右边发射 irDetectRight=RightIR;//右边接收 IRLaunch('L');//左边发射 irDetectLeft=LeftIR;//左边接收 if((irDetectLeft==0)&&(irDetectRight==0))//两探测器均检测到物体 { back();//向后 delay_nms(500); left();//向左 delay_nms(500); left();//向左 delay_nms(500); } elseif(irDetectLeft==0)//左探测器检测到物体 { back();//向后 delay_nms(500); right();//向右 delay_nms(500); }elseif(irDetectRight==0)//右探测器检测到物体 { back();//向后 delay_nms(500); left();//向左 delay_nms(500); } else down();//向前 }}8.6本章小结通过本章的学习,主要对机器人利用红外线进行通信的原理进行了学习,并通过编程实现了履带机器人利用红外信号进行导航,巩固了前几章学到的知识,同时也加深了对控制、自动化相关知识的理解。总结与展望这一次的机电综合实验让我们收获很多,通过这次综合实验,我们对单片机的原理及应用有了更进一步的学习,提升了对自动化的认识,有助于以后的学习及设计。通过参加这次实验,团队每个人都感到收获颇多,从实验最初的软硬件熟悉,一直到后来的应用,查询各种资料进行学习,我们小组成员都不论对软件的操作能力还是理论知识都有了很大的提升。在实验过程中,我们遇到了许多问题,比如如何确定机器人电机的转速,如何让电机运行更加稳定,如何减小机器人运动过程产生的轨迹误差等,一开始小组成员想了许多方案,同时也和一些编程能力突出的同学进行请教,最后通过每个人不懈的努力,解决了一些问题。通过解决这些问题,我们每个人都学习到了很多,不管研究还是学习,没有一件事情是直接可以得到结论的,也没有一件是可以不劳而获的,在以后的学习中我们要更加注意这一点。通过这次实验,我们学到了很多知识,包括专业知识、理论知识的应用、专业软件的使用等。在项目研究过程中深刻感受到团队的力量以及团队工作的重要性,在此我们项目组所有成员向在设计研究过程中帮助过我们的老师表示感谢,感谢指导老师一直以来尽心的指导。参考文献[1]秦志强,等.C51单片机应用与C语言程序设计.北京:电子工业出版社,2014[2]谢维成,杨加国,等.单片机原理与应用及C51程序设计.第二版.北京:清华大学,2009致谢在本文完成之际,谨向曾经给予我关心、指导和帮助的所有老师、同学和朋友们致以衷心的感谢!衷心感谢我敬爱的指导老师!本文在课题研究和具体写作过程中,受到老师的悉心指导和热心帮助。最后感谢所有帮助、关心过我的人。2016年5月于湖南大学基于C8051F单片机直流电动机反馈控制系统的设计与研究基于单片机的嵌入式Web服务器的研究MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究基于模糊控制的电阻钎焊单片机温度控制系统的研制基于MCS-51系列单片机的通用控制模块的研究基于单片机实现的供暖系统最佳启停自校正(STR)调节器单片机控制的二级倒立摆系统的研究基于增强型51系列单片机的TCP/IP协议栈的实现基于单片机的蓄电池自动监测系统基于32位嵌入式单片机系统的图像采集与处理技术的研究基于单片机的作物营养诊断专家系统的研究基于单片机的交流伺服电机运动控制系统研究与开发基于单片机的泵管内壁硬度测试仪的研制基于单片机的自动找平控制系统研究基于C8051F040单片机的嵌入式系统开发基于单片机的液压动力系统状态监测仪开发模糊Smith智能控制方法的研究及其单片机实现一种基于单片机的轴快流CO〈,2〉激光器的手持控制面板的研制基于双单片机冲床数控系统的研究基于CYGNAL单片机的在线间歇式浊度仪的研制基于单片机的喷油泵试验台控制器的研制基于单片机的软起动器的研究和设计基于单片机控制的高速快走丝电火花线切割机床短循环走丝方式研究基于单片机的机电产品控制系统开发基于PIC单片机的智能手机充电器基于单片机的实时内核设计及其应用研究基于单片机的远程抄表系统的设计与研究基于单片机的烟气二氧化硫浓度检测仪的研制基于微型光谱仪的单片机系统单片机系统软件构件开发的技术研究基于单片机的液体点滴速度自动检测仪的研制基于单片机系统的多功能温度测量仪的研制基于PIC单片机的电能采集终端的设计和应用基于单片机的光纤光栅解调仪的研制气压式线性摩擦焊机单片机控制系统的研制基于单片机的数字磁通门传感器基于单片机的旋转变压器-数字转换器的研究基于单片机的光纤Bragg光栅解调系统的研究单片机控制的便携式多功能乳腺治疗仪的研制基于C8051F020单片机的多生理信号检测仪基于单片机的电机运动控制系统设计Pico专用单片机核的可测性设计研究基于MCS-51单片机的热量计基于双单片机的智能遥测微型气象站MCS-51单片机构建机器人的实践研究基于单片机的轮轨力检测基于单片机的GPS定位仪的研究与实现基于单片机的电液伺服控制系统用于单片机系统的MMC卡文件系统研制基于单片机的时控和计数系统性能优化的研究基于单片机和CPLD的粗光栅位移测量系统研究单片机控制的后备式方波UPS提升高职学生单片机应用能力的探究基于单片机控制的自动低频减载装置研究基于单片机控制的水下焊接电源的研究基于单片机的多通道数据采集系统基于uPSD3234单片机的氚表面污染测量仪的研制基于单片机的红外测油仪的研究96系列单片机仿真器研究与设计基于单片机的单晶金刚石刀具刃磨设备的数控改造基于单片机的温度智能控制系统的设计与实现基于MSP430单片机的电梯门机控制器的研制基于单片机的气体测漏仪的研究基于三菱M16C/6N系列单片机的CAN/USB协议转换器基于单片机和DSP的变压器油色谱在线监测技术研究基于单片机的膛壁温度报警系统设计基于AVR单片机的低压无功补偿控制器的设计基于单片机船舶电力推进电机监测系统基于单片机网络的振动信号的采集系统基于单片机的大容量数据存储技术的应用研究基于单片机的叠图机研究与教学方法实践基于单片机嵌入式Web服务器技术的研究及实现基于AT89S52单片机的通用数据采集系统基于单片机的多道脉冲幅度分析仪研究机器人旋转电弧传感角焊缝跟踪单片机控制系统基于单片机的控制系统在PLC虚拟教学实验中的应用研究基于单片机系统的网络通信研究与应用基于PIC16F877单片机的莫尔斯码自动译码系统设计与研究基于单片机的模糊控制器在工业电阻炉上的应用研究HYPERLINK"/detail

温馨提示

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

评论

0/150

提交评论