《自动识别路径的智能小车设计》由会员分享,可在线阅读,更多相关《自动识别路径的智能小车设计(13页珍藏版)》请在金锄头文库上搜索。
1、目录论文关键字 - - - - - - - - - 2论文摘要 - - - - - - - -2、模块方案比较与论证 :- - 21。车体设计 - - - - 22电机模块3电机驱动模块 - - - - - -24寻迹传感器模块 - - - - -25控制器模块 - - - -26电源模块 - - - -3、系统总体设计 : 31. 系统工作原理及功能简介 - - - 32. 系统框架图 - - - -33. 理论分析与计算 - - - 4。系统主要模块设计三、系统硬件电路设计 - - - - - - -5 1软件算法设计: - - - -62。主程序流程图 - - - 63. 具体代码分析
2、- - -四、软件代码设计 - - - - - 7 五、系统功能测试 - - - - - - - -7自动识别路径的智能小车设计论文关键字 :智能小车 电机 驱动 L298 自动循迹 传感器 算法论文摘要:本系统采用存储空间较大的 AT89S52作为主控制芯片,电动车电机驱动采 用L298N芯片;结合GP2A25光电开关,能较有效的控制其在特定位置转弯角度及行驶出错 处理;采用LD 5461AS数码管来显示系统分阶段运行的时间, 能够较准确较清晰地显示两个 数码管位的显示,三者的结合使电动车更加智能化,自动化,可视化. 该系统无论在结构和技术上都具有较好的科学性。一、模块方案比较与论证 :1。
3、车体设计方案 1 :自己制作电动车。一般的说来,自己制作的车体比较粗糙,对于白色基板上的 道路面行驶, 车身重量以及平衡都要有精确的测量, 而且也要控制好小车行驶的路线和转弯 的力矩及角度,这些都比较难良好地实现。方案 2:购买玩具电动车。购买的玩具电动车具有组装完整的车架车轮。我们可以保留 左右两轮转动动轴, 并改换转轴力矩大的电机来精确调节转弯角度, 采取保留后方向轮, 并使用直流电机进行驱动的方案。 玩具电动车具有如下优点: 首先,这种玩具电动车由于装配 紧凑,使得各种所需电路的安装十分方便,看起来也比较美观。其次,玩具电动车是依靠电机与相关齿轮一起驱动, 能适应题目中小车准确前进、后退
4、、 转弯的要求,而且这种电动车 一般都价格适中。基于以上分析,我选择了方案二2. 电机模块方案1:采用步进电机作为该系统的驱动电机。由于其转过的角度可以精确的定位,可 以实现小车前进路程和位置的精确定位。虽然采用步进电机有诸多优点,步进电机的输出力矩较低,随转速的升高而下降 ,且在较高转速时会急剧下降,其转速较低,不适用于小车等有一定速度要求的系统。经综合比较考虑,我们放弃了此方案。方案2:直流电机:直流电机的控制方法比较简单,只需给电机的两根控制线加上适当 的电压即可使电机转动起来 ,电压越高则电机转速越高。对于直流电机的速度调节,可以采用改变电压的方法,也可采用PWM调速方法。PWM调速就
5、是使加在直流电机两端的电压为方 波形式,通过改变方波的占空比实现对电机转速的调节。基于以上分析,我选择了方案二,使用直流电机作为电动车的驱动电机。3. 电机驱动模块方案1 :采用SM6135W 电机遥控驱动模块。 SM6135W 是专为遥控车设计的大规模 集成电路。能实现前进、后退、向右、向左、加速五个功能,但是其采用的是编码输入控制, 而不是电平控制,这样在程序中实现比较麻烦,而且该电机模块价格比较高。方案2 :采用电机驱动芯片 L298N。L298N为单块集成电路,高电压,高电流,四通道驱 动,可直接的对电机进行控制,无须隔离电路。通过单片机的I/O输入改变芯片控制端的电平,即可以对电机进
6、行正反转,停止的操作,非常方便,亦能满足直流减速电机的大电流要求。调试时在依照上表,用程序输入对应的码值,能够实现对应的动作。表1是其使能、输入引脚和输出引脚的逻辑关系。表1 L298N的引脚和输出引脚的逻辑关系EN A (B)N1(IN3)IN2 (IN4 )电机运行情况HHL正转HLH反转H同 IN2 (IN4 )同 IN2 ( IN4)快速停止LXX.停止基于以上分析,我选择了方案二,用L298N来做为电机的驱动芯片4. 寻迹传感器模块方案 1:采用发光二极管 +光敏电阻,该方案缺点 :易受到外界光源的干扰,有时甚至检 测不到黑线 ,主要是因为可见光的反射效果跟地表的平坦程度、地表材料
7、的反射情况均对检测效果产生直接影响。克服此缺点的方法 :采用超高亮度的发光二极管能降低一定的干扰, 但这又会增加检测系统的功耗 .方案 2:脉冲调制的反射式红外发射接收器。由于采用带有交流分量的调制信号,则可 大幅度减少外界的干扰 ;此外红外发射接收管的工作电流取决于平均电流,如果采用占空比 小的调制信号,在平均电流不变的情况下 ,瞬时电流很大( 50100mA )( ST 188 允许的 最大输入电流为 50mA) ,则大大提高了信噪比。此种测试方案反应速度大约在5us 。方案 3: 采用 CCD 传感器,此种方法虽然能对路面信息进行准确完备的反应,但它存在 信息处理满 ,实时性差等缺点,
8、因此若采用 CCD 传感器, 无疑会加重单片机的处理负担, 不 利于实现更好的控制策略 .根据以上分析我采用方案 25控制器模块方案 1: 采用凌阳的 SPCE061A 小板作为主控制芯片,而且可以采用凌阳的小车模组, 可以很快的完成其基本功能, 当是用该小板存在在一定的局限性, 较难扩张功能, 而且各个 模块的拼凑,没有比集成在一块板的稳定性高 .方案 2 :采用 AT89S52 作为主控制芯片,该芯片有足够的存储空间,可以方便的在线 ISP 下载程序,能够满足该系统软件的需要,该芯片提供了两个计数器中断 ,对于本作品系统已经足够, 采用该芯片可以比较灵活的选择各个模块控制芯片, 能够准确的
9、计算出时间, 有 很好的实时性。基于以上分析 , 我选择了方案二,采用 AT89S52 作为电动车的主控制芯片。6电源模块在本系统中,需要用到的电源有单片机的5V, L298N 芯片的电源 5V 和电机的电源7 15V.所以需要对电源的提供必须正确和稳定可靠。方案 1:用 9V 的锌电源给前、后轮电机供电,然后使用 7805 稳压管来把高电压稳成5V 分别给单片机和电机驱动芯片供电。这种接法比较简单,但小车的电路功耗过大会导致 后轮电机动力不足。方案 2:采用双电源。为了确保单片机控制部分和后轮电机驱动的部分的电压不会互相 影响,要把单片机的供电和驱动电路分开来,即:用 6 节干电池 7.2V
10、 来驱动电机芯片, 然后用 7805 稳压管来稳成 5V 供给单片机, 后轮电机的电源用 3V 供电,这样有助于消除电 机干扰,提高系统的稳定性。基于以上分析,我选择了方案二、系统总体设计1. 系统工作原理及功能简介:本系统利用单片机 AT89S52单片机作为本系统的主控模块,该单片机可以将从传感器的输出信号得到外界的信息,然后在程序中控制单片机对电动车上的直流电机的输出,从而实现电动车的前进以及转弯等循迹行驶。2. 系统框架图3。理论分析与计算4。系统主要模块设计:(1)电源:为确保小车在行驶过程中各部件均能正常工作且相互之间不受影响,我们可使用了两个电源为两个主要模块提供电压。分别是由转弯
11、电机、 单片机和光电传感器组成的总电路电源模块以及后轮驱动电源模块 (2 )转弯与路径出错识别:小车在行驶过程中会遇到以下两种路况: 当小车由直道高速进入弯道时,转角方向和车速应根据弯道的曲率迅速做出相应 的改变,原则是弯道曲率越大则方向变化角度越大。 当小车遇到十字交叉路段或是脱离轨迹等特殊情况时,智能车应当保持与上次正 常情况一致的方向行驶 .(3)光电传感器:光电传感分布格局:路径识别方案:电开关脱离轨道时,等待外面任意一只检测到黑线后,做出相应的转向调整,直到中间的光电开关重新检测到黑线 (即回到轨道) 再恢复正向行驶。 现场实测表明, 虽然小车在寻迹过程中有一定的左右摇摆。 但只要控
12、制好行驶速度就可保证车身基本上接近 于沿靠轨道行驶 .三、系统硬件电路设计(1)系统整体电路图如下 :(2)光电传感器电路( 3)电源电路四、软件代码设计1软件算法设计:(1)传感器数据处理及寻迹程序总体流程:主程序主要起到一个导向和决策功能。其设计思路根据小车所处位置的不同,确定小车的任务。 在黑线轨道上走直线时, 对传感器的信号进行及时的判断, 左边信号为零时控制电 机左转,右边为零时控制电机右转。在弯道时,为了不冲出轨道,是左轮一直打偏 ,直到检 测到右边信号为零时控制电机右转,当右信号为 1 时,继续使左轮一直偏。(2)具体流程分析:智能小车采用 4 个光学传感器置于小车前部 ,以此判
13、断如何控制舵机转向。程序不停判断03传感器的值,当SENS0R1=1与SENSOR0=0时,小车为图(I)情况, 此时应控制舵机向右转 ,调用 TurnRight() 函数;当 SENSOR0=1 与 SENSOR1=0 时,小车 为图(II)情况,此时应控制舵机向右转,调用TurnLeft ()函数.(I)(II)但由于传感器比较灵敏,经实际测试,白色区域中可能存在杂色,传感器有可能扫描到白色区域中的黑色(如下图),为了避免判断错误,再没检测到需要转右或者转左后 ,进行延时, 接着再次判断此时传感器情况,如果仍然为SENSOR仁=1与SENSOR0=0(或者SENSORO=1与SENSOR1
14、=0 )则可能判断在黑色跑道上,接着调用转右(转左)函数。 不过,仍然有一定几率判断失误,当延时后,传感器刚好经过另一个杂色的情况,解决方法有待完善当前后传感器都为1 (黑)时(如下图(山),则认为小车在黑色跑道上,不需要进行转向, 调RecoverBalance()函数,恢复平衡位置。当前后传感器都为 0(白)时(如下图(IV),则认为传感器将离开跑道范围,为了另小 车继续延黑色跑道行走,程序中的pre_dir变量保存最近一次转向方向(1为右,0为左),此时凭此变量来维持小车的转向.2主程序流程图:3。具体代码分析:/宏定义电机、舵机的输入端#define ELE_MACHINER1_IN1 P0_0/舵机输入端口