cywATC智能小车设计方案_第1页
cywATC智能小车设计方案_第2页
免费预览已结束,剩余30页可下载查看

下载本文档

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

文档简介

1、封面作者: PanHongliang仅供个人学习第一章 绪论随着汽车工业的迅速发展,关于汽车的研究也就越来越受人关注。全国电 子大赛和省内电子大赛几乎每次都有智能小车这方面的题目,全国各高校也都 很重视该题目的研究。可见其研究意义很大。本设计就是在这样的背景下提出 的,指导教师已经有充分的准备。本题目是结合科研工程而确定的设计类课题。设计的智能电动小车应该能够速度,具有自动寻迹、避障功能,可程控行 驶速度、准确定位停车。根据题目的要求,确定如下方案:在现有玩具电动车的基础上,加装光 电、红外线,实现对电动车的速度、运行状况的实时测量,并将测量数据传送 至单片机进行处理,然后由单片机根据所检测的

2、各种数据实现对电动车的智能 控制。这种方案能实现对电动车的运动状态进行实时控制,控制灵活、可靠,精 度高,可满足对系统的各项要求。本设计 采用 AT80C51 单片机。以 AT80C52 为 控制核心,利用红外线传感器检测道路上的障碍,控制电动小汽车的自动避 障,快慢速行驶。并可以自动寻迹。 80C52 是一款八位单片机,它的易用性和 多功能性受到了广大使用者的好评。它是第三代单片机的代表。新一代单片机为外部提供了相当完善的总线结构,为系统的扩展与配置打 下了良好的基础。本设计就采用了比较先进的 80C52 为控制核心, 80C52 采用 CHOMS 工 艺,功耗很低。该设计具有实际意义,可以

3、应用于考古、机器人、医疗器械等 许多方面。尤其是在足球机器人研究方面具有很好的发展前景;在考古方面也 应用到了超声波传感器进单片机的发展趋势 行检测。所以本设计与实际相结 合,现实意义很强。单片机在目前的形势下,表现出几大趋势 : *可靠性及应用越来越水平高和互联网连接已是一种明显的走向。*所集成的部件越来越多。NS(美国国家半导体)公司的单片机已把梧 音、图象部件也集成到单片机中,也就是说,单片机的意义只是在于单片集成 电路,而不袄于其功能了。如果从功能上讲它可以讲是万用机,原因是其内部 已集成上各种应用电路。*功耗越来越低。*和模拟电路结合越来越多。随着半导体工艺技术的发展及系统设计水平的

4、提高,单片机还会不断产生 新的变化和进步,最终人们可能发现 : 单片机与微机系统之何的距离越来越小, 甚至难以辨认。第二章 系统方案论证与选择2.1系统总体方案设计论证本系统基本框图 2-1 所示:图 2-1 系统基本框图在设计车体框架时,我们有两套起始方案,自己制作和直接购买玩具电动 车。方案一:自己设计制作车架 自己制作小车底盘,用两个直流减速电机作为 主动轮,利用两电机的转速差完成直行、左转、右转、左后转、右后转、倒车 等动作。减速电机扭矩大,转速较慢,易于控制和调速,符合避障小车的要 求。而且自己制作小车框架,可以根据电路板及传感器安装需求设计空间,使 得车体美观紧凑。但自己制作小车设

5、计制作周期较长,且费用较高,因而我们 放弃这一方案。方案二:购买玩具电动车,玩具电动车价格低廉,有完整的驱动、传动和 控制单元,其中传动装置是我们所需的,缩短了开发周期。但玩具电动车采用 普通直流电机驱动,带负载能力差,调速方面对程序要求较高。同时,玩具电 动车转向依靠前轮电机带动前轮转向完成,精度低。考虑到利用玩具电动小车 做车架开发周期短,可留够充分的时间用于系统调试,且硬件上的不足我们有 信心用优良的算法来弥补,故我们选择方案二。2.2系统各个模块论证2.2.1 控制器模块的选择与论证(单片机的选择)方案一:采用凌阳公司的 16 位单片机,它是 16 位控制器,具有体积小、 驱动能力强、

6、可靠性高、功耗低、结构简单、具有语音处理、运算速度快等优 点,但考虑到我们小组对这个方案采用的微处理器并不熟悉,使用起来并不是 很方便,这对于硬件电路的设计和软件编程增加了难度。我们决定不再使用此 方案,考虑其他方案。方案二:采用 AT89C52 单片机作为主控制器。AT89C52 是一个超低功 耗,和标准 51 系列单片机相比较具有运算速度快,抗干扰能力强,支持 ISP 在 线编程,片内含 8k 空间的可反复擦写 1000 次的 Flash 只读存储器,具有 256 bytes 的随机存取数据存储器(RAM ), 32 个 I/O 口,2 个 16 位可编程定时计 数器。其指令系统和传统的

7、8051 系列单片机指令系统兼容,降低了系统软件设 计的难度,电路设计简单、价格低廉,在后来的实验中我们发现, AT89C52 精 确度和运算速度也都完全符合我们系统的要求。综合以上方案我们选择比较普通的更为熟悉的方案二使用 AT89C52 单片机 为我们整个系统的控制核心。2.2.2 寻线模块的选择与论证 小车沿着黑色路线运动,且不能偏离该轨迹,可以利用传感器来感知轨迹。方案一:用光敏电阻组成光敏探测器。光敏电阻的阻值可以跟随周围环境 光线的变化而变化。当光线照射到白线上面时,光线发射强烈,光线照射到黑 线上面时,光线发射较弱。因此光敏电阻在白线和黑线上方时,阻值会发生明 显的变化。将阻值的

