简易智能小车(第四组)

简易智能小车(第四组)
简易智能小车(第四组)

简易智能小车

第四组:胡思铖、陈涛、涂雅菲摘要:本系统以89S52单片机为核心,利用了红外传感器、光敏传感器、超声传感波器、霍尔传感器及接近开关,通过对各方向上传感器所测数值的比较判断,利用单片机控制小车的左转、右转、前进及后退,完成对小车状态的即时控制,同时可在小车运动过程中显示即时速度和总运行时间。实现了小车在直道和弯道区按照黑带线的引导向前行驶,在障碍区灵活蔽障和在光敏区按照光线引导顺利进入车库的功能。达到了小车行驶超过90秒或离光源10至20厘米距离时自动停车的要求,并在黑带引导区可检测金属片,记录并存储遇到各金属片的时间和其离起点的距离,在遇到最后一块金属片时停车5秒同时显示所遇金属片信息。小车在整个运动过程中速度较快、蔽障灵活,路程、速度及时间记录准确,成功地完成了题目的各项要求。

Abstract: This system is based on a single chip as a kernel. Infrared transducer, photoconductive transducer, ultrasonic transducer, Hole transducer and adjacent switch are used in this system. The single chip controls the car to turn left, turn right, forwarding or countermarch through judging values which measured by these transducers and displays the instant speed and total time of the car. Running along the black line in the road and flexible evading of obstacles, as well as entering into the garage through detecting light from bulb are achieved. The car won’t stop until total time exceed 90 seconds or the distance from car to lamp-house reach 10 to 20 centimeters. Foils can be found and the data of these foils in distance and time will be displayed during the 5 second’s stop after finding the last metal. During the process, all the aim can be well achieved.

一、方案论证与选择

1、电机驱动电路

方案一:调压方式

调压方法通过电阻网络或数字电位器调整电机的分压,从而达到调速目的,但是这种方法只能实现有限级调速,而且由于电机的内阻一般较小,因此分压后电机的效率不高。方案二:继电器方式

采用继电器对电动机的开或关进行控制,通过控制开关的切换速度实现对小车的速度进行调整。此方案电路简单,但继电器的机械特性易损坏、寿命短、可靠性不高。

方案三:达林顿管组成H型PWM电路

由达林顿管组成的H型PWM电路是目前比较广泛应用的一种方法。达林顿管交替工作在饱和与截止的模式下,因此效率非常高。H型PWM电路可以简单地实现转速和方向的控制,电子开关的速度很快,稳定性也极强。

方案四:利用单片机产生高低电平控制电机转速

利用单片机产生高低电平驱动直流电机。当单片机向直流电机提供高电平时,电机就会全速转动,当向直流电机提供低电平时,电机停止转动。所以向直流电机提供一定频率的高低电平,并改变其占空比可使电机转速可调。同时该方案还可使直流电机反接电平令电机反转,达到令小车后退的目的。该方案利于程序控制,硬件简单易行,只需将单片机和驱动电路相连即可。

基于以上分析,为了便于程序简单控制,减少硬件连接,选用方案四。

2、小车导向与驱动方式

方案一:后轮驱动,后轮导向

采用这种驱动方式的电动车的两个直流电机,一个电机驱动左后轮,左后轮和左前轮通过齿轮传动;另一个直流电机控制右轮。当两个轮子的转动速度不一样时,小车转向速

度慢的一方。采用这种驱动方式的小车,转动方向很灵活,并且动力强劲、机动性好,可以完成原地转动变换方向,缺点是耗电量大。

方案二:前轮导向,后轮驱动

采用这种驱动方式的电动车需要两个直流电机,一个电机控制小车的运动方向,安装在前轮控制左右摆动;另一个电机驱动小车运动,安装在后轮负责前进和后退。这种驱动方式在快速转向时存在困难、机动性较差、不能完成原地旋转,如果速度稍快可能导致小车直接冲出轨道,但优点是比较省电。

基于以上分析,省电较为重要,小车行驶全程都由电池供电,而驱动电路又是耗电量较大的方面,应尽量节约用电。同时,如果在转弯时让小车的红外检测灵敏,前轮转幅较大,一定的车速足以让小车在弯道上正常行驶。所以选用方案二。

3、小车行程与距离的检测

方案一:使用红外反射式传感器

使用红外反射式传感器,将在黑色的轮子上涂上适当数量的白条,就可以利用反射式红外来检测小车的行程。总体计算方法与方案一相同。

方案二:使用霍尔器件

霍尔器件利用了霍尔效应的原理,即置于磁场中的静止载流导体,当它的电流方向与磁场方向不一致时,载流导体上平行于电流和磁场方向的两个面之间将产生电动势。当霍尔器件检测到磁片时会产生脉冲,如在小车的轮子内侧放置一定数量等角度间隔的小磁片,则通过对一秒钟内该脉冲的检测可得到小车的即时速度。每个即时速度的累加即为路程。

基于以上分析,两种方案的计数方式基本相同,但是由于小车构造,在车轮内侧等角度间隔放置小磁片较为方便,而在轮子上涂白条较难实现等间隔,而且白条在不断测试过程中容易脱落。故选用方案二。

另外在磁片安装部位选择也存在方案选择问题:

方案一:安装在后轮上

如将磁片安装在后轮内,则在小车行使过程中出现打滑情况,该路程也将被计入,使路程与速度纪录与实际情况有较大误差。

方案二:安装在前轮上

因为本车采用后轮驱动前轮导向的方法,故磁片安装在前轮测量误差较小。

基于以上分析,采用误差较小的方案二。

4、引导线检测方案

方案一:光敏电阻检测

光敏电阻是一种对光敏感的元件,是利用半导体光电导效应制成的一种特殊电阻器,对光线十分敏感。它在无光照射时,呈高阻状态;当有光照射时,其电阻值迅速减小。按光谱特性可分为可见光光敏电阻器、紫外光光敏电阻器和紫外光光敏电阻器。光敏电阻检测到黑线时电阻很大,检测到白线时电阻很小,利用这一差别,将电阻值的跃变转化为电压的跃变,实现对黑线白纸的检测,但同时会受到外界光线的影响。

方案二:红外传感器检测

一般红外线频段能量较弱,红外线波长大,近距离衰减小,在一定程度上能避免外界光源干扰,探测近距离黑线更可靠。

基于以上分析,采用较可靠的方案二。

通过红外传感器控制小车时也存在方案选择:

方案一:直接判断电压值

该方案直接检测光敏电阻上的电压变化,检测到白纸时电压小,检测到黑带时电压大,通过几个部位上的红外传感器所测值大小控制小车前轮的导向。但是当红外传感器阻从白纸到黑带的过程中电压值是以一定速度渐变的,判断比较的门限值较难控制,很容易因为前轮转向不及时冲出跑道,此时为了补充这一不足需在车底按照品字型安装三个传感

器,保证中间的传感器检测到黑线,两边两个传感器检测白纸。该方案在速度较快时仍易出现因不灵活而冲出跑道的现象。

方案二:采用比较控制

该方案不直接将数值读入单片机判断控制,而是将电压通过比较器处理后再送入单片机。这样可使送入单片机的波形是较标准的脉冲,且此种情况下,小车只要稍偏离跑道单片机就可以检测到并调整小车跑向,做到灵活转向。此时只需要在车底按一定间隔安装两个传感器即可,要求两个红外传感器一直检测到白纸,否则向检测到黑纸的一边转向来控制小车严格按照黑线引导前进。

综上分析,为增强小车的灵活性,采用方案二。

5、光源检测方案

方案一:被动式红外探测

红外探测器有主动式和被动式之分,主动式红外探测器内部有一个发射红外光的二极管,和一个接收红外光的光敏三极管组成,光敏三极管的感光面就是集电结,当光敏三极管的集电结检测到红外光时,光敏三极管的集电结导通,同时三极管还将电流放大后输出。被动式红外探测器内部只有接收红外光的光敏三极管,只能被动地接收障碍物等其他物体发射的红外光。这种检测方法利用日光灯发热产生的较强的红外光来检测光源,在能检测到和不能检测到光源的临界点,光敏三极管的射极输出电压有一个较大的跃变,便于后级处理;另外,被动式红外的方向性较好,使检测障碍物的主动式红外三极管,和检测光源的被动式红外三极管位置和取向不同,可以有效地避免二者的相互影响。

方案二:光敏二极管检测

这种方法的原理是光敏二极管反向接入电路,即二极管正极接电源的负极,二极管的负极接电源的正极。这样二极管在没有光照时,靠自己的本征激发产生的有限的载流子即电子与空穴对,维持有限的暗电流。当二极管的P-N结受到光照时,对于波长较长的红外光,以及波长较短的蓝光,P-N结直接将光生电子吸收,对于波长介于二者中间的红光,则会在P-N结中激发载流子即:电子与空穴对,二者分别向P,N极移动而产生电流。日光灯光谱中的红光,蓝光,以及由于日光灯发热而产生的红外光对光敏二极管的PN结的作用较大。流过光敏二极管的电流的大小与光照强度成正比。用光敏二极管检测光源的一个缺点就是二极管的方向性不强,二极管的PN结,也就是光敏二极管的受光面的取向是面向四面八方的,只要是光照强度相同的地方,流过光敏二极管的电流强度都是相等的,虽然可以在光敏二极管上加上防光套,但是在实际中需要在车头上安装几个取向不同的光敏二极管,并且要有AD采样才能较好的判断光源的方向。

