文档详情

课程设计 基于单片机的自动驾驶小车模型

jiups****uk12
实名认证
店铺
DOC
175KB
约14页
文档ID:39245235
课程设计 基于单片机的自动驾驶小车模型_第1页
1/14

课程设计报告课程设计报告课题:基于单片机的自动驾驶小车模型摘要:该设计采用单片机( ATmega16)作为智能小车的检测和控制核心由按键输入地图,由 L298 控制驱动电机正反转的快速切换,控制小车的运动速度及运动方向,达到控制小车运动的路径和转角,以实现汽车模型依循特定路径自动驾驶的目的一 、设计目的和用途:在现实生活中,由于 GPS 导航定位系统的普及及应用,基于GPS 所提供的地图和自我定位的自动驾驶技术的研究和应用会为我们未来的生活带来巨大的方便我们所涉及的自动驾驶小车可以通过按键输入地图和目的地,然后进行自动行驶,这种小车首先为自动驾驶小车提供了一种思路,而且对于接收地图和行驶方法都提供了后续研究的基础2、设计的功能:本小车可以通过按键进行任意地图和目的地的输入,小车可以自动按照输入的地图进行自动行驶到达目的地不同的地面的阻尼不同,我们还可以通过按键改变小车行驶使其可以适应当前的地面阻尼,使得小车的行驶路径更加符合我们的输入地图3、硬件设计:硬件电路总结:通过按键输入地图和目的地,以及路面阻尼系数,地图输入单片机经系统处理后,向 L298 输出逻辑信号,再由 L298 进行电机的控制。

输出电路的示意图如下:硬件单元使用:1 车体框架在设计车体框架时,我们有两套起始方案,自己制作和直接购买玩具电动车 方案一:自己设计制作车架 自己制作小车底盘,用两个直流减速电机作为主动轮,利用两电机的转速差完成直行、左转、右转、左后转、右后转、倒车等动作但自己制作小车设计制作周期较长,且费用较高,因而我们放弃这一方案 方案二:购买玩具电动车 玩具电动车价格低廉,有完整的驱动、传动和控制单元,其中传动装置是我们所需的,缩短了开发周期考虑到利用玩具电动小车做车架开发周期短,所以我们买了一个电动小车,自己再稍作调整作为小车底盘,而动力则由两个直流电机提供2 电源及稳压模块方案一:采用交流电经直流稳压处理后供电采用交流电提供直流稳压电源,电流驱动能力及电压稳定性最好,且负载对电源影响也最小但由于需要电线对小车供电,极大影响了小车行动的灵活性及地形的适应能力故我们放弃了这一方案方案二:采用蓄电池供电蓄电池具有较强的电流驱动能力和较好的电压稳定性能,且成本低廉可采用蓄电池经 7812 芯片稳压后给电机供电,再经过降压接 7805 芯片给单片机及其他逻辑单元供电但蓄电池体积相对庞大,且重量过大,造成电机负载过大,不适合我们采用的小车车架。

故我们放弃了这一方案方案三:采用干电池组进行供电采用四节干电池降压至 5V 后给单片机及其他逻辑单元供电,另取六节干电池为电机供电这样电机启动及制动时的短暂电压干扰不会影响到逻辑单元和单片机的工作干电池用电池盒封装,体积和重量较小在稳压方面,起始时考虑使用 7805 芯片对 6V 的电池电压进行降压稳压但考虑到这样使得 7805 芯片消耗大量能量,降低电池寿命;同时,由于 mega16、小车电机对于供电电压要求并不苛刻,故我们将 6V 电池电压接一个二极管降压后直接给单片机及其他逻辑单元供电而电机的电源不做稳压处理3 在选择芯片时我们直接选用了课程主要介绍的,Atmel 公司的ATmaga16L 单片机作为主控模块Mega16 是高性能、低功耗的 8 位 AVR 微处理器,具有先进的 RISC 结构,内部集成两个具有独立预分频器和比较器功能的 8 位定时器/ 计数器和一个具有预分频器、比较功能和捕捉功能的 16 位定时器/ 计数器可通过 JTAG 对MCU 进行程序烧写及仿真内置晶振,使用方便单片机的 PORTD 用来接收八个按键的输入,PORTB.0~PORTB.3 用来向 L298 输出数字信号,PORTA.0 接喇叭。

4 电机驱动 我们使用 L298N 芯片驱动电机,L298N 是一个具有高电压大电流的全桥驱动芯片,输出电压最高可达 50V,可以直接通过电源来调节输出电压;可以直接用单片机的 IO 口提供信号,而且带有使能端,方便 PWM 调速,电路简单,性能稳定,使用比较方便L298N 芯片可以驱动两个二相电机,也可以驱动一个四相电机,正好符合我们小车两个二相电机的驱动要求电机有三种运动方式:电机正转、电机反转、电机急停单片机控制信号通过高低电平的转换可以控制 L298 对电机的正反向供电,结合 PWM 程序可以实现对电机的调速,经过调试取值达到比较合适的行车速度为了使小车能够顺利转弯,我们采用电机一正一反的方机驱动模块主要功能是将主控芯片发出的信号通过 L298N 电机控制芯片转化为小车实际的动作L298 的 5,7,10,12 四个口接单片机的输出信号,2,3,13,14 四个口接电动机的保护电路,对电动机进行驱动图一:应用 L298n 芯片驱动电机电路图5 程序设计及调试,在调试过程中输出信号可由外接按键控制八个按键接单片机的 PORTD 的八个口进行按键输入:图二:按键输入电路图四、软件设计思想及流程本系统的软件是基于预先从键盘输入的地图,依靠小车的自动导航系统进行自动驾驶。