8、变化值经过比较器就可以输出高低电平。但是这种方案受 光照影响很大,不能够稳定的工作。方案二:红外探测法,即利用红外线在不同颜色的物体表面具有不同的反 射性质的特点,在小车行驶过程中不断红外发射管发出红外线,当发出的红外 线照射到白色的平面后反射,若红外接收管能接收到反射回的光线则检测出白 线继而输出低电平,若接收不到发射管发出的光线则检测出黑线继而输出高电 平。单片机就是通过接收到的高低电平为依据来确定黑线的位置和小车的行走 路线。对于发射和接收红外线的红外探头,可以自己制作或直接采用集成式红 外探头。经测试,此种方法简单可靠。 经反复对比后,采用方案二2.2.3 控制电机模块的选择与论证方案

9、一 :利用步进电机的准确定长步进性能方便的实现调速和方向的偏 转,且能准确的测量速度、路程以及时间,简化编程和硬件连接的工作量。但 是步进电机在与机械配合的小车改装上难度极大,非短时间所能完成。该方案 实现较困难。方案二 :用玩具小车上自带的双直流电机,只需对后轮电机进行简单改 造,加上一个齿轮减速装置即可,两电机分别负责小汽车的驱动和转向的功 能,依据外围红外反射传感器所采集到的信息可以补足直流电机定位不准的缺 点,同时红外反射传感器的使用还能实现比较准确的寻迹行驶,用较好的控制 算法及特色硬件来提高小车的整体性能,可具有很高的性能 /价格比。经比较验证,显然方案一的机械结构也短时间内难以满

10、足题目的要求,而 方案二本身是与小车相兼容的,性能也比较好,采用方案二。2.2.4 电机驱动模块的选择与论证 方案一:采用传统的功率三极管作为功率放大器的输出控制直流电机。线 性型驱动的电路结构和原理简单,成本低,加速能力强,但功率损耗大,特别 是低速大转距运行时,通过电阻 R 的电流大,发热厉害,损耗大。方案二:采用继电器对电动机的开或关进行控制 ,通过开关的切换对小车的 速度进行调整 .此方案的优点是电路较为简单 ,缺点是继电器的响应时间慢 ,易损 坏 ,寿命较短 ,可靠性不高。方案三:采用专用芯片 L298N 作为电机驱动芯片。 L298N 是一个具有高电 压大电流的全桥驱动芯片,它相应

11、频率高,一片 L298N 可以分别控制两个直流 电机,而且还带有控制使能端。用该芯片作为电机驱动,操作方便,稳定性 好,性能优良。且由 L298N 结合单片机可实现对小车速度的精确控制。这种调 速方式有调速特性优良、调整平滑、调速范围广、过载能力大,能承受频繁的 负载冲击,还可以实现频繁的无级快速启动、制动和反转等优点。因此决定采用 L298N 控制直流电机。2.2.5 避障模块的选择与论证 方案一:用超声波传感器进行避障。超声波传感器的原理是:超声波由压 电陶瓷超声波传感器发出后,遇到障碍物便反射回来,再被超声波传感器接 收。超声波传感器在避障的设计中被广泛应用。采用超声波避障,超声波受环

12、境影响较大,电路复杂,而且地面对超声波的反射,会影响系统对障碍物的判 断。此我们考虑其它的方案。方案二:用漫反射式光电开关进行避障。光电开关的工作原理是根据光线 发射头发出的光束,被物体反射,其接收电路据此做出判断反应,物体对红外 光由同步回路选通而检测物体的有无。当有光线反射回来时,输出低电平。当 没有光线反射回来时,输出高电平。但是这种电路在户外容易受阳光的影响。 因此放弃此方案。方案三:采用红外线避障,利用单片机来产生 38KHz 信号对红外线发射管 进行调制发射,发射出去的红外线遇到避障物的时候反射回来,红外线接收管 采用数字接受器件 HS0038 对反射回来信号进行解调,输出 TTL

13、 电平,外界对 红外信号的干扰比较小,且易于实现,价格也比较便宜,考虑到本系统只需要 检测障碍物,没有十分复杂的环境。为了使用方便,便于操作和调试,我们最终选择了方案三。226 电源选择与论证方案一:所有器件采用单一电源(5 节五号电池)。这样供电比较简单,但是 由于电动机启动瞬间电流很大,会造成电压不稳、有毛刺等干扰,严重时可能 会造成单片机系统掉电,使之不能完成预定行程。方案二:双电源供电。电动机驱动电源采用5 节五号电池,单片机及其外围电路电源采用 5V 钮扣电池供电,两路电源完全分开,这样做虽然可以将电 动机驱动所造成的干扰彻底消除,提高了系统稳定性。但是不如单电源方便灵 活。方案三