方案三:光敏电阻检测

光敏电阻器是利用半导体的光电效应制成的一种电阻值随入射光的强弱而改变的电阻器;入射光强,电阻减小,入射光弱,电阻增大。光敏电阻器一般用于光的测量、光的控制和光电转换(将光的变化转换为电的变化)。按光谱特性分类可分为可见光光敏电阻器、紫外光光敏电阻器和红外光光敏电阻器。根据本题要求选用可见光光敏电阻器。通过比较其上电压的数值,控制小车沿光源方向行驶。虽然光敏电阻也需要加防光套,要通过AD采样,但是电路较简单,容易实现。

基于以上分析,采用方案三。

6、障碍物探测

方案一:红外探测

采用反射式红外探测,电路结构形式比较简单,可以在车身四周都装上红外传感器,这样就可以探测小车四周是否有障碍物,使系统能够更好的分析周围环境。缺点是探测的距离比较近,当小车行进速度较快是,容易因惯性多次撞击障碍物,不仅不利于检测,而且较严重地撞击会使小车改变原路线,造成障碍区的行进时间较长。

方案二:超声探测

采用超声波探测,超声波频率高、波长短、定向性好、能量集中,适合于距离测量,且不易受光线干扰,提高了系统的可靠性,另外还可以障碍物的位置进行定位。但是电路结构稍微复杂一些,但是测量距离很远,可以在较长的一段距离前就检测到障碍物,即时转向。同时,超声波的测距能力使小车可以通过对障碍物距离的判断在必要的时候进行倒车的动作,使小车有足够的空间转向。

基于以上分析,为了提高小车的避障能力,采用方案二。

7、避障方案

方案一:采用全程序线路引导

该方案完全按照题目示例的障碍物放置方式,利用软件控制小车行驶在固定线路上,不采用其他的检测方式干预小车行驶状态。如在障碍物放置情况不变的情况下实施简单且较为稳定,但是实际测量中障碍物摆放位置不定,固定路线会使小车不能灵活避障。

方案二:仅采用超声探测

在整个障碍区内,小车由超声探测数据引导避障。当超声探测得数据在小车前左右方向上数值相差大于一定数值则控制小车相障碍物距离远的方向转弯,边行驶边检测,使小车避开障碍物。该方案基本可行,但是当小车与障碍物平行时,小车将继续向前行驶或向后退,但方向仍然不会改变,在这种状况下小车十分容易进入来回摆动无法避障的情况。方案三:超声探测与光敏结合避障

基于方案二的方式,以超声探测引导方式为主,在两超声头所测数值大致相等时利用光敏引导小车转向。在小车与障碍物平行时,小车向光线强的一边转向。这种方案使小车能够灵活避障,并在相同情况下减少了避障所用的时间。

基于以上分析,采用方案三。

8、整体控制方法的选择

方案一:两个单片机控制小车。

这种控制方法,要组建两个单片机系统,实现两个单片机系统的通信,以协调两个单片机系统的工作。采用两个单片机时,一般将一个单片机作为主机,另一个单片机作为从机,主机完成控制,从机完成定时,计数等数据处理任务,为主机服务。这种方法实现对程序的要求较高,而且会增加控制系统的复杂程度,硬件较复杂。

方案二:一个单片机和一个CPLD来控制小车。

这种控制方式,只需要一个单片机系统,单片机控制CPLD和小车,CPLD主要完成各所需脉冲形成等任务,单片机完成定时计数,数据处理和控制任务。但是CPLD的耗电量较大,所以这种方式也比较耗电。

方案三:一个单片机控制小车。

这种控制方法,使系统最简单,很省电,但是对于有限的单片机资源,在控制处理时最复杂,对程序的要求也较高。可通过8253芯片来产生波形信号,以减少单片机的负担,而且8253产生波形较为理想,启动后基本不需单片机程序介入。

基于以上分析,小车省电是十分重要的方面,如果耗电较为严重很容易在行驶过程中速度有明显变化,使小车无法完成整个行驶任务。故采用方案三。

二、系统总体设计方案及实现方框图

1、系统总体设计方案:

本智能小车系统以一片单片机89S52为控制核心。由8253产生系列脉冲波形,在单片机的协调下使各部分正常工作。

在黑带引导区用两个红外传感器检测黑线和白纸,保证小车从起跑线开始沿黑线行驶从而顺利到达C点。在此过程中使用金属接近开关检测黑线下的铁片,检测到铁片后由单片机发出声音信号指示,同时单片机纪录并保存片数、金属块离起始点的距离和时间。当

小车检测到C点的金属片时,小车停止5秒钟,在此期间显示途中所遇各金属片对应的距离和时间。

为了提高小车的避障能力,障碍区开始就首先控制小车向左行驶一段距离,同时打开超声探头。在检测过程中,当两超声传感器中任意一个测量距离小于约20厘米时,由单片机控制小车向后退,如果是一边测量距离小于20厘米则在后退的同时还向相应的方向转向,后退期间小车的行驶路程在总路程中减去,以便较准确地判断小车进入光敏区的时刻。如果在此过程中,两传感器的测量距离近似相同且不是无穷大则读入光敏电阻的测量值,使小车向光强的强的方向前进,避免小车进入盲区。

当小车行驶总路程大于某设定值时,小车进入车库区,单片机关闭超声,使光敏单独作用,让小车朝光源方向行驶,此时三个光敏传感器的数值比较门限可较小,以便小车行驶过程中随时调整角度,准确进入车库。当中部的传感器数值大于某一数值时,表明小车以接近光源,此时停车并发出声音信号。

在小车整个行驶过程中,通过对8253产生的二分之一秒脉冲的计数来完成全程时间的纪录与显示。利用霍尔器件在小车运动过程中产生的脉冲数计算得出小车的即时速度和行驶总路程,同时在小车行驶全过程中显示行驶总时间和即时速度。小车速度由单片机向直流电机提供占空比不同的脉冲来调节。单片机算出小车的即时速度后,能通过判断自行调节行驶速度,使小车在行驶过程中不至于因为速度太快而冲出跑道也大大缩短了小车的行驶时间。

2、系统方框图

三、理论分析与计算

该实验需要计算的有小车的行驶速度和距离部分以及超声测距部分。

1、小车行驶速度与路程的分析计算

经测量小车安装有霍尔器件的前轮的周长为26.3厘米,车轮内侧安装有等角度间隔的6个霍尔器件,即车轮转一圈单片机将接收到6个脉冲信号。我们采用以半秒内所计数值来计算小车的即时速度。

设半秒内单片机纪录数值为N,则小车即时速度为: v= 26.3 * N / 6 * 2 (cm/s)

再化成以米每秒为单位送入LCD显示。

小车的路程为各个即时速度的累加即可,在需要存储或显示时调用。

2、超声测距的分析计算

计数器从单片机控制发出超声波脉冲后立即开始计时,直至接收到回波脉冲或等待时间过长后计时结束。

本方案采用计数频率为40kHz,设计数器纪录次数为M,则障碍物距离为:

s= M / 40000 * 340 / 2 (m)

通过判断两超声探测器测量得到的障碍物的距离大小,选择不同的子程序控制小车转弯、前进或后退。

四、主要功能电路的设计

1、红外探测模块

红外探测用于识别引导线,在车身下对称安装两个红外探测器,两探测器间距略大于引导线宽度。

2、接近开关模块

3、超声探测模块

4、光敏探测模块

5.霍尔模块

五、系统软件的设计

1、引导线检测与控制

引导线检测与控制算法如下:从小车运行开始程序即进行对红外检测,单片机读取两红外传感器的数值,当传感器在白纸上时传感器输出为高电平,在黑引导线上时输出为低电平。则如果两传感器的读值均为“1”时说明小车正沿着引导线正常行驶,此时小车不需转弯;当某个传感器的输出为低电平时,说明小车正在驶出引导线,此时由单片机控制小车前轮向检测值为“0”的一边转向。在引导线阶段一直采用该方式控制小车,直至在弯道处检测到金属片(即C点)停车。

2、金属片检测与控制

由于只需在引导线区域检测金属片,该区域部分的控制程序较少,只有引导线和接近开关的判断程序,只需直接通过P0口读入接近开关的数值,当接近开关的输出信号为“1”时说明有金属片,同时记下小车当前行程s1和时间并发出声光显示,纪录的薄铁片个数变量加一。在检测过程中只有当检测数值从“0”变化为“1”时才说明检测到一片薄铁片,以此方法来避免一块铁片的多次检测。

3、障碍物检测与控制

通过安装在小车前端的两超声传感器的测量距离来控制小车在障碍区的行驶。当两测量值有其一小于固定数值,则控制小车后退,同时判断距离差距控制后退时的转向;当两测量值其一为有限值,另一个为无限值时,控制小车向无限值一方转向;当两测量值都为有限值时,同样可通过判断距离大小转向距离较大的一方。在检测过程中,如果两测量值相差不大,由单片机控制再次通过光敏判断小车的转向。

