资源预览内容
第1页 / 共12页
第2页 / 共12页
第3页 / 共12页
第4页 / 共12页
第5页 / 共12页
第6页 / 共12页
第7页 / 共12页
第8页 / 共12页
第9页 / 共12页
第10页 / 共12页
亲,该文档总共12页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
AVR 单片机课程论文单片机课程论文-沿壁小车沿壁小车组员:孟晓东 陶丙山 刘清源一、设计目的、用途和功能 1.设计目的: 现代社会机器取代人力将在越来越广泛的范围进行。在消防等危险工作中,实 现在严峻的环境下沿着墙壁行驶、遇到障碍物绕开的功能,可以为消防工作带 来极大便利。另外,在未知危险地域的探索中,沿壁系统也可以提供有效可行 的探索路线并实施。 2.作品用途: 可用于探索机器人和自动灭火机器人中,实现路面探索和消防过程的沿壁和壁 障。改造后可以用于地面目标的跟随。 3.作品基本功能: PWM 调速功能、左沿壁功能、沿壁过程中的壁障及防卡死功能 二、硬件设计 1.设计思想: 1)小车左侧沿墙壁行驶,通过车左前方的光电开关检测车到墙壁的距离,经过 单片机分析,过近时驱动小车右拐,过远时左拐以往成沿壁功能。 2)当小车前方出现障碍物时,由前方的光电开关感知信息,驱动小车右拐,之 后小车将障碍物视为墙壁而绕过以完成沿壁过程中的壁障功能。 3)由于 ATmaga16 单片机无法驱动电机等元件,采用间接驱动继电器或者使用 芯片的方法,实现单片机对电机的控制。 硬件设计示意图:2.模块说明: 2.1 主控模块: 我们选用 Atmel 公司的 ATmaga16 单片机。Mega16 是高性能、低功耗的 8 位 AVR 微处理器,具有先进的 RISC 结构,内部集成两个具有独立预分频器和比较 器功能的 8 位定时器/ 计数器和一个具有预分频器、比较功能和捕捉功能的 16 位定时器/ 计数器。可通过 JTAG 对 MCU 进行程序烧写及仿真。内置晶振,使用方便。 引脚定义:2.2 探测模块: 设计方案: 1)使用使用超声波探测器。 超声波探测器的优点是比较耐脏污,即使传感器上有尘土,只要没有堵死就可 以测量,可以在较差的环境中使用,所以倒车雷达多半使用超声波,缺点是精 度较低,且成本较高。同时,超声波探测具有几厘米甚至几十厘米的盲区,这 对于我们的沿壁小车是个致命的限制。所以我们放弃了这个方案。 2)搭建红外发射接收系统。 本设计对测距的距离和精度要求不高,可以采用安全、简易的红外测距系统。 我们做过很多尝试。利用距离不同,墙壁的反射强度不同,接 A/D 转换后,可 以定义小车行驶的范围,可控性强。但是,系统极易受环境影响,信号很不稳 定。红外发射电路:选择功率较高的红外发射管,增强接收信号 的强度,提高信噪比。红外接收电路:使用 LAT224 芯片,提高红外接收信号的强度并可以直接连接到 单片机的输入口转换为数字信号。3)使用光电开关。 采用漫反射型光电开关,平均有效探测距离为 030cm 可调,且抗外界背景光 干扰能力强,可在日光下正常工作(理论上应避免日光和强光源的直接照射) 。 这满足了我们信号发射与接收的要求。我们选择了此方案。 示意图:光电开关 1 实现沿壁功能 光电开关 2 实现壁障功能2.3 驱动模块: 设计方案: 1)继电器驱动电路 使用继电器仅仅能完成开关的作用,不便于灵活的完成电机的调速和倒转,而 且间断的电压亦对电机使用寿命有不良影响。我们只在前期的简单沿壁设计中 使用此方案。2)使用 L298N 芯片 L298N 是 ST 公司生产的一种高电压、大电流电机驱动芯片。该芯片的主要特点 是:工作电压高,最高工作电压可达 46V;输出电流大,瞬间峰值电流可达 3A, 持续工作电流为 2A;内含两个 H 桥的高电压大电流全桥式驱动器,可以用来驱 动直流电动机和步进电动机、继电器、线圈等感性负载;采用标准 TTL 逻辑电 平信号控制;具有两个使能控制端,在不受输入信号影响的情况下允许或禁止 器件工作;有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作;可 以外接检测电阻,将变化量反馈给控制电路。使用 L298N 芯片便于实现 PWM 调速和电机倒转,以完成防卡功能和三档调速功能。2.4 电源及稳压模块: 采用八节五号电池直接给光电开关供电。采用稳压芯片 7805 使电压稳定在 5 伏左右,为 Mega16 芯片(工作电压为 4.5 - 5.5V) 、L298N 芯片供电。L298N 芯片 有两个电源引脚 VDD 引脚和 VCC 引脚。VDD 引脚接+5V 电源用来给电机供电, VCC 引脚接+5V 电源用来给芯片供电 2.5 最终方案如下: 使用干电池组对系统供电,选用组装小车,采用 Mega16 作为主控芯片,采用 E3F-DS30C4 光电开关进行障碍物探测,使用 L298N 驱动直流电机。 3.原理图:3.1 探测模块:3.2 驱动模块:3.3 中断模块3.4 主控模块三、软件设计 1.第一版程序: 1.1 软件流程图:开始检测端口值判断端口 值执行左拐函数执行右拐函 数左拐右拐1.2 设计思想: 这是我们第一版程序,采用两个继电器控制小车左右轮的转动。与墙保持一定 距离就要求离墙太近就远离墙,离墙太远就向墙拐。利用单片机控制两个继电 器的吸合,以控制左右轮的转动。给小车设定了两个动作: 离墙太近 0x00,右拐; 离墙太远 0x01,左拐; 这是简单的实现了沿壁的功能。每个动作都有延时函数作用。但调试过程中, 我们发现小车会出现卡住的情况,即小车在拐大角度时,会被墙角卡住。为解 决卡住的问题,小车应该会后退。这是我们小车现在不能做的动作。为使小车 后退以防卡,我们改变了电路,采用了芯片 L298N,在学过中断及定时器的内 容后,我们又给小车加了变速功能。这样,程序便有了比较大的改动。 2.第二版程序: 2.1 软件流程图:2.2 软件设计思路: 第二版程序,我们采用芯片 L298N,实现了小车的后退和变速功能。小车的变 速有一个独立按键来控制。另外,我们又加了一个光电开关来检测小车正前方 的情况。如果前方有障碍物的话,小车会避开障碍物后再沿壁行驶。T0 溢出中断,检测端口反馈值是多少,前方是否有障碍物,每次左转或右转 都记录一次,如果连续左转或右转超过 5 次,就认为小车卡住了,执行防卡程 序。离墙太近并且前方无障碍物:0x02 小车右拐离墙太远并且前方无障碍物:0x03 小车左拐前方有障碍物: 0x00 或 0x01 小车后退并右拐T0 溢出中断检测端口值判断端口值执行左拐函数执行右拐函数左拐右拐是否卡住执行卡住函数是等待下次中断触发否原地转弯有障碍物卡住:后退一段距离再右拐 2.3 程序的模块构成: 系统时钟模块 通过 T0 定时器产生 0.255 秒的溢出中断,作为小车周期性的探 测和动作的时钟。相关函数: timer0_init(void) timer0_ovf_isr(void) 调速模块 用 TI 定时器产生两路 PWM 波形来控制两个电机的转速,采用独立按 键来实现变速。相关函数: timer1_init(void) int0_isr(void) 距离及障碍探测模块 通过读取 PIND 值来判断外界情况。相关函数 timer0_ovf_isr(void) 常规动作模块 根据探测模块的返回值,有三个函数控制小车的动作。相关函 数 move_left() move_right() move_back() move_b_r() 防卡模块 首先判断小车是否被卡住,读取 count 值,如果 count 大于 10,说明 小车连续左拐十次,被认为卡住,执行防卡程序。 相关函数: trap() 3 第三版程序(最终版) 3.1 软件流程图及思路同第二版,更改了软件模块的代码。 在第二版程序调试过程中,我们发现小车还是左右摇摆,轨迹不是很圆滑。为 使小车的轨迹变得圆滑,我们又改进了程序。使小车拐弯通过改变左右电机的 速度来实现,而不是控制左右电机的停和运转来实现,这样,小车走的轨迹就 比较圆滑了。这版程序是我们的最终程序。 3.2 程序的模块构成和功能: 3.2.1 系统时钟模块 通过 T0 定时器产生 0.255 秒的溢出中断,作为小车周期性 的探测和动作的时钟。相关函数: timer0_init(void) 对 T0 定时器进行初始化,使能溢出中断,系统时钟采用 64 分频。 timer0_ovf_isr(void) 溢出中断服务程序,再改程序中判断端口值,并进行相应 的动作。设定全局变量 a,a=PIND&0x03。a=0x00,小车右拐;a=0x01,小车左 拐;a=0x02 或 a=0x03,小车原地转弯。 3.2.1 调速模块 用 TI 定时器产生两路 PWM 波形分别控制控制两个电机的转速, 采用独立按键来实现变速。程序中设定了三档,对应 OCRAL 和 OCRBL 值为 slow、mid、fast。小车行驶设置两档,通过按键来改变小车速度。相关函数: timer1_init(void) : 对 T0 定时器进行初始化,采用 8 位快速 PWM 工作模式, 比较匹配时置 1,系统时钟采用 256 分频。 int0_isr(void): 使能外部中断 int0,采用下降沿为触发源,在外部中断服务程 序中可通过按键来改变小车的行驶速度。定义全局变量 b,通 过按键来改变 b 值。每按键一次,b 自加一次,b=1 为中档,b=2 为高档,b2 时清零。即按键一次为中档,按键两次为高档。3.2.3 常规动作模块 根据探测模块的返回值,有三个函数控制小车的动作。相 关函数 delay_ms() 延时 100ms move_left() 小车的左轮在原有档位基础降一档,小车左拐。 move_right() 小车的右轮在原有档位基础降一档,小车右拐。 move_back() 小车的左右轮倒转,小车后退。 move_b_r() 小车的左轮正转,右轮反转,小车原地转弯。 3.2.4 防卡模块 首先判断小车是否被卡住,定义全局变量 count1 和 c,每左拐 一次 count1 自加一次,右拐时 count1 清零;每右拐一次,c 自加一次,左拐时, c 清零。读取 count1 和 c 值,如果 count1 大于 20 或 c 大于 20,说明小车连续 左拐或右拐 20 次,则被认为卡住,执行防卡程序。相关函数 trap1() 连续左拐 20 次小车后退 1s,再右拐一次; trap2()连续右拐 20 次小车后退 1s,再右拐一次; 四、系统测试过程及测试数据 实物图:1.测试一 测试方法: 1) 硬件配置:单片机控制,使用红外发射和接收电路,使用单片机自带的 A/D 转换处理输入信号,使用 LED 检测单片机输出的电位信号。2) 软件功能:红外接收管接收电压经 A/D 转换后,判断其值是否高于预定值, 是,则使 LED 亮;否,则不亮。 3) 测试环境:夜晚,室内,有节能灯照明 测试结果:LED 灯一直是点亮状态。这是外界干扰过强导致的,即使不使用红 外发射电路 LED 仍然处于点亮状态,另外对接收管遮蔽处理后发现 LED 状态不 稳定。 2.测试二 测试方法: 1) 硬件配置:单片机控制,使用光电开关 1(用于车左上角) ,使用继电器作 为电机电源开关,连入小车直流电动机。 2) 软件功能:见软件设计第一版 3) 测试环境:AVR 单片机设计实验室,陶瓷地面砖,红涂料墙脚。 测试结果:小车基本实现了沿壁功能。墙壁平滑延伸时小车以蛇形方式前进; 在凹陷的墙角处顺利流畅的行驶;在突出的墙角处偶尔会出现卡住问题。我们 以这个作品参加我校举办的创新科技大赛获得三等奖。 3.测试三 测试方法: 1) 硬件配置:单片机控制,使用光电开关 1 和 2,使用 L298N 芯片驱动电机, 连入小车电机。 2) 软件功能:见软件设计第二版 3) 测试环境:山东大学洪家楼小区 10#楼,水泥地面,红涂料墙脚 测试结果:小车实现了沿壁功能和壁障功能。仍热以蛇形方式前进,墙角处均 能较流畅的行驶,壁障正常。但是防卡功能有时不能正常工作。 4.测试四(最终测试) 测试方法: 1) 硬件配置:同测试三 2) 软件功能:见软件设计第三版 3) 测试环境:山东大学洪家楼小区
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号