14、采用 9V 蓄电池为直流电机供电,我们利用 lm7805 这块芯片将 12V 的锂 电池降压、稳压到 5V,为外围芯片供电。蓄电池具有较强的电流驱动能力以及 稳定的电压输出性能,这种接法比较简单,但小车的电路功耗过大会导致后轮 电机动力不足我们选择方案二2.3智能小车最终方案经过反复的探讨和论证我们最终确定智能救援小车的如下最终方案:1 采用 AT89C52 单片机作为整个电路的控制核心。2 直接使用电池组提供基准电源。3 采用直流减速电机作为小车系统的驱动电机。4. 使用电机专用驱动芯片 L293N 作为直流减速电机的驱动芯片。、5. 采用红外探测法进行循迹。6 采用红外发射管和 HS003

15、8 接受管组成避障电路。第三章系统的硬件设计与实现3.1微控制器电路的设计与原理微控制器电路是整个智能救援小车系统的核心控制部分,它负责对各路传 感信号的采集、处理、分析及对各部分硬件电路进行调整。本设计制作的智能 小车系统以AT89C52 单片机最小系统电路为整个系统的控制电路,通过各种传 感器电路,采集各种传感器信息,以发出各种控制信号命令,来完成相应的操 作.AT89C52 是片内有ROM/EPROM 的单片机,因此,这种芯片构成的最小系 统简单、可靠。用 AT89C52单片机构成最小应用系统时,只要将单片机接上时 钟电路和复位电路即可,如图 3-1AT89C52 单片机最小系统所示。由

16、于集成度 的限制,最小应用系统只能用作一些小型的控制单元。其应用特点:有可供用户使用的大量 I/O 口线。内部存储器容量有限。-应用系统开发具有特殊性。图 3-1 单片机最小系统电路原理图1、时钟电路STC89C52 虽然有内部振荡电路, 但要形成时钟, 必须外部附加电路。STC89C52单片机的时钟产生方法有两种。内部时钟方式和外部时钟方式。本设计采用内部时钟方式,禾 I用芯片内部的振荡电路,在 XTAL1、XTAL2引脚上外接定时元件,内部的振荡电路便产生自激振荡。本设计采用最常用的 内部时钟方式,即用外接晶体和电容组成的并联谐振回路。振荡晶体可在 1.2MHZ 到 12MHZ之间选择。电

17、容值无严格要求,但电容取值对振荡频率输出 的稳定性、大小、振荡电路起振速度有少许影响,CX1、CX2 可在 20pF 到100pF 之间取值,但在 60pF 到 70pF 时振荡器有较高的频率稳定性。所以本设 计中,振荡晶体选择 6MHZ,电容选择 65pF。在设计印刷电路板时,晶体和电容应尽可能靠近单片机芯片安装,以减少 寄生电容,更好的保证振荡器稳定和可靠地工作。为了提高温度稳定性,应采 用 NPO 电容。2、 复位电路AT89C52 的复位是由外部的复位电路来实现的。复位引脚RST 通过一个斯密特触发器用来抑制噪声,在每个机器周期的S5P2 斯密特触发器的输出电平由复位电路采样一次,然后

18、才能得到内部复位操作所需要的信号。复位电路通常采用上电自动复位和按钮复位两种方式。最简单的上电自动复位电路中上电自动复位是通过外部复位电路的电容充 电来实现的。只要 Vcc 的上升时间不超过 1ms 就可以实现自动上电复位。时钟 频率用 6MHZ时 C 取 22uF,R 取 1KQ。除了上电复位外,有时还需要按键手动复位。本设计就是用的按键手动复 位。按键手动复位有电平方式和脉冲方式两种。其中电平复位是通过RST 端经电阻与电源 Vcc 接通而实现的。按键手动复位电路见图3.2。时钟频率选用6MHZ 时,C 取 22uF,Rs 取 200Q,RK 取 1KQ。图 3-2 AT89C52 复位电

19、路3.2直流电机PWM调速控制直流电动机转速n=(U-IR)/K 其中 U 为电枢端电压,I 为电枢电流,R 为电枢电路总电阻,为每极磁通量, K 为电动机结构参数直流电机转速控制可分为励磁控制法与电枢电压控制法。 励磁控制法是控 制磁通,其控制功率小,低速时受到磁饱和限制,高速时受到换向火花和换向 器结构强度的限制,而且由于励磁线圈电感较大动态响应较差,所以这种控制 方法用得很少。大多数应用场合都使用电枢电压控制法。随着电力电子技术的 进步,改变电枢电压可通过多种途径实现,其中PWM 脉宽调制)便是常用的改变电枢电压的一种调速方法。PWM 调速控制的基本原理是按一个固定频率来接通和断开电源,

20、并根据需 要改变一个周期内接通和断开的时间比 (占空比)来改变直流电机电枢上电压的 占空比,从而改变平均电压,控制电机的转速。在脉宽调速系统中,当电机通 电时其速度增加,电机断电时其速度减低。只要按照一定的规律改变通、断电 的时间,即可控制电机转速。而且采用PWM 技术构成的无级调速系统启停时对直流系统无冲击,并且具有启动功耗小、运行稳定的特点。设电机始终接通电源时,电机转速最大为 Vmax 且设占空比为 D=t/T,则 电机的平均速度 Vd 为:Vd=VmaxD由公式可知,当改变占空比 D=t/T 时,就可以得到不同的电机平均速度 Vd,从而达到调速的目的。严格地讲,平均速度与占空比D 并不