4、光源检测与控制

通过判断小车前端放置的三个不同方向的光敏传感器的数值大小控制小车行驶。如果左(右)边的光敏值较大于右(左)边的测量值,则控制小车向左(右)转向。在此过程中判断前方光敏传感器的读值,一旦大于某值说明小车已接近光源,此时控制小车停止运行,并发出声音信息。

5、总体流程图:

六、测试数据与分析

测试一:

铁片放置情况:在1.0m、1.7m和C点共放置3片金属片;障碍物放置情况:一右一左放置50cm左右宽的障碍物,左右距离约40cm,前后距离约50cm。

测试结果:全程顺利。

显示金属片距离:0.99m、1.71m、2.31m。

全程使用时间43.5s

测试二:

铁片放置情况:在1.0m、1.7m和C点共放置3片金属片;障碍物放置情况:一右一左放置50cm左右宽的障碍物,左右距离约40cm,前后距离约50cm。

测试结果:全程顺利。

显示金属片距离:1.00m、1.69m、2.33m。

全程使用时间46.0s

测试三:

铁片放置情况:在1.0m、1.5m、1.7m、和C点共放置4片金属片;障碍物放置情况:一右一左放置50cm左右宽的障碍物,左右距离约40cm,前后距离约50cm。

测试结果:全程顺利。

显示金属片距离:0.97m、1.51m、1.68m、2.29m。

全程使用时间45.5s

测试四:

铁片放置情况:在1.0m、1.5m、1.7m、和C点共放置4片金属片;障碍物放置情况:两右放置50cm左右宽的障碍物,前后距离约20cm。

测试结果:全程顺利。

显示金属片距离:0.98m、1.51m、1.71m、2.33m。

全程使用时间43.0s

测试五:

铁片放置情况:在1.0m、1.5m、1.7m、和C点共放置4片金属片;障碍物放置情况:两右放置50cm左右宽的障碍物,前后距离约10cm。

测试结果:全程顺利。

显示金属片距离:1.00m、1.53m、1.69m、2.31m。

全程使用时间42.0s

七、总结分析与结论

由于在引导线检测时引入了比较器的处理,使小车的检测灵敏度大大增加,令小车在引导线行驶的过程中,特别是弯道处能以较快的速度行驶而不至于冲出跑道。小车程序并没有确定途中所遇金属片的个数,过程中遇到几块就存储并显示其相关情况。检测过程中表明小车的路程显示正确,由于路程是各即时速度叠加的结果,故小车即时速度也正确。

小车在障碍区避障较为灵活。距离较近时小车会后退一段距离使小车有足够的距离转弯躲避障碍物。且在小车与障碍物平行时,光敏的参与减少了小车避障的时间,同时也大大增强了小车避障的能力。在实测过程中,障碍物的可任意摆放在障碍区内,可顺利避障时两障碍物间距也较小,可充分完成题目任务。

因小车在光敏区可随时根据所测光源大小调整小车方向,故可顺利进入车库,并在距离规定的范围内停车。

八、附录

#include

#include

#include

#include

#define RD XBYTE[0xBFFF]

#define WR XBYTE[0x2FFF]

#define SHUZHI XBYTE[0x7FFF] //LED DATA

#define MAX XBYTE[0x07FF] //MAX197 Address and High

#define MAX_H XBYTE[0x17FF]

#define MAX_L XBYTE[0x07FF] //MAX197 Low

#define C_R XBYTE[0x03FF] //8253 Register.

#define C_0 XBYTE[0x00FF] //8253 0 Counter.

#define C_1 XBYTE[0x01FF]

#define C_2 XBYTE[0x02FF]

#define R_A XBYTE[0x0BFF] //RED and Approach.

#define Pe 1.00

#define N 30

#define L 0.263

//#define M 100

#define VH 0xfa

#define VL 0x01

#define MIN 80

sbit dr1=P1^0;

sbit dr2=P1^1;

sbit mo1=P1^2;

sbit mo2=P1^3;

sbit be=P1^4;

sbit gate=P1^5;

sbit ull=P1^6;

sbit ulr=P1^7;

unsigned int v,k,l,odil,odim,odir,ti,dil,dir,dl,dr; unsigned int X[16],flag,flag1,flag2,second,metal; unsigned int distc;

float z; //z=low/high

/* 复用功能

odil 第一块金属到起点的距离

odim 第二块金属到起点的距离

odir 第三块金属到起点的距离

ti 第四块金属到起点的距离

****

dir 第一块金属到起点的时间

dil 第二块金属到起点的时间

dr 第三块金属到起点的时间

dl 第四块金属到起点的时间

*/

void execute();

void xianshi();

void busy();

void T_L();

void T_R();

void forward();

void back();

void stopturn();

void stopmov();

void Ultrasonic();

void optic();

void infrared();

void time(int t);

void bell();

void compare();

void compareU();

void svshow();

//*********************************time

void time(int t)

