基于51单片机小车的循迹避障系统内容摘要:

时,我们需要提前探知其前 方是否存在障碍物,这样就可以在行进过程中,自动选择远离障碍物的路线。 在避障模块的选择时,有两种选择,一种是使用红外避障,还有一种是超声波避障。 红外避障是通过发射和接收光信号,在通过一系列的转换变为数字信号,来判断前方障碍物。 这种方式容易受到其他光的干扰,使得检测结果不准确。 而且由于其光束比较集中,在探测时其探测的区间较小,可能会造成避障不成功。 超声波避障则是利用声波信号遇到障碍物返回,测量其间隔时间来进行避障的。 超声波的测量范围很广,可以测量方向、距离等。 测量距离可以采用主动测距法和被动测距法:被动测距法是 传感器只有接受信号的功能,包括方位法和视差法;主动测距法是传感器既发射信号又接收信号,包括 TOF 法、脉冲回波法、FMCW 法等。 声波在传递过程中,是发散形式的,可以大角度的检测,这样就可以保证不会存在死角。 而且声波的使用也比较广泛,像雷达探测,金属探伤等。 本小车采用了 HCSR04 超声波避障模块(如图 5 所示),在其性能方面,有比较好的探测距离和角度。 采用 I/O 口 TRIG 触发测距,利用接收到信号后的电平差,来进行信号控制,从而选择驱动小车两个轮子来进行避障。 模块由 5V 电压供电,接入端为 VCC 口, TRIG 为触 发控制信号输入口,回响信号则由端口 ECHO 进行输出。 图 5 HCSR04 超声波模块 8 图 6 超声波脉冲响应时序图 表 1 HCSR 电气参数 电气参数 HCSR04 超声波模块 工作电压 DC 5V 工作电流 15mA 工作频率 40Hz 最远射程 4m 最近射程 2cm 测量角度 15 度 输入触发信号 10uS 的 TTL 脉冲 输出回响信号 输出 TTL 电平信号,与射程成比例 规格尺寸 45*20*15mm 控制系统模块 在本小车设计的控制系统中,我们 采用 STC 公司生产的一款单片机STC89C52。 由于在小车的整个运行过程中,其需要处理的数据比较多,在驱动电机时,就需要通过单片机的 I/O 口来输出控制信号,使得小车实现前进、后退以及转弯等功能。 在小车运动过程中,还需要接收很多的控制信号,像循迹信号、超声波信号等。 这样就可以实现小车的速度控制、循迹行驶以及躲避障碍物等功能。 STC89C52 单片机(如图 7 所示)有 40 个 I/O 口,其中 P0、 P P P3为并行 I/O 口。 芯片时钟的产生有两种,内部时钟和外部时钟,而内部时钟就是通过单片机引脚 XTAL1 和 XTAL2 外界晶振得到的。 还有多个中断源及优先级等,可以对程序执行功能的优先进行区分,通过中断来进行高优先级的指令。 52 单片机是 8 位单片机,拥有 8K 字节 Flash, 512 字节 RAM,内置4KB EEPROM,以及复位电路等。 在单片机的 4 个并行 I/O 口中, P0 与 PP1 与 P2 拥有相似的功能,除了 P1 口是单功能口外,其余都为双功能口。 9 图 7 51 单片机引脚图 电源选择 在小车电源选择时,我们需要特别注意,因为系统单片机的额定工作电压为 5V。 对于电机来说,用 5V 驱动又不能让小车行驶,而过高的电压可能会使系统芯片烧坏。 因此,我们需要通过计算得到小车的可允许电压电流范围,一般采用 9V~12V 为好,本小车采用 9V 供电。 这样既可以保证电机驱动所需电压,又不会因为电压过大而造成元器件的烧坏。 10 第 3 章 硬件电路设计 总体设计 图 8 小车总体框架图 小车的整体系统(如图 8 所示)是以 51 单片 机为 CPU,通过红外对管来进行黑线检测循迹行走,通过超声波探测器进行障碍物感知,进行避障功能实现,通过驱动模块来实现电机的驱动,从而达到小车的运动。 系统电路图见附录 1: 电源电路设计 在小车的电源系统,采用 9V 直流供电,为了防止在误操作时接入过高的电流使整个电路烧毁,一般会在电路中接入防击穿电容。 图 9 小车电源电路 11 驱动电路设计 图 10 驱动电路框架图 在驱动电路部分设计时,我们要考虑的是驱动芯片的选择,一般是在L298N 和 L293D 这两 款芯片中选择。 对于 L298N 芯片,是使用的 15 脚直插式封装模式,具有四通道驱动逻辑电路,可以很方便的驱动两个电机。 而且它的工作电压以及单通道输出电流都比较高,一般可达到 46V 和 2A。 L293D 在功能上和 L298N 基本一样,但是它的工作电压和通道电流都相比于 L298N 要小,其采用的是直插式 16 脚 SOIC20 封装模式。 所以,在应用时,一般使用 L298N 而不采用 L293D,从经济方面来考虑, L298N 也更具有优势。 L298N输出电压的方式有两种,一种是直接通过电源的调节来进行电压输出;另一种就是直接使用单片机上 的输入输出口提供电压信号。 图 11 L298N 引脚图 12 小车采用两轮驱动,使用 L298N 芯片组成的电路来驱动电机,驱动电路中,采用 7805 稳压芯片进行稳压。 由于电机驱动所需要的电压很大,因此使用 9V 电压直接通过驱动芯片供电。 通过八个 LED 灯来分别显示每个车轮的转动方向。 图 12 电机驱动电路 该驱动芯片可驱动 2 路直流电机,使能端 ENA、 ENB 为高电平时有效,控制方式及直流电机状态表如下所示。 如果 PWM 直流电机的速度控制,需要设置 IN1 和 IN2,确定电机的旋转方向,并使输出 PWM 脉冲,可以实现转速控制。 请注意,当使能信号是 0,电动机自由停止状态;若使能 ENA 信号为1,并且 IN1 和 IN2 都为 00 或 11 时,电机处于制动状态。 表 2 L298N 驱动状态表 ENA IN1 IN2 直流电机状态 0 X X 停止 1 0 0 制动 1 0 1 正转 1 1 0 反转 1 1 1 制动 13 7805(如图 13 所示)作为稳压芯片,在我们日常使用中,是使用最广泛的。 并且使用起来很简单、很方便,只要简单的接入电路中,给它一个稳定的直流电压源即可。 7805 一共有三个引脚,引脚 1 是 INPUT 即为整流器输入电压,引脚 2 为 GND,公共接地端,引脚 3 是 OUTPUT 输出稳压后的 5V电压 . 图 13 LM7805 引脚图 循 迹部分电路 图 14 循迹模块框架 在进行小车循迹电路设计时,我们要考虑到当红外对管检测到黑线以后,如何进行下一步操作。 首先将红外对管接收的光信号转化为电流信号,再将模拟电流信号转化为数字信号。 在这里我们就可以使用电压比较器,进行电压比较,来确定检测到的黑线在哪一边,再通过控制电机的转动来驱动小车循着黑线行驶。 一般常用的电压比较器芯片为 LM339 和 LM393,其中LM339 为四电压比较器,而 LM393 为双电压比较器。 由于我们采用五个红外对管进行黑线检测,所以使用了一个 LM339 和一个 LM393。 14 图 15 循迹模块电路 避障部分电路 图 16 超声波模块框架图 15 在小车避障时,我们选用超声波避障模块,主要是因为其在进行检测时,受到外界干扰较少,检测距离相对较远,可以多角度多范围的进行检测,这样可以减少避障失败的可能。 超声波电路主要由一个声波发射口,一个声波接收口以及 MAX232 和 EM78P153 组成。 其中 MAX232 该产品是一款兼容 RS232标准的芯片, EM78P153 是采用高速 CMOS 工艺制造的 8 位单片机芯片。 通过扬声器 T 发出的超声波,如果遇到障碍物返回后,被传感器接 收到。 通过各级三极管放大电路,将所得信号放大。 放大信号被传送到 EM89P153单片机,通过处理,得到所需要的数字信号。 然后再通过通信接口芯片MAX232,与 STC89C52 单片机通信,将信号传到 52 单片机。 最后通过 52 单片机的处理,得到小车避障所需的控制信息。 图 17 超声波检测电路 MAX232 为 16 脚直插式封装芯片,其主要的作用是来进行电平转换。 其内部主要结构可分为三部分:由端口 1— 6 以及四个电容构成的电荷泵电路,由引脚 714 组成的数据转换通道电路以及供电电路,一般可以产生 12V 和+12V 两种电压。 EM89P153 单片机芯片,其内部有 512*13 位一次性的 ROM,程序代码可以通过 EM下载到 EM89P153芯片中。 工作电压范围为 ;片内有 4MHz校准 RC 振荡器;振荡器起振时间预分频系数可编程;片内可按位编程;两个双向 I/O 口; 5 级堆栈; 3 个中断源,外部中断,输出引脚状态变化中断,TCC 溢出中断; 8 位实时定时 /计数器( TCC);每个指令周期为两个时钟周期。 16 主控电路设计 小车的主控电路是以 52 单片机作为控制芯片,结合复位电路、晶振电路来控制整个系统的运行。 在电路中,我们 一般使用的晶振位 12MHz,这样的话,单片机的每一个机器周期为 1uS,这样在利用单片机时钟进行计时时,比较方便。 图 18 最小单片机系统 17 第 4章 程序设计 主程序设计概述 在小车整体设计过程中,不仅有着大量的硬件电路设计,更多的是对于系统软件的分析设计。 因为在硬件电路搭建完以后,只有通过软件程序的控制,才可以让小车按照设想的运行路径进行行驶,达到所需要的功能。 由于小车整体功能比较多,如果在最开始程序设计时就进行整体设计的话,无疑会对整个设计工作带来困难,而且在设计完成后进行运行调试时 ,也会造成困难。 因此,我在设计程序时,采用了模块化设计,即先对每一个部分子功能模块进行设计,在验证各个功能程序的完整性以及正确性以后,再把各个子程序组合成一个完整的程序。 主程序流程图 图 19 系统程序流程图 18 驱动程序流程图 图 20 驱动程序流程图 循迹程序流程图 图 21 循迹程序流程图 19 避障程序流程图 图 22 避障程序流程图 20 第 5章 制作安装与调试 小车的安装 在小车各个部分的电路 焊接完成后,我们就开始对小车进行整体组装。 利用购买的高强度塑料制成的模型作为小车的车体,然后分别将各模块按照功能安装固定好。 红外循迹模块固定在车体底部,因为其作用是来检测地面黑线存在,而且其工作距离也有一定限制,所以不能放在离地面太高的地方。 超声波探测模块则应该置于小车正前方,其目的主要是用来发现前方障碍物,其安装高度要合适。 对于驱动模块和最小单片机系统,安装在小车正中间,因为其要与各模块之间进行连接。 供电电源则放在小车车尾,这样有利于小车整体重量的均匀分布,也可以在进行充电时,更加方便拆装。 小车 运动模式调试 对小车的左右转弯进行调试时,可以在程序里给定每个电机引脚信号,看小车的转动是否满足所设定的方向。 通过调试可知,小车的运动方向与初始设置相同,能够实现。 图 23 小车驱动调试图 21 为了便于明确知道小车电机转向的控制信号,表 3 给出了每个 I/O 的控制信号,通过对其进行不同的改变,可以选择在不同情况下电机的各种运动状态,从而得到小车行驶的数据。 表 3 运动调试结果 I/O 口 结果 输入电平 1 0 1 0 直线前进 1 0 0 1 右 转弯 0 1 1 0 左转弯 0 1 0 1 后退 1 1 1 1 停止 小车循迹调试 小车的循迹是通过五路红外对管实现,当左侧检测到有黑线时,左侧 LED指示灯会亮(图 24),当右侧指示灯亮时,那么小车检测到的黑线在右侧。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。