避障智能小车毕业论文_第1页
避障智能小车毕业论文_第2页
避障智能小车毕业论文_第3页
避障智能小车毕业论文_第4页
避障智能小车毕业论文_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

1、 毕业论文(设计)毕业论文(设计) 论文(设计)题目: 避障智能小车 intelligent obstacle avoidance car 系 别: 专 业: 电气工程及其自动化 班 级: 姓 名: 学 号: 指导老师: 职 称: 日 期: 2013 年 5 月 9 日 教务处制 摘 要 智能作为现代的新发明,是以后的发展方向,它可以按照预先设定的模式在一 个环境里自动的运作,不需要人为的管理,可应用于科学勘探等等的用途。智能电 动车就是其中的一个体现。而此次智能车设计以 mc9s12xs128 微控制器为核心,结 合超声波模块,无线模块,实现小车的智能避障功能和距离实时显示功能。其中的 主传

2、感器为超声波模块,它与舵机相连,当遇到障碍物小于预订距离时,能够全方 位 180 度进行距离检测,为小车提供正确的道路方向,从而避开障碍物。无线模块, lcd1602 液晶模块,stc89c52 这三者相结合,能够以直观的方式实时显示小车检测 的距离情况,方便进行相应的记录,更好地完成探测工作。 关键词:智能车,避障,超声波,无线 abstract intelligence is the developing direction as a modern invention in the future. it can operate automatically and be used to sc

3、ientific exploration according to the present mode in such an environment, without the help of the human management. intelligent electric vehicles is one of the embodiment. and the intelligent car design takes mc9s12xs128 micro controller as the core, combined with the ultrasonic module and wireless

4、 module, to realize the cars intelligent obstacle avoidance function and the distance real-time display function. one of the main sensors is the ultrasonic module, which is connected to the steering gear. when faced with the obstacles less than the booked distance, the ultrasonic module can check th

5、e distance all-around and provide the right direction for the car to avoid obstacles. and the wireless module, lcd1602 lcd module, and stc89c52 module can be all combined together, which they can show the detecting cars distance in a visual way and make records conveniently to complete the detection

6、 work better. keywords: intelligent vehicle, obstacle avoidance, ultrasonic, wireless 目 录 第 1 章 绪 论.1 第 2 章 系统硬件设计.2 2.1 系统总体设计方案 .2 2.2 主控系统.2 2.3 电源设计.3 2.3.1 电源管理.3 2.3.2 低压差稳压芯片 lm2940 简介.3 2.3.3 lm1117(ams1117)系列稳压芯片简介.4 2.4 lcd1602 液晶显示模块.5 2.4.1 lcd1602 简介.5 2.4.2 lcd1602 引脚.5 2.5 nrf24l01 无线

7、模块 .7 2.5.1 nrf24l01 简介 .7 2.5.2 无线模块的使用.8 2.6 驱动模块 .8 2.6.1 l298n 简介.8 2.6.2 电机驱动电路及说明.9 2.6.3 l298n 模块使用方法 .10 2.7 舵机模块 .10 2.7.1 舵机选择 .10 2.7.2 舵机控制 .10 2.8 超声波模块.11 2.8.1 模块特点.11 2.8.2 模块实物图.12 2.8.3 模块电平触发测距时序.13 2.8.4 基本工作原理.13 2.9 核心板模块.14 2.9.1 核心板电路设计与 pcb.14 2.10 超声波模块的位置安装 .15 第 3 章 系统软件设

8、计.16 3.1 系统软件整体控制流程图 .16 3.2 无线接收模块流程图 .17 3.3 超声波模块流程图 .17 3.4 小车控制算法 .18 第 4 章 系统调试.20 4.1 开发调试工具.20 4.2 软件开发平台 .20 第 5 章 结论.22 致 谢 .23 参考文献.24 附录:程序附录:程序.25 第 1 章绪 论 随着我国科学技术的进步,智能化和自动化技术越来越普及,各种高科技也广 泛应用于智能小车和机器人玩具制造领域使智能机器人越来越多样化。智能小车 是一个多种高新技术的集成体,它融合了机械、电子、传感器、计算机硬件、软件、 人工智能等许多学科的知识涉及到当今许多前沿领