{

unsigned int i,j;

j=t*200;

for(i=0;i

}

//***********************************

void bell()

{

unsigned int i,j;

for(j=0;j<150;j++)

{

for(i=0;i<55;i++)

be=0;

for(i=0;i<55;i++)

be=1;

}

}

//*********************************void execute() void execute()

{

unsigned int i,s,a;

gate=0;

//forward();

if(metal<8)

{

infrared();

}

else if((metal==10)&&(flag==100))

{

ET1=0;

i=second;

back();

time(9);

k=2*k+1;

X[0]='N';X[1]='?';X[2]=':';X[3]='?';

X[4]='.';X[5]='?';X[6]='?';X[7]='m';

X[8]=' ';X[9]='T';X[10]=':';X[11]='?';

X[12]='?';X[13]='.';X[14]='?';X[15]='s';

for(;second-i<10;)

{

stopmov();

stopturn();

if(second-i

{

switch(second-i)

{

case 0:break;

case 1:X[1]='1';s=odil;a=dir;break;

case 2:X[1]='1';s=odil;a=dir;break;

case 3:X[1]='2';s=odim;a=dil;break;

case 4:X[1]='2';s=odim;a=dil;break;

case 5:X[1]='3';s=odir;a=dr;break; case 6:X[1]='3';s=odir;a=dr;break; case 7:X[1]='4';s=ti;a=dl;break; case 8:X[1]='4';s=ti;a=dl;break; case 9:X[1]='4';s=ti;a=dl;break; }

a=a*10/2;

X[11]=a/100+0x30;

a=a%100;

X[12]=a/10+0x30;

a=a%10;

X[14]=a+0x30; //十位 s=(unsigned int)((s*263)/6);

X[3]=s/1000+0x30;

s=s%1000;

X[5]=s/100+0x30;

s=s%100; //个位

X[6]=s/10+0x30;

xianshi();

time(5);

}

}

z=1.5;

ET1=1;

flag=0;

metal=11;

}

else if(metal==11)

{

z=1.0;

Ultrasonic();

compareU();

}

else if((metal==12)||(metal==13))

{

if(metal==12)

{

bell();

metal=13;

}

optic();

compare();

}

if(flag!=12)

{

stopturn();

}

if(second>179)

{metal=100;}

if(flag1==22)

{

flag1=0;

svshow();

xianshi();

}

if(metal>80)

{

ET1=0;

metal=0;

stopmov();

stopturn();

back();

time(9);

stopmov();

svshow();

EA=0;

for(i=0;i<15;i++)

{

bell();

time(5);

}

second=0;

metal=40;

}

execute();

}

//*********************************void optic() void optic()

{

unsigned int i;

flag1=0;

EX1=1;

flag=4;

MAX=0x40;

for(i=0;i<20&&flag!=0;i++);

EX1=1;

flag=5;

MAX=0x41;

for(i=0;i<20&&flag!=0;i++);

EX1=1;

flag=6;

MAX=0x42;

for(i=0;i<20&&flag!=0;i++);

}

//**********************************compare void compare()

{

unsigned int i;

EX1=0;

flag1=0;

flag=0;

if(odir>=(odil+20))

{

T_L();

time(1);

flag=12;

}

else if(odil>=(odir+35))

{

T_R();

time(1);

flag=12;

}

if(second>2)

{

if(v>8)

{

z=z+0.4;

//back();

//time(1);

if(z>3.4)

{z=2.2;}

}

else if(v<3)

{

z=z-0.3;

if(z<0.2)

{z=0.8;}

}

else {z=1.4;}

}

if((odir>3100)||(odim>3300)||(odil>3100))

{

metal=100;

}

}

//*********************************void infrared() void infrared()

{

unsigned int r,red,app;

//EA=0;

ET1=0;

flag1=0;

flag=0;

r=R_A;

red=r&0x06;

app=r&0x01;

r=TL0;

if(red==0x02)

{

T_L();

flag=12;

}

else if(red==0x04)

{

T_R();

flag=12;

}

if((l==1)&&(app==0))

{

bell();

if(distc<55)

{

metal=metal+1;

switch(metal)

{

case

1:odil=distc+r;dir=second;odim=distc+r;dil=second;odir=distc+r;dr=second;ti=distc+r;dl =second;break;

case 2:odim=distc+r;dil=second;odir=distc+r;dr=second;ti=distc+r;dl=second;break; case 3:odir=distc+r;dr=second;ti=distc+r;dl=second;break;

case 4:ti=distc+r;dl=second;break;

case 5:break;

}

}

else if(distc>68)

{

flag=100;

k=metal;

metal=10;

}

}

if(v>8)

{

z=z+0.4;

if(z>3.4)

{z=2.2;}

}

else if(v<3)

{

z=z-0.3;

if(z<0.2)

{z=0.8;}

}

else {z=2.0;}

l=app;

EX0=1;

ET1=1;

}

//*****************************turn left

void T_L()

{

dr1=0;

dr2=0;

}

//*****************************turn right

void T_R()

{

dr1=1;

dr2=0;

}

//****************************forward

void forward()

{

mo1=0;

mo2=0;

}

//****************************back

void back()

{

mo1=1;

mo2=0;

}

//****************************stopturn

void stopturn()

{

dr1=1;

dr2=1;

}

//****************************stopmov

void stopmov()

{

mo1=1;

mo2=1;

//z=1.5;

}

//****************************检测显示器

**********************************

void busy() //检查忙

{

int i;

do

{

i=RD;

i=i&0x80;

}while(i==0x80);

}

//******************************************************* 速度路程送显void svshow()

{

float mid;

X[0]='T';

X[1]='=';

mid=second;

X[2]=mid/20;

X[2]=(int)X[2]+0x30; //十位

X[3]=second/2;

X[3]=(int)X[3]%10+0x30; //个位

X[4]='.';

mid=second/2.;

mid=mid*10;

X[5]=(int)mid%10+0x30; //小数

X[6]='s';

X[7]='V';

X[8]='=';

mid=v/6.*L;

X[9]=(int)mid+0x30;

mid=v/6.*L*10;

X[10]=(int)mid%10+0x30;

mid=v/6.*L*100;

X[11]=(int)mid%10+0x30;

X[12]='c';

X[13]='m';

X[14]='/';

X[15]='s';

}

//******************************************************* 显示程序void xianshi()

{

int i;

busy();

WR=0x01; //清屏

busy();

WR=0x38; //双行5×7

busy();

WR=0x0c; //显示开,无光标,字符不闪烁

busy();

WR=0x06; //地址增量,显示不动

busy();

for(i=0;i<8;i++)

{

busy();

SHUZHI=X[i];

}

busy();

WR=0xc0;

busy();

for(i=8;i<16;i++)

{

busy();

SHUZHI=X[i];

}

}

//*********************************void Ultrasonic

void Ultrasonic()

{

unsigned int i,divl,divr;

flag1=1;

dil=256;

gate=0;

EX1=1;

flag=1;

for(i=0,gate=1;i<10;i++) //left

{ull=1;}

ull=0;

for(i=0;((i<1000)&&(flag!=0));i++);

for(i=0,gate=0;i<600;i++)

{EX1=0;}

gate=0;

EX1=1;

flag=2; //right

for(i=0,gate=1;i<10;i++)

{ulr=1;}

ulr=0;

for(i=0;((i<1000)&&(flag!=0));i++);

for(i=0,gate=0;i<600;i++)

{EX1=0;}

if(dir<10)

{dir=256;}

if(dil<10)

{dil=256;}

}

//********************************************************** void compareU()

{

if(metal==11)

{

EX0=0;

if((dir>23)&&(dil>23))

{

if((dir>100)&&(dil>100))

{

optic();

compare();

}

else if(dir>(dil+80))

{

T_L();

forward();

flag=12;

}

else if(dil>(dir+80))

{

T_R();

forward();

flag=12;

}

{

T_L();

flag=12;

}

}

else if((dir<23)&&(dil>230))

{

ET1=0;

back();

T_L();

time(180);

distc=distc-v;

flag=0;

}

else if((dil<23)&&((dir>220)||(dir<23)))

{

ET1=0;

T_R();

back();

time(180);

distc=distc-v;

flag=0;

}

EX0=1;

ET1=1;

z=1.0;

}

if(distc>170)

{

metal=12;

z=1.6;

}

}

//************************************************************ void M_U() interrupt 2 using 1 //MAX197 and Ultrasonic interrupt

{

unsigned int j=0;

k=0;

EX1=0;

gate=0;

if(flag==1)

{

k=C_2;

k=256-k;

dil=k;

}

else if(flag==2)

{

k=C_2;

k=256-k;

dir=k;

}

智能循迹小车___设计报告

智能循迹小车___设计报告

智能循迹小车设计 专业:自动化 班级:自动化132 姓名:罗植升莫柏源梁 桂宾 指导老师: 2014年4月——2010年6月

本课题是基于STC89C52单片机的智能小车的设计与实现,小车完成的主要功能是能够自主识别黑色引导线并根据黑线走向实现快速稳定的寻线行驶。小车系统以 STC89C52单片机为系统控制处理 器; 采用红外传感获取赛道的信息,来对小车的方向和速度进行控制。此外,对整个控制软件进行设计和程序的编制以及程序的调试,并最终完成软件和硬件的融合,实现小车的预期功能。

当今世界,传感器技术和自动控制技术正在飞速发展,机械、电气和电子信息已经不再明显分家,自动控制在工业领域中的地位已经越来越重要,“智能”这个词也已经成为了热门词汇。现在国外的自动控制和传感器技术已经达到了很高的水平,特别是日本,比如日本本田制作的机器人,其仿人双足行走已经做得十分逼真,而且具有一定的学习能力,还据说其智商已达到6岁儿童的水平。 作为机械行业的代表产品—汽车,其与电子信息产业的融合速度也显著提高,呈现出两个明显的特点:一是电子装置占汽车整车(特别是轿车)的价值量比例逐步提高,汽车将由以机械产品为主向高级的机电一体化方向发展,汽车电子产业也很有可能成为依托整车制造业和用车提升配置而快速成为新的增长点;二是汽车开始向电子化、多媒体化和智能化方向发展,使其不仅作为一种代步工具、同时能具有交通、娱乐、办公和通讯等多种功能。 无容置疑,机电一体化人才的培养不论是在国外还是国内,都开始重视起来,主要表现在大学生的各种大型的创新比赛,比如:亚洲广播电视联盟亚太地区机器人大赛(ABU ROBCON)、全国大学生“飞思卡尔”杯智能汽车竞赛等众多重要竞赛都能很好的培养大学生对于机电一体化的兴趣与强化机电一体化的相关知识。但很现实的状况是,国内不论是在机械还是电气领域,与国外的差距还是很明显的,所以作为机电一体化学生,必须加倍努力,为逐步赶上国外先进水平并超过之而努力。 为了适应机电一体化的发展在汽车智能化方向的发展要求,提出简易智能小车的构想,目的在于:通过独立设计并制作一辆具有简单智能化的简易小车,获得项目整体设计的能力,并掌握多通道多样化传感器综合控制的方法。所以立“智能循迹小车”一题作为尝试。 此项设计是在以杨老师提供的小车为基础上,采用AT89C52单片机作为控制核心,实现能够自主识别黑色引导线并根据黑线走向实现快速稳定的寻线行驶。

智能小车控制程序1

/*实现前进与后退功能*/ /*控制智能车向前行驶10秒,然后停3秒,再向后行驶6秒,停止*/ /********************************************************/ #include #define uint unsigned int /*进行端口声明时,应与具体硬件连接相对应,如不相互对应,将影响程序功能的正常实现*/ sbit S1=P1^3; //对电机端口声明 sbit S2=P1^4; sbit S3=P1^5; sbit S4=P1^6; /*功能函数定义*/ void delay(uint del) //延时函数,延时del毫秒 { uint i,j; for(i=0; i

{ go(); //前进 delay(10000); //前进10秒 stop(); //停止 delay(3000); //停3秒 back(); //后退 delay(6000); //后退6秒 stop(); //停止 }

智能婴儿车设计报告样本

智能婴儿车设计报 告

智能制造论文 专业:机械设计制造及其自动化 学号: 学生姓名: 指导老师: 多功能智能婴儿车

一、简介: 本设计是涉及触摸感应和电磁感应的触摸感应式婴儿车智能刹车装置,哭声检测智能摇摆及报警装置,大小便检测报警装置,婴儿车智能追踪定位装置,手动可调摇篮摇摆频率装置。这些智能设计旨在防止婴儿车在有坡度的地方无人推行时发生溜动而造成的安全事故,而且跟踪定位婴儿车的位置,使婴儿车时时刻刻都在身边,哭声检测智能摇摆及报警装置和手动可调摇篮摇摆频率装置是用于减轻婴儿照看者的负担,不用时时刻刻守在婴儿旁边,大小便检测报警装置是为了提醒照看者婴儿是否大小便,方便照看者给婴儿换尿布。 本创造结构简单,安装方便,能实现婴儿车在有人控制时正常行驶,无人控制时停止锁住无法滑动,避免发生事故,而且提醒照看人婴儿车内婴儿的各种信息。 二、技术背景: 照顾孩子的父母或是保姆不可能时时刻刻待在孩子身边,特别是在晚上,而且人们不可能因为孩子其它事什么都不做。基于以上几点我们设计出了智能婴儿车,它能帮助父母花更少的时间更好得照顾好婴儿,使婴儿更加健康茁壮的成长,而且能在照顾好孩子的同时做些家务及一些其它事情。智能婴儿摇篮能够提供给宝宝舒适摇晃,又能够经过自动移动和自动避障及自动追踪,使得妈妈们也可腾出手来处理家务或者休息。从而大大的减轻了

婴幼儿父母的劳动负担。 婴儿车是一种为婴儿户外活动提供便利而设让的工具车,有各种车型,一般0到4岁的孩子用的是婴儿车,是宝宝最喜爱的散步交通工具,更是妈妈带宝宝上街购物出游时的必须品,而当今的婴儿车的刹车装置方面还存在一定的缺陷,使得婴儿车存在一定的安全隐患。 由于婴儿车停放位置不当或婴儿的活动等其它原因,婴儿车可能会发生溜动,从而引发意外事故,而婴儿坐在婴儿车内不具有制止婴儿车运动的能力以致发生碰撞而导致惨剧发生。现已发生多起因为家长的疏忽导致的婴儿车滑动引起的安全事故。因此安全性是购买婴儿车的最重要的指标,如果婴儿车不具备很强的安全性,就极其容易伤害到脆弱的婴儿。因此出于安全因素的考虑,婴儿车应具有自动制动的能力,特别是在无人看管时。 现有的婴儿车安全装置旨在人工制动,需要在停放时人工打开刹车,可是很多家长往往意识不到安全隐患的存在从而忽略这个步骤,导致安全事故的发生,因此现在的婴儿车安全装置并不能解决无人看管时引发的安全隐患。 该创造正是要实现婴儿车智能化,具有很强的可控性,很大程度上减少了安全隐,很大地提高婴儿车的安全性,这个设计的应用范围较广,同样也能够用于残疾人的推车等。该设计轻巧方便,功耗低,成本较低,具有很高的实用性。 三、关键词:

智能循迹小车程序

#include #define uchar unsigned char #define uint unsigned int //D0-D7:f,b,a,e,d,h,c,g 共阴依次编码 //74LS04反相器驱动数码管 uchar code table[10] = {0x5F,0x42,0x9E,0xD6,0xC3,0xD5,0xDD,0x46,0xDF,0xD7}; uchar i = 0; //用于0-3数码管轮流显示 uint j = 0; //计时的次数 uint time=0; //计时 uint pwm=16; //占空比 uint speed; //调制PWM波的当前的值 sbit R=P3^2; //右边传感器P3^2 sbit L=P3^3; //左边传感器P3^3 //电机驱动口定义 sbit E NB=P1^0; //前轮电机停止控制使能 sbit E NA=P1^1; //后轮控制调速控制端口 sbit I N1=P1^2; //前轮 sbit I N2=P1^3; //前轮 sbit I N3=P1^4; //后轮 sbit I N4=P1^5; //后轮 void Init() { TMOD = 0x12; //定时器0用方式2,定时器1用方式1 TH0=(256-200)/256; //pwm TL0=(256-200)/256; TH1 = 0x0F8; //定时2ms TL1 = 0x30; EA = 1; ET0 = 1; ET1 = 1; TR0 = 1; TR1 = 1; } void tim0(void) interrupt 1 //产生PWM { speed ++; if(speed <= pwm) //pwm 就相当于占100的比例 { ENA = 1; } else if(speed < 100) { ENA = 0; }

智能循迹小车___设计报告

智能循迹小车设计 专业:自动化 班级:自动化132 姓名:罗植升莫柏源梁桂宾 指导老师: 2014年4月——2010年6月 摘要:

本课题是基于STC89C52单片机的智能小车的设计与实现,小车完成的主要功能是能够自主识别黑色引导线并根据黑线走向实现快速稳定的寻线行驶。小车系统以 STC89C52单片机为系统控制处理器;采用红外传感获取赛道的信息,来对小车的方向和速度进行控制。此外,对整个控制软件进行设计和程序的编制以及程序的调试,并最终完成软件和硬件的融合,实现小车的预期功能。 引言

当今世界,传感器技术和自动控制技术正在飞速发展,机械、电气和电子信息已经不再明显分家,自动控制在工业领域中的地位已经越来越重要,“智能”这个词也已经成为了热门词汇。现在国外的自动控制和传感器技术已经达到了很高的水平,特别是日本,比如日本本田制作的机器人,其仿人双足行走已经做得十分逼真,而且具有一定的学习能力,还据说其智商已达到6岁儿童的水平。 作为机械行业的代表产品—汽车,其与电子信息产业的融合速度也显著提高,呈现出两个明显的特点:一是电子装置占汽车整车(特别是轿车)的价值量比例逐步提高,汽车将由以机械产品为主向高级的机电一体化方向发展,汽车电子产业也很有可能成为依托整车制造业和用车提升配置而快速成为新的增长点;二是汽车开始向电子化、多媒体化和智能化方向发展,使其不仅作为一种代步工具、同时能具有交通、娱乐、办公和通讯等多种功能。 无容置疑,机电一体化人才的培养不论是在国外还是国内,都开始重视起来,主要表现在大学生的各种大型的创新比赛,比如:亚洲广播电视联盟亚太地区机器人大赛(ABU ROBCON)、全国大学生“飞思卡尔”杯智能汽车竞赛等众多重要竞赛都能很好的培养大学生对于机电一体化的兴趣与强化机电一体化的相关知识。但很现实的状况是,国内不论是在机械还是电气领域,与国外的差距还是很明显的,所以作为机电一体化学生,必须加倍努力,为逐步赶上国外先进水平并超过之而努力。 为了适应机电一体化的发展在汽车智能化方向的发展要求,提出简易智能小车的构想,目的在于:通过独立设计并制作一辆具有简单智能化的简易小车,获得项目整体设计的能力,并掌握多通道多样化传感器综合控制的方法。所以立“智能循迹小车”一题作为尝试。 此项设计是在以杨老师提供的小车为基础上,采用AT89C52单片机作为控制核心,实现能够自主识别黑色引导线并根据黑线走向实现快速稳定的寻线行驶。

PWM调速+循迹__智能小车程序

//T0产生双路PWM信号,L298N为直流电机调速,接L298N时相应的管脚上最好接上10K 的上拉电阻。 /* 晶振采用12M,产生的PWM的频率约为100Hz */ #include #include #define uchar unsigned char #define uint unsigned int sbit en1=P3^4; /* L298的Enable A */ sbit en2=P3^5; /* L298的Enable B */ sbit s1=P1^0; /* L298的Input 1 */ sbit s2=P1^1; /* L298的Input 2 */ sbit s3=P1^3; /* L298的Input 3 */ sbit s4=P1^2; /* L298的Input 4 */ sbit R=P2^0; sbit C=P2^1; sbit L=P2^2; sbit key=P1^4; uchar t=0; /* 中断计数器*/ uchar m1=0; /* 电机1速度值*/ uchar m2=0; /* 电机2速度值*/ uchar tmp1,tmp2; /* 电机当前速度值*/ /* 电机控制函数index-电机号(1,2); speed-电机速度(0-100) */ void motor(uchar index, char speed) { if(speed<=100) { if(index==1) /* 电机1的处理*/ { m1=abs(speed); /* 取速度的绝对值*/ s1=1; s2=0; } if(index==2) /* 电机2的处理*/ { m2=abs(speed); /* 电机2的速度控制*/ s3=1; s4=0; } } } void Back(void) {

智能循光小车毕业设计论文

毕业设计(论文) 智能循光小车设计 教学单位: 专业名称: 学号: 学生姓名: 指导教师: 指导单位: 完成时间:

毕业设计(论文)原创性声明和使用授权说明 原创性声明 本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。 作者签名:日期: 指导教师签名:日期: 使用授权说明 本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。 作者签名:日期:

学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。 作者签名:日期:年月日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 涉密论文按学校规定处理。 作者签名:日期:年月日导师签名:日期:年月日

简易智能小车设计报告

简易智能小车设计 报告

嵌入式系统课程设计题目:简易智能小车 学院:机电工程学院 专业:自动化 班级: 学生: 学号: 指导教师: 目录

摘要 (1) 第1章绪论 (2) 1.1 简易智能小车的概述 (2) 1.1 主要研究工作 (3) 第2章硬件电路设计 (3) 2.1 总体方案的设计 (3) 2.2 LPC2103的简介 (3) 2.3 单元电路的设计 (5) 2.3.1控制系统模块 (5) 2.3.2 键盘显示板模块 (6) 2.3.3稳压电源模块 (7) 2.3.4 驱动电路模块 (8) 第3章软件设计 (10) 3.1 EasyJTAG-H 仿真器的使用 (10) 3.2 软件程序编写 (10) 第4章调试 (18) 4.1 电路焊接与检查 (18) 4.2 键盘显示板的调试 (18)

4.2 执行电路的调试 (18) 第5章结论 (19) 致谢...................................................................................................19参考文献 (20) 附录 (21) 附录1实物图 (21) 附录2 元器件清单表 (22)

摘要:本次课程设计采用ARM7系列LPC2103作为智能小车的检测和控制核心。利用PWM技术动态控制电动机的转速,来实 现直流调速的功能模块。经过键盘显示板上的八个按键,实现 小车不同方向的行驶,实现ARM与键盘显示板的人机对 话。 关键词:LPC2103、键盘显示板、L298整流电路、直流电机、稳压电源。 。

智能循迹小车程序

智能循迹小车程序 Document number:BGCG-0857-BTDO-0089-2022

#include<> #define uchar unsigned char #define uint unsigned int //D0-D7:f,b,a,e,d,h,c,g 共阴依次编码 //74LS04反相器驱动数码管 uchar code table[10] = {0x5F,0x42,0x9E,0xD6,0xC3,0xD5,0xDD,0x46,0xDF,0xD7}; uchar i = 0; //用于0-3数码管轮流显示uint j = 0; //计时的次数 uint time=0; //计时 uint pwm=16; //占空比 uint speed; //调制PWM波的当前的值 sbit R=P3^2; //右边传感器 P3^2 sbit L=P3^3; //左边传感器 P3^3 //电机驱动口定义 sbit ENB=P1^0; //前轮电机停止控制使能 sbit ENA=P1^1; //后轮控制调速控制端口 sbit IN1=P1^2; //前轮 sbit IN2=P1^3; //前轮 sbit IN3=P1^4; //后轮

sbit IN4=P1^5; //后轮 void Init() { TMOD = 0x12; //定时器0用方式2,定时器1用方式1 TH0=(256-200)/256; //pwm TL0=(256-200)/256; TH1 = 0x0F8; //定时2ms TL1 = 0x30; EA = 1; ET0 = 1; ET1 = 1; TR0 = 1; TR1 = 1; } void tim0(void) interrupt 1 //产生PWM { speed ++; if(speed <= pwm) //pwm 就相当于占100的比例{ ENA = 1; }

智能小车设计报告

智能小车 学校:江汉大学 学院:物信学院 班级、姓名: 10通信曹聪慧 10自二彭洋

摘要: 本系统采用STC89C52作为主控制芯片,采用7805作为稳压芯片,采用L9110芯片作为直流电机驱动,在PWM 控制下,小车自动寻路,快慢速行驶和转向。三者的结合使小车更加智能化,自动化,并用霍尔元件测速,用1602液晶把速度显示出来。电路结构简单,可靠性能高。 关键词:STC89C52单片机、PWM调速、自动循迹,测速

目录 1.系统方案 (4) 1.1 车体设计 (4) 1.2 控制器模块 (4) 1.3电机模块 (4) 1.4电机驱动模块 (5) 1.5测速模块 (5) 1.6电源模块 (5) 1.7最终方案 (6) 2.系统硬件设计 (7) 2.1电源模块的设计 (7) 2.1控制模块的设计 (6) 2.1循迹模块的设计 (6) 2.1电机驱动模块的设计 (7) 2.1测速模块的设计 (7) 3.软件程序的设计 (10) 3.1总体流程图 (10) 3.2软件大体思路 (10) 4.系统功能测试 (9) 4.1 问题分析及解决 (10) 5.总结 (12) (附录)

系统方案 1.1 车体设计 自己制作电动车。一般的说来,自己制作的车体比较粗糙,性能不太稳定。但只要对车体仔细制作,通过优良的控制算法,也能实现控制小车前进转弯的功能。 1.2 控制器模块 采用STC公司的STC89C52单片机作为主控制器。STC89C52是一个低功耗,高性能的51内核的CMOS 8位单片机,片内含8k空间的可反复擦些1000次的Flash只读存储器,具有256 bytes的随机存取数据存储器(RAM),32个IO口,2个16位可编程定时计数器。且该系列的51单片机可以不用烧写器而直接用串口或并口就可以向单片机中下载程序。我们自己制作51最小系统板,体积很小,下载程序方便,放在车上不会占用太多的空间。 1.3电机模块 方案一:采用步进电机实现物体的精确定位和方向控制。步进电机可以作为一种控制用的特种电机,可以精确地控制角度和距离。缺点是相对体积较大,力矩比较小,容易失步,而且价格比较昂贵。 方案二:采用普通直流电机。直流电机运转平稳,精度有一定的保证。直流电机控制的精确度虽然没有步进电机那样高,但完全可以满足本题目的要求。通过单片机的PWM输出同样可以控制直流电机的旋转速度,实现电动车的速度控制。并且直流电机相对于步进电机

智能循迹小车总体设计方案

智能循迹小车总体设计方案 1.1 整体设计方案 本系统采用简单明了的设计方案。通过高发射功率红外光电二极管和高灵敏度光电晶体管组成的传感器循迹模块黑线路经,然后由AT89S52通过IO口控制L298N驱动模块改变两个直流电机的工作状态,最后实现小车循迹。 1.2系统设计步骤 (1)根据设计要求,确定控制方案; (2)将各个模块进行组装并进行简单调试; (3)画出程序流程图,使用C语言进行编程; (4)将程序烧录到单片机内; (5)进行调试以实现控制功能。 1.2.1系统基本组成 智能循迹小车主要由AT89S52单片机电路、循迹模块、L298N驱动模块、直流电机、小车底板、电源模块等组成。 (1)单片机电路:采用AT89S52芯片作为控制单元。AT89S52单片机具有低成本、高性能、抗干扰能力强、超低功耗、低电磁干扰,并且与传统的8051单片机程序兼容,无需改变硬件,支持在系统编程技术。使用ISP可不用编程器直接在PCB板上烧录程序,修改、调速都方便。 (2)循迹模块:采用脉冲调制反射红外发射接收器作为循迹传感器,调制信号带有交流分量,可减少外界的大量干扰。信号采集部分就相

当于智能循迹小车的眼睛,有它完成黑线识别并产生高、低平信号传送到控制单元,然后单片机生成指令来控制驱动模块来控制两个直流电机的工作状态,来完成自动循迹。 (3)L298N驱动模块:采用L298N作为点击驱动芯片。L298N具有高电压、大电流、响应频率高的全桥驱动芯片,一片L298N可以分别控制两个直流电机,并且带有控制使能端。该电机驱动芯片驱动能力强、操作方便、稳定性好,性能优良。L298N的使能端可以外接电平控制,也可以利用单片机进行软件控制,满足各种复杂电路的需要。另外,L298N的驱动功率较大,能够根据输入电压的大小输出不同的电压和功率,解决了负载能力不够的问题。

智能小车课程设计报告书

※※※※※※※※※ 级学生※※2015※※课程设计材料※※※※※※※※※※※ 课程设计报告书 课题名称智能小车蓝牙操控和循迹的实现 名姓 学号 院学 专业 指导教师 2019年2月15日 设计目的1 通过设计进一步掌握51单片机的应用,特别是在嵌入式系统中的应用。进一步学习51单片机在系统中的控制功能,能够合理设计单片机的外围电路,并使之与单片机构成整个系统。 2功能要求

智能小车作为现代的新发明,是以后的发展方向,他可以按照预先设定的模式在一个环境里自动运作,不需要人为的管理,可应用于科学勘探等等用途;并且能实现显示时间、速度、里程,具有自动寻迹、寻光、避障等功能,可程控行驶速度、准确定位停车,远程传输图像、按键控制加速,减速,刹停,左转和右转、实时显示运行状态等功能。 3 总体设计方案 在现有玩具电动车的基础上,加了四个按键,实现对电动车的运行轨迹的启动,并将按键的状态传送至单片机进行处理,然后由单片机根据所检测的各种按键状态实现对电动车的智能控制。这种方案能实现对电动车的运动状态进行实时控制,控制灵活、可靠,精度高,可满足对系统的各项要求。本设计采用AT89C51单 片机。以AT89C51为控制核心,利用按键的动作,控制电动小汽车的状态。加 装光电、红外线、超声波传感器,实现对电动车的速度、位置、运行状况的实时测量,并将测量数据传送至单片机进行处理,然后由单片机根据所检测的各种数据实现对电动小车的智能控制,如图1所示。简易智能电动车采用AT89C51单 片机进行智能控制。开始由手动启动小车,并复位初始化,当到达规定的起始黑线,由小车底部的红外光电传感器检测到第一条黑线后,通过单片机控制小车[2]。在白纸所做轨迹道路中,小车通过超声波传感器正前开始记数、显示、调速方检测和光电传感器左右侧检测,由单片机控制实现系统的自动避障功能。在电动车进驶过程中,采用双极式H型PWM脉宽调制技术,以控制小车调速;并采用 动态共阴显示行驶时间和里程。小车通过光电传感装置实现驶向光源并通过循迹保持小车在白纸范围内行驶。当小车到达终点第二次检测到黑线时,单片机控制小车停车。 总体设计框架图图1 4 硬件电路选取与设计

Arduino智能避障小车避障程序

Arduino智能避障小车避障程序 首先建立一个名为modulecar.ino的主程序。 // modulecar.ino,玩转智能小车主程序 #include //导入舵机库 #include //导入NwePing库 // 对照系统配线方案依次指定各I/O const int ENA = 3 ; //左电机PWM const int IN1 = 4 ; //左电机正 const int IN2 = 5 ; //左电机负 const int ENB = 6 ; //右电机PWM const int IN3 = 7 ; //右电机正 const int IN4 = 8 ; //右电机负 const int trigger = 9 ; //定义超声波传感器发射脚为D9 const int echo = 10 ; //定义传感器接收脚为D10 const int max_read = 300; //设定传感器最大探测距离。 int no_good = 35; //*设定35cm警戒距离。 int read_ahead; //实际距离读数。 Servo sensorStation; //设定传感器平台。 NewPing sensor(trigger, echo, max_read); //设定传感器引脚和最大读数//系统初始化 void setup() { Serial.begin(9600); //启用串行监视器可以给调试带来极大便利 sensorStation.attach(11); //把D11分配给舵机

pinMode(ENA, OUTPUT); //依次设定各I/O属性 pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(ENB, OUTPUT); pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT); pinMode(trigger, OUTPUT); pinMode(echo, INPUT); sensorStation.write(90); //舵机复位至90? delay(6000); //上电等待6s后进入主循环 } //主程序 void loop() { read_ahead = readDistance(); //调用readDistance()函数读出前方距离Serial.println("AHEAD:"); Serial.println(read_ahead); //串行监视器显示机器人前方距离 if (read_ahead < no_good) //如果前方距离小于警戒值 { fastStop(); //就令机器人紧急刹车 waTch(); //然后左右查看,分析得出最佳路线 goForward(); //*此处调用看似多余,但可以确保机器人高速运转下动作的连贯性 }

开题报告(智能小车)

CHAHGZH0U 開TfRIE OF ENGINEERWG TECHNOLOGY 毕业设计(论文)开题报告 现状: 智能小车发展很快,从智能玩具到其它各行业都有实质成果。其基本可实 现循迹、避障、检测贴片寻光入库、避崖等基本功能,这几届的电子设计大赛 智能小车又在向声控系统发展。比较出名的飞思卡尔智能小车更是走在前列。 我此次的设计主要实现循迹避障这两个功能。 智能车辆也叫无人车辆,是一个集环境感知、规划决策和多等级辅助驾驶 等功能于一体的综合系统。它具有道路障碍自动识别、自动报警、自动制动、 自动保持安全距离、车速和巡航控制等功能。智能车辆的主要特点是在复杂的 道路情况下,能自动的操纵和驾驶车辆绕开障碍物并沿着预订的道路进行。智 能小车主要运用领域包括军事侦察与环境检测、探测危险与排除险情、安全检 测受损评估、智能家居。 发展趋势: 智能循迹小车可广泛应用于军事侦察、勘探、矿产开采等不便于人员实地 堪察 的环境。稍加改造,可应用于军事反恐、警察维和等领域,从而达到最大 限度的避免人员伤亡,保存战斗实力的目的。因此,具有重要的军事和经济意 义。 随着汽车工业的,其与电子信息产业的融合速度也显着提高,汽车开始向 电子化、多媒体化和智能化方向发展,使其不仅作为一种代步工具、同时能具 有交通、娱乐、办公和通讯等多种功能。智能小车是一个集环境感知、规划决 策,自动行驶等功能与异地的综合系统,它集中的运用了计算机、传感、信息、 通信、导航及自动控制等技术,是典型的高新技术综合体。 、基本信息 学生姓名 倪小玉 班级 电子0911 学号 2009238108 系名称 自动化技术系 专业 应用电子 毕业设计(论文)题目 智能循迹小车的设计 指导教师 李玮 二、开题意义 课题 的现状与 发展趋势

智能寻迹小车以及程序

寻迹小车 在历届全国大学生电子设计竞赛中多次出现了集光、机、电于一体的简易智能小车题目。笔者通过论证、比较、实验之后,制作出了简易小车的寻迹电路系统。整个系统基于普通玩具小车的机械结构,并利用了小车的底盘、前后轮电机及其自动复原装置,能够平稳跟踪路面黑色轨迹运行。 总体方案 整个电路系统分为检测、控制、驱动三个模块。首先利用光电对管对路面信号进行检测,经过比较器处理之后,送给软件控制模块进行实时控制,输出相应的信号给驱动芯片驱动电机转动,从而控制整个小车的运动。系统方案方框图如图1所示。 图1 智能小车寻迹系统框图 传感检测单元 小车循迹原理 该智能小车在画有黑线的白纸“路面”上行驶,由于黑线和白纸对光线的反射系数不同,可根据接收到的反射光的强弱来判断“道路”—黑线。笔者在该模块中利用了简单、应用也比较普遍的检测方法——红外探测法。 红外探测法,即利用红外线在不同颜色的物理表面具有不同的反射性质的特点。在小车行驶过程中不断地向地面发射红外光,当红外光遇到白色地面时发生漫发射,反射光被装在小车上的接收管接收;如果遇到黑线则红外光被吸收,则小车上的接收管接收不到信号。 传感器的选择 市场上用于红外探测法的器件较多,可以利用反射式传感器外接简单电路自制探头,也可以使用结构简单、工作性能可靠的集成式红外探头。ST系列集成红外探头价格便宜、体积小、使用方便、性能可靠、用途广泛,所以该系统中最终选择了ST168反射传感器作为红外光的发射和接收器件,其内部结构和外接电路均较为简单,如图2所示:

图2 ST168检测电路 ST168采用高发射功率红外光、电二极管和高灵敏光电晶体管组成,采用非接触式检测方式。ST168的检测距离很小,一般为8~15毫米,因为8毫米以下是它的检测盲区,而大于15毫米则很容易受干扰。笔者经过多次测试、比较,发现把传感器安装在距离检测物表面10毫米时,检测效果最好。 R1限制发射二极管的电流,发射管的电流和发射功率成正比,但受其极限输入正向电流50mA的影响,用R1=150的电阻作为限流电阻,Vcc=5V作为电源电压,测试发现发射功率完全能满足检测需要;可变电阻R2可限制接收电路的电流,一方面保护接收红外管;另一方面可调节检测电路的灵敏度。因为传感器输出端得到的是模拟电压信号,所以在输出端增加了比较器,先将ST168输出电压与2.5V进行比较,再送给单片机处理和控制。 传感器的安装 正确选择检测方法和传感器件是决定循迹效果的重要因素,而且正确的器件安装方法也是循迹电路好坏的一个重要因素。从简单、方便、可靠等角度出发,同时在底盘装设4个红外探测头,进行两级方向纠正控制,将大大提高其循迹的可靠性,具体位置分布如图3所示。

智能小车设计报告

智能小车设计报告 魏旭峰、孔凡明、陈梦洋 (河北科技大学电气信息学院 ) 摘要: AT89S52单片机是一款八位单片机,他的易用性和多功能性受到了广大使用者的好评。该设计是结合科研项目而确定的设计类课题。本系统以设计题目的要求为目的,采用89S52单片机为控制核心,利用红外线传感器检测道路上的黑线,控制电动小汽车的自动寻路,快慢速行驶。整个系统的电路结构简单,可靠性能高。实验测试结果满足要求,本文着重介绍了该系统的硬件设计方法及测试结果分析。 采用的技术主要有: 通过编程来控制小车的速度及方向; 传感器的有效应用; 1602液晶显示的应用; 关键词: 89S52单片机、光电检测器、PWM调速、电动小车 第一章方案设计与论证 一供电系统 二光电检测系统 三单片机最小应用系统设计 四液晶显示1602的应用 五电机驱动 第二章软件设计 第二章方案设计与论证 根据要求,小车应在规定的赛道上行驶,赛道中央黑线宽为25MM,确定如下方案:在现有玩具电动车的基础上,加装光电检测器,实现对电动车的位置的实时 测量,并将测量数据传送至单片机进行处理,然后由单片机根据所检测的各种数据实现对电动车的转向和速度的智能控制. 这种方案能实现对电动车的运动状态进行实时控制,控制灵活、可靠,精度高,可满足对系统的各项要求。 一供电系统 本模块使用LM2940芯片输出+5V的电压,为89S52单片机光电检测电路供电,采用LM1117可控变压芯片输出+6V电压为舵机供电.而电机则由单片机来控制,当单片机输出的电压不同时,电机的转速不同,以此来达到控制小车速度的目的.电路如图:

二光电检测系统 本模块采用七对红外线发射和接收对管,来检测小车前方黑线位置和模拟车站停车位置.发射管发射管出红外线,当对管正下方为白色跑道时,发射管发射出去的红外线会被反射回来, 接收因接收到红外线

智能循迹小车详细制作过程

(穿山乙工作室) 三天三十元做出智能车 0.准备所需基本元器件 1).基本二驱车体一台。(本课以穿山乙推出的基本车体为例讲解) 2).5x7cm 洞洞板、单片机卡槽、51单片机、石英晶体、红色LED 、1K 电阻、10K 排阻各一个;2个瓷片电容、排针40个。 3).5x7cm 洞洞板、7805稳压芯片、红色LED 、1K 电阻各一个;双孔接线柱三个、10u 电解电容2个、排针12个、9110驱动芯片2个。 4).5x7cm 洞洞板、LM324比较器芯片各一个;红外对管三对、4.7K 电阻3个、330电阻三个、红色3mmLED 三个。 一、组装车体 基本设计思路: 1.基本车架(两个电机一体轮子+一个万向轮) 2.单片机主控模块 3.电机驱动模块(内置5V 电源输出) 4.黑白线循迹模块