因为这一设计没有什么先例可循,我们就自己想了一个几乎完全基于 while(cx) (//x 代表某个数字以区分各控制变量)的导航驾驶系统(后来这一语句的应用又扩展到了整个程序) 用一个 cx 来控制各个运动函数的执行时间,一个 c3 控制总行驶函数的执行,每个运动函数先把总行驶函数对应的 cx 调为 0,之后执行自身,到点执行完毕后会自动把该运动函数对应的 cx 调为 0 来停止执行并把总行驶函数对应的 cx 调为 1之后总行驶函数执行下一个运动函数在各运动函数中用 c 来代表 cx具体的各运动函数的执行时间则通过形参int i 从距离数组 wlongth[i]传递给各个运动函数,各个运动函数用v=(wlongth[i]/velocity)来控制执行时间运动函数输出预置电平,把 v 置为 wlongth/angle[i]Turningnode 是否 被中断调为 0否退出,把 c3 调为 1是Drive-on 函数判断方形地图的下一个方向0,退出3,4,5,6,分别执行 forward, backward,turnleft,turnright 函数至于地图输入部分,则大致可以分为两小部分,地图的指向部分和数值部分。

指向部分用 3,4,5,6,分别在方向地图中代表forward,backward,turnleft,turnright 各个运动函数,mapinput 函数判断按 键7,执行 enter 函数2,执行 shift 函数3,4,5,6,分别在方向地图中存入 forward,backward,turnleft,turnright退出 mapinput 函 数数值部分独立为 shift 函数,统一从 llongth[m2]数组来键入数值,分别 enter2/3 /2angle 函数,向长度数组 wlongth[12]角度数组 wangle[12]存入最后总值shift 函数判断按 键2,6,3 执行 enter2/3 /2angle 函 数,存入最后总值5,4,执行 shift3/4 函数,wm/m3+1退出 mapinput 函 数7 执行 longthcal,llongt h[m2]加 11,执行 shift2 函数 数位总体上,先执行 mapinputt 函数,然后按下按键 2,执行 drive-on 函数,执行完毕后执行 reset 函数,重置各变量,等待下一次输入Main 函数判断按 键 2执行 reset 函数,重置各变量执行 mapinputt 函数否执行 drive-on 函数五、软件功能本小车可以通过按键进行任意地图和目的地的输入(具体输入方法见前) ,按下按键 2,小车开始按照输入的地图进行自动行驶到达目的地,播放一段音乐;如果在目的地受到阻碍,小车会自动沿原路径返回,播放另一段音乐。

不同的地面的阻尼不同,我们还可以通过按键在 shift 操作阶段通过输入阻尼系数改变小车行驶使其可以适应当前的地面阻尼,使得小车的行驶路径更加符合我们的输入地图源程序链接六、系统测试数据次别 1目的 测试转弯系数地图 int pr[24]={3,5,3,5,3,5,3,5 };double wlongth[24]={2,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240 };double 转角系数 wangle[24]={80,80,80,80,80,80,80,80,80,80,80,80} ;实际转角 约 170°次别 2目的 测试转弯系数地图 int pr[24]={3,5,3,5,3,5,3,5 };double wlongth[24]={2,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240 };double 转角系数 wangle[24]={40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40} ;实际转角 约 90°次别 3目的 测试转弯系数地图 int pr[24]={3,5,3,5,3,5,3,5 };double wlongth[24]={2,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240 };double 转角系数 wangle[24]={12,12,12,12,12,12,12,12,12,12,12,12} ;实际转角 约 10°次别 4目的 测试转弯系数地图 int pr[24]={3,5,3,5,3,5,3,5 };double wlongth[24]={2,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240 };double 转角系数 wangle[24]={24,24,24,24,24,24,24,24,24,24,24,24} ;实际转角 约 45°结论 瓷砖摩擦系数偏小,对规则转弯有影响,转角系数应设为 20以上次别 5目的 行驶系数测试地图 int pr[24]={3,3,5 };行驶系数 double wlongth[24]={2,480, 480, 480, 480, 480,480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480};double wangle[24]={40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40} ;实际行驶约 48cm次别 6目的 行驶系数测试地图 int pr[24]={3,3,5 };行驶系数 double wlongth[24]={2,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240 };double wangle[24]={40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40} ;实际行驶约 24cm次别 7目的 行驶系数测试地图 int pr[24]={3,3,5 };行驶系数 double wlongth[24]={2,120, 120, 120, 120, 120, 120,240, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,240, 120, 120};double wang。

下载提示
相似文档
正为您匹配相似的精品文档