9、域的技术。而智能电动车正是 智能机器人的一种,具有不可估量的实际意义 智能车作为现代的新发明,是以后的发展方向,它可以按照预先设定的模式在 一个环境里自动的运作,不需要人为的管理,可应用于科学勘探等等的用途。智能 小车作为机器人的典型代表。机器人要实现自动导引功能和避障功能就必须要感知 导引线和避障物,感知导引线相当给机器人一个视觉功能。避障控制系统是基于自 动引导小车系统,基于它的智能小车实现自动识别道路,判断并自动避开障碍物, 选择正确的行进路线,使用传感器感知路线和避障并作出判断和相应的执行动作。 此次的设计主要实现避障循路这一个功能。它通过超声波作为传感器,凭借超 声波模块的发射接收功

10、能,能很好的判断计算出前方障碍物离智能车的距离,从而 让智能车进行偏转寻找出正确的道路,它的测距功能在一些危险地带探测场地的距 离大小有很好的辅助作用,避免了人工探测的危险。同时在本智能车的基础上安装 了无线控制功能,在特定时期方便人为的知道小车遇到的具体情况,并进行相应的 记录和控制,更好地完成探测工作。 第 2 章 系统硬件设计 2.1 系统总体设计方案 本系统以 mc9s12xs128 单片机作为核心控制芯片,包括电源模块、超声波模块、 驱动模块,无线模块,舵机模块,lcd 液晶显示模块。通过 c 编程完成智能小车的 整体装置。 中间超声波模块 右边超声波模块 左边超声波模块 p m m

11、c9s12xs 128 电源模块 舵机模块 驱动模块 无线发送lcd 显示模块 stc8 9c52 无线接收 lcd 显示 模块 图 2-1智能小车的总体设计 2.2 主控系统 采用 freescale 公司mc9s12xs128,16bit、112pin 的单片机,其集成了 pim,tim,pwm,spi,sci,ect,can,ad,pit,can 等模块,mcu内部最高超频达80mhz, 运算速度快,使用方便,功能强大。 本智能车此次用到了 xs128 中的普通 io 口:a,b,e,k;外部中断端口 h 口; ad 口,tim 模块,pwm 模块等。图 2-2 为 mc9s12xs12

12、8 集成模块 图 2-2 mc9s12xs128 2.3 电源设计 2.3.1 电源管理 电源管理是智能小车设计中的重要环节,它为系统各个模块供电。可靠的电源 设计是整个硬件电路稳定运行的基础。本智能小车使用的是可充电式ni-cd电池。其 供电电压为7.2v,容量为1800ma/h,由于智能车系统各个模块所需电压不同,因此 需要进行电压调节,此次智能车用到的稳压芯片有lm2940-5.0,asm1117- 5.0,asm1117-3.3,lm1117-adj。智能车系统中电源分配如下: 7.2v mcu 6v5v3.3v7.2v 电机舵机mcu超声波无线lcd 图2-3 电源分配 2.3.2

13、低压差稳压芯片 lm2940 简介 lm2940 系列是输出电压固定的低压差三端端稳压器;输出电压有5v、8v、10v 多种;最大输出电流1a;输出电流1a 时,最小输入输出电压差小于0.8v;最大输入 电压26v;工作温度-40+125;内含静态电流降低电路、电流限制、过热保护、 电池反接和反插入保护电路。 图2-4 lm2940 封装和实物图 vc c _5v 1 2 3 vv gnd inout u4 lm 2940 0.1uf c 2 0.1uf c 4 100uf c 1 10uf c 3 gnd vc c _7.2v 图 2-5 lm2940-5.0 稳压电路 2.3.3 lm11

14、17(ams1117)系列稳压芯片简介 lm1117是一个正向低压降稳压器,在1a电流下压降为1.2v。lm1117内部集成过 热保护和限流电路,有限流功能和过热切断功能。温度范围:-40c 125c。 图 2-6 lm1117 封装及引脚分布 ams1117-3.3,ams1117-5.0,lm1117-adj 稳压电路如图 2-7 至 2-9 所示: v in 3 o u t 2 gnd 1 u 6a m s 1117-3.3 0.1uf c 11 100uf c 9 10uf c 12 0.1uf c 13 g n d v c c _3.3v c c _7.2v 图 2-7 ams111

15、7-3.3 稳压电路 v in 3 o u t 2 gnd 1 u 2 a m s 1117-50.1uf c 2 100uf c 1 0.1uf c 4 100uf c 3 v c c _5vv c c _7.2v g n d 图 2-8 ams1117-5.0 稳压电路 v in 3 adj 1 v out 2 u 7 l m 1117-a d j c 16 10uf r 4 121 1 1 3 3 2 2 r 5 1k c 14 100uf c 15 0.1uf g n d 1 c 17 10uf v c c 7.2v6v 图 2-9 lm1117-adj(6v)稳压电路 2.4 lcd