(图中显示的很清晰吧,照着上螺丝就行了) 二、制作单片机控制模块 材料:5x7cm洞洞板、单片机卡槽、51单片机、石英晶体、红色LED、1K电阻、10K排阻各一个;2个瓷片电容、排针40个。 电路图如下,主要目的是把单片机的各个引脚用排针引出来,便于使用。我们也有焊接好的实物图供你参考。(如果你选用的是STC98系列的单片机在这里可以省掉复位电路不焊,仍能正常工作。我实物图中就没焊复位)

三、制作电机驱动模块 材料:5x7cm洞洞板、7805稳压芯片、红色LED、1K电阻各一个;双孔接线柱三个、10u电解电容2个、排针12个、9110驱动芯片2个。 电路图如下,这里我们把电源模块与驱动模块含在了同一个电路板上。因为电机驱动模块所需的电压是+9V左右(6—15V 均可),而单片机主控和循迹模块所需电压均为+5V。 这里用了一个7805稳压芯片将+9V电压稳出+5V电压。 +9V

智能小车实训报告

智能小车实训报告 摘要: 本课题是基于AT89C52单片机的智能小车的设计与实现,小车完成的主要功能是能够自主识别黑色引导线并根据黑线走向实现快速稳定的寻线行驶。小车系统以 AT89S52 单片机为系统控制处理器; 采用红外传感获取赛道的信息,来对小车的方向和速度进行控制。此外,对整个控制软件进行设计和程序的编制以及程序的调试,并最终完成软件和硬件的融合,实现小车的预期功能。 一、实验目的: 通过设计进一步掌握51单片机的应用,特别是在嵌入式系统中的应用。进一步学习51单片机在系统中的控制功能,能够合理设计单片机的外围电路,并使之与单片机构成整个系统。 二、设计方案 该智能车采用红外传感器对赛道进行道路检测,单片机根据采集到的信号的不同状态判断小车当前状态,通过电机驱动芯片L298N 发出控制命令,控制电机的工作状态以实现对小车姿态的控制。 三.报告内容安排 本技术报告主要分为三个部分。第一部分是对整个系统实现方法的一个概要说明,主要内容是对整个技术原理的概述;第二部分是对硬件电路设计的说明,主要介绍系统传感器的设计及其他硬件电路的设计原理等;第三部分是对系统软件设计部分的说明,主要内容是智

