资源预览内容
第1页 / 共24页
第2页 / 共24页
第3页 / 共24页
第4页 / 共24页
第5页 / 共24页
第6页 / 共24页
第7页 / 共24页
第8页 / 共24页
第9页 / 共24页
第10页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
课 程 设 计 报 告课程名称课程名称嵌入式系统原理与设计嵌入式系统原理与设计课题名称课题名称智能循迹小车智能循迹小车专专业业通信工程通信工程班班级级 1101 1101 班班学学号号姓姓名名指导老师指导老师20142014年年 1 1 月月 5 5日日1. 系统总设计1.1 功能说明本课题是基于 MSP430 单片机循迹智能小车的设计与实现,小车系统以 MSP430 单片机为系统控制处理器,采用红外传感器对赛道进行道路检测,单片机根据检测到的信号的不同状态判断小车的当前状态,通过电机驱动芯片L298N 发出控制命令,控制电机的工作状态以实现对小车的控制。1.2 任务分配情况参与此次项目制作的一共七人,分别是:振凤,志成,肖新加,戴小敏,小林,鹏华和莹 任务分配情况如表 1 所示:表 1 任务分配情况志成莹肖新加,代小敏,小林振凤鹏华红外循迹模块电机驱动模块写程序,各接口的连接,数据的收集及小车的调试1.3使用说明书产品名称:智能循迹小车技术参数: L298N 基本参数:类型:半桥输入类型:非反相输出数: 4电流输出/同道:2A电流峰值输出:3A工作温度:-25135C器件型号:L298N产品的使用方法:用六节干电池 9V 直流电压作为供电电源,接通电源,在有黑线的跑道上行走。注意事项:1、所用电源不能超过 9V,以免电压过大,把电机烧坏。 2、小孩使用时,应在大人的陪同下使用,以免被小车的尖锐部分弄伤。 3、轻拿轻放,以免损坏小车器件。 4、长期不使用时,应把电池取出。生产日期:20xx 年 xx 月 xx 日2.硬件设计此次项目中硬件部分的设计主要包含以下模块:电源模块,红外循迹模块,电机驱动模块和 MSP430f149 单片机。2.1电源模块模型车通过自身系统,采集赛道信息,获取自身速度信息,加以处理,由芯片给出指令控制其前进转向等动作,各部分都需要由电路支持,电源管理尤为重要。在本设计中, 在本设计中,msp430 单片机使用 5V 电源,电机使用 5V 电源。用了 6 节 1.5V 的电池,为单片机和电机供电。如图所示:图 1电源实物图其红线接电机驱动模块上的 VDD 接口,绿线连接 GND 接口。2.2红外循迹模块采用光敏二极管作为光源探测模块的传感器,由于光敏二极管感光后,阻有较大的变化,通过一定的电路转化为电压的变化。其实物图为:图 2红外循迹模块实物图图中的 SSI 至 SS5 分别连接单片机 I/O 接口的 P3.0 到 P3.4。 分别控制五个光敏二极管,当没有检测到黑线,则指示灯不亮,则为高电平。有检测到黑线,则指示灯亮,为低电平。 从而判断出小车是否能够循迹走。2.2.1红外循迹模块原理图采用比较器对 5 个二极管的输出电压进行比较,光敏二极管引起的电压变化送到比较器的反相端与基准信号进行比较,将结果输入到单片机执行判断。基于的寻光电压比较电路:二号管脚为基准电压输入端,将需要进行比较的电压输入到三号管脚,如果比基电压的值大,则一号管脚输出为高电平,反之为低电平。其原理图为:图 4红外循迹模块原理图在板子的下面有五个循迹传感器,其实图为:图 5循迹传感器通过这五个传感器检测,没有检测到黑线,则 H4 发光到白纸光反射到 H4 接收端,H4接收端导通,导通则 T1 接地=0,指示灯不亮,则为高电平。有检测到黑线,则H4 发光到黑线光全部被吸收, H4 接收端, 没有收到任何信号, 因为 H4 不导通 (截止) , 则 T1=VCC,指示灯亮,为低电平。2.2.2红外循迹模块构造红外循迹模块由循迹传感器,触碰传感器,测距距离调 节器组成,其元件清单如下表所示:表 2红外循迹模块元件清单序号 1 2 3名称循迹传感器碰触传感器个数作用 5个 1个循迹作用检查障碍物调节与地面的高度测距距离调节器 1个SSI 至 SS5 分别连接单片机 I/O 接口的 P3.0 到 P3.4。2.3电机驱动模块电机驱动芯片 L298N 是 SGS 公司的产品,部包含 4 通道逻辑驱动电路。是一种二相和四相电机的专用驱动器, 即含二个 H 桥的高电压大电流双全桥式驱动器, 接收标准 TTL逻辑电平信号, 可驱动 46V、 2A 以下的电机。 L298 可驱动 2 个电机, OUT1、 OUT2 和 OUT3、OUT4 之间分别接 2 个电动机。IN1IN2 IN3 IN4脚接输入控制电平,控制电机的正反转,ENA,ENB 接控制使能端,控制电机的停转。也利用单片机产生 PWM 信号接到 ENA,ENB端子,对电机的转速进行调节。 其实物图为:图 6电机驱动模块实物图2.3.1 L298N 原理图U15710126111158IN1IN2IN3IN4ENAENBGNDGNDGNDL298NU25710126111158IN1IN2IN3IN4ENAENBGNDGNDGNDL298NVSSOUT1OUT2OUT3OUT4VCC42313149+12 V+12 VD54007D64007+5VD74007+VSSOUT1OUT2OUT3OUT4VCC42313149+12 V+12 VD14007D24007+5VD34007+MG1MOTOR RIGHTD4A4007-J1123456P3.1P3.3P3.5P3.7P4.2P4.4单片机引脚MG2MOTOR LEFTD8A4007-小小 车车 电电 机机 驱驱 动动U3J21IN1VSS图GND77 L298N 原理图22IN2OUT13P5.710126111158IN3IN4ENAENBGNDGNDGND3+5V54灭火风扇+A-OUT2L298 可驱动IN3CON32 个电机,OUT1、OUT2 和 OUT3、OUT4 之间分别接 2 个电动机。IN1IN2IN4 脚接输入控制电平,控制电机的正反转,ENB 接控制使能端,控制电机的停转。14ENA,OUT4也利用单片机产生 PWM 信号接到 ENA,ENB 端子,对电机的转速进行调节。其 L298N 逻辑功能图为:灭灭火火风风扇扇驱驱动动L298NVCC9OUT313表 3 L298N 的逻辑功能图2IN1(IN3) 0 1 0 1IN2(IN4) 1 0 0 13ENA 1 1 0 1电机状态正转反转停止停止4其 OUT1、OUT2和 OUT3、OUT4之间分别接2个电动机,IN1IN2 IN3 IN4脚接输入控制电平,控制电机的正反转,P4.04.3分别连接 IN1IN4。2.3.2 L298N 构造电机驱动芯片 L298N 包括 LED 发光二极管、续流二极管、极性电容、稳压器、散热片、接线端子、L298N、一般电容等元件组成,其作用如下表所示:表 4 L298N 元件清单序号 1 2 3 4 5 6 7 8名称LED 发光二极管续流二极管极性电容稳压器散热片接线端子L298N一般电容个数 4个 8个 2个 1个 1个 3个 1个 2个作用信号指示芯片续流保护滤波作用稳压输出驱动芯片散热电机驱动芯片滤波作用2.3.3直流电机驱动原理(1)其部采用 H 桥驱动电路,如图所示:图 8 H 桥驱动电路H 桥式电机驱动电路包括四个三极管和一个电机,其外形像大写字母 H,故叫做 H桥驱动电路。要使电机 M 运转, 必须使对角线上的一对三极管导通, 其驱动原理示意图如图所示:图9驱动原理示意图H 桥式电机驱动电路,利用 PWM 波对其转速。(2)功能对于单项的电机驱动,只要用一个大功率的三极管带动电机即可,当电机需要双向转动时,则需要四个三极管的H桥电路,如果需要调速,则需要三极管和场效应管等开关元件实现 PWM 波调速。(3)性能 1.输出电流和电压的围,它决定电路能驱动多大功率电机。 2.效率。 3.对控制输入端的影响。 4.对电源的影响。 5.可靠性。2.4主控制模块本项目的控制芯片均采用 MSP430F149 芯片,这是一款 TI 生产的以低功耗著称的 16位单片机。其在 1MHz 的时钟条件下运行时,芯片的电流最低会在 165A 左右,RAM 保持模式下的最低功耗只有 0.1A。 座位显示屏最靠电力工作, 采用这款芯片降低了功耗,增强了其使用的周期时间,节约了能源。实物图如图所示:图 10 MSP430F149 单片机实物图小车采用 MSP430F149 单片机作为控制芯片 ,系统硬件组成共包括九个模块,分别为 MSP430F149 单片机最小系统模块,4 路 A/D 转换模块,D/A 转换模块,键盘数码管显示模块,温度传感器模块,实时时钟模块,非易失性存储器模块,液晶显示模块,2 路串口通信接口模块。 系统软件组成为各个功能模块程序设计, 包括七个部分, 分别为 A/D转换程序,温度传感器显示当前环境中的温度,用液晶来显示实时时钟,通过串口向单片机发送字符,单片机又发回字符给电脑,D/A 输出方波,非易失性存储器的读写。键盘数码管显示模块液晶显示模块A/D转换模块MSP430F149单片机最小系统D/A转换模块电平转换温度传感器模块实时时钟模块非易性存储器模块上位机图 11 MSP430F149 单片机最小系统 MSP430 系列单片机提供三个时钟信号以供给片各部分电路使用,这三个时钟源分别是:辅助时钟信号(ACLK),来自32.768kHz 晶振或者另一个外接高频晶振,一般用于低速外设; 主时钟信号(MCLK), CPU 正常运行时使用的主时钟, 一般由 8MHz 外接晶振提供;子系统时钟 (SMCLK),主要用于高速外围模块。在本实验中我们采用了主时钟信号(MCLK) 。图12 msp430f149单片机的 I/O 引脚图在单片机的 I/O 接口中, P1.2和 P1.3连接两个 PWM 波的输出, P3.03.4分别连接红外循迹模块上的控制五个红外对管的五个引脚,P4.04.3分别连接 IN1IN4.图 13 MSP430F149 单片机原理图将 PWM 波植入单片机中,然后通过单片机控制电机,PWM 波控制速度,在转弯的时候,通过改变PWM 波中的占空比而达到转弯,转弯有两种方案:一种是一边不转,另一边转动而达到转弯的效果; 另一方案则为一边转的快一边转的慢, 从而达到转弯的效果。3.软件设计PWM(脉冲宽度调制)是通过控制固定电压的直流电源开关频率,改变负 载两端的电压,从而达到控制要求的一种电压调整方法。PWM 可以应用在许多方面,比如:电机调速、温度控制、压力控制等等。在 PWM 驱动控制的调整系统中,按一个固定的频率来接通和断开电源,并且根据需要改变一个周期“接通”和“断开”时间的长短。通过改变直流电机电枢上电压的“占空比”来达到改变平均电压大小的目的,从而来控制电动机的转速。也正因为如此,PWM又被称为“开关驱动装置” 。小车利用 PWM 波控制速度,在转弯的时候,通过改变 PWM 波中的占空比而达到转弯,转弯有两种方案:一种是一边不转,另一边转动而达到转弯的效果;另一方案则为一边转的快一边转的慢,从而达到转弯的效果。在本实验中,我们采用了第二个方案。图 14 PWM 波在这我们用了模式 7,复位/置位模式。我们利用两个PWM 波分别控制两个电机, 利用 PWM 波中的占空比不同而达到转弯的效果。其程序为:void Init_PWM(void) TACTL = TASSEL1 + MC0 + TACLR; /TimerA 选择 MCLK 时钟,不分频,增计数模式, CCTL1 = OUTMOD2 + OUTMOD1 + OUTMOD0 + CCIE; P1DIR|=0X0C; P1SEL|=0X0C; /捕获,比较模块 1 选定为输出比较模式,输出模式 7,禁止比较中断 CCTL2 = OUTMOD2 + OUTMOD1 + OUTMOD0 + CCIE; /捕获,比较模块 2 选定为输出比较模式,输出模式 7,禁止比较中断 CCR0 = 8000;/*设置 PWM1 的占空比*/void Set_PWM1_Duty(uchar duty) if(duty = 5) & (duty = 5) & (duty = 95) /将占空比限制在 5% 95%之间 CCR2 = 8000 / 100 * duty; else /否则将占空比强制设置为 50% CCR2 = 4000; 程序设计流程图为:开启 动 寻 迹探测黑否是否探测到是判 断 处 理 程 序(switch)左轮探测到右轮探测到左右轮同时探测向左向右继续前继续前结图 15程序设计流程图4.实验结果循迹小车整体实物图如图所示:图 16循迹小车整体图小车在直道行走图如图所示:图 17小车在直道上行走图小车在弯道上行走图:图 18小车在弯道上行走图5.调试过程1在最开始的时候,最开始认为遇到黑线时为高电平,然后指示灯亮,而在实际走的时候就导致完全不按自己预想的走。解决方法:用万能表测试在黑线上时红外管两端的电压,测试为低电平。2在跑弯道的时候,车不能按照预定的轨道走。解决方法:通过多次调试PWM 波的占空比,从而使轮子的速度达到一定得速度,从而按照预定的路行驶。3直接按照给的资料,IN1、IN2、IN3、IN4 正转/翻转的条件,结果发现车子一个正转,一个反转。解决方法:通过改写程序,然后一一确定正转/反转的条件。4红外对管不管遇到黑线还是没遇到,指示灯却一直亮着。解决方法:通过检测发现,这个红外对管坏了,然后只用了三个红外对管循路。6.实验心得基于这次长达两周的课程设计,对我们组来说是一个非常严峻的考验,成员都觉得一个字,难!两个字,很难!三个字,非常难!对于我们来说,我们是一个初学者,而且上课的时候都是打酱油飘过。不过总体来说还是有收获的,对于一个课题,组长分别把成员都安排了任务,每个人都有自己的任务,这样谁都不能依赖谁,只能靠自我学习完成任务。在课设过程中也看到了组员之间的团结,也看到组员之间的着急,知道自己的在学习中的不足,碰到不懂的问题立马找同学或者老师解决。在设计的过程中我们也不可避免的遇到了很多的问题。尤其是在调试过程中,会因为某些原因出不来结果。通过这次的课程设计,我们也发现了不少自己不会的知识,通过查询各方面资料,我们也进步了很多,有学会了很多上课时没掌握的东西, 最后在调试结果出来后,我们更是无比的兴奋,无比的自豪。总之,通过这次单片机应用项目设计,我们不仅对自己的知识有了更深的掌握和应用,更了解到团队精神的力量.在以后的学习和生活中受用终身。作为通信工程专业的学生,单片机课程的学习是很有意义,并且至关重要的。在大学前三年对基础知识以及通过对专业课的学习,我们掌握了很多理论知识,却很少有实践的机会,而这次硬件课设是对前面学习的一个很好的考察。(振凤)学习 msp430 单片机已经有一个学期了, 很高兴在最后的课设里自己能为小组出一份微薄之力,和他们一起完成这个能循迹的小车。记得我们做小车断断续续做了一个多星期,这虽然说有点枯燥,但是和他们一起探讨而且有成果就是快乐。在这里我首先要感我们的胡老师,感她一个学期认真的教我们430 的单片机知识,我们小车课设用到了定时器 A,用它产生两路 PWM 波去控制小车两个跑道带的跑动速度。其次我得感我的那帮在实验室呆的同学,他们为我们成功做出小车提供了资料上的和代码问题上的帮助。可以说小车代码很简单,但由于我们学习得有点浅,所以我在写有定时器的 TA 产生两路 PWM 波上有点力不从心,其他的用单片机上的引脚的定义提供数据上也有点生疏。小车循迹部分我们也遇到可一些困难, 我们在用小车红外检测的时候用手指代替黑色胶带去测反馈回来的电平,导致把引脚电平都搞反了。总之,在这个过程中我们遇到了很多困难,我们小组成员各司其职,各尽所能,比较顺利的完成了。在这个过程中我学到了很多,我觉得要成功我们就的团结,就得喜于问,就得多动手去探试,就得有一颗必成的心。(鹏华)这次的课程设计,组长安排大家每个人分配着不同的版块。我和志诚一起负责红外管,负责红外管整个的部分,主要是红外管发光原理以及这个部分的代码等。在这个课程设计的过程中,自己一直在和整个组员一起分析整个原理,设计以及组装。对于自己而言,代码不是很熟悉,单片机的学习不是很到位,面对自己的学习,第一次发现自己学习的这么认真。组长很认真,对我们的要求很高。主要是自己负责自己的版块,自己去弄懂自己要负责的部分,组长只是在我们特别的没有思绪时,才会帮我们解决下问题。经过这一次的学习,自己大概清楚知道一些关于电子控件等物件的运行的原理, 面对以前一直认为特别神奇的物件, 现在是比较清楚的了解那些小物件的东西。学习后,自己真正的发现自己对于自己专业掌握的太少,自己开始对自己以后就业担忧 。面对自己在专业知识上的缺陷,自己现在必须对自己的未来负责,对自己的就业有个详细规划。通过一次学习,让自己有了更深的感悟,这是自己认为最重要的一个学习感悟。 (莹)作为通信工程专业的学生,单片机课程的学习室很有意义,并且至关重要的。在大学前几个学期对基础知识以及通过对专业课的学习,我们掌握了很多理论知识,却很少有实践的机会,而这次硬件课设是对前面学习的很好的考察,既考察了我们C 语言的编程能力,硬件实践能力,快速学习能力,也考察了我的团队合作,发现以及解决问题的能力。所以这次硬件课设给我们提供了一个很好的平台。本次课设我负责电机驱动模块,电机驱动模块采用 H 桥式电动驱动电路。该电路包括四个三极管和一个电机, 要是电机运转, 必须使对角线上的一对三极管导通, 利用 PWM波控制其转速。H 型电路保证了可以简单实现转速和方向的控制,稳定性也极强,是一种广泛应用的 PWM 调速技术。通过这次课设我学到了很多,对单片机的应用有了更深刻的理解。在动手实践的过程中, 加深了对课本理论知识的理解, 也认识到自己的不足, 使我体会到实践的重要性,在学习一个新知识时,要不骄不躁,认真研究,相信自己,终究会取得成功。(肖新家)经过这次课设我深刻体会到了平时不好好学习就会重修的道理。在这段课设的时间里,我也有很认真的问同学一些我不懂的东西。在做小车的期间,我了解到小车需要PWM 给它调节电机的转速, 单片机的 IO 端分别给该模块的 IN1 到 IN4 高低电平来实现小车的前进或后退,把程序弄懂。但在第一轮答辩的时候,胡老师问我那个电容叫什么,我却说成是电阻,这确实是我不对,我承认在这方面,不懂的很多,这也是我本不该犯的错误。但是下来以后我又很认真的把上面的原件一一认识了一遍,了解他们各自的作用。第二轮答辩的时候,胡老师问我 L298 电路原理图中那个二极管叫什么,我没有回答得出来, 之后我了解到了它叫整流二极管, 起到保护原件的作用。 第三轮答辩的时候,胡老师又问我 L298 部的驱动原理是什么。为此我更加深入的去了解了一下 L298n,它部含有两个 H 桥的高电压大电流全桥式驱动器,要使电机M 运转,必须使H 桥的对角线的一对三极管导通,完整的晶体管 H 桥驱动电路,PWM1,PWM2,为电机方向控制输入端,例如,PWM1=1,PWM2=0 时正转,PWM1=0,PWM2=1 时电机反转。PWM1,PWM2 同时也是电机调速的脉宽输入端;采用标准逻辑电平信号控制,与单片机的 IO 端直接相连接;在这次课设的过程中胡老师的语言惊醒了我, 我意识到作为学生就应该好好掌握科学文化知识,通俗的讲,就是要给自己一个,给关心我们的亲朋好友还有老师一个很好的交代。 这是我们的义务也是责任, 要好好珍惜这一去不复返的大学时光。 在我们身边,很多同学都在追时间,分配自己的时间。然而时间却在我玩游戏时从我的指尖悄悄的划过,我却很白痴一样在游戏中沾沾自喜。过去的就让她像风一样过去吧人始终得向前看,努力的过好明天。不管怎样我还是我最敬爱的胡英胡老师,你的教导, 。 (小林)7.附录#include#define uchar unsigned char#define uint unsigned intvoid Init_PWM(void) TACTL = TASSEL1 + MC0 + TACLR; /TimerA 选择 MCLK 时钟,不分频,增计数模式, CCTL1 = OUTMOD2 + OUTMOD1 + OUTMOD0 + CCIE; P1DIR|=0X0C; P1SEL|=0X0C; /捕获,比较模块 1 选定为输出比较模式,输出模式 7,禁止比较中断 CCTL2 = OUTMOD2 + OUTMOD1 + OUTMOD0 + CCIE; /捕获,比较模块 2 选定为输出比较模式,输出模式 7,禁止比较中断 CCR0 = 8000;/*设置 PWM1 的占空比*/void Set_PWM1_Duty(uchar duty) if(duty = 5) & (duty = 5) & (duty = 95) /将占空比限制在 5% 95%之间 CCR2 = 8000 / 100 * duty; else /否则将占空比强制设置为50% CCR2 = 4000; void stop() P4OUT=0X0f;void zhizou(char D) if(D=1) P4OUT = 0X05; Set_PWM1_Duty(50); Set_PWM2_Duty(50); if(D=2) P4OUT = 0X0a; Set_PWM1_Duty(50); Set_PWM2_Duty(50); void right(char L) P4OUT = 0X05; if(L=1) Set_PWM1_Duty(30); Set_PWM2_Duty(70); if(L=2) Set_PWM1_Duty(30); Set_PWM2_Duty(90); void left(char R) P4OUT = 0X05; if(R=1) Set_PWM1_Duty(70); Set_PWM2_Duty(30); if(R=2) Set_PWM1_Duty(90); Set_PWM2_Duty(30); void main(void) WDTCTL=WDTPW+WDTHOLD; P3DIR &= (BIT1 + BIT2 + BIT3);/选中 P3.0P3.4 为采集信号输入端 P4DIR |= 0X0F;/控制轮子转向 Init_PWM(); while(1) switch(P3IN & 0X0E) case 0x0A:zhizou(1);break; /case 0x1c:left(2);break; case 0x02:case 0x06:left(1);break; /case 0x07:right(2);break; case 0x08:case 0x0c:right(1);break; case 0x00:stop();break; default:zhizou(1); break; 课程设计评分表课程名称:嵌入式系统原理与设计项项目目设计方案的合理性与创造性设计与调试结果设计说明书的质量答辩述与回答问题情况课程设计周表现情况综合成绩评评价价教师签名:日期:
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号