16、1602 液晶显示模块 2.4.1 lcd1602 简介 1602 液晶也叫 1602 字符型液晶,它是一种专门用来显示字母、数字、符号等 的点阵型液晶模块,内容为 16x2,即可以显示两行,每行 16 个字符液晶模块。它由 若干个 5x7 或者 5x11 等点阵字符位组成,每个点阵字符位都可以显示一个字符, 每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用。 2.4.2 lcd1602 引脚 1602采用标准的16脚接口,其中: 第1脚:vss 为电源地 第2脚:vcc 接5v 电源正极 第3脚:v0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对 比度最

17、高(对比度过高时会 产生“鬼影” ,使用时可以通过一个10k 的电位器调整 对比度) 。 第4脚:rs 为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄 存器。 第5脚:rw 为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。 第6脚:e(或 en)端为使能(enable)端,高电平(1)时读取信息,负跳变时执行 指令。 第714脚:d0d7为8位双向数据端。 第1516脚:空脚或背灯电源。15脚背光正极,16脚背光负极。 图 2-10 lcd1602 实物与引脚 读写操作时序如图 2-11 和 2-12 所示: 图 2-11 读操作时序 图 2-12 写操作时序

18、2.5 nrf24l01 无线模块 2.5.1 nrf24l01 简介 nrf24l01 是一款新型单片射频收发器件,工作于 2.4 ghz2.5 ghzism 频段。 内置频率合成器、功率放大器、晶体振荡器、调制器等功能模块,并融合了增强型 shockburst 技术,其中输出功率和通信频道可通过程序进行配置。nrf24l01 功耗低, 在以-6 dbm 的功率发射时,工作电流也只有 9 ma;接收时,工作电流只有 12.3 ma,多 种低功率工作模式(掉电模式和空闲模式)使节能设计更方便。 图 2-13 nrf24l01 模块 2.5.2 无线模块的使用 本次智能车使用两块无线模块,分别是

19、发送和接受数据作用。以 mc9s12xs128 连接无线模块,作为数据的发送,实时发送超声波检测的距离,以 mc89c52 单片机 连接无线模块作为数据的接收,在接收模块中加入 lcd1602 液晶显示模块,能够很 好的显示出小车离障碍物之间的距离。下图为 mc89c52 单片机无线接收模块电路, 其中以 ams1117-3.3 为无线模块提供 3.3v 的电压,以 mc89c52 单片机的 p1 口作为 无线接收端口,p0 口作为 lcd1602 液晶显示数据传送端口,外加复位电路,晶振电 路。 gnd 20 ea/vpp 31 x1 19 x2 18 r st 9 p37(r d) 17

20、p36(w r ) 16 p32(int0) 12 p33(int1) 13 p34(t0) 14 p35(t1) 15 p10 1 p11 2 p12 3 p13 4 p14 5 p15 6 p16 7 p17 8 p00 39 p01 38 p02 37 p03 36 p04 35 p05 34 p06 33 p07 32 p20 21 p21 22 p22 23 p23 24 p24 25 p25 26 p26 27 p27 28 psen 29 ale/p 30 p31(tx) 11 p30(r x) 10 vc c 40 u1 at89c 51(b) 1 2 3 4 5 6 7 8

21、9 j1 10k d0 d1 d2 d3 d4 d5 d6 d7 gnd vc c r 1 2.7k gnd gnd en r s gnd r 2 10 vc c 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 u2 1602 d0 d1 d2 d3 d4 d5 d6 d7 vc c gnd 1 2 3 4 5 6 7 8 j3 w uxian vc c _3.3 gnd a0 a1 a2 a3 a4 a5 a0a1 a2a3 a4a5 vin 3 out 2 gnd 1 u6am s1117-3.3 0.1uf c 2 100uf c 1 10uf c 3 0.

22、1uf c 4 vc c _3.3 1 2 j4 header 2 vc c gnd y1 30pf c 5 30pf c 6 gnd r 3 10k r 4 1k s1 10uf c 7 vc cgnd 图 2-14 mc89c52 无线接收电路 2.6 驱动模块 2.6.1 l298n 简介 l298n 是st 公司生产的一种高电压、大电流电机驱动芯片。该芯片采用15 脚 封装。主要特点是:工作电压高,最高工作电压可达46v;输出电流大,瞬间 峰值 电流可达3a,持续工作电流为2a;额定功率25w。内含两个h 桥的高电压大电流全桥 式驱动器,可以用来驱动直流电动机和步进电动机、继电器线圈等