能模型车设计中主要用到的控制理论、算法说明及代码设计介绍等。 技术方案概要说明 本模型车的电路系统包括电源管理模块、单片机模块、传感器模块、电机驱动模块。 工作原理: 利用红外采集模块中的红外发射接收对管检测路面上的轨迹 将轨迹信息送到单片机 单片机采用模糊推理求出转向的角度,然后去控制 行走部分 最终完成智能小车可以按照路面上的轨迹运行。 硬件电路的设计 1、最小系统: 小车采用atmel公司的AT89C52单片机作为控制芯片,图1是其最小系统电路。主要包括:时钟电路、电源电路、复位电路。 其中各个部分的功能如下: 1、时钟电路:给单片机提供一个外接的16MHz的石英晶振。 2、电源电路:给单片机提供5V电源。 3、复位电路:在电压达到正常值时给单片机一个复位信号。

智能循迹小车设计

智能循迹/避障小车研究 工作报告 一、智能循迹小车程序结构框图 二、Proteus仿真图 三、软件程序设计

一、智能循迹小车程序结构框图 经过几天在网上的查找,对智能循迹/避障小车有了大致的了 解, 一般有三个模块: 1、最基本的小车驱动模块,使用两个二相四线步进电机对小车的两个后轮分别进行驱动,前轮最好用万向轮,能使小车更好地转弯; 2、小车循迹模块,在小车底部有三个并排安装的红外对管,对黑色与白色的反射信号不同,经单片机处理后对小车进行相应处理; 3、避障模块,我写的程序中对于避障模块是用中断来处理的(即安装在小车车头的红外对管检测到有障碍物后,就会向单片机的P3_2口输出一个高电平或是低电平,这时中断程序将对小车进行预先设定好的避障处理),但是在程序结构框图中,我不太会表示中断处理方式,所以就用查询的方式画了。