21、是严格的线性关系,在一般的应用中,可将其近似地看成线性关系。 在直流电机驱动控制电 路中,PWM言号由外部控制电路提供,并经高速光电隔离电路、电机驱动逻辑 与放大电路后,驱动 H 桥下臂 MOSFE 的开关来改变直流电机电枢上平均电压, 从而控制电机的转速,实现直流电机 PW 碉速。当用单片机 I/O 口输出 PWMI 号时,可采用以下三种方法: 利用软件延时。当高电平延时时间到时,对 I/O 口电平取反变成低电平, 然后再延时;当低电平延时到时,再对 I/O 口电平取反,如此循环就可得到 PWMS 号。利用定时器。控制方法相同,只是在这里利用单片机定时器来定时进行高 低电平的翻转,而不用软件

22、延时。利用单片机自带的 PWM 空制器。STC12 系列单片机自身带有 PWM 控制器,STC89 系列单片机无此功能,其他很多型号的单片机也带有PWM 控制器,女口PIC单片机,、AVF 单片机等本实验用的 AT89C52 并没有 PWMI 制器,所以采用定时器产生 PWMS 号。3.3电机驱动原理电路3.3.1H 桥功率驱动原理直流电机驱动使用最广泛的就是 H 型全桥式电路,这种驱动电路方便地实 现直流电机的四象限运行,分别对应正转、正转制动、反转、反转制动。 H 桥 功率驱动原理图如图 2 所示。H 型全桥式驱动电路的 4 只开关管都工作在斩波状态。 S1、 S2 为一组, S3、S4

23、为一组,这两组状态互补,当一组导通时,另一组必须关断。当S1、S2导通时, S3、S4 关断,电机两端加正向电压实现电机的正转或反转制动;当 S3、S4 导通时,S1、S2 关断,电机两端为反向电压,电机反转或正转制动。实际控制中,需要不断地使电机在四个象限之间切换,即在正转和反转之 间切换,也就是在 S1、S2 导通且 S3 S4 关断到 S1、S2 关断且 S3、S4 导通这 两种状态间转换。这种情况理论上要求两组控制信号完全互补,但是由于实际 的开关器件都存在导通和关断时间,绝对的互补控制逻辑会导致上下桥臂直通 短路。为了避免直通短路且保证各个开关管动作的协同性和同步性,两组控制 信号理

24、论上要求互为倒相,而实际必须相差一个足够长的死区时间,这个校正 过程既可通过硬件实现,即在上下桥臂的两组控制信号之间增加延时,也可通 过软件实现。图 2-2-1 中 4 只开关管为续流二极管,可为线圈绕组提供续流回路。当电 机正常运行时,驱动电流通过主开关管流过电机。当电机处于制动状态时,电 机工作在发电状态,转子电流必须通过续流二极管流通,否则电机就会发热, 严重时甚至烧毁 .图 3-3 H 桥电路3.3.2 L298 简介本设计中采用的电机专用驱动芯片 L293n。L293n 是欧洲著名的 SGS 公司的产品,为单块集成电路、高电压、高电流、四通道驱动。设计用来接收DTL 或者 TTL 逻

25、辑电平,驱动感性负载 ( 比如继电器,直流电机 ) ,和开关电源晶体 管。内部包含 4 通道逻辑驱动电路(图 2.2 L298N 内部结构图)。其额定工作 电流为 1A,最大可达 1.5A, Vss 电压最小 4.5V,最大可达 36V。ENA(B) IN1(IN3)IN2(IN4)电机运行情况110正转101反转0XX停止表 3-1 输入引脚和输出引脚的逻辑关系电机驱动模块主要功能是将主控芯片发出的信号通过 L298n 电机控制芯 片转化为小车实际的动作。L298n 芯片有两个电源引脚 VDD 引脚和 VCC 引 脚。VDD引脚接+9V 电源用来给电机供电,VCC 引脚接+5V 电源用来给芯

26、片供 电,并作为逻辑高电平标准。.图 3-4 L298N 内部结构图L298N 芯片通过一个有四个 4148 二极管组成的保护电路与电机相连,保护 电路主要是用来在电机开启和关闭时泄流之用。由于我们一直让转向电机以最大功率使能从而获得最大的扭矩,保证小车 转向成功,而不需要控制转向电机的输出功率,所以ENA ENB 引脚(即转向电机使能引脚)直接接 +5 V ,即让转向电机一直使能。L293N 可直接的对电机进行控制,无须隔离电路。通过单片机的I/O 输入改变芯片控制端的电平,即可以对电机进行正反转,停止的操作(表1 是其使能端、输入引脚和输出引脚的逻辑关系。),操作非常方便,亦能满足直流减

27、速电机的大电流要求。调试时在依照上表,用程序输入对应的码值,即可以实 现对应的操作。其驱动电路原理图如下所示:图 3-5 电机驱动电路原理图3.4寻线检测电路图寻线检测电路图如图 3-6 所示。 小车前下方总共安装有三个模块,当小车的三个管子都处于黑带上时,即 小车直向行驶时,三个发射管发射的红外线被黑线所吸收,接收管并没有接收 到红外线,此时处于截至状态,此时运放的 U+U-,UO0,,即输出为高电平。当某一个或两个管子处于黑线外部时,即小车 走偏时,对应的接收管导通 其对应的运放的 U+vU-,所以 Uo0,即输出为低电平, 单片机通过程序判断进 行左右转动回到黑线上。并进一步判断导通的接