23、感性负载;采用 标准逻辑电平信号控制;具有两个使能控制端,在不受输入信号影响的情况下允许 或禁止器件工作有一个逻辑电源输入端,使内部逻辑电路部分在低电 压下工作;可 以外接检测电阻,将变化量反馈给控制电路。使用l298n 芯片驱动电机,该芯片可 以驱动一台两相步进电机或四相步进电机,也可以驱动两台直流电机。 图 2-15 l298 引脚 2.6.2 电机驱动电路及说明 in1 5 in2 7 in3 10 in4 12 ena 6 enb 11 gnd 8 vs s 9 vs 10 out1 2 out2 3 out3 13 out4 14 is ena 1 is enb 15 u1 l298

24、 1 2 3 4 5 6 7 8 j1 header 8 gnd vc c _5v gnd 1 2 j2 header 2 d9 led d1 in4007 d2 in4007 d3 in4007 d4 in4007 d5 in4007 d6 in4007 d7 in4007 d8 in4007 gnd vin 3 out 2 gnd 1 u2 am s 1117-5 0.1uf c 2 100uf c 1 0.1uf c 4 100uf c 3 1k r 1 gnd vc c _5v vc c _5vvc c _7.2v vc c _7.2v 1k r 2 d10 led d11 led 1

25、k r 3 d14 led d12 led 1 2 j3 head er 2 1 2 j4 head er 2 1 2 j5 header 2 vc c _7.2 gnd 图 2-16 电机驱动电路 对于以上电路图有以下几点说明: 1. 电路图中有两个电源,一路为 l298 工作需要的 5v 电源 vs,一路为驱动电 机用的电池电源 vss。 2. 1 脚和15 脚有的电路在中间串接大功率电阻,可以不加。 3. 图中连接了两路电机,2脚和3脚驱动一路电机,13脚和14脚驱动另一路电机。 4. 八个续流二极管in4007是为了消除电机转动时的尖峰电压保护电机而设计。 5. 6 脚和11 脚为两路

26、电机通道的使能开关,高电平使能,所以可以直接接高 电平,也可以交由单片机控制。 6. 由于工作时 l298 的功耗较大,需加装散热片。 2.6.3 l298n 模块使用方法 表 2-1 l298n 模块使用方法 enaenbin1in2in3in4 运行状态 00 停止 111010 正转 110101 反转 2.7 舵机模块 2.7.1 舵机选择 本次设计舵机的选择: 舵机类型:mg995; 工作扭力:13kg/cm; 舵机类型:模拟舵机; 工作电流:100ma; 使用电压:3-7.2v; 无负载是操作速度:0.13 秒/60 度(6v) ; 舵机接线:电源线,信号线,地线。 图 2-17

27、mg995 舵机 2.7.2 舵机控制 舵机的控制一般需要一个 20ms 左右的时间脉冲,该脉冲的高电平分为 0.5ms2.5ms 范围内的角度控制脉冲部分。以 180 度角度伺服为例,那么对应的控 制关系如图 2-18 所示: 图 2-18 舵机角度控制 2.8 超声波模块 2.8.1 模块特点 本次设计采用hc-sr04超声波测距模块,此模块可提供2cm-400cm的非接触式距 离感测功能,测距精度可达高到3mm;模块包括超声波发射器、接收器与控制电路。 hc-sr04超声波模块电气参数如表2-2所示: 表2-2 hc-sr04电气参数 电气特性hc-sr04超声波模块 工作电压 dc 5

28、v 工作电流 15ma 工作频率 40khz 最远射程 4m 最近射程 2cm 测量角度15度 输入触发信号10us的ttl脉冲 输出回响信号输出ttl电平信号,与射程成正比 规格尺寸 40*20*15mm 2.8.2 模块实物图 接线特点:如右图2-19所示,vcc 供5v电源, gnd 为地线,trig 触发控制信 号输入,echo 回响信号输出等四个接口端。 图 2-19 超声波测距模块外观 本测距模块使用的是压电式超声波发生器探头,压电式超声波发生器实际上是 利用压电晶体的谐振来工作的。超声波发生器内部结构如图1-37所示,它有两个压 电陶瓷晶片和一个金属片共振板。当它的两极外加脉冲信

29、号,其频率等于压电陶瓷 晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动,便产生超声 波。反之,如果两电极间未外加电压,当金属片共振板接收到超声波时,将压迫压 电晶片作振动,将机械能转换为电信号,这时它就成为超声波接收器了。 图2-20 压电式超声波发生器 2.8.3 模块电平触发测距时序 图 2-21 us-100 测距时序图 2.8.4 基本工作原理 (1)采用io 口trig 触发测距,给最少10us 的高电平信号。 (2)模块自动发送8 个40khz 的方波,自动检测是否有信号返回; (3)有信号返回,通过io 口echo 输出一个高电平,高电平持续的时间就是超声 波从发射