N Y N Y 二、Proteus 仿真图 我用Proteus 大概地仿真了小车的运行状态。图中的两个二相四线步进电机就代表小车的左右轮(假定步进电机顺时针转动方向为小车前进方向),网上有很多种驱动芯片,在仿真时我只使用L298N 芯

片来驱动步进电机。用三个单刀双制开关模拟用于小车循迹的三个红外对管的输出信号,经一个与门与三极管开关连接到P3_3口,中断程序对P1_0, P1_1, P1_2三个口进行检测,并做出相应处理。同时因为避障模块的优先级高于循迹模块,所以将外部中断0用于避障,外部中断1用于循迹。P1_3口则用于检测小车是否到达终点。 1、小车驱动模块: 使用一片298芯片驱动一个二相四线步进电机,电机的电压为12V。

智能小车开题报告

华侨大学厦门工学院毕业设计(论文)开题报告 系:电气工程系专业班级:电气工程及其自动化4班

二、文献综述(国内外研究情况及其发展): 国外智能车辆的研究历史较长,始于上世纪50年代。它的发展历程大体可以分成三个阶段: 第一阶段 20世纪50年代是智能车辆研究的初始阶段。1954年美国Barrett Electronics 公司研究开发了世界上第一台自主引导车系统AGVS(Automated Guided Vehicle System)。 第二阶段从80年代中后期开始,世界主要发达国家对智能车辆开展了卓有成效的研究。在欧洲,普罗米修斯项目开始在这个领域的探索。在美洲,美国成立了国家自动高速公路系统联盟(NAHSC)。在亚洲,日本成立了高速公路先进巡航/辅助驾驶研究会。 第三阶段从90年代开始,智能车辆进入了深入、系统、大规模研究阶段。最为突出的是,美国卡内基.梅隆大学(Carnegie Mellon University)机器人研究所一共完成了Navlab系列的10台自主车(Navlab1—Navlab10)的研究,取得了显著的成就。 相比于国外,我国开展智能车辆技术方面的研究起步较晚,开始于20世纪80年代。而且大多数研究处在于针对某个单项技术研究的阶段。虽然我国在智能车辆技术方面的研究总体上落后于发达国家,并且存在一定得技术差距,但是我们也取得了一系列的成果,主要有: (1)中国第一汽车集团公司和国防科技大学机电工程与自动化学院与2003年研制成功我国第一辆自主驾驶轿车。 (2)南京理工大学、北京理工大学、浙江大学、国防科技大学、清华大学等多所院校联合研制了7B.8军用室外自主车,该车装有彩色摄像机、激光雷达、陀螺惯导定位等传感器。 可以预计,我国飞速发展的经济实力将为智能车辆的研究提供一个更加广阔的前景。因此,对智能小车进行深入细致的研究,不但能加深课堂上学到的理论知识,更能将理论转化为实际运用,为将来打下坚实的基础。