28、收管,以确定向那个方向转 向。有几个注意点:(1)R196 R207 选择,R196 为限流电阻,不同大小的限流电阻决定了红外发 射管的发射功率, R196 越小,红外发射管的功率就越大,多个并联后小车的能 耗也就大幅增加,但是同时增加了光电管的探测距离,因此可以根据情况选择 合适的限流电阻,R207 压电阻,R207 的选择应当尤为注意, R2 的选择和采用 红外接收管的内阻有关,由于 R2 和接收管构成分压电路,因此 R207 的大小和接收管的电压变化有关,具体的选择按照分压的原理进行一下简单的计算就可 以。若电路工作正常在光电管在黑线和白纸上移动式则在图中R207 的上端也就是 LM33

29、9 的 4 脚应该有明显的电压变化,良好的情况下电压变化可以达到3-4V,电压变化非常明显,如果电压变化不明显,可以尝试着更换R207 的阻值。(2 )图中的 R198 电阻, 为比较器提供参考电压, 具体参考电压的设定应根 据 R197上端的电压来决定。假如输入脚的电压变化为1.74.7V 则参考电压就可以设定在 3V 左右,在实际应用过程中可以根据当前的环境状况进行调整。对 于比较器可以单独用一个电位器(图中R197)分压提供参考电压,如果为了简化电路也可以几路电压比较器共用一路参考电压,各有优劣可以自行选择。(3) 52 片机由于没有内置 AD 建议采用比较器的方式,而对于 AVR 等他

30、内 置 AD的单片机或者采用片外 AD 芯片则可以直接输入变化的电压量,通过单片 机 A/D 端口直接读取。通过单片机的 A/D 口直接读取电压的变化量,不仅可以 简化外部电路,同时还能保留红外接收管的连续变化电压信息,通过软件算法 进行位置细化,不仅可以得到更精确的位置信息,还可以消除环境光线的影 响。但是同时也就加重了软件设计的难度。图 3-63.5避障电路的原理与电路3.5.1 红外通信原理红外遥控有发送和接收两个组成部分。发送端采用单片机将待发送的二进 制信号编码调制为一系列的脉冲串信号,通过红外发射管发射红外信号。红外 接收完成对红外信号的接收、放大、检波、整形,并解调出遥控编码脉冲

31、。为 了减少干扰,采用的是价格便宜性能可靠的一体化红外接收头(HS0038 它接收红外信号频率为 38kHz,周期约 26 血)接收红外信号,它同时对信号进行放大、 检波、整形得到 TTL 电平的编码信号, 再送给单片机,经单片机解码并执行去 控制相关对象。如图 3-7 所示:接收电路接收解调解码输出解调发送图 3-7单片机3.5.2 红外信号的调制、解调(1)二进制信号的调制二进制信号的调制由单片机来完成,它把编码后的二进制信号调制成频率 为 38kHz 的间断脉冲串,相当于用二进制信号的编码乘以频率为 38kHz 的脉冲 信号得到的间断脉冲串,即是调制后用于红外发射二极管发送的信号如图 4

32、 二 进制码的调制所示。图 3-8 二进制码的调制(2) 红外接收需先进行解调,解调的过程是通过红外接收管进行接收的。其 基本工作过程为:当接收到调制信号时,输出高电平,否则输出为低电平,是 调制的逆过程(图 3-5-3 二进制码的解调)。 HS0038 是一体化集成的红外接收 器件,直接就可以输出解调后的高低电平信号;红外接收器 HS0038 的应用电 路图 3-9 二进制码的解调3.5.3 线发射接受电路原理图 采用红外线避障方法,利用一管发射另一管接收,接收管对外界红外线 的接收强弱来判断障碍物的远近,由于红外线受外界可见光的影响较大,因此 用 250Hz 的信号对 38KHz 的载波进

33、行调制,这样减少外界的一些干扰。 接收 管输出 TTL 电平,有利于单片机对信号的处理。采用红外线发射与接收原理。 利用单片机产生 38KHz 信号对红外线发射管进行调制发射,发射距离远近由 RW 调节,本设计调节为 10CM 左右。发射出去的红外线遇到避障物的时候反 射回来,红外线接收管对反射回来信号进行解调,输出 TTL 电平。利用单片机 的中断系统,在遇障碍物时控制电机并使小车转弯。由于只采用了一组红外线 收发对管,在避障转弯方向上,程序采用遇障碍物往左拐方式。如果要求小车 正确判断左转还是右转,需在小车侧边加多一组对管。外界对红外信号的干扰 比较小,性价比高。 。调试时主要是调制发射频

34、率为接收头能接收的频率,采 用单片机程序解决。发射信号强弱的调节,由可调精密电阻调节图 3-10 红外线发射接受电路原理图3.6通讯模块当我们的小车设计完成时,需要将程序烧录到单片机中这就需要MAX232 模块完成单片机与 PC 机之间的通讯。3.6.1 MAX232 介绍MAX232 是由德州仪器公司( TI )推出的一款兼容 RS232 标准的芯片。由 于电脑串口 RS232 电平是-10v +10v ,而一般的单片机应用系统的信号电压是 ttl 电平 0+5v, MAX232 就是用来进行电平转换的。该器件包含 2 驱动器、 2 接收器和一个电压发生器电路提供 TIA/EIA-232-