30、到返回的时间。测试距离=(高电平时间*声速(340m/s)/2; 2.9 核心板模块 2.9.1 核心板电路设计与 pcb 图 2-22 核心板电路 图 2-23 核心板 pcb 2.10 超声波模块的位置安装 本小车根据实际情况需要,在安装时使用三个超声波模块进行距离检测,它们 的安装位置如图 1-1 所示。其中居中的超声波模块连接舵机,方便超声波模块 180 度距离扫描,从而为小车判断出正确的行驶道路。而左右超声波模块的安装考虑是 为避免小车在行驶过程中左右边缘离障碍物过近,产生摩擦。因为小车在行进过程 中中间超声波模块只有在距离小于 20cm 的时候才会进行 180 扫描,其他时候保持

31、居中状态,而超声波模块本身的特点是它的测量角度是 15 度,所以左右两边就会产 生盲区,而安装了左右超声波模块就可以避免这方面的问题,从而实现左右避障。 图 2-24 超声波模块安装位置 第 3 章 系统软件设计 3.1 系统软件整体控制流程图 开始 中间超声波测距 无线发送 距离=20cm 停车 舵机从左到右每 15偏转 超声波测距 舵机摆正 判断最大距离方向 小车偏转相应角度 左超声波扫描 右超声波扫描 xs128 初始化 左或右距离 =2cm 前进 图3-1 系统软件流程图 3.2 无线接收模块流程图 此程序以 stc89c52 为控制芯片,等待无线模块接收到数据,再通过 lcd 进行

32、距离显示,其中的 led 作用是判断 stc89c52 是否接收到数据。 开始 c52 初始化 无线是 否接收 到数据 等待 lcd1602 显 示 led 轮流亮灭 图3-2 无线接收模块流程图 3.3 超声波模块流程图 根据超声波模块的时序图,超声波模块的软件设计思想是通过 xs128 发送高电 平,此时超声波模块进入发送模式,xs128 开定时器计时,等待超时波接收到信号, 从而 xs128 接收到高电平,根据资料:测试距离=(高电平时间*声速(340m/s)/2, 而本次设计,定时器是以 10us 级进行时间计数,最终的测试距离=(1.7*高电平时 间/10)cm 。 开始 发送高电平

33、 计时(10us 级) mcu 接 收高电平 1.7*shijian/10(cm ) 等待 mcu 初始化数据 图3-3 超时波流程图 3.4 小车控制算法 1,智能车设计的难点:小车根据超声波模块返回来的数据进行方向判断,并让 小车偏转相应的方向。 2,智能车控制算法:以小车中心点作为偏转基准,检测最大距离所在的角度作 为小车的最佳偏转方向。 3,实现过程:在小车前进过程中,中间超声波模块处于居中扫描状态,当小车 离障碍物的距离小于20cm时,小车停止前进,舵机带动超声波模块以中间为基准, 从左到右每15进行扫描,通过计算把其中距离的最大值所在的角度作为小车的偏 转方向,最后让小车前进。 4

34、,实际调试遇到的算法问题: (1)小车偏转角度(15)的定制。前文提到当小车遇到障碍物时,超声波 模块从左到右每15进行距离扫描,这是因为在前期调试中,当小车遇到如图3-4所 示的这种状况时,若给小车以大于15的偏转方向进行扫描,可能会让小车错过最 佳的偏转角度,而给予小车小于15的偏转方向,虽然这样会让小车的偏转角度更 加精准,但这样做的同时,也就增加了舵机的偏转时间,从而造成小车的检测时间 过长。而15的定制,在实际调试中处于,能满足小车的偏转需要,效果很好。 小车 障碍 图3-4 (2)相同距离不同角度的解决。如下程序所示,把检测到的数据放到max12, 通过冒泡法对数据进行排序,选出最

35、大距离值,而每一个元素值代表着不同的角度, 通过数据相与的方法,以zuo15 作为起点开始判断。现在以zuo15和zuo30为例,当 这两个角度的距离都是最大值时,if(max11=zuo15),则让车子进行15偏转, 而若想让小车进行30偏转的话,只能是zuo30为最大值if(zuo30=max11) max1=zuo30; max2=zuo45; max3=zuo60; max4=zuo75; max5=zuo90; max6=you15; max7=you30; max8=you45; max9=you60; max10=you75; max11=you90; for(i=1;i12;i

36、+) / 冒泡法排序,找出最大值作为角 度的偏转判别 for(j=0;jmaxj+1) int maxjuli; maxjuli=maxj ; maxj=maxj+1; maxj+1=maxjuli; 第 4 章 系统调试 4.1 开发调试工具 系统的开发调试用到了metroworks 公司的code warrior5.0 开发软件,另外, 为了调试方便,使用了lcd1602液晶模块进行调试。 4.2 软件开发平台 智能车开发环境采用了飞思卡尔xs128 系列单片机开发软件codewarrior5.0版 本。5.0版本的pe模式来完成对单片机个模块的初始化,使用起来非常方便,避免了 之前需要很

37、多代码来初始化的繁琐过程,x12单片机该软件具有支持多种语言、开发 环境界面统一、交叉平台开发以及支持插件工具等特点。codewarrior界面完成编译 后,通过bdm工具,在codewarrior环境下向mc9s12xs模块下载程序。bdm工具使用简 单,十分方便。 开发环境如图4-1所示 图 4-1 codewarrior5.0 bdm 调试介绍 motorola 微处理器的调试模块针对不应用同场合分别提供了3 种调试支持 模式:实时跟踪、bdm 调试和实时调试。实时跟踪是要求能够跟踪应用程序的动态 执行路径,这是实时系统的基本要求;在bdm 调试方式下,处理器被停机, 大量的 命令可以被

38、发送到处理器中访问内存和寄存器,外部仿真系统使用一个三脚、串行 的双工通道与处理器通信;实时调试则可以不需要cpu 停止运行,调试中断允许实 时系统执行一个惟一的服务例程,快速保存主要的寄存器和变量等上下文内容,并 使系统立即返回到正常操作,外部的开发系统能访问被保存的数据是因为硬件支持 处理器和bdm 初始化命令的一致性操作。其中 bdm 调试模式为设计人员提供了一种 低层次的调试手段,让用户能够中断cpu 的运行,单步调试程序,读取cpu 的各个 寄存器的内容,这些仅仅是通过向cpu 发送几个简单的命令就可以实现,显然,这 样使调试软件的设计很简单,通常自己就可以编写。硬件调试卡的设计也非

39、常简单, 关键是要满足好通信时序关系和电平转换要求。 第 5 章 结论 整个系统的设计以 mc9s12xs128 为核心,利用了超声波传感器,将软件和硬件 相结合。本系统能实现如下功能: (1)小车自动行驶,当小车探测到前进前方的障碍物时,可以自动调整,躲避 障碍物,从无障碍区通过。 (2)实时传送小车离障碍物之间的距离。 从运行情况来看小车的避障功能比较好,但无线调试过程中,液晶显示的距离 过长时,数据跳动比较明显,这个现象可能是由于超声波模块的不稳定或程序考虑 的不完善所致,我相信如果实验条件和时间的允许下我肯定能解决这一问题。 通过本次设计我掌握了很多以前不熟练的东西,认识了很多以前不熟

40、悉的东西, 使我认识到理论知识与实践结合的重要性,也认识到很多的不足。 致 谢 大学四年的时光即将结束,回想这四年发生的点点滴滴,仿佛如昨天的事情, 这其中带给了自己太多的感触与深深的不舍。在大学期间,我学到了很多东西,自 己收获了不仅仅是知识,更多的是友情,我要感谢一直陪伴着我的那些同学们,是 你们带给我快乐与充实的大学生活,同时我还有感谢教过我的所有老师,你们渊博 的知识严谨与孜孜不倦的教学态度,给予我很多的感触,是你们教会了我丰富的知 识与做人的道理。 大三期间,可谓是自己大学生活的转折点,参加的智能车竞赛,在实验室的 日子令人难忘。在调车过程中,与十一个伙伴在试验室里不断地奋斗,攻克难

41、点, 一起鼓励,一起进步,我们之间的友谊我会铭记一辈子。在这期间,王波老师的精 心指导与鼓励,让我深深地感激,老师,有您的陪伴是我们不断进步的最佳动力。 此次毕业设计期间,要感谢指导老师王波老师对我的关心与指导,她丰富的 知识与缜密的思维给予了我很大的帮助,使得此次毕业设计能顺利地完成。 参考文献 1 谭浩强.c 程序设计.北京:清华大学出版社,1991. 2 郭天翔.新概念 51 单片机 c 语言教程入门、提高、开发、拓展全攻略.北京: 电子工业出版社,2009. 3 王威.hcs12 微控制器原理及应用. 北京:北京航空航天大学出版社.2007. 4 卓晴,黄开胜,邵贝贝.学做智能车挑战“

42、飞思卡尔”杯.北京:北京航空航天 大学出版社.2007. 5 绍贝贝. 单片机嵌入式应用的在线开发方法.北京:清华大学出版社.2004. 6 张伟. protel dxp 高级应用.北京:人民邮电出版社.,2004. 7 毕满清.模拟电子技术基础.北京:电子工业出版社.2008. 8 王永军,李景华.数字逻辑与数字系统.北京:电子工业出版社.2006 9 王晓明电动机的单片机控制.北京:北京航空航天大学出版社.2002. 附录:程序附录:程序 mcu_io.c #include /* common defines and macros */ #include derivative.h /* d

43、erivative-specific definitions */ /* / *pll 初始化* / * void pll_init(void) clksel=0x00;/disengage pll to system pllctl_pllon=1;/turn on pll synr =0 xc0 | 0 x05; refdv=0 x80 | 0 x01; postdiv=0 x00; /pllclock=2*osc*(1+synr)/(1+refdv)=96mhz; _asm(nop); /bus clock=48m _asm(nop); while(!(crgflg_lock=1); /w

44、hen pll is steady ,then use it; clksel_pllsel =1; /engage pll to system; /*pwm 初始化* /* void pwm_init(void) pwme=0 x00; /禁止 pwmctl_con01=1; /01,23,45,67 级联,其中 01 是舵机 ,奇数是控制字 pwmclk=0 x0f; /01,23 选择 clocksa 或 clocksb pwmprclk=0 x11; /clocka=clockb=48/21=24m pwmscla=0 x18; /clock sa=clocka/(2*pwmscla 1

45、)=500khz pwmpol=0 xff; /全部先高后低 pwmcae=0 x00; /左对齐 /舵机 pwmper01=10000; /(50hz)20ms=1000*1/500000 *rwmperx pwmdty01=700; /舵机不动的占空比 750 1.5ms 250 0.5ms 500 1ms 1000 2ms 1250 2.5ms pwmcnt01=0; /计数器清零 实际 700 居中 1250 最左 250 最右 pwme=0 xff; /使能 /*i/o 口初始化* /* void io_init(void) ddrk=0xfd; /1101 / ddrb=0 xff

46、; ddra=0 xff; /a0a7 电机驱动输出 ddre=0 xf0; /b0b1 电机使能 ddr1ad0=0 xff; atd0dien=0 xff; ddrm=0xff; /* ppsp=0x00; / 默认选择了上拉装置,下降选择 perp=0 xff; /拉装置使能 ddrp=0 x00;/io 方向输入 piep=0 x00; /piep0 使能 ptih = 0x00; ppsh=0xff; perh=0xff; ddrh=0x00; pieh=0x00; */ ddrh=0x5f; / 0101 1111 /*pit 初始化* void pit0_init(void) p

47、itcflmt_pite=0; /禁止 pit pitce_pce0=1; /允许时钟通道 0 pitmux_pmux0=0; /通道 0 pitmtld0=0; /设置 10us 定时 pitld0=480-1; pitinte_pinte0=1; /开溢出中断 pitcflmt_pite=1; /开 pit 中断 void delay_ms(uint z) /16m 晶振 t 毫秒 uint x,y; for(x=z;x0;x-) for(y=2670;y0;y-); void delay_us(uint z) /16m 晶振 t 微妙 uint x,y; for(x=z;x0;x-) f

48、or(y=1;y0;y-); mcu_io.h void pll_init(void); void pwm_init(void); void io_init(void); void delay_ms(uint z); void delay_us(uint z); void pit0_init(void); zxqk.c #include /* common defines and macros */ #include derivative.h /* derivative-specific definitions */ #define in1 porta_pa0 #define in2 port

49、a_pa1 #define in3 porta_pa2 #define in4 porta_pa3 #define in5 porta_pa4 #define in6 porta_pa5 #define in7 porta_pa6 #define in8 porta_pa7 #define ena_1 porte_pe4 #define enb_1 porte_pe5 #define ena_2 porte_pe6 #define enb_2 porte_pe7 void zhixian(void) ena_1=1; enb_1=1; ena_2=1; enb_2=1; in1=1; in4=

50、1; in5=1; in8=1; void zuozhuang(void) ena_1=1; enb_1=1; ena_2=1; enb_2=1; in1=1; in4=1; in6=1; in7=1; void youzhuang(void) ena_1=1; enb_1=1; ena_2=1; enb_2=1; in2=1; in3=1; in5=1; in8=1; void houtui(void) ena_1=1; enb_1=1; ena_2=1; enb_2=1; in2=1; in3=1; in6=1; in7=1; void tingzhe(void) ena_1=0; enb

51、_1=0; ena_2=0; enb_2=0; zxqk.h void zhixian(void); void zuozhuang(void); void youzhuang(void); void houtui(void); void tingzhe(void); bianliang.h #define uint unsigned int #define uchar unsigned char extern uchar ascii118; extern uchar ascii216; extern byte txbuf3; 1602.c #include /* common defines

52、and macros */ #include derivative.h /* derivative-specific definitions */ #includemcu_io.h #includebianliang.h #define lcden portk_pk4 #define lcdrs portk_pk5 #define p0 pt1ad0 uint k; uint h; void write_com(uchar com) lcdrs=0; p0=com; delay_ms(10); lcden=1; delay_ms(10); lcden=0; void write_data(uc

53、har date) p0=date; lcdrs=1; delay_ms(10); lcden=1; delay_ms(10); lcden=0; void lcd_init(void) lcden=0; write_com(0 x38); write_com(0 x0c); write_com(0 x06); write_com(0 x01); write_com(0 x80); for(h=0;h5;h+) write_data(ascii210+h); delay_ms(10); write_com(0 x80+0 x40); for(k=0;k5;k+) write_data(asci

54、i110+k); delay_ms(10); write_com(0 x80+0 x40+14); write_data(ascii116); write_com(0 x80+0 x40+15); write_data(ascii117); 1602.h void write_com(uchar com); void write_data(uchar date); void lcd_init(void); 24l01.c #include #include derivative.h #includebianliang.h #define ce portb_pb0 #define csn por

55、tb_pb1 #define sck portb_pb2 #define mosi portb_pb3 #define miso portb_pb4 #define irq portb_pb5 #define led portk_pk7 #define tx_adr_width 5 / 5 uints tx address width #define rx_adr_width 5 / 5 uints rx address width #define tx_pload_width 5 / 20 uints tx payload #define rx_pload_width 5 / 20 uint

56、s tx payload byte const tx_addresstx_adr_width= 1,2,3,4,5; /本地地址 byte const rx_addressrx_adr_width= 1,2,3,4,5; /接收地址 /*发送缓冲区 * #define read_reg 0 x00 / 读寄存器指令 #define write_reg 0 x20 / 写寄存器指令 #define rd_rx_pload 0 x61 / 读取接收数据指令 #define wr_tx_pload 0 xa0 / 写待发数据指令 #define flush_tx 0 xe1 / 冲洗发送 fifo

57、指令 #define flush_rx 0 xe2 / 冲洗接收 fifo 指令 #define reuse_tx_pl 0 xe3 / 定义重复装载数据指令 #define config 0 x00 / 配置收发状态,crc 校验模式以及收发状态响应方式 #define en_aa 0 x01 / 自动应答功能设置 #define en_rxaddr 0 x02 / 可用信道设置 #define setup_aw 0 x03 / 收发地址宽度设置 #define setup_retr 0 x04 / 自动重发功能设置 #define rf_ch 0 x05 / 工作频率设置 #define

58、rf_setup 0 x06 / 发射速率、功耗功能设置 #define status 0 x07 / 状态寄存器 #define observe_tx 0 x08 / 发送监测功能 #define cd 0 x09 / 地址检测 #define rx_addr_p0 0 x0a / 频道 0 接收数据地址 #define tx_addr 0 x10 / 发送地址寄存器 #define rx_pw_p0 0 x11 / 接收频道 0 接收数据长度 #define fifo_status 0 x17 / fifo 栈入栈出状态寄存器设置 byte status; int count=1;/发送的

59、次数 void delay(word s) int i; for(i=0; is; i+); for(i=0; is; i+); byte spi_rw(byte uuchar) byte bit_ctr; for(bit_ctr=0;bit_ctr8;bit_ctr+) if(uuchar else mosi=0; uuchar=(uuchar 1); sck = 1; uuchar |= miso; sck = 0; return(uuchar); byte spi_read(byte reg) byte reg_val; csn = 0; / csn low, initialize sp

60、i communication. spi_rw(reg); / select register to read from. reg_val = spi_rw(0); / .then read registervalue csn = 1; / csn high, terminate spi communication return(reg_val); / return register value byte spi_rw_reg(byte reg, byte value) byte status; csn = 0; / csn low, init spi transaction status =

温馨提示

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

评论

0/150

提交评论