基于Arduino单片机的智能小车设计毕业论文
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于Arduino单片机的智能小车设计毕业论文
目录
第一章绪论 (1)
1.1 选题背景 (1)
1.2 智能小车研究现状 (2)
1.3 课题主要容 (4)
第二章智能小车总体结构 (5)
2.1 方案综述 (5)
2.2 主控单元方案比较与选择 (5)
2.3 避障单元方案比较与选择 (6)
2.4 “小车”的必要的信息 (7)
第三章智能小车的触觉、眼睛 (8)
3.1 智能小车部检测原理 (8)
3.2 电机电流、电压检测 (10)
3.3 超声波测距 (11)
第四章智能小车的脚 (23)
4.1 轮系结构详述 (23)
4.2 直流电机 H 桥驱动电路 (26)
4.3 电机控制信号 (28)
第五章智能小车的大脑 (29)
5.1 Arduino单片机简介 (29)
5.2 Arduino单片机引脚简介 (30)
5.3 Arduino编程软件 (33)
第六章智能小车控制流程及程序 (35)
6.1 控制流程 (35)
参考文献 (36)
致谢 (37)
第一章绪论
随着科技进步,现代工业技术发展越来越体现出机电一体化的特征。
无论是在金属加工、汽车技术、工业生产等等方面,机器设备表现了所谓智能化、集成化、小型化、高精度化的发展趋势。
1.1 选题背景
随着汽车工业的迅速发展,关于汽车的研究也就越来越受人关注。
全国电子大赛和省电子大赛几乎每次都有智能小车这方面的题目,全国各高校也都很重视该题目的研究。
可见其研究意义很大。
本设计就是在这样的背景下提出的,指导教师已经有充分的准备。
本题目是结合科研项目而确定的设计类课题。
设计的智能电动小车应该能够实现适应能力,能自动避障,可以智能规划路径。
智能化作为现代社会的新产物,是以后的发展方向,他可以按照预先设定的模式在一个特定的环境里自动的运作,无需人为管理,便可以完成预期所要达到的或是更高的目标。
同遥控小车不同,遥控小车需要人为控制转向、启停和进退,比较先进的遥控车还能控制器速度。
常见的模型小车,都属于这类遥控车;智能小车,则可以通过计算机编程来实现其对行驶方向、启停以及速度的控制,无需人工干预。
操作员可以通过修改智能小车的计算机程序来改变它的行驶方向。
因此,智能小车具有再编程的特性,是机器人的一种。
中国自1978年把“智能模拟”作为国家科学技术发展规划的主要研究课题,开始着力研究智能化。
从概念的引进到实验室研究的实现,再到现在高端领域(航天航空、军事、勘探等)的应用,这一过程为智能化的全面发展奠定基石。
智能化全面的发展是实现其对资源的合理充分利用,以尽可能少的投入得到最大的收
益,大大提高工业生产的效率,实现现有工业生产水平从自动化向智能化升级,实现当今智能化发展由高端向大众普及。
从先前的模拟电路设计,到数字电路设计,再到现在的集成芯片的应用,各种能实现同样功能的元件越来越小为智能化产物的生成奠定了良好的物质基础。
智能小车,是一个集环境感知、规划决策,自动行驶等功能于一体的综合系统,它集中地运用了计算机、传感、信息、通信、导航、人工智能及自动控制等技术,是典型的高新技术综合体。
1.2 智能小车研究现状
智能车辆作为智能交通系统的关键技术,是许多高新技术综合集成的载体。
智能车辆驾驶是一种通用性术语,指全部或部分完成一项或多项驾驶任务的综合车辆技术。
智能车辆的一个基本特征是在一定道路条件下实现全部或者部分的自动驾驶功能,下面简单介绍一下国外智能小车研究的发展情况。
1.2.1 国外智能车辆研究现状
国外智能车辆的研究历史较长,始于上世纪50年代。
它的发展历程大体可以分成三个阶段:
第一阶段 20世纪50年代是智能车辆研究的初始阶段。
1954年美国Barrett Electronics 公司研究开发了世界上第一台自主引导车系统AGVS(Automated Guided Vehicle System)。
该系统只是一个运行在固定线路上的拖车式运货平台,但它却具有了智能车辆最基本得特征即无人驾驶。
早期研制AGVS的目的是为了提高仓库运输的自动化水平,应用领域仅局限于仓库的物品运输。
随着计算机的应用和传感技术的发展,智能车辆的研究不断得到新的发展。
第二阶段从80年代中后期开始,世界主要发达国家对智能车辆开展了卓
有成效的研究。
在欧洲,普罗米修斯项目于1986年开始了在这个领域的探索。
在美洲,美国于1995年成立了国家自动高速公路系统联盟(NAHSC),其目标之一就是研究发展智能车辆的可能性,并促进智能车辆技术进入实用化。
在亚洲,日本于1996年成立了高速公路先进巡航/辅助驾驶研究会,主要目的是研究自动车辆导航的方法,促进日本智能车辆技术的整体进步。
进入80年代中期,设计和制造智能车辆的浪潮席卷全世界,一大批世界著名的公司开始研制智能车辆平台。
第三阶段从90年代开始,智能车辆进入了深入、系统、大规模研究阶段。
最为突出的是,美国卡基.梅隆大学(Carnegie Mellon University)机器人研究所一共完成了Navlab系列的10台自主车(Navlab1—Navlab10)的研究,取得了显著的成就。
目前,智能车辆的发展正处于第三阶段。
这一阶段的研究成果代表了当前国外智能车辆的主要发展方向。
在世界科学界和工业设计界中,众多的研究机构研发的智能车辆具有代表性的有:
德意志联邦大学的研究1985年,第一辆VaMoRs智能原型车辆在户外高速公路上以100km/h的速度进行了测试,它使用了机器视觉来保证横向和纵向的车辆控制。
1988年,在都灵的PROMRTHEUS项目第一次委员会会议上,智能车辆维塔(VITA,7t)进行了展示,该车可以自动停车、行进,并可以向后车传送相关驾驶信息。
这两种车辆都配备了UBM视觉系统。
这是一个双目视觉系统,具有极高的稳定性。
荷兰鹿特丹港口的研究智能车辆的研究主要体现在工厂货物的运输。
荷兰的Combi road系统,采用无人驾驶的车辆来往返运输货物,它行驶的路面上采
用了磁性导航参照物,并利用一个光阵列传感器去探测障碍。
荷兰南部目前正在讨论工业上利用这种系统的问题,政府正考虑已有的高速公路新建一条专用的车道,采用这种系统将货物从鹿特丹运往各地。
日本大阪大学的研究大阪大学的Shirai实验室所研制的智能小车,采用了航位推测系统(Dead Reckoning System),分别利用旋转编码器和电位计来获取智能小车的转向角,从而完成了智能小车的定位。
另外,斯特拉斯堡实验中心、英国国防部门的研究、美国卡基梅隆大学、奔驰公司、美国麻省理工学院、韩国理工大学对智能车辆也有较多的研究。
1.2.2 国智能车辆研究现状
相比于国外,我国开展智能车辆技术方面的研究起步较晚,开始于20世纪80年代。
而且大多数研究处在于针对某个单项技术研究的阶段。
虽然我国在智能车辆技术方面的研究总体上落后于发达国家,并且存在一定得技术差距,但是我们也取得了一系列的成果,主要有:
(1)中国第一汽车集团公司和国防科技大学机电工程与自动化学院与2003年研制成功我国第一辆自主驾驶轿车。
该自主驾驶轿车在正常交通情况下的高速公路上,行驶的最高稳定速度为13km/h,最高峰值速度达170km/h,并且具有超车功能,其总体技术性能和指标已经达到世界先进水平。
(2)理工大学、理工大学、大学、国防科技大学、清华大学等多所院校联合研制了7B.8军用室外自主车,该车装有彩色摄像机、激光雷达、陀螺惯导定位等传感器。
计算机系统采用两台Sun10完成信息融合、路径规划,两台PC486完成路边抽取识别和激光信息处理,8098单片机完成定位计算和车辆自动驾驶。
其体系结构以水平式结构为主,采用传统的“感知-建模-规划-执行”算法,其
直线跟踪速度达到20km/h,避障速度达到5-10km/h。
智能车辆研究也是智能交通系统ITS的关键技术。
目前,国的许多高校和科研院所都在进行ITS关键技术、设备的研究。
随着ITS研究的兴起,我国已形成一支ITS技术研究开发的技术专业队伍。
并且各交通、汽车企业越来越加大了对ITS及智能车辆技术研发的投入,整个社会的关注程度在不断提高。
交通部已将ITS研究列入“十五”科技发展计划和2010年长期规划。
相信经过相关领域的共同努力,我国ITS及智能车辆的技术水平一定会得到很大提高。
可以预计,我国飞速发展的经济实力将为智能车辆的研究提供一个更加广阔的前景。
我们要结合我国国情,在某一方面或某些方面,对智能车进行深入细致的研究,为它今后的发展及实际应用打下坚实的基础。
1.3 课题主要容
本课题嵌入之梦工作室的fira智能小车平台,选择通用、价廉的Arduino 单片机为控制平台,通过细化设计要求,结合传感器技术和电机控制技术相关知识实现小车的各种功能。
设计完成以由超声波测距、自动避障组成的硬件模块结合软件设计组成多功能智能小车,共同实现小车的前进倒退、转向行驶,自动根据超声波检测前方障碍物距离,进行导航,检测障碍物后停止等功能,实现智能控制,达到设计目标。
图1.1 小车外形图
第二章智能小车总体结构
2.1 方案综述
本课题设计主要是制作一款能进行智能判断并能做出正确反应的小车。
小车具有以下几个功能:自动避障功能。
作品既可以对高端智能化进行剖析,也可以作为高级智能玩具发展对象,同时可成为大学生学习嵌入式控制系统的应用实例。
本设计以两直流电动机为主驱动,通过各类传感器件来采集各类信息,送入主控单元Arduino单片机处理数据后完成相应动作,以达到自身控制。
电机驱动电路采用H桥驱动模块,驱动2个直流电机;测距、避障采用超声波传感器完成,最后由控制单元处理数据后通过编程有序合理的将各模块信号整合在一起并完成相应动作,实现了智能控制,相当于简易机器人。
根据设计的作品要达到的效果,本系统以Arduino单片机为核心控制器,主
要由电源模块、电机驱动模块、测距、避障模块构成。
系统的结构框图如下图1所示。
图2.1 系统结构框图
2.2 主控单元方案比较与选择
按照题目要求,控制器主要用于控制电机,通过相关传感器对路面的轨迹信息进行处理,并将处理信号传输给控制器,然后控制器做出相应的处理,实现小车的自动循迹和自动避障。
方案一:可以采用ARM为系统的控制器,优点是该系统功能强大,片上外设集成度搞密度高,提高了稳定性,系统的处理速度也很高,适合作为大规模实时系统的控制核心。
方案二:采用Arduino单片机作为系统控制的方案。
Arduino单片机算术运算功能强,软件编程灵活、自由度大,功耗低、体积小、技术成熟,成本也比ARM低。
考虑到性价比问题,本设计选择用Arduino单片机做控制器。
2.3 避障单元方案比较与选择
方案一:用超声波传感器进行避障。
超声波传感器的原理是:超声波由压电陶瓷超声波传感器发出后,遇到障碍物便反射回来,再被超声波传感器接收。
但使用超声波模块的成本比较高。
因此我们考虑其它的方案,超声波传感器实物图如下图2所示:
图2.2 超声波传感器
方案二:用漫反射式光电开关进行避障。
光电开关的工作原理是根据光线发射头发出的光束,被物体反射,其接收电路据此做出判断反应,物体对红外光由同步回路选通而检测物体的有无。
当有光线反射回来时,输出低电平。
当没有光线反射回来时,输出高电平。
考虑到在日常的家居生活中,只需要简单检测障碍物,让智能小车顺利绕过障碍,回到预定的设定路径便可,并没有十分复杂的环境,为了使用方便,便于操作和调试,我们最终选择了方案一。
2.4 “小车”的必要的信息
电机参数:
额定电压—— 4.5V
空载电流—— 85 – 95 mA
空载转速—— 9800 rpm +/‐ 10%
堵转电流—— 1100mA
堵转力矩—— 50g/cm (最大)
减速箱: 1:48
结构参数
车轮直径—— 65mm
码盘齿数—— 60 个
码盘等效直径—— 42 mm
脉冲精度—— 3.4mm/脉冲(单边沿采集,可用倍频方式提高精度)轮距——约 59.5mm
外形尺寸——约 75x 75 x 75 mm
重量——约 240g (不含电池)
最快运动速度:
选用 1:48减速箱——约 695mm/s
最大力矩:
选用 1:48减速箱——约 2.4kg/cm
第三章智能小车的触觉、眼睛
3.1 智能小车部检测原理
智能小车驱动检测电路:实现电机驱动、码盘采样、电机电流检测功能,两侧独立设计,方便检修。
3.1.1 轮速、车距检测
小车采用红外光电耦合器检测轮子转的圈数,即可算得小车行车距离;同理,单位时间的计数值,即可求得轮子转速。
本车有两只轮子,分别由两只直流电动机驱动。
由于红外检测具有反应速度快、定位精度高,可靠性强以及可见光传感器所不能比拟的优点,故采用红外光电码盘测速方案。
红外光电耦合器见图3.1,为直射式光电传感器。
图3.1 红外光电耦合器
由测距轮,遮光盘,红外光电耦合器及凹槽型支架组成的。
利用开模的优势,在车轮上的遮光盘设计了 60个齿,可以用直射式光电采样器方便的得到脉冲信号,比反射式采样更加可靠。
测距轮安装在车轮上,这样能使记数值准确一些(见图3.2)。
遮光盘有一缺口,盘下方的凹形物为槽型光电耦合器,其两端高出部分的里面分别装有红外发射管和红外接收管。
遮光盘在凹槽中转动时,缺口进入凹槽时,红外线可以通过,缺口离开凹槽红外线被阻挡。
由此可见,测距轮每转一周,红外光接收管均能接收到一个脉冲信号经过整形器后送入计数器或直接送入单片机中。
单片机通过计数值,即可求得小车的大概行驶距离,根据单位时间的计数值,也可求得转速。
单片机通过分别对两个轮子的转速值,进行比较,即可判断出左、右轮的转速快慢程度。
遮光盘
正面背面
图3.2 轮子结构
为实现可逆记数功能,我们在测距仪中并列放置了两个槽型光电耦合器,遮光盘先后通过凹槽可产生两个脉冲信号。
根据两个脉冲信号发生的先后顺序与两个光电耦合器的位置关系,即可计算出玩具车的行驶方向(前进或后退)。
遮光盘及槽型光电耦合器均安装在不透光的盒子里,以避免外界光线的干扰,使电路不能正常工作。
直射型光电
晶体管
图3.3 实际电路板
测距原理:将遮光码盘安装在电机轴上,当电机转动时,遮光码盘也随之转动,同时安装在码盘一侧的红外发光二极管点亮,在码盘的另一侧设有红外三极管,用于接收红外发光二极管发出的红外线信号。
由于光栅随电机高速转动,则红外线三极管接收到的就是一系列脉冲信号。
将该信号传输到单片机的部计数器计数,根据预先实测的数据换算关系即可计算出电动机车的行车距离。
具体电路同图2.5 行车距离检测电路所示:
图3.4 码盘检测电路
为了避免在变换状态时产生“毛刺”,整形电路是利用运放设计了“施密特”电路,用回差消除之。
之所以用运放,而不是直接使用施密特触发器,是因为这样可以方便的改变回差大小。
3.2 电机电流、电压检测
3.2.1 电流检测电路:
图3.5 电流检测电路
电流的取样电阻为 0.22 欧姆(见 H 桥驱动电路的 R5),按上图参数,放大倍数 11 倍,电机电流最大 1.1A 左右,所以实际的输出信号应在
0 – 2.66V ,如使用 3.3V供电的单片机,其 AD输入围为 0 ‐ 3.3V,考虑电机的电流偏差和器件的偏差,留些余量。
电路中C2作用是减小电机电流波动的影响,是针对 125Hz 的 PWM频率设计的,如提高PWM的频率,此参数应该相应修改。
本设计中未采用,简述之。
3.2.2 电压检测电路:
图3.6 电压检测电路
电压采用简单的分压处理,设计了一个跟随器以减少 AD输入阻抗对分压的影响。
电池的电压应在4–6V,分压后为2–3V,符合 AD输入不大于 3.3V的要求。
本设计中未采用,简述之。
3.3 超声波测距
由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现。
利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求,因此在移动机器人研制上也得到了广泛的应用。
为了使移动机器人能自动避障行走,就必须装备测距系统,以使其及时获取距障碍物的距离信息(距离和方向)。
3.3.1 超声波测距原理
1、超声波发生器
为了研究和利用超声波,人们已经设计和制成了许多超声波发生器。
总体上讲,超声波发生器可以分为两大类:一类是用电气方式产生超声波,一类是用机械方式产生超声波。
电气方式包括压电型、磁致伸缩型和电动型等;机械方式有加尔统笛、液哨和气流旋笛等。
它们所产生的超声波的频率、功率和声波特性各不相同,因而用途也各不相同。
目前较为常用的是压电式超声波发生器。
2、压电式超声波发生器原理
压电式超声波发生器实际上是利用压电晶体的谐振来工作的。
超声波发生器部结构如图1所示,它有两个压电晶片和一个共振板。
当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动,便产生超声波。
反之,如果两电极间未外加电压,当共振板接收到超声波
时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声波接收器了。
3、超声波测距原理
超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。
超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离(s),即:s=340t/2 。
这就是所谓的时间差测距法。
超声波测距的原理是利用超声波在空气中的传播速度为已知,测量声波在发射后遇到障碍物反射回来的时间,根据发射和接收的时间差计算出发射点到障碍物的实际距离。
由此可见,超声波测距原理与雷达原理是一样的。
测距的公式表示为:L=C×T
式中L为测量的距离长度;C为超声波在空气中的传播速度;T为测量距离传播的时间差(T为发射到接收时间数值的一半)。
超声波测距主要应用于倒车提醒、建筑工地、工业现场等的距离测量,虽然目前的测距量程上能达到百米,但测量的精度往往只能达到厘米数量级。
由于超声波易于定向发射、方向性好、强度易控制、与被测量物体不需要直接接触的优点,是作为液体高度测量的理想手段。
在精密的液位测量中需要达到毫米级的测量精度,但是目前国的超声波测距专用集成电路都是只有厘米级的测量精度。
通过分析超声波测距误差产生的原因,提高测量时间差到微秒级,以及用LM92温度传感器进行声波传播速度的补偿后,我们设计的高精度超声波测距仪能达到毫米级的测量精度。
3.3.2 超声波传感器简介
本毕业设计超声波传感器为外购件,其硬件原理仅作简要说明:
图3.7 超声波检测原理电路
框图中,单片机为核心控制部分,根据设定的工作方式,产生 40kHz方波,经过驱动电路驱动超声波发生器发出一簇信号。
单片机此时开始计时。
接收回路为谐振回路,将收到的微弱回波信号检出,送信号放大电路放大,收到产生脉冲输出送单片机中断端,单片机收到中断信号后停止计时,计算出距离值,保存等待读出或直接经 UART 送出。
接收过程中,单片机定时控制放大电路的增益,逐渐提高,以适应距离越远越弱的回波信号。
3.3.3 超声波传感器接口说明
核心器件为 STC12LE4052、TL852、16mm超声波收、发器。
采用 5V供电,因为 5V是最常见的工作电压,便于日后将传感器应用于装置中。
为了减小干
扰,选用了 3.3V供电的单片机,使用目前常用的 1117-3.3三端稳压器将 5V
降到 3.3V,减小电源扰动的影响,增加可靠性。
小车利用超声波传感器测距,测量值采用的是小车主控芯片与该智能传感器串行通讯获得,以下为串行通讯的有关协议、命令说明。
传感器的工作由通讯命令控制,上电状态为待命状态。
工作分为“自动测量”和“单轮测量”两种模式。
“自动测量”时,传感器按一定周期自动完成测量过程,并保存测量数据。
“自动测量”又分为“被动数据返回”和“主动数据返回”两种方式。
“被动数据返回”方式下,传感器只将测量结果保存下来,等待系统读取。
“主动数据返回”方式下,传感器每完成一次测量均立即将数据发送给系统。
“自动测量”可以设置测量周期。
“单轮测量”为接收到命令后开始测量,并返回数据,测量命令可设置测量次数、数据处理方式,传感器按要求返回,增加测量的可靠性。
通讯协议及命令定义:
基本通讯格式:(和圆梦小车及无线接口兼容)
标准 UART格式—— 19200 8 N 1
帧格式:
帧头(2字节)接收方地址(1字节)发送方地址(1 字节)帧长(1字节)
命令(1字节)数据域(N字节)校验和(1字节)
其中:
帧头——由 2 个特殊的字节 0x55 0xAA 构成;
接收方地址——通讯对象的“名字”,在有线通讯时也许多余,但无线时就需要了。
发送方地址——告诉接收方,便于接收方回答。
帧长——命令和数据域字节之和,
命令——说明操作容,详见下面的定义
数据域——与命令配合,表达一个完整的含义。
校验和——从命令开始到数据域结束所有字节的算术和,取最低字节的反码。
命令定义:
为了便于调试,保留小车中设计的读写存命令。
命令一:读存,实现读指定地址开始的 N 个字节,地址用两字节表示。
命令字—— 0x01
数据域——低地址(1字节)高地址(1字节)读字节数(1字节)地址与硬件的对应关系:
0x0000 — 0x00FF ——对应 STC12LE4052 的 256字节部 RAM(idata);
0x0100 — 0x7FFF ——保留,为大 RAM的单片机预留;
0x7F80 — 0x7FFF ——对应 STC12LE2052的 128字节 SFR;
0x8000 — 0x87FF ——对应 STC12LE2052 的 2K FlashROM(Code);
0x8700 — 0xFFFF ——保留,为大 ROM的单片机预留;
例:要读地址 0x56起始的 3字节部 RAM数据,命令帧如下:
0x55 0xAA XX XX 0x04 0x01 0x56 0x00 0x03 0xA5
返回数据帧为:
帧头发送方地址自己的地址帧长命令低地址高地址读字节数
N字节数据校验和
返回帧中将命令及附属信息(地址、读字节数)包含在,虽然有些冗余,但保证了信息。