35、F 电平。该器件符合 TIA/EIA-232-F 标准,每一个接收器将 TIA/EIA-232-F 电 平转换成5-V TTL/CMOS 电平。每一个发送器将 TTL/CMOS 电平转换成 TIA/EIA-232-F 电平。下图为 MAX232 的内部结构图图 3-11 MAX232 的内部结构图3.6.2MAX232 与单片机的链接AT89C52 单片机片内有一个串行 I/O 端口,通过引脚 RXD(P3 0)和 TXD(P3 .1)可与外设电路进行全双工的串行异步通信 单片机的串行端口有 4 种基本工作方式 ,通过编程设置 ,可以使其工作在任一方式 ,以满足不同应用场合 的需要 .其中,方

36、式 0 主要用于外接移位寄存器 ,以扩展单片机的 I/O 电路。方式 1 多用于双机之间或与外设电路的通信。方式 2,3 除有方式 l 的功能外,还可用作 多机通信 ,以构成分布式多微机系统 .。串行通信的波特率可以程控设定 .在不同 工作方式中 ,由时钟振荡频率的分频值或由定时器 Tl 的定时溢出时间确定 ,使用 十分方便灵活.本实验中所使用的晶振为11.0592MHZ,保证了串行通信的波特率 为的整数。当小车的设计完成时将编译完成的软件程序通过特定的软件工具下载到单 片机中,然后给单片机上电,就可使其按照程序完成相应的功能。图 3-12 MAX232 与单片机的连接图第四章 软件设计41软

37、件开发环境简介在本智能小车的设计中,单片机 AT89C52 的软件开发使用 C 语言,是在 Keil c环境下进行开发的。 Keil c 是美国 KEIL SOFTWARE 公司出的 51 系列 兼容单片机 c语言的软件开发系统。与汇编相比, c 语言在功能、结构、可读性,可维护性上都有明显的优 势,易学易用。而且 c 语言最大的优点就是具有良好的可移植性,这使得硬件 升级工作更加容易。 Keil c 软件提供丰富的地库函数和功能强大的集成开发调 试工具 ,全 WINDOWS界面。另外重要的一点, KEIL C 生成的代码效率非常 高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更

38、能具体 体现高级语言的优势。4.2软件设计思想系统软件设计说明在进行微机控制系统设计时,除了系统硬件设计外,大量的工作就是如何根据每个生产对象的实际需要设计应用程序。因此,软件设计在微机控制系统设计中占重要地位。对于本系统,软件更为重要在单片机控制系统中,大体上可分为数据处理、过程控制两个基本类型。 数据处理包括:数据的采集、数字滤波、标度变换等。过程控制程序主要是使 单片机按一定的方法进行计算,然后再输出,以便控制生产。为了完成上述任务,在进行软件设计时,通常把整个过程分成若干个部 分,每一部分叫做一个模块。所谓“模块”,实质上就是所完成一定功能,相 对独立的程序段,这种程序设计方法叫模块程

39、序设计法。模块程序设计法的主要优点是:单个模块比起一个完整的程序易编写及调试;模块可以共存,一个模块可以被多个任务在不同条件下调用; 模块程序允许设计者分割任务和利用已有程序,为设计者提供方便。4.3软件设计具体实现4.3.1 程序模块构成 根据模块化设计思想,整个软甲设计划分为:延时模块,调速模块,障碍 物探测模块,常规动作模块,循迹模块等。以下将对各个模块以及相关的函数 做简要的说明。系统时钟模块:通过 T1 定时器产生 0.1 秒间隔的溢出中断,作为小车周期性探测和动作的 时钟。此外有两个辅助软件延时函数。 相 关 函 数 : timer1_init() 。 timer1_ovf()。d

40、elay100us(n)。delay10ms(n)。调速模块:通过 T0 定时器产生 PWM 波形来控制驱动电机的输出占空比。相关相关 函数:init0()。timer0f()。delay100us(n)。delay10ms(n) :巡线检测模块:系统时钟模块产生 0.1 秒间隔的溢出中断,对单口进行周期性探测。通过 读取p1.0 、p1.1 、p1.2 端口值判断小车是否偏离了黑线。共有 7 种设定的黑线 检测情况,可以利用四个常规动作完成小车的寻线动作,当没有反射回来光线,即小车不在黑线上时端口检测到“ 0”,否则为“ 1”。 具体的动作如下:发现小车未在黑线上时( 000 ):后退;发现

