已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本 科 毕 业 设 计毕业设计题目: “龙人宝贝”机器人的结构设计与控制 学 生 姓 名: 学 号: 系 别: 专 业 班 级: 指导教师姓名及职称: 起 止 时 间: 2011年3月 2011年 6月摘 要本文所设计的机器人是以学校实验室中的“龙人宝贝”为参考而设计的。内容是对基于单片机的机器人的结构设计与控制系统的设计,综合运用C51单片机,电子电路等知识进行智能移动机器人的控制系统设计以及研究。本论文不仅注重理论知识的探讨,更注重于理论知识在实际中的应用。本文详细介绍机器人的硬件机构以及软件的设计,同时利用传感器使机器人前行、智能壁障,并对其进行运动仿真。关键词:机器人 单片机 控制系统 运动仿真Abstract This robot is designed for laboratories in schools, Dragon Baby as a reference and design.Content is the robot control system based on single chip design, the integrated use of C51 microcontroller, electronic circuits and other knowledge for intelligent mobile robot control system design and research.This thesis not only of theoretical knowledge-oriented, more focused on theoretical knowledge in practical application. This paper describes the robot hardware and software design of institutions.While taking advantage of the sensor to the robot forward, smart barrier, and its motion simulation. Key words: robot control system for motion simulation of single chip目 录1、前言12、智能机器人研究的概况22.1智能机器人研究的目的和意义22.2智能机器人的研究现状与发展趋势32.3本课题的主要内容53、机器人的结构和外观设计53.1“龙人宝贝”机器人的介绍53.2“龙人宝贝”结构及参数53.3机器人结构与外观设计63.4三维建模63.5龙人机器人二维图104、机器人的控制与实现114.1硬件模块114.2软件模块154.3控制程序155、总结23致 谢24参考文献25附录26 “龙人宝贝”机器人的结构设计与控制孙浩1、前言机器人(Robot)是自动执行工作的机器装置。它既可以接受人类指挥,又可以运行预先编排的程序,也可以根据以人工智能技术制定的原则纲领行动。它的任务是协助或取代人类工作的工作,例如生产业、建筑业,或是危险的工作。现在,国际上对机器人的概念已经逐渐趋近一致。一般来说,人们都可以接受这种说法,即机器人是靠自身动力和控制能力来实现各种功能的一种机器。联合国标准化组织采纳了美国机器人协会给机器人下的定义:“一种可编程和多功能的、用来搬运材料、零件、工具的操作机;或是为了执行不同的任务而具有可用电脑改变和可编程动作的专门系统。”机器人一般由执行机构、驱动装置、检测装置和控制系统和复杂机械等组成。随着微电子技术的不断发展,微处理器芯片的集成程度越来越高,单片机已可以在一块芯片上同时集成CPU、存储器、并行和串行接口A/D转换器等多种电路,这种技术促使机器人技术也有了突飞猛进的发展。本文研究的机器人,它根据学校实验室中的“龙人宝贝”机器人为基础而设计与调试以及程序代码的编写,掌握机器人设计的基本方法。为此,该机器人硬件的核心采用C51单片机作为机器人的大脑,把它设计成控制板,通过控制板实现机器人的运动,以此机器人作为典型工程对象,可以完成机器人所需具备的探测周边环境、做出决策、控制机器人运动的基本能力,使机器人具有基本的智能。2、智能机器人研究的概况2.1智能机器人研究的目的和意义机器人是集机械、电子、控制、计算机、传感器、人工智能等多学科先进技术于一体的现代制造业重要的自动化装备。自从1962年美国研制出世界上第一台工业机器人以来,机器人技术及其产品发展很快,已成为柔性制造系( FMS) 、自动化工厂( FA) 、计算机集成制造系统(CIMS)的自动化工具。广泛采用工业机器人,不仅可提高产品的质量与数量,而且保障人身安全、改善劳动环境、减轻劳动强度、提高劳动生产率、节约材料消耗以及降低生产成本有着十分重要的意义。和计算机、网络技术一样,机器人的广泛应用正在日益改变着人类的生产和生活方式。20世纪80年代以来,工业机器人技术逐渐成熟,并很快得到推广,目前已经在工业生产的许多领域得到应用。在工业机器人逐渐得到推广和普及的过程中,下面三个方面的技术进步起着非常重要的作用。(1)驱动方式的改变20世纪70年代后期,日本安川电动机公司研制开发出了第一台全电动的工业机器人,而此前的工业机器人基本上采用液压驱动方式。与采用液压驱动的机器人相比,采用伺服电动机驱动的机器人在响应速度、精度、灵活性等方面都有很大提高,因此,也逐步代替了采用液压驱动的机器人,成为工业机器人驱动方式的主流。在此过程中,谐波减速器、R V减速器等高性能减速机构的发展也功不可没。近年来,交流伺服驱动已经逐渐代替传统的直流伺服驱动方式,直线电动机等新型驱动方式在许多应用领域也有了长足发展。(2)信息处理速度的提高机器人的动作通常是通过机器人各个关节的驱动电动机的运动而实现的。为了使机器人完成各种复杂动作,机器人控制器需要进行大量计算,并在此基础上向机器人的各个关节的驱动电动机发出必要的控制指令。随着信息技术的不断发展,C P U的计算能力有了很大提高,机器人控制器的性能也有了很大提高,高性能机器人控制器甚至可以同时控制20多个关节。机器人控制器性能的提高也进一步促进了工业机器人本身性能的提高,并扩大了工业机器人的应用范围。近年来,随着信息技术和网络技术的发展,已经出现了多台机器人通过网络共享信息,并在此基础上进行协调控制的技术趋势。(3)传感器技术的发展机器人技术发展初期,工业机器人只具备检测自身位置、角度和速度的内部传感器。近年来,随着信息处理技术和传感器技术的迅速发展,触觉、力觉、视觉等外部传感器已经在工业机器人中得到广泛应用。各种新型传感器的使用不但提高了工业机器人的智能程度,也进一步拓宽了工业机器人的应用范围。2.2智能机器人的研究现状与发展趋势智能机器人是具有思维、感知和行动功学、人工智能,微电子学,光学, 传感技术、材料科学 仿生学等学科的综合成果。智能机器人可获取、处理和识别多种信息,建立并实时修正环境模型, 自主地完成较为复杂的操作任务, 因此,比一般的工业机器人具有更大的灵活性、机动性和更广泛的应用领域。2O世纪电子计算机的发明, 使人类的脑力劳动自动化成为可能,60年代智能机器人的出现开辟了智能生产自动化的新纪元。机器和生产系统的智能化, 用机器人代替人完成各种任务, 这是人类智慧发展和机器进化的飞跃。智能机器人作为新一代的生产工具,在制造领域中应用, 能排腺人为的不可控因素, 实现高节奏、高效和高质量生产, 并是未来智能生产系统(如CIMS)的重要组成部分。在非制造领域,如核工业、水下、空间,建筑、采掘,教灾 排险和作战等方面, 可代替人完成人所不适或力所不及的各种工作,在原子能、水下和外层空间可开辟新的产业。目前, 我国和许多国家都把智能机器人列为迎接未来挑战的高技术课题, 并制订发展规划,拨出巨款给予支持。因此,预计9O年代, 智能机器人技术将会有突破性的进展。(1)主要研究领域及相关课题典型的智能机器人主要技术内容包括以下方面:1. 感觉识别技术1)视觉研究如三维视觉系统、图像传感器, 颜色识别传感器、特殊环境中用的传感器、视觉通用实时高速处理系统、状况识别技术等;2)触觉研究如接触觉、灵巧传感器、6轴力传感器等;除此之外还有其它如距离觉, 味觉, 嗅觉等。2. 操作、移动技术1)操作技术如直流驱动电机、 执行机构、多指手爪, 操作器的作业坐标控制, 定标,小型轻量化技术、柔性操作器等;2)移动技术在楼梯移动、恶劣道路上行走、省能,两足步行等;3. 控制、 信息处理、人工智能控制、协调控制,、多层递阶控制、远距离控制、 高速高精度控制等;(2)智能机器人研究的发展趋势自动化的需要推动了机器人进步,而机器人的发展提高了自动化水平。为了解决工业、原子能利用、空间探测, 海洋开发、排险,医疗、军事等领域自动化需要而研制有特定应用背景的智能机器人,基本上沿两条道路发展t一是在一般工业机器人基础上,增加各种高性能传感器和知识库,使之具感知能力和动作规划能力二是在遥控操作器基础上增加移动能力、环境感知能力、自诊断自学习力及自主能力。其中包括知识库和专家系统。由于研究目的性明确,针对性强, 实际需要迫切,制造单位与应用单位结合, 资金和人力集中使用, 因此成果显著见效快。目前应用研究主要集中在精密装配机器人、水下机器人、移动机器人等方面。另外,利用神经网络等新技术的智能机器人也引起了人们的重视。近几年来, 许多国家都把智能机器人列为高技术发展规划的重要内容。从研究方式来看,已打破单位和国家的聂限, 出现了单位联合, 跨国共同研究的趋势。如西欧七国高级机器人合作计划、日本的极限作业机器人研究计划、“尤里卡 的欧洲机器人研究计划等。从各国和国际间制订的研究计划来看,虽然项目各异, 但在研究特种作业的移动机器人方面都是不约面同, 说明特种作业的移动机器人是近期竞相研究的重点。目前, 基于感觉控制的第二代机器人已进入普及应用阶段。下一代机器人是具有自适应性、自主性和自然性的高级机器人,预计不久的将来可在技术上实现, 并开始应用。2.3本课题的主要内容1、机器人的结构和外观的设计。2、机器人的造型建模,绘制各零件的二维、三维图形和运动仿真。3、编写程序,实现对机器人的各种运动控制。3、机器人的结构和外观设计3.1“龙人宝贝”机器人的介绍图3.1 “龙人宝贝”机器人龙人宝贝是一个为学习单片机技术与C语言程序设计而开发的基础教育机器人平台,包括一个由两个伺服舵机驱动的铝合金机器人对象和一块带有面包板的C51+AVR教学板,并根据不同课程的需要配有一些基本的传感器和电子元器件包。使用者可跟随所配的教材的章节和步骤,进行平台搭建、电路搭接、编写程序、联机调试、下载至单片机微控制器,以执行各种机器人操作,包括:沿线行走,走迷宫,跟随光源,距离检测或与其他机器人进行通讯沟通。通过以上学习和操作,不仅可以学习C51和AVR单片机的原理和应用技术,同时可以学习C语言程序设计的技能和方法。3.2“龙人宝贝”结构及参数龙人宝贝是一个基于单片机技术与C语言程序设计的创新教育车型机器人,包括一个由两个伺服舵机驱动的机器人对象和一块带有面包板的AVR控制板。性能参数:控制板:C51+AVR 编程语言:C语言 电源:4.5V6V(1800mAh充电电池)电机性能参数:扭力:2.8kgcm(4.8V)3.4 kgcm(6.0V) 重量:41g 3.3机器人结构与外观设计图3.2 “龙人宝贝”机器人三维模型 本文的机器人是以“龙人宝贝”机器人为基础而设计的,图3-2为龙人机器人三维图。他具有水、路两用功能,装有红外线避障装置。由C51单片机控制,两台伺服电动机实现机器人的运动。设计灵感来源于水路两栖坦克,水路两栖坦克利用与军事方面,我的设计的机器人的用途范围可用于军事侦查等方面。3.4三维建模利用三维软件proe4.0建模,首先利用用proe4.0对机器人的每个零件进行建模,最后进行装配,组成最终的三维结构图。Pro/Engineer是由美国PTC公司推出的新一代CAD/CAE/CAM产品,它广泛应用于机械、汽车、航天、家电、玩具、模具、工业设计等行业。Pro/Engineer的功能特点:一、Pro/Engineer的核心技术特点1、基于特征Pro/Engineer以最自然的思考方式从事设计工作,如钻孔、槽、倒圆角等,均视为零件设计的基本特征,除了充分掌握设计概念外,还在设计过程中导入实际的制造观念;也因为以特征作为设计的单元,因此可随时对特征做顺序调整、插入特征、删除特征、重新定义特征等修改操作2、全参数化驱动Pro/Engineer可以通过尺寸驱动设计进行修改,既通过编辑尺寸数值来驱动几何形状的改变,并且可以利用关系生成各类关系式,使某些几何模型可随其他几何尺寸的改变自动改变3、全尺寸约束Pro/Engineer将几何形状与尺寸结合考虑,通过尺寸约束实现对几何形状的控制,造型必须以完整的尺寸参数为出发点(全约束),不能欠约束或过约束。4、单一数据库整个Pro/Engineer建立在统一的数据库上,这样使软件的各模块都在存取同一个数据库中的数据,当修改某一模块中的尺寸参数时,其他相关模块中的相关尺寸也会自动更新。5、支持并行工程Pro/Engineer的产品开发环境支持并行工作,它通过一系列完全相关的模块表述产品的外形、装配及其他功能,可以让多个部门的所有用户同时对同一产品开展设计制造工作,包括对大型项目的装配体管理、功能仿真、制造和数据管理等,具有真正的管理并发进程、实现并行工程的能力。二、Pro/Engineer的功能模块1、工业设计模组(CAID)包含:用于对产品进行几何及外形、外观设计、Pro/Animate(动画仿真)、Pro/Photoreder(效果渲染)2、机械设计模组(CAD)本模块是一个高效的三维机械设计工具,他可以绘制任意复杂形状的零件。图3.3 机械设计模型3、功能仿真模组(CAE)本模块主要进行有限元分析。利用提供的分析功能,在满足零件受力要求的基础上,便可充分优化零件的设计4、制造模组(CAM)在机械行业中用到的制造模块中的功能主要是注塑模具型腔设计与数控加工。 5、数据交换模组(Genometry Translator)本模块自动跟综和管理所创建的数据,这些数据包括存储在模型文件或库零件中的数据。主要完成与其它的CAD系统,如UG、EUCLID、CIMATRTON、MDT等进行几何数据交换。利用三维软件proe4.0建模的机器人的部分零件和三维结构如下图所示:图3.4 浆和轴套 图3.5 电路板图3.6 “龙人宝贝”机器人三维模型3.5龙人机器人二维图上面已经在preo4.0里面画出了三维实体图,现在生成工程图,然后转化成CAD图纸打印出来!在生成工程图的时候,有几点应该必须值得我们去注意的。首先,我们要记得把绘图单位改成mm,因为系统默认的绘图单位是inch,修改方法如下:文件属性绘图选项杂项选项drawing_units在下面弹出选项对话框里把inch改成mm,其次,在主视图投影俯视图之前,应该在属性-绘图选项-projection_type里把third_angle改为first_angle.,最后,在保存副本时应该把保存类型设为dwg或者dxf格式。图3.7 机器人二维图4、机器人的控制与实现4.1硬件模块AT89S52是一种低功耗、高性能CMOS 8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52在众多嵌入式控制应用系统中得到广泛应用。1、与MCS-51单片机产品兼容; 2、8K字节在系统可编程Flash存储器; 3、1000次擦写周期; 4、全静态操作:0Hz-33MHz; 5、三级加密程序存储器; 6、32个可编程I/O口线; 7、三个16位定时器/计数器; 8、六个中断源; 9、全双工UART串行通道; 10、低功耗空闲和掉电模式; 11、掉电后中断可唤醒; 12、看门狗定时器; 13、双数据指针; 14、掉电标识符 。AT89S52 是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程 图4.1 引脚图AT89S52引脚图 DIP封装Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完 全兼容。片上Flash允许程序存储器在系统可编程,亦适于 常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统 可编程Flash,使得AT89S52为众多嵌入式控制应用系统提 供高灵活、超有效的解决方案。 AT89S52具有以下标准功能: 8k字节Flash,256字节RAM, 32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口, 片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻 辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工 作。掉电保护方式下,RAM内容被保存,振荡器被冻结, 单片机一切工作停止,直到下一个中断或硬件复位为止。 P0 口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻 辑电平。对P0端口写“1”时,引脚用作高阻抗输入。 当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下, P0不具有内部上拉电阻。 在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验 时,需要外部上拉电阻。 P1 口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4 个 TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入 口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。 此外,P1.0和P1.1分别作定时器/计数器2的外部计数输入(P1.0/T2)和定时器/计数器2 的触发输入(P1.1/T2EX)。 在flash编程和校验时,P1口接收低8位地址字节。 引脚号第二功能: P1.0 T2(定时器/计数器T2的外部计数输入),时钟输出 P1.1 T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制) P1.5 MOSI(在系统编程用) P1.6 MISO(在系统编程用) P1.7 SCK(在系统编程用) P2 口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动 图4.2 引脚图AT89S52引脚图 PLCC封装4 个 TTL 逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入 口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。 在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX DPTR) 时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉发送1。在使用 8位地址(如MOVX RI)访问外部数据存储器时,P2口输出P2锁存器的内容。 在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。 P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p3 输出缓冲器能驱动4 个 TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入 口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。 P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。 在flash编程和校验时,P3口也接收一些控制信号。 端口引脚 第二功能: P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 INTO(外中断0) P3.3 INT1(外中断1) P3.4 TO(定时/计数器0) P3.5 T1(定时/计数器1) P3.6 WR(外部数据存储器写选通) P3.7 RD(外部数据存储器读选通) 此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。 RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。 ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。 PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。 EA/VPP:外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。 XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。 XTAL2:振荡器反相放大器的输出端。4.2软件模块keil uvision2简介Keil uVision2是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,使用接近于传统c语言的语法来开发,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用,而且大大的提高了工作效率和项目开发周期,他还能嵌入汇编,您可以在关键的位置嵌入,使程序达到接近于汇编的工作效率。 系统功能Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面,使您能在很短的时间内就能学会使用keil c51来开发您的单片机应用程序 。 另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。4.3控制程序4.3.1所用相关函数作用及代码 以下是部分相关函数作用及代码,所用的全部相关函数代码在附件中。 #include 头文件的作用:包含程序中需要用到的标准数据类型、标准函数和自定义函数等信息。 uart.h的作用:函数uart_Init()的定义和实现。uart_Init(); /串口初始化 串口初始化函数,用来规定单片机串口是如何与PC通信的。其代码如下:/*- 8051串口中断驱动程序-*/#include #include #define XTAL 11059200#define baudrate 9600#define OLEN 8 /串行发送缓冲区大小unsigned char ostart; /发送缓冲区起始索引unsigned char oend; /发送缓冲区结束索引char idata outbufOLEN; /发送缓冲区存储数组#define ILEN 8 /串行接收缓冲区大小unsigned char istart; /接收缓冲区起始索引unsigned char iend; /接收缓冲区结束索引char idata inbufILEN; /接收缓冲存储数组bit bdata sendfull; /发送缓冲区满标志bit bdata sendactive; /发送有效标志/*串行中断服务程序*/static void com_isr(void) interrupt 4 using 1 /串口中断 /-接收数据中断- char c; if(RI) /接收中断 c=SBUF; /读字符 RI=0; /清接收中断请求标志 if(istart+ILEN!=iend) inbufiend+&(ILEN-1)=c; /缓冲区接收数据 延时函数的程序#include(1)delay_nms(unsigned int n); 毫秒级延时 (2)delay_nus(unsigned int n); 微秒级延时/*- delay functions us&ms-*/ /*内嵌汇编的方法:一般格式 #pragma ASM nop ; #pragma ENDASM,*/void delay_nus(unsigned int i) /延时:i=12 ,i的最小延时单12 us i=i/10; while(-i); void delay_nms(unsigned int n) /延时n ms n=n+1; while(-n) delay_nus(900); /延时 1ms,同时进行补偿 4.3.2基本巡航运动简单运动代码龙人宝贝机器人是由两个伺服电机控制其运动的。当给它一个1300us的脉宽时电机顺时针全速旋转,给它1700us的脉宽它就逆时针全速旋转,给它1500us的脉宽,电机则停止转动。利用这个原理,我们就可以分别给与他们不同的脉宽配合,来完成各种运动。例:Forward=Forward,1700,1300, Backward=Backward,1300,1700,65, LeftTurn=Turn Left,1300,1300,26, RightTurn=Turn Right,1700,1700,26;注:65,26等数字是指循环的次数,这实际是用来控制运动执行的时间。如循环130次大约需要3秒。向前程序代码如下:void For_Ward(void) P1_1=1;delay_nus(Forward.pulseLeft); P1_1=0;P1_0=1;delay_nus(Forward.pulseRight);P1_0=0;delay_nms(20);向左程序代码如下:void Left_Turn(void) int i; for(i=1;i= LeftTurn.counter;i+)P1_1=1;delay_nus(LeftTurn.pulseLeft); P1_1=0;P1_0=1;delay_nus(LeftTurn.pulseRight);P1_0=0;delay_nms(20);向右程序代码如下:void Right_Turn(void) int i; for(i=1;i=RightTurn.counter;i+)P1_1=1;delay_nus(RightTurn.pulseLeft); P1_1=0;P1_0=1;delay_nus(RightTurn.pulseRight);P1_0=0;delay_nms(20);全速前进程序代码如下:#include /宝贝车的标准头文件#include /串口的头文件int main(void) /主函数,程序从这里开始运行usta_Init(); /串口初始化uint16_t counter; /定义16位无符号整型变量SET_DDRD7; /设置PD7为输出口SET_DDRC3; /设置PC3为输出口SET_DDRC2; /设置PC2为输出口printf(Program Runningn);/在调试窗口显示一条信息/*在开始时Counter被设为1,并在每次重复的最后被增加1。在循环重复前,如果Counter大于6000,则循环结束。*/for(counter=1;counter=6000;counter+) /开始/复位信号 HIGH_PORTD7; /设置PD7输出高电平delay_nus(166); /延时0.00016sLOW_PORTD7; /设置PD7输出低电平 delay_nus(166); /延时0.00016s/*在开始时Counter被设为1,并在每次重复的最后被增加1。在循环重复前,如果Counter大于等于130,则循环结束。*/for(counter=0;counter130;counter+)/运行3秒HIGH_PORTC3; /设置PC3输出高电平delay_nus(1700); /延时0.0017sLOW_PORTC3; /设置PC3输出低电平HIGH_PORTC2; /设置PC2输出高电平delay_nus(1300); /延时0.0013sLOW_PORTC2; /设置PC2输出低电平delay_nms(20); /延时20ms4.3.3避障运动流程图开始是否有障碍物直行直行结束停止转向是否图4.3 避障运动流程图 龙人宝贝机器人能实现避障运动,主要是靠两个电机控制其运动。具体流程如上图所示,当打开电源开头,首先就恢复到中间位置,然后控制倾伺服电机运动,前行,当红外线发射器接收到前方有障碍物时,就会给伺服电机给一个适当脉冲首先实现其停止,然后实现机器人的转向。如此循环反复就实现了机器人的避障运动。4.3.4避障运动部分程序以下是实现机器人避障运动的部分程序,完整程序在附件中。红外线导航程序代码如下:#include /宝贝车的标准头文件#include /串口的头文件int PC0_state(void) /获取PC0的状态return (PINC&0x01)?1:0; / 判断红外和声是否遇到探测物int PC1_state(void) /获取PC1的状态return (PINC&0x02)?1:0; / 判断红外和声是否遇到探测物void IRLaunch(unsigned char IR) int counter; if(IR=L) for(counter=0;counter38;counter+) HIGH_PORTD6; delay_nus(13); LOW_PORTD6; delay_nus(13); if(IR=R) for(counter=0;counter38;counter+)/右边发射 HIGH_PORTD5; delay_nus(13); LOW_PORTD5; delay_nus(13); 4.3.5运动实例演示前面提到,只要我们给伺服电机以不同的脉冲宽度配合,就能实现各种运动,比如匀速运动、向左(向右)转弯。下面请允许我演示一下各种运动情况。在展示之前首先利用Keil uVision2软件将已编制的程序生成可执行hex文件,使用AVR_fighter软件通过USBASP下载器,将hex文件下载到单片机中,这样便可以实现自己想要的对机器人各种运动的控制。请看视频短片。可能大家也在录制的视频短片中发现了一些问题与不足,在之后的总结中我也有提到,还请大家多多包涵!5、总结通过这次毕业设计,让我对机械设计以及单片机及编程有了更深一步了解。但由于自身能力及各方面因素,仍还有些不尽如人意的地方。比如,在输出轴上的防水问题考虑的不是很周到、机器人在遇到障碍物的时候停的很急,在机器人的外观合理性、程序的合理性等方面都有待提高,希望下届的师弟师妹们如有做这个毕业设计课题的,能有进一步的改善!致 谢经过二个多月认真而细致的努力,本次毕业设计已经完成,作为一个本科生的毕业设计,由于经验的匮乏,有许多考虑不周的地方,如果没有指导老师的指导,想要顺利完成毕业设计就要花费很多的时间。但在我做毕业设计的每个阶段,从查阅资料到设计草案的确定和修改,中期检查,后期详细设计,装配草图等整个过程中都给予了我悉心的指导。我的设计较为复杂烦琐,但是老师仍然细心地帮我纠正设计中的错误。除了敬佩老师的专业水平外,她的治学严谨和科学研究的精神也是我永远学习的榜样,并将积极影响我今后的学习和工作。 其次要感谢我的同学对我无私的帮助,特别是在机械制图方面,正因为如此我才能顺利的完成设计,最后我还要感谢那些曾给我授过课的每一位老师,是你们教会我专业知识。在此,再一次感谢大家!另外对答辩和评阅的各位老师表示感谢!参考文献1秦志强 51单片机应用与语言程序设计北京 电子工业出版社 20092杨世明主编 机械设计北京 电子工业出版社 20074机械设计手册编委会 机械设计手册机械工业出版社20075谭雪松 甘露萍 张黎骅Pro/ENGINGERR WILDFIRE 中文版基础教程. 人民邮电出版社. 6姜勇主编 AutoCAD2006中文版机械制图基础培训教程 人民邮电出版社 2006附录所用相关函数作用及代码#include 头文件的作用:包含程序中需要用到的标准数据类型、标准函数和自定义函数等信息。 uart.h的作用:函数uart_Init()的定义和实现。uart_Init(); /串口初始化 串口初始化函数,用来规定单片机串口是如何与PC通信的。其代码如下:/*- 8051串口中断驱动程序-*/#include #include #define XTAL 11059200#define baudrate 9600#define OLEN 8 /串行发送缓冲区大小unsigned char ostart; /发送缓冲区起始索引unsigned char oend; /发送缓冲区结束索引char idata outbufOLEN; /发送缓冲区存储数组#define ILEN 8 /串行接收缓冲区大小unsigned char istart; /接收缓冲区起始索引unsigned char iend; /接收缓冲区结束索引char idata inbufILEN; /接收缓冲存储数组bit bdata sendfull; /发送缓冲区满标志bit bdata sendactive; /发送有效标志/*串行中断服务程序*/static void com_isr(void) interrupt 4 using 1 /串口中断 /-接收数据中断- char c; if(RI) /接收中断 c=SBUF; /读字符 RI=0; /清接收中断请求标志 if(istart+ILEN!=iend) inbufiend+&(ILEN-1)=c; /缓冲区接收数据 /-发送数据中断- if(TI) TI=0; /清发送中断标志 if(ostart!=oend) SBUF=outbufostart+&(OLEN-1);/向发送缓冲区传送字符 sendfull=0; /设置缓冲区满标志位 else sendactive=0; /设置发送无效 /PUTBUF: 写字符到SBUF或发送缓冲区void putbuf(char c) if(!sendfull) /如果缓冲区不满就发送 if(!sendactive) sendactive=1; /直接发送一个字符 SBUF=c; /写到SBUF启动缓冲区 else ES=0; /暂时串行口关闭中断 outbufoend+&(OLEN-1)=c; /向发送缓冲区传送字符 if(oendostart)&(OLEN-1)=0) sendfull=1; /设置缓冲区满标志 ES=1; /打开串行口中断 /putchar:中断控制putc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 主管护师考前巩固试题及答案
- 2025年江苏省直机关遴选公务员面试真题及解析
- 2025年青海出租车考试试题模拟题
- -资料员之资料员基础知识通关考试题库带答案解析
- 2025年注册计量师《计量极业实务》时间频率卷
- 2025年农业技术员(中级)职业技能考核真题解析卷
- 华医网基层培训育理论考试真题
- 临床检验仪器复习题及答案
- 2021中级注册安全工程师《煤矿安全》模拟试题2
- 2025年吉林省白城市中考作文押题附范文分析
- 辽海版综合实践活动七年级上册同步课件教案81用好电子小帮手之活动一电子产品走近你我他
- 离职员工不损害公司声誉保证书
- 3.8 第1课时弧长的计算 浙教版数学九年级上册课件
- 初中语+文+第9课《从百草园到三味书屋》课件+统编版语文七年级上册
- Compiere-ERP中文环境的操作流程
- 2024年共青团入团积极分子团校结业考试试题库及答案
- 高标准农田改造提升建设项目投标方案(技术标)
- 市政设施养护维修服务规范(TZSZX002-2022)
- MOOC 创业团队建设与管理-首都经济贸易大学 中国大学慕课答案
- 居民死亡医学证明模板
- 大学英语口语演讲课件
评论
0/150
提交评论