智能小车设计论文

单片机课程设计 题目智能小车的设计 学生姓名饶晓东 院(系)机械与电气工程学院 班级 10机械电子工程01班 学号 2010100548 指导老师于祯 完成日期 2013 年 5 月 31 日 南昌工程学院 课程设计(论文)任务书 I、课程设计(论文)题目: 智能小车的设计 II、课程设计(论文)使用的原始资料(数据)及设计技术要求: 通过Intel8253和1298N实现汽车的加速、减速、刹停,并可通过两个电

机的不同转速实现左转和右转等功能 III、课程设计(论文)工作内容及完成时间: 1、查阅资料,确定硬件系统框图组成。(5月20日~5月22日) 2、设计完整电原理图。(5月23日~5月25日) 3、设计软件结构流程框图。(5月26日~5月27日) 4、按流程编写各功能模块程序。(5月28日~5月29日) 5、完成课程设计报告(5月30日~5月31日) Ⅳ 主要参考资料: 1、张俊漠,单片机中级教程-原理与应用北京航空航天大学出版社2002 2、郭天祥,51单片机c语言教程 机械与电气系 10机械电子(本) 专业类 01班 学生:饶晓东 日期:自 2013 年 5 月20 日至 2013 年5 月31 日

指导教师:于祯 助理指导教师(并指出所负责的部分): 教研室主任 附注:任务书应该附在已完成的课程设计说明书首页。 摘要 智能作为现代的新发明,是以后的发展方向,它可以按照预先设定的模式在一个环境里自动的运作,不需要人为的管理,可应用于科学勘探等等的用途。智能电动车就是其中的一个体现。本次设计的简易智能电动车,采用AT89C52单片机作为小车的检测和控制核心;在小车行驶的过程中能够根据不同的要求通过改变PWM 输出改变小车的行驶速度。本设计结构简单,较容易实现,但具有高度的智能化、人性化,一定程度体现了智能。 采用的技术主要有: 1、通过AT89C52自带的定时器设置PWM输出来控制小车的速度; 2、电机驱动芯片L298N控制两个直流电机的转向; 3、数码管显示测量数据

相关文档
最新文档