毕业设计(论文) 基于AVR智能车控制系统设计

上传人:无*** 文档编号:78177057 上传时间:2022-04-21 格式:DOC 页数:39 大小:1.11MB
返回 下载 相关 举报
毕业设计(论文) 基于AVR智能车控制系统设计_第1页
第1页 / 共39页
毕业设计(论文) 基于AVR智能车控制系统设计_第2页
第2页 / 共39页
毕业设计(论文) 基于AVR智能车控制系统设计_第3页
第3页 / 共39页
点击查看更多>>
资源描述
基于AVR智能车控制系统 35摘 要 智能机器人能做一些人不能做或危险的事且能提高工作效率,能创造巨大的经济效应,是一个具有巨大潜力的研究领域。AVR单片机是1997年由ATMEL公司研发出的增强型内置Flash的RISC(Reduced Instruction Set CPU) 精简指令集高速8位单片机。AVR的单片机可以广泛应用于计算机外部设备、工业实时控制、仪器仪表、通讯设备、家用电器等各个领域。ATmega8是一种比C51系列更进步的8位单片机。单片微计算机自20世纪70年代问世以来,已对人类社会产生了巨大的影响。目前在工业控制、智能仪器仪表、办公室自动化、家用电器等诸多领域,到处都可以看见单片机的踪影,单片机技术开发和应用水平已成为一个国家工业化发展水平的标志之一。关键词:智能车,单片机,控制系统ABSTRACTIntelligent robot can not do or can do some dangerous things and can improve efficiency, can create significant economic effect, is a potential area of research. AVR Microcontroller ATMEL Corporation in 1997 developed by the enhanced built-in Flash of the RISC (Reduced Instruction Set CPU) high-speed 8-bit RISC microcontroller.AVR microcontroller can be widely used in computer peripherals, industrial real-time control, instrumentation, communications equipment, household appliances and other fields. ATmega8 is more progressive than the C51 series of 8-bit microcontroller. Single-chip micro-computer 70 years since the inception of the 20th century, human society has had a tremendous impact. Present in industrial control, smart instrumentation, office automation, home appliances and many other areas,SCM can be seen everywhere in sight, the level of development and application of SCM technology has become a national industrial development one of the signs. Keywords: Intelligent vehicle,Microcontroller,Control system目 录1 绪 论11.1研究的背景及其意义11.2 智能车的发展趋势22 系统硬件设计52.1 系统整体方案设计52.2 各大模块的设计63 系统软件设计163.1 WinAVR集成开发环境163.2 SL ISP下载工具163.3 串口调试软件163.4 WinAVR简介163.5 编程思路254 总结与展望32参考文献34致 谢35附 录 硬件连接图361 绪 论1.1研究的背景及其意义随着全球经济的发展,道路上车辆急剧增加,但道路的拓宽速度是有限的,道路变得越来越拥挤,与此同时,交通事故数量也急剧增加。交通事故已成为“世界第一害”,而中国是世界上交通事故死亡人数最多的国家之一。从二十世纪八十年代末中国交通事故年死亡人数首次超过五万人,中国(未包括港澳台地区)每年交通事故50万起,因交通事故死亡人数均超过10万人,已经连续十余年居世界第一。2009年,中国汽车保有量约占世界汽车保有量的百分之三,但交通事故死亡人数却占世界的百分之十六。以父亲为例,父亲开了十余年车,大大小小的交通事故发生了数次,每次都让亲朋好友担心不已,也让事故另一方的亲朋好友担心不已。因此如果道路上的车辆都能自动行走,那该有多好呀!智能汽车与一般所说的自动驾驶有所不同,它指的是利用多种传感器和智能公路技术实现的汽车自动驾驶。智能汽车首先有一套导航信息资料库,存有全国高速公路、普通公路、城市道路以及各种服务设施(餐饮、旅馆、加油站、景点、停车场)的信息资料;其次是GPS定位系统,利用这个系统精确定位车辆所在的位置,与道路资料库中的数据相比较,确定以后的行驶方向;道路状况信息系统,由交通管理中心提供实时的前方道路状况信息,如堵车、事故等,必要时及时改变行驶路线;车辆防碰系统,包括探测雷达、信息处理系统、驾驶控制系统 ,控制与其他车辆的距离,在探测到障碍物时及时减速或刹车,并把信息传给指挥中心和其他车辆;紧急报警系统,如果出了事故,自动报告指挥中心进行救援;无线通信系统,用于汽车与指挥中心的联络;自动驾驶系统,用于控制汽车的点火、改变速度和转向等。智能车辆是一个集环境感知、规划决策、多等级辅助驾驶等功能于一体的综合系统,它集中运用了计算机、现代传感、信息融合、通讯、人工智能及自动控制等技术,是典型的高新技术综合体。目前对智能车辆的研究主要致力于提高汽车的安全性、舒适性,以及提供优良的人车交互界面。近年来,智能车辆己经成为世界车辆工程领域研究的热点和汽车工业增长的新动力,很多发达国家都将其纳入到各自重点发展的智能交通系统当中。通常对车辆的操作实质上可视为对一个多输入、多输出、输入输出关系复杂多变、不确定多干扰源的复杂非线性系统的控制过程。驾驶员既要接受环境如道路、拥挤、方向、行人等的信息,还要感受汽车如车速、侧向偏移、横摆角速度等的信息,然后经过判断、分析和决策,并与自己的驾驶经验相比较,确定出应该做的操纵动作,最后由身体、手、脚等来完成操纵车辆的动作。因此在整个驾驶过程中,驾驶员的人为因素占了很大的比重。一旦出现驾驶员长时间驾车、疲劳驾车、判断失误的情况,很容易造成交通事故。智能汽车是一种正在研制的新型高科技汽车,这种汽车不需要人去驾驶,人只舒服地坐在车上享受这高科技的成果就行了。因为这种汽车上装有相当于汽车的“眼睛”、“大脑”和“脚”的电视摄像机、电子计算机和自动操纵系统之类的装置,这些装置都装有非常复杂的电脑程序,所以这种汽车能和人一样会“思考”、“判断”、“行走”,可以自动启动、加速、刹车,可以自动绕过地面障碍物。在复杂多变的情况下,它的“大脑”能随机应变,自动选择最佳方案,指挥汽车正常、顺利地行驶。智能汽车的“眼睛”是装在汽车右前方、上下相隔50厘米处的两台电视摄像机,摄像机内有一个发光装置,可同时发出一条光束,交汇于一定距离,物体的图像只有在这个距离才能被摄取而重叠。“眼睛”能识别车前520米之间的台形平面、高度为10厘米以上的障碍物。如果前方有障碍物,“眼睛” 就会向“大脑”发出信号,“大脑”根据信号和当时当地的实际情况,判断是否通过、绕道、减速或紧急制动和停车,并选择最佳方案,然后以电信号的方式,指令汽车的“脚”进行停车、后退或减速。智能汽车的“脚”就是控制汽车行驶的转向器、制动器。无人驾驶的智能汽车将是新世纪汽车技术飞跃发展的重要标志。可喜的是,智能汽车已从设想走向实践。随着科技的飞速发展,相信不久的将来,我们都可以领略到智能汽车的风采。所以,智能汽车实际上是智能汽车和智能公路组成的系统,目前主要是智能公路的条件还不具备,而在技术上已经可以解决。在智能汽车的目标实现之前,实际上已经出现许多辅助驾驶系统,已经广泛应用在汽车上,如智能雨刷,可以自动感应雨水及雨量,自动开启和停止;自动前照灯,在黄昏光线不足时可以自动打开;智能空调,通过检测人皮肤的温度来控制空调风量和温度;智能悬架,也称主动悬架,自动根据路面情况来控制悬架行程,减少颠簸;防打瞌睡系统,用监测驾驶员的眨眼情况,来确定是否很疲劳,必要时停车报警计算机技术的广泛应用,为汽车的智能化提供了广阔的前景1。1.2 智能车的发展趋势虽然此次毕业设计研究的只是体积较小的智能小车,但希望此次的毕业设计能为智能汽车的研究提供一个小的样本,如果此次的毕业设计能为汽车的智能化以及交通状况的改善做出一点微不足道的贡献,此次毕业设计就将充满意义。主动安全绝对是未来智能汽车最为关键的技术核心,特别是在自动防撞设计上,主要内容包括车体前方/后方/侧边碰撞预警和缓解、车道偏离示警、倒车影像辨识系统、盲点预警、驾驶疲劳警示和自动煞车控制等。未来智能汽车将包含计算机、移动通讯、自动控制等使车辆更具舒适性、娱乐性、安全性、方便性的多项技术。未来智能汽车的系统将由两部分组成,一部分是车辆本身的内部网络系统,它由车载网络计算机控制;另一部分是车辆外部的联系网络系统,包括GPS监测中心、互联网及区域网服务商、车辆服务中心、单位或家庭电脑等2。随着汽车的智能化,未来汽车的安全性将得到质的提升,必将大大减少交通事故的发生,如此便不会有那么多的人生悲剧发生,也会让每一位司机的家人安心、不会担心到天亮。中国从上世纪80年代开始着手无人驾驶系统的研制开发,虽与国外相比还有一些距离,但目前也取得了阶段性成果。国内清华大学、国防科技大学、上海交通大学、西安交通大学、吉林大学、同济大学等都有过无人驾驶汽车的研究项目。 1992年,国防科技大学研制成功了中国第一辆真正意义上的无人驾驶汽车。由计算机及其配套的检测传感器和液压控制系统组成的汽车计算机自动驾驶系统,被安装在一辆国产的中型面包车上,使该车既保持了原有的人工驾驶性能,又能够用计算机控制进行自动驾驶行车。2000年6月,国防科技大学研制的第4代无人驾驶汽车试验成功,最高时速达76km,创下国内最高纪录。2003年7月,国防科技大学和中国一汽联合研发的红旗无人驾驶轿车高速公路试验成功,自主驾驶最高稳定时速13Okm,其总体技术性能和指标已经达到世界先进水平。THMRV(TsingHua Mobile Robot V)清华V型智能车是清华大学计算机系智能技术与系统国家重点实验室在中国科学院院士张拔主持下研制的新一代智能移动机器人,兼有面向高速公路和一般道路的功能。车体采用道奇7座厢式车改装,装备有彩色摄像机和激光测距仪组成的道路与障碍物检测系统;由差分GPS、磁罗盘和光码盘组成的组合定位导航系统等。两套计算机系统分别进行视觉住处处理,完成信息融合、路径规划、行为与决策控制等功能。四台IPC工控机分别完成激光测距信息处理、定位信息处理、通讯管理、驾驶控制等功能。设计车速高速公路为80km/h,一般道路为20 km/h。目前已能够在校园的非结构化道路环境下,进行道路跟踪和避障自主行驶。汽车的智能化可以减轻驾驶员的疲劳,适应复杂的天气条件,减少交通事故的发生。此外,西安交通大学搭建了Spingrobot智能车实验平台,并于2005年10月成功完成在敦煌“新丝绸之路”活动中的演示。同济大学2006年研发了一辆无人驾驶清洁能源电动游览车,最高时速为50km/h,可应用于人们观光旅游。吉林大学和中科院沈阳自动化所在无人驾驶智能车方面也研究较早,取得不少成果。从20世纪70年代,美欧等发达国家开始进行无人驾驶汽车的研究,大致可以分为二个阶段:军事用途、高速公路环境和城市环境。在军事用途方面,早在80年代初期,美国国防部就大规模资助自主陆地车辆ALV (Autonomous LandVehicle)的研究。进入21世纪,为促进无人驾驶车辆的研发,从2004年起,美国国防部高级研究项目局(DARPA)开始举办机器车挑战大赛(Grand Challenge)。该大赛对促进智能车辆技术交流与创新起到很大激励作用。在2005年的第二届比赛中,主办方只在赛前2小时提供一张光盘,上面提供了比赛路线上2935个“路点”的方位与海拔等详细资料。整个赛道有急转弯、隧道、路口还有山路,比赛要求参赛车辆能够自主完成全部路程。最终斯坦福大学的“斯塔利”,获得了第1名。具有6个奔腾M处理器的电脑完成“斯坦利”的所有程序的处理。车辆移动时,4个激光传感器、一个雷达系统、一组立体摄像头和一个单眼视觉系统感知周围的环境。2006年德国举办了欧洲陆地机器人竞赛(European Land Robot Trial,简称(ELROB),德国的参赛车“途锐”取得了冠军。该车通过影像处理寻找道路,周围景物被处理成3D影像。该车由光学定向与测距系统对收集的信息进行导航决策,分析哪里是行人哪里是树木。“途锐”自主行驶了90%的赛程,不过在通过关键十字路口时还是靠手动驾驶。随着汽车电子技术的发展,汽车智能化技术正在逐步得到应用,这种技术使汽车的操纵越来越简单,动力性和经济性越来越高,行驶安全性越来越好,因此,智能化是未来汽车发展的趋势3。2 系统硬件设计2.1 系统整体方案设计本次毕业设计所用的实物为智能车,将其分为驱动模块、控制模块、寻线模块、电源模块四大模块设计。 图2-1 系统框图控制模块:本次毕业设计所用的控制芯片为ATmega8芯片。在AVR家族中,ATmega8是一种非常特殊的单片机,它的芯片内部集成了较大容量的存储器和丰富强大的硬件接口电路,具备AVR高档单片机MEGE系列的全部性能和特点。但由于采用了小引脚封装(为PDIP28和TQFP/MLF32),所以其价格仅与低档单片机相当,再加上AVR单片机的系统内可编程特性,使得无需购买昂贵的仿真器和编程器也可进行单片机嵌入式系统的设计和开发,同时也为单片机的初学者提供了非常方便和简捷的学习开发环境。ATmega8的这些特点,使其成为一款具有极高性能价格比的单片机,深受广大单片机用户的喜爱,在产品应用市场上极具竞争力,被很多家用电器厂商和仪器仪表行业看中,从而使ATmega8迅速进入大批量的应用领域4。驱动模块:本次毕业设计的智能车驱动模块采用的是两个伺服舵机。交流伺服电机使用方便,转速分辨率高,精度高,闭环运行,驱动器输出编码器信号,可实现大闭环。驱动芯片为MAX232,MAX232芯片是美信公司专门为电脑的RS-232标准串口设计的单电源电平转换芯片,使用+5v单电源供电5。 寻线模块:本次毕业设计将使用红外传感器对智能车进行导航。红外传感系统是用红外线为介质的测量系统,按照功能可分成五类, 按探测机理可分成为光子探测器和热探测器. 红外传感技术已经在现代科技、国防和工农业等领域获得了广泛的应用。红外技术发展到现在,已经为大家所熟知,这种技术已经在现代科技、国防和工农业等领域获得了广泛的应用。红外传感系统是用红外线为介质的测量系统,按照功能能够分成五类:(1)辐射计,用于辐射和光谱测量;(2)搜索和跟踪系统,用于搜索和跟踪红外目标,确定其空间位置并对它的运动进行跟踪;(3)热成像系统,可产生整个目标红外辐射的分布图像;(4)红外测距和通信系统;(5)混合系统,是指以上各类系统中的两个或者多个的组合。红外传感器根据探测机理可分成为:光子探测器(基于光电效应)和热探测器(基于热效应)6。电源模块:本次毕业设计的智能车电源模块采用的是4节5号干电池7。2.2 各大模块的设计2.2.1 控制模块的设计此次毕业设计控制芯片为单片机芯片,单片微型计算机简称单片机,是典型的嵌入式微控制器,常用英文字母的缩写MCU表示单片机,它最早是被用在工业控制领域。单片机由芯片内仅有CPU的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。早期的单片机都是8位或4位的。其中最成功的是INTEL的8031,因为简单可靠而性能不错获得了很大的好评。此后在8031上发展出了MCS51系列单片机系统。基于这一系统的单片机系统直到现在还在广泛使用。随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。90年代后随着消费电子产品大发展,单片机技术得到了巨大提高。随着INTEL i960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。而传统的8位单片机的性能也得到了飞速提高,处理能力比起80年代提高了数百倍。目前,高端的32位单片机主频已经超过300MHz,性能直追90年代中期的专用处理器,而普通的型号出厂价格跌落至1美元,最高端的型号也只有10美元。当代单片机系统已经不再只在裸机环境下开发和使用,大量专用的嵌入式操作系统被广泛应用在全系列的单片机上。而在作为掌上电脑和手机核心处理的高端单片机甚至可以直接使用专用的Windows和Linux操作系统。 单片机比专用处理器更适合应用于嵌入式系统,因此它得到了最多的应用。事实上单片机是世界上数量最多的计算机。现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。手机、电话、计算机、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。而个人电脑中也会有为数不少的单片机在工作。汽车上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作。单片机的数量不仅远超过PC机和其他计算的总和,甚至比人类的数量还要多。单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。可以说,二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。不过,这种电脑,通常是指个人计算机,简称PC机。它由主机、键盘、显示器等组成。还有一类计算机,大多数人却不怎么熟悉。这种计算机就是把智能赋予各种机械的单片机(亦称微控制器)。顾名思义,这种计算机的最小系统只用了一片集成电路,即可进行简单运算和控制。因为它体积小,通常都藏在被控机械的“肚子”里。它在整个装置中,起着有如人类头脑的作用,它出了毛病,整个装置就瘫痪了。现在,这种单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等8。此次毕业设计的智能车控制模块采用的是ATmega8作为CPU,ATmega8是一种比51系列更为强大的高性能、低功耗的8位单片机,不需要仿真机和编程机,只需运用ISP电缆就可以对单片机的FLASH反复擦写10000次以上,因此使用起来特别方便简单,尤其适合初学者使用,而且配置十分灵活,可扩展性特别强。本文的控制程序是用C语言,编程软件为WinAVR。ATmega8内部特点:高性能、低功耗的 8 位AVR 微处理器,先进的RISC 结构。130 条指令,大多数指令执行时间为单个时钟周期。32个8 位通用工作寄存器,全静态工作,工作于16 MHz 时性能高达16 MIPS。只需两个时钟周期的硬件乘法器,非易失性程序和数据存储器,8K 字节的系统内可编程Flash,擦写寿命:10,000 次,具有独立锁定位的可选Boot 代码区,通过片上Boot 程序实现系统内编程,真正的同时读写操作。512 字节的EEPROM,1K字节的片内SRAM,可以对锁定位进行编程以实现用户程序的加密。 ATmega8外设特点:两个具有独立预分频器8 位定时器/ 计数器, 其中之一有比较功能,一个具有预分频器、比较功能和捕捉功能的16 位定时器/ 计数器,具有独立振荡器的实时计数器RTC。三通道PWM,TQFP与MLF 封装的8 路ADC,8 路10 位ADC。PDIP封装的6 路ADC。面向字节的两线接口,两个可编程的串行USART,可工作于主机/ 从机模式的SPI 串行接口。具有独立片内振荡器的可编程看门狗定时器,片内模拟比较器。 特殊的处理器特点:上电复位以及可编程的掉电检测,片内经过标定的RC 振荡器,片内/ 片外中断源。5种睡眠模式: 空闲模式、ADC 噪声抑制模式、省电模式、掉电模式及Standby 模式。I/O 和封装:23个可编程的I/O 口,28引脚PDIP 封装,32 引脚TQFP 封装,32 引脚MLF 封装 工作电压:2.7 - 5.5V (ATmega8L),4.5 - 5.5V (ATmega8);速度等级:0 - 8 MHz (ATmega8L),0 - 16 MHz (ATmega8);工作模式: 3.6 mA;空闲模式: 1.0 mA;掉电模式: 0.5 A。此次毕业设计所用的ATmega8芯片采用的是PDIP封装,即为双列直插式封装,PDIP封装结构具有以下特点:1. 适合PCB的穿孔安装; 2. 易于对PCB布线;3. 操作方便。其引脚说明图如图2-2所示。 图 2-2 ATmega8的引脚说明图引脚定义:VCC 电源;GND 地;端口B为8位双向I/O口,其中PB5、PB4、PB3可用于ISP编程;端口C,其中PC6可作为复位输入引脚,ATmega8为低电平复位;端口D为8位双向I/O口;XTAL1为反向振荡放大器的输入和内部时钟工作电路的输入;XTAL2为反向振荡放大器的输出;AVCC 是A/D 转换器PC3、PC2、PC1、PC0的电源端,即使不使用ADC 也应外接到VCC端,如使用ADC应该通过一个低通滤波器与VCC连接,注意PC5、PC4通过VCC 供电,低通滤波器为让某一频率以下的信号分量通过,而对该频率以上的信号分量大大抑制的电容、电感与电阻等器件的组合装置;AREF为A/D 转换器的参考电源9。图2-3 ATmega8接线图2.2.2 驱动模块设计此次毕业设计驱动模块采用伺服电机。伺服电机优点: (1)精度:实现了位置,速度和力矩的闭环控制;克服了步进电机失步的问题; (2)转速:高速性能好,一般额定转速能达到20003000转/分钟; (3)适应性:抗过载能力强,能承受三倍于额定转矩的负载,对有瞬间负载波动和要求快速起动的场合特别适用; (4)稳定:低速运行平稳,低速运行时不会产生类似于步进电机的步进运行现象。适用于有高速响应要求的场合; (5)及时性:电机加减速的动态相应时间短,一般在几十毫秒之内; (6)舒适性:发热和噪音明显降低。 伺服电机工作的原理:舵机是一种位置伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。其工作原理是:控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动10。控制伺服电机转动速度的信号是图2-4、2-5和2-6所示的脉冲信号。图2-4所示是高电平持续1.5ms 低电平持续20ms,然后不断重复的控制脉冲序列。该脉冲序列发给经过零点标定后的伺服电机,伺服电机不会旋转。如果此时电机旋转,表明电机需要标定。从图2-4、2-5和2-6可知,控制电机运动转速的是高电平持续的时间,当高电平持续时间为1.3ms 时,电机顺时针全速旋转,当高电平持续时间1.7ms 时,电机逆时针速旋转。 图2-4 电机转速为零的控制信号时序图图2-5 1.3 ms的控制脉冲序列使电机顺时针全速旋转图2-6 1.7ms的连续脉冲序列使电机逆时针全速旋转在进行下面的实验之前,必须首先照图2-7所示的电机连接原理图和实际接线图进行检查。如果没有正确连接,也请参照该图重新连接。从图2-7可知,PB0引脚的控制输出用来控制右边的伺服电机,而 PB1 则用来控制左边的伺服电机。显然这里对微控制器编程发给伺服电机的高、低电平信号必须具备更精确的时间。因为单片机只有整数,没有小数,所以要生成伺服电机的控制信号,要求具有比 delay_nms()函数的时间更精确的函数,这就需要用另一个延时函数 delay_nus(unsigned int n)。这个函数可以实现更小的延时,它的延时单位是微秒,即千分之一毫秒,参数n为延时微秒数。 while(1)PB0=1; /PB0 输出高电平delay_nus(1500); /延时 1.5ms PB0=0; /PB0 输出低电平delay_nus(20000); /延时 20ms 如果使用这个代码段,就会输出图2-4所示的脉冲信号。PB0 脚输出的波形如图2-4所示。此时,连接到该脚的机器人轮子将静止不动。如果它在慢慢转动,就说明你的机器人伺服电机可能没有经过调整。伺服电机的调零其实是调节电机内部的基准电路,使其满足要求。同样,用下面的程序片断,编译、连接下载执行代码,观察连接到 PB0 脚的机器人轮子将顺时针全速旋转。while(1)PB0=1; /PB0 输出高电平delay_nus(1300); /延时 1.3ms PB0=0; /PB0 输出低电平delay_nus(20000); /延时 20ms 11 图2-7伺服电机连线图 此次毕业设计所用的驱动芯片为MAX232EEPE。MAX232是一种把电脑的串行口RS-232信号电平(-10 ,+10v)转换为单片机所用到的TTL信号电平(0 ,+5)的芯片。 图2-8 MAX232引脚图引脚介绍:第一部分是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DB9插头;DB9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。第三部分是供电。15脚GND、16脚VCC(+5v)。 主要特点:(1)符合所有的RS-232C技术标准。(2)只需要单一 +5V电源供电 。(3)片载电荷泵具有升压、电压极性反转能力,能够产生+10V和-10V电压V+、V-。(4)功耗低,典型供电电流5mA。(5)内部集成2个RS-232C驱动器。(6)内部集成两个 RS-232C接收器12。 图2-9 MAX232的基本接线图图2-10 MAX232接线图2.2.3 寻线模块的设计此次毕业设计使用红外传感器对智能车进行导航,红外传感器的工作原理电路图如图2-11所示。工作过程分析如下: 图2-11 红外传感器原理图由该工作原理图知道当通过程序控制单片机的内部电路给PC2口输出高电平此时三极管被导通,LED开始发光,当发射出来的光被障碍物反射回来的时候被光敏二极管所接受光敏二极管被导通此时输出低电平表示前面有障碍物,如果发射出去的光没有被反射回来,光敏二极管没有接受到光此时光敏处于截止的状态此时输出的是高电平,表示前面没有障碍物13。首先来了解下传感器的工作原理,这样才可以根据传感器的特点设计相应的电路,从而达到对智能车的控制实现相应的实验目的。传感器的原理图如下:(见图2-12)图2-12 距离检测的传感器的原理图在本次毕业设计距离检测中用的传感器是红外传感器,利用了红外检测装置对不同频率的红外光的灵敏度的不同即低灵敏度的频率,为了让探测器探测到反射回来的红外光,所以物体离探测器的距离必须很近,高灵敏度的频率可以探测距离比较远的障碍物。由上面的原理图知道在这里选用了5种不同的频率分别得29370Hz,31230Hz,33050Hz,35700Hz,38460Hz将智能车的前进方向大概划分为6个区域,当发射的红外光的频率是29370Hz的时候,由于该频率的灵敏度低,所以该频率的红外光只能探测智能车前进方向的区域0该区域靠近探测器,如果探测器探测到了返回来的红外光说明在区域0有障碍物,因为不同的频率只能工作在一定得范围里,这样就可以确定障碍物离智能车的大概距离,如果发射的频率是29370Hz没有被探测器探测到说明区域0没有障碍物,而发射的频率31230Hz,33050Hz,35700Hz,38460Hz都被探测器探测到说明区域1有障碍物,如果发射的频率29370Hz,31230Hz,都没有被探测器探测到,而如果发射的频率33050Hz,35700Hz,38460Hz被探测器探测到,说明区域2存在障碍物,这样就可以确定障碍物距离传感器的大致位置,其它的情形与此类似就不在叙述,上面就是传感器的基本的工作原理,简单的说就是地灵敏度的频率能有检测的范围小,高灵敏的频率检测的范围大,利用不同的频率将智能车的前方划分不同的区域来进行探测14。3 系统软件设计在此次毕业设计中,将反复用到三款软件: WinAVR集成开发环境、SL ISP下载软件、串口调试软件。3.1 WinAVR集成开发环境WinAVR(读作whenever)是一套开源的开发工具的总称,用来在Windows平台开发Atmel AVR系列RISC微控制器。3.2 SL ISP软件下载工具该软件是广州天河双龙电子有限公司推出的一款ISP下载软件,使用该软件将可执行文件下载到机器人单片机上,速度、稳定性不错。该软件的使用需要计算机有并行口。3.3 串口调试软件此软件是用来显示单片机与计算机的交互信息的。在硬件上,计算机至少要有串口或 USB 接口来与单片机的串口连接。串口通讯因具有简单,组网方便的特点,在设备通讯中广泛使用。普通计算机中采用的是RS232通用通讯接口,通过此接口,计算机简单方便地与外围设备进行通讯。在单片机控制领域,设备与设备之间的通讯常用串行通讯方式,常采用的硬件通讯网络为RS485/RS422/RS232等。在设备开发或设备维护过程中,常常需要对设备通讯过程进行数据检测,用于判断通讯是否正常。实现这个调试过程,需要计算机通讯软件对通讯过程进行监控,数据采集,进行数据分析15。3.4 WinAVR简介3.4.1 WinAVR的优点 (1)免费且开源。因为其免费,所以可以减少项目资金开销,同时,在版权控制比较好的国外,WinAVR的使用者是很多的,因此交流、学习的平台更大。(2)优化效率高。(3)利于平台迁移。引擎GCC是Linux的唯一开发语言,学习GCC对于迁移到其他嵌入式平台是十分有利的。(4)配置灵活,可定制性强16。3.4.2 WinAVR使用快速入门 下面的范例程序也可以直接参照光盘里的范例,里面有详细的注释说明 (1)运行PN,下面介绍PN如何编写、编译AVR C语言源程序的分解步骤: 图3-1 运行(2)新建工程组(Project Group) 图3-2 新建工程组 (3)新建工程(Project) 图3-3 新建工程 (4)把工程保存为main的工程名。 (5)点击“New”新建按钮,将建立一个文件名为“new”的文本文件 图3-4 建立文本文件(6)可以在文本框里输入或粘贴入C代码(本范例程序代码请见光盘),然后点击“Save”保存 图3-5 保存 (7)把文件保存为“main.c”文件,然后点击“保存” 图3-6 保存为“main.c”文件(8)在“main”工程上点击右键,弹出菜单,选择“Add Files” 图3-7 弹出菜单(9)把刚才的main.c文件添加到工程中图3-8 添加main.c(10) 现在要先从光盘里提供的范例程序里任意一个程序包里的一个名为“Makefile”拷贝到当前的工程文件包里,为什么要拷贝这个文件到刚才建立的工程包里呢?因为我们得告诉PN选择的AVR的型号、工作频率等。在WinAVR上也有一个叫mfile的应用程序去处理这个Makefile 文件。但mfile 的缺陷很多,不好用,并且容易弄错。推荐直接用PN打开修改这个文件,然后保存。为了方便阅读与修改,我们将最常用的内容,放到Makefile的最前面,并且作了中文注解。下面是打开已经拷贝工程目录下的Makefile文件 图3-9 打开Makefile文件 (11)再特意说明下:这个Makefile文件大家可以直接从配套光盘里的范例程序里的任意一个程序包里拷贝一个到当前的目录下即可,然后打开后要对其进行一些修改。图3-10 拷贝程序(12)打开Makefile,只要对MCU、F_CPU、TARGET,三项进行修改。注意MCU的命名要按规范命名,否则到时候PN编译的时候会提示找不到型号;F_CPU(CPU频率)设置为8000000Hz,即8MHz;TARGET还是要以main为名,因为之前新建的工程、C代码源程序都是以main为名的,如果这里的命名和刚才新建的工程、C代码文件名不一致,都将导致接下去的编译工作无法进行。图3-11 修改(13)修改Makefile后,点击“Save”保存图3-12 保存修改程序 (14)修改完Makefile后一定要先Make Clean一下!才能保证下面的编译不会出错! 图3-13 Make Clean (15)点击Make All编译源程序,以后如果有对源程序进行修改后,只要Make All编译就可以了;除非修改了Makefile里的参数,那就一定要先Make Clean以保证编译不受干扰。 图3-14 Make All (16)编译成功后,会有如下的 Process Exit Code: 0 的信息。如果结果不是0,表明编译有问题,请检查当前工程目录是否有main.c 与 Makefile 两个文件,或是程序里有错误,一一排除才能编译成功。 图3-15 编译 (17)编译成功后,原来只有2个文件的目录,现在变成了如下图的文件清单,main.hex是要下载到AVR芯片里让其运行的文件17,18,19。 图3-16 编译成功3.5 编程思路此次毕业设计所用编程语言为C语言。如今单片机的编程语言主要为汇编语言和C语言,汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少、程序执行效率高。但是不同的CPU,其汇编语言可能有所差异,所以不易移植。C语言是一种结构化的高级语言。其优点是可读性好,移植容易,是普遍使用的一种计算机语言。此次毕业设计为智能车设计的行走路线为走“田”字。控制思想为通过单片机微控制器控制智能车左右轮子的正反转,从而控制智能车向前行走、原地左转、原地右转、向后行走。本次毕业设计的编程思路为编程出智能车向前行走、原地左转、原地右转、向后行走的程序,再用数组建立复杂运动。本次毕业设计的设计路线为:向前运行6秒原地右转向前运行6秒原地左转向后运行6秒原地右转向后运行6秒原地左转向前运行3秒原地右转向前运行6秒原地左转向前运行3秒原地右转向后运行3秒原地左转向后运行6秒原地右转向后运行3秒停止。此次毕业设计的主要控制程序如下: #include #include void Forward(void) int i; for(i=1;i=130;i+) PB1=1;delay_nus(1700); PB1=0; PB0=1;delay_nus(1300); PB0=0;delay_nms(20); void Left_Turn(void) int i; for(i=1;i=26;i+) PB1=1;delay_nus(1300); PB1=0; PB0=1;delay_nus(1300); PB0=0;delay_nms(20); void Right_Turn(void) int i; for(i=1;i=26;i+) PB1=1;delay_nus(1700); PB1=0; PB0=1;delay_nus(1700); PB0=0;delay_nms(20); void Backward(void) int i; for(i=1;i=130;i+) PB1=1;delay_nus(1300); PB1=0;PB0=1;delay_nus(1700); PB0=0;delay_nms(20); int main(void) char Navigation26=F,F,R,F,F,L,B,B,R,B,B,L,F,R,F,F,L,F,R,B,L,B,B,R,B,Q;int address=0; uart_Init(); printf(Program Running!n);while(Navigationaddress!=Q) switch(Navigationaddress) case F:Forward();break; case L:Left_Turn();break; case R:Right_Turn();break; case B:Backward();break; address+; while(1); 此毕业设计所用的头文件有BoeBot.h和uart.h,其中定时程序BoeBot.h的程序如下所示: #pragma ASM nop ; #pragma ENDASM,*/void delay_nus(unsigned int i) i=i/10; while(-i); void delay_nms(unsigned int n) n=n+1; while(-n) delay_nus(900); 另一头文件串口中断驱动程序uart.h的程序如下所示:#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:中断控制putchar函数/替换标准库函数putchar程序/printf函数使用putchar输出一个字符char putchar (char c) if (c=n) /增加新的行 while(sendfull); /等待发送缓冲区空 putbuf(0x0D); /对新行在LF前发送CR while(sendfull); putbuf(c); return(c);/_getkey:中断控制_getkey函数/替换标准库函数_getkey程序/getchar和gets函数使用_getkeychar _getkey(void) char c; while(iend=istart) /判断接收缓冲区起始索引是否等于接收缓冲区结束索引 ; ES=0; c=inbufistart+&(ILEN-1); ES=1; return(c);/* 初始化串行口和UART波特率函数*/void com_initialize(void) istart=0; iend=0; ostart=0; oend=0; sendactive=0; sendfull=0; TMOD |=0x20; /设置定时器T/C1工作在方式2,定时1工作于自动重载模式 SCON=0x50; /设置串行口工作方式1:SCON格式 |M0|M1|M2|REN|TB8|RB8|TI|RI TH1=0xfd; /波特率9600 TL1=0xfd; TR1=1; /启动定时器 ES=1; /开串行口中断 void uart_Init() com_initialize(); EA=1; /CPU开总中断20,21,22,234 总结与展望 此次毕业设计涉及单片机以及C语言,是对大学所学知识的一次总结和考验,多亏江老师和各位老师、同学的指教顺利的完成了此次毕业设计。做为一名电气工程及其自动化专业的学生,完成机电一体化实习是非常有必要的。这个专业涉及到了机械、电工电子、控制、计算机科学等多门
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!