41、右边检测到黑线时( 001 ):右转; 发现端口为( 011、110、 111、010) :直走; 发现左边检测到障碍物时( 100 ):左转; 每次动作结束后,小车都要改运动状态为前进,等待下一次中断触发。 相关函数:xunji_xx()delay100us(n) 。 障碍探测模块:如前所述,通过读取 p1.3 、p1.4 、p1.5 端口值判断前方障碍物情况。共有 7 种设定的障碍物检测情况,可以利用四个相应的动作。当发现前方有障碍物 时,端口检测到“ 0”,否则为“ 1”发现前方无障碍物时( 111):直走发现前方有小障碍 ( 101 ) : 后 退 并 右 转 ;发现右方有小障碍 (

42、110 ) : 前 进 并 左 转 ;发现左方有小障碍 ( 011 ) : 前 进 并 右 转 ;发现前方有大障碍( 000 ) : 较 大 的 后 退 并 右 转 ;发现右方有大障碍 ( 100 ) : 后 退 并 左 转 ;发现左方有大障碍 ( 001 ) : 后 退 并 右 转 ;发现两边有障碍但中间无障碍 ( 010 ):较大的后退并右转;每次动作结束后,小车都要改运动状态为前进,等待下一次中断触发 相关函数:timer1_ovf() 。 timer0_init() 。 isr_timer0_ovf()。Bizhang_xx()delay100us(n)。delay10ms(n)常规动

43、作模块:根据障碍探测模块和巡线检测模块的返回值,由 4 个动作函数控制小车的 各种动作 相关函数:turn_right()turneft()straight。turn_back()432 程序设计各个模块流程图避障模块流程图避障模块流程图T1 溢出中断偏离黑线卄未偏离黑线厂”根据检测到的返回值( 情况(7 种),从四种 )动作中选执行择执行4.3.3 程序段#in clude#defi ne uchar un sig ned char#defi ne uint un sig ned intuchar pwmeft,pwm_right,i,j。a。 /左右占空比标志/*= 全 局 变 量 定 义

44、 区=*/ sbitdjzuo1=P0A0。*sbit djzuo2=P0A1。sbit djyou1=P0A2。II*sbit xunji_mid=P1A1 。sbit xun ji_right=p1A2。sbit bizhangeft=p1A3。II 左 *sbit djyou2=P0A3 。sbit xunji_left=P1A0回信号为 1IIII 接收循迹传感器的信号,无返回信号为0,有返电机左轮电机右轮接收壁障传感器的信号,无返回信检测传感器端口的返回值号为 1,有返回信号为 0*sbit bizha ng_mid=p1A4。II 中 /sbit bizhang_rightsbit

45、 zaibo=P2A0 。void timer1(void) interrupt 1 tzbo=tzbo 。TH0=0 xF8 。TL0=0 x30 。/* 产生频率为 38khz 的信号 / void38khz_xinhao()while(1)for(a=0 。 a1。 a+) 。a=0。a=0。a=0。zaibo=0 。for(a=0 。 a1。 a+) 。a=0。a=0。a=0。sbit tzbo=P2A1sbit flag=P1A7 。sbit xj_button=p2A2sbit bz_button=p2A3sbit zx_button=p2A4xj_button=0 。bz_but

46、ton=0 。zx_button=0 。void time1_init()TMOD=0 x01TH0=0 xF8TL0=0 x30EA=1ET1=1EX1=1TR1=1zaibo=1tzbo=1控制循迹开关控制壁障开关控制直线开关/ 设定定时器 1 的工作模式 / 。/ 定义计数初值 /o开中断、 /。 / 定时器 1 允许中断 /o。 / 启动定时器 1/a=0。 zaibo=1 。void delay100us(uint8 n)uint8 i。for( 。n!=0 。 n-)for(i=100。 i!=0 。 i-)NOP()。/*10毫秒延时 */*100微秒延时 */ uint16 i

47、for(i=n*10000NOP()/*/void init0() /TMOD=0X010。i!=0 。利用定时定时器 0 初始化 /。 /TH0=(65536-100)/256TL0=(65536-100)%256EA=1 。 / ET0=1。/TR0=1。/i=0 j=0 / 设定 PWM&号的占空比/void time0(void)interrupt 1i+设定定时器 0 的工作模式 / 定义计数初值 /0开中断、 /定时器 0 允许中断 /启动定时器 0/void delay10ms(uint8 n)j+ 。if(i=pwm_right) djyou1=1。else djyou

48、1=0 。if(i=40) djyou1=djyou1。 i=0 。 if(j=pwm_left) djzuo1=1。 else djzuo1=0 。if(j=40) djzuo1=djzuo1。 j=0 。 TH0=(65536-100)/256。TL0=(65536-100)%256。void straight() /djzuo2=0djzuo1=1djyou2=0djyou1=1pwm_right=39pwm_left=39void turn_left() /djzuo2=0djzuo1=1djyou2=0djyou1=1pwm_right=5pwm_left=39/delay(10)v

49、oid turn_right() /djzuo2=0djzuo1=1djyou2=0djyou1=1pwm_right=39pwm_left=5/delay(10)void turn_back() /djzuo2=1djzuo1=0djyou2=1djyou1=0pwm_right=39pwm_left=39void jiasuo_zj ()/ djzuo2=0djzuo1=1djyou2=0djyou1=1 while(1)走直线函数左转弯函数右转弯函数后退( 反转)函数正转加速 /if(xunji_left=0)&(xunji_mid=0)&(xunji_right=0)f

50、lag=0。elseif(xunji_left=0)&(xunji_mid=0)&(xunji_right=1)flag=1。 elseif(xunji_left=0)&(xunji_mid=1)&(xunji_right=0) flag=2。 elseif(xunji_left=0)&(xunji_mid=1)&(xunji_right=1)flag=3。 elseif(xunji_left=1)&(xunji_mid=0)&(xunji_right=0)flag=4。 elseif(xunji_left=1)&(xun

51、ji_mid=0)&(xunji_right=1)flag=5。 elseif(xunji_left=1)&(xunji_mid=1)&(xunji_right=0) flag=6。 for(i=0pwm_right=ipwm_left=idalay(10)void jiasuo_zj ()/ djzuo2=0djzuo1=1djyou2=0djyou1=1while(1)for(i=40pwm_right=ipwm_left=idalay(10)void xunji_xx() / uchar flagi=0 。 i-)。循迹 检测黑线为 1elseif(xunji_l

52、eft=1)&(xunji_mid=1)&(xunji_right=1)flag=7 。 switch (flag)case 0: turn_back() 。break 。case 1: turn_right() 。break。case 2: straight()。break。case 3: straight()。break。case 4: turn_left() 。break 。case 5: straight() 。break。case 6: straight() 。break。case 7: straight()。break 。default:break 。void bi

53、zhang_xx() / 避障 有障碍物时为 0/uchar。if(bizhang_left=0)&(bizhang_mid=0)&(bizhang_right=0)flag=0。 elseif(bizhang_left=0)&(bizhang_mid=0)&(bizhang_right=1)flag=1。 elseif(bizhang_left=0)&(bizhang_mid=1)&(bizhang_right=0)flag=2。 elseif(bizhang_left=0)&(bizhang_mid=1)&(bizhang_r

54、ight=1)flag=3 。 elseif(bizhang_left=1)&(bizhang_mid=0)&(bizhang_right=0)flag=4。 elseif(bizhang_left=1)&(bizhang_mid=0)&(bizhang_right=1)flag=5 。 elseif(bizhang_left=1)&(bizhang_mid=1)&(bizhang_right=0) flag=6 。 elseif(bizhang_left=1)&(bizhang_mid=1)&(bizhang_right=1)f

55、lag=7 。 switch (flag)case 0: turn_back() 。break。case 1: turn_right() 。break。case 2: turn_back()dalay(100) turn_right()breakcase 3: turn_right()break case 4: turn_left() break case 5: turn_left() break case 6: turn_left()breakcase 7: straight() break default: break 。void timer1_init()TMOD=0X01TH0=0 x

56、cf 。TL0=0 x2c 。 EA=1 。ET1=1 。TR1=1 。 void timer1_ovf() init0() 。 time0()TH0=0 xcf TL0=0 x2cif(xj_button=1) delay(10)if(xj_butt on=1) while (! xj_butto n) _xunji_xx()odelay100us(100)。if(bz_butt on=1)delay10ms(10)。if(bz_button=1) _/ 设定定时器 0 的工作模式 / 定义计数初值 / 开中断、 / 定时器 0 允许中断 / 启动定时器 0/ 定义计数初值 /time1ni

57、t。timer1()。38khz_xi nhao()。while(!bz_butt on)bizha ng_xx()。delay10ms(10)if(zx_butt on=1) delay10ms(10)。if(zx_butt on=1) jiasu_zj ()。dalay10ms(100)。jia nsu_zj ()。 _void mai n()timer1n it()。void timer1_ovf()。while(1)。第五章测试数据、测试结果分析5.1测试方法与仪器1、测试仪器测试仪器包括秒表、数字万用表、信号发生器、示波器、 MCS51 仿真机、 直流稳压电源等。2、测试方法 数字万

58、用表主要用来测试分立元件的电阻、压降、漏电流、截止 /导通状态 等参数;信号发生器与示波器用于测试各光电传感器信号的接收与传输;MCS51 仿真机用于测试软件;直流稳压电源在测试期间为各待测系统供电;秒表用于产品测试,按照任务书的基本要求对制成的电动车进行产品测试。5.2系统实现功能1.对于前方任意放置的障碍物的灵活规避;2用黑色胶带在白纸上贴出直线,S型曲线等,小车能流畅的沿着黑线行 走。第六章 结论历时三个月的设计过程中,我首先边查资料,边在实验室焊接小车的线路 板。在焊接过程中,我感觉到即使是一个简单的电路,要想很轻松的焊好,也 不是很容易的事情。有时是“虚焊”的原因,有时可能是阻值选错

59、。在焊接显 示电路时,我就错将 680 欧的电阻焊成了 6.8 千欧。这使我深深感受到理论与 实际间的差距。通过这样的设计,提高了我的动手能力。每天在实验室除了焊 接线路板,还可以上机编程,使我软件调试知识也提高了。本设计采用的是 80C51 单片机,这主要是因为该单片机的稳定性比较 好。还可以采用其它系列的单片机。比如采用陵阳单片机,就可以简化编程, 但其稳定性不是很好。致谢历时三个月的毕业设计已经告一段落。经过自己不断的搜索努力以及白老 师的耐心指导和热情帮助,本设计已经基本完成。在这段时间里,白老师严谨 的治学态度和热忱的工作作风令我十分钦佩,他的指导使我受益非浅。同时本 系 120 实验室的开放也为我的设计提供了实习场地。在此对白文峰老师和牛晓 升老师表示深深的感谢。通过这次毕业设计,使我深刻地认识到学好专业知识的重要性,也理解

温馨提示

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

最新文档

评论

0/150

提交评论