智能迷宫寻迹小车报告全解
智能循迹小车___设计报告
智能循迹小车___设计报告设计报告:智能循迹小车一、设计背景智能循迹小车是一种能够通过感知地面上的线条进行导航的小型机器人。
循迹小车可以应用于许多领域,如仓库管理、物流配送、家庭服务等。
本设计旨在开发一款功能强大、性能稳定的智能循迹小车,以满足不同领域的需求。
二、设计目标1.实现循迹功能:小车能够准确地识别地面上的线条,并按照线条进行导航。
2.提供远程控制功能:用户可以通过无线遥控器对小车进行控制,包括前进、后退、转向等操作。
3.具备避障功能:小车能够识别和避开遇到的障碍物,确保行驶安全。
4.具备环境感知功能:小车能够感知周围环境,包括温度、湿度、光照等参数,并将数据传输给用户端。
5.高稳定性和可靠性:设计小车的硬件和软件应具备较高的稳定性和可靠性,以保证长时间的工作和使用。
三、设计方案1.硬件设计:(1) 采用Arduino控制器作为主控制单元,与传感器、驱动器等硬件模块进行连接和交互。
(2)使用红外传感器作为循迹传感器,通过检测地面上的线条来实现循迹功能。
(3)使用超声波传感器来检测小车前方的障碍物,以实现避障功能。
(4)添加温湿度传感器和光照传感器,以提供环境感知功能。
(5)将无线模块与控制器连接,以实现远程控制功能。
2.软件设计:(1) 使用Arduino编程语言进行程序设计,编写循迹、避障和远程控制的算法。
(2)设计用户界面,通过无线模块将控制信号发送给小车,实现远程控制。
(3)编写数据传输和处理的程序,将环境感知数据发送到用户端进行显示和分析。
四、实施计划1.硬件搭建:按照设计方案中的硬件模块需求,选购所需元件并进行搭建。
2.软件开发:根据设计方案中的软件设计需求,编写相应的程序并进行测试。
3.功能调试:对小车的循迹、避障、远程控制和环境感知功能进行调试和优化。
4.性能测试:使用不同场景和材料的线条进行测试,验证小车的循迹性能。
5.用户界面开发:设计用户端的界面,并完成与小车的远程控制功能的对接。
智能寻迹小车实验报告
智能寻迹小车实验报告
实验目的:
设计一个智能寻迹小车,能够依据环境中的黑线自主行驶,并避开障碍物。
实验材料:
1. Arduino开发板
2. 电机驱动模块
3. 智能车底盘
4. 红外传感器
5. 电源线
6. 杜邦线
7. 电池
实验步骤:
1. 按照智能车底盘的说明书将车底盘组装起来。
2. 将Arduino开发板安装在车底盘上,并与电机驱动模块连接。
3. 连接红外传感器到Arduino开发板上,以便检测黑线。
4. 配置代码,使小车能够依据红外传感器检测到的黑线自主行驶。
可以使用PID控制算法来控制小车的速度和方向。
5. 测试小车的寻迹功能,可以在地面上绘制黑线,观察小车是否能够准确地跟随黑线行驶。
6. 根据需要,可以添加避障功能。
可以使用超声波传感器或红外避障传感器来检测障碍物,并调整小车的行驶路线。
实验结果:
经过实验,可以发现小车能够依据红外传感器检测到的黑线自主行驶,并能够避开障碍物。
小车的寻迹功能和避障功能能够实现预期的效果。
实验总结:
本次实验成功设计并实现了智能寻迹小车。
通过使用Arduino 开发板、电机驱动模块和红外传感器等材料,配合合适的代码配置,小车能够准确地跟随黑线行驶,并能够避开障碍物。
该实验展示了智能小车的基本原理和应用,为进一步研究和开发智能车提供了基础。
智能循迹小车实验报告
智能循迹小车实验报告第一篇:智能循迹小车实验报告摘要本设计主要有单片机模块、传感器模块、电机驱动模块以及电源模块组成,小车具有自主寻迹的功能。
本次设计采用STC公司的89C52单片机作为控制芯片,传感器模块采用红外光电对管和比较器实现,能够轻松识别黑白两色路面,同时具有抗环境干扰能力,电机模块由L298N芯片和两个直流电机构成,组成了智能车的动力系统,电源采用7.2V的直流电池,经过系统组装,从而实现了小车的自动循迹的功能。
关键词智能小车单片机红外光对管 STC89C52 L298N 1 绪论随着科学技术的发展,机器人的设计越来越精细,功能越来越复杂,智能小车作为其的一个分支,也在不断发展。
在近几年的电子设计大赛中,关于小车的智能化功能的实现也多种多样,因此本次我们也打算设计一智能小车,使其能自动识别预制道路,按照设计的道路自行寻迹。
设计任务与要求采用MCS-51单片机为控制芯片(也可采用其他的芯片),红外对管为识别器件、步进电机为行进部件,设计出一个能够识别以白底为道路色,宽度10mm左右的黑色胶带制作的不规则的封闭曲线为引导轨迹并能沿该轨迹行进的智能寻迹机器小车。
方案设计与方案选择3.1 硬件部分可分为四个模块:单片机模块、传感器模块、电机驱动模块以及电源模块。
3.1.1 单片机模块为小车运行的核心部件,起控制小车的所有运行状态的作用。
由于以前自己开发板使用的是ATMEL公司的STC89C52,所以让然选择这个芯片作为控制核心部件。
STC89C52是一种低损耗、高性能、CMOS八位微处理器,片内有4k字节的在线可重复编程、快速擦除快速写入程序的存储器,能重复写入/擦除1000次,数据保存时间为十年。
其程序和数据存储是分开的。
3.1.2 传感器模块方案一:使用光敏电阻组成光敏探测器采集路面信息。
阻值经过比较器输出高低电平进行分析,但是光照影响很大,不能稳定工作。
方案二:使用光电传感器来采集路面信息。
循迹小车的实验报告
循迹小车的实验报告循迹小车的实验报告引言:循迹小车是一种基于光电传感器的智能机器人,能够通过感知地面上的黑线,实现自主导航。
本次实验旨在探索循迹小车的工作原理及其应用,并对其性能进行评估。
一、实验背景循迹小车作为一种智能机器人,广泛应用于工业自动化、仓储物流、智能家居等领域。
其基本原理是通过光电传感器感知地面上的黑线,根据传感器信号控制电机的转动,从而实现沿着黑线行进。
二、实验过程1. 实验器材准备本次实验所需器材有循迹小车、黑线地毯、计算机等。
通过连接计算机和循迹小车,可以实现对小车的控制和数据传输。
2. 实验步骤(1)将黑线地毯铺设在实验场地上,并保证地毯表面光滑清洁。
(2)将循迹小车放置在地毯上,确保其底部的光电传感器与黑线接触。
(3)通过计算机控制循迹小车的启动,观察小车是否能够准确跟踪黑线行进。
(4)记录小车在不同条件下的行进速度、转弯半径等数据,并进行分析。
三、实验结果1. 循迹性能评估通过实验观察和数据记录,我们发现循迹小车在较为平整、光线充足的黑线地毯上表现较好,能够准确跟踪黑线行进。
然而,在黑线不明显、光线较暗的情况下,小车的循迹性能会有所下降。
2. 行进速度与转弯半径根据实验数据分析,循迹小车的行进速度受到多种因素的影响,包括地面摩擦力、电机功率等。
在实验中,我们发现增加电机功率可以提高小车的行进速度,但同时也会增大转弯半径。
3. 应用前景循迹小车作为一种智能机器人,具有广泛的应用前景。
在工业自动化领域,循迹小车可以用于物料搬运、装配线操作等任务;在仓储物流领域,循迹小车可以实现货物的自动分拣、运输等功能;在智能家居领域,循迹小车可以作为家庭服务机器人,提供家居清洁、送餐等服务。
四、实验总结通过本次实验,我们深入了解了循迹小车的工作原理和应用前景。
循迹小车的循迹性能受到地面条件和光线影响,需要进一步优化。
在实际应用中,循迹小车可以广泛应用于工业自动化、仓储物流和智能家居等领域,为人们的生活和工作带来便利。
循迹小车研究报告
循迹小车研究报告1. 引言循迹小车是一种能够根据特定路线上的黑线进行自动导航的智能机器人。
该研究报告旨在探讨循迹小车的工作原理、应用领域以及未来发展趋势。
循迹小车在工业自动化、教育培训和娱乐等领域具有广泛的应用前景。
本报告将深入研究循迹小车的算法、传感器技术以及控制系统,并分析其在实际应用中的优势和局限性。
2. 工作原理循迹小车通过搭载在车身下方的红外传感器,来检测路线上的黑线。
传感器会发射红外光束,当红外光束碰触到黑线时,传感器会接收到反射回来的光束。
基于这个原理,通过检测反射光强的变化,循迹小车可以判断当前车辆所处的位置和方向。
3. 系统设计循迹小车的系统设计涵盖硬件和软件两个方面。
下面将分别讨论这两个方面的关键设计要素。
3.1 硬件设计循迹小车的硬件设计包括车身结构和传感器模块。
车身结构应具备稳定性和灵活性,以适应不同路面的运动需求。
传感器模块通常采用红外线传感器阵列,以提高检测精度和鲁棒性。
3.2 软件设计循迹小车的软件设计主要包括控制算法和用户界面。
控制算法用于处理传感器数据,判断小车应如何运动以跟随黑线。
用户界面则提供了交互操作的接口,用户可以通过界面实时监控车辆状态和调整路径规划。
4. 应用领域循迹小车在工业自动化、教育培训和娱乐领域都有广泛的应用。
4.1 工业自动化循迹小车可以在工厂流水线上配备传感器阵列,用于自动化物流和生产线控制。
它可以通过追踪黑线,识别并搬运特定物品,极大提高生产效率和减少人力成本。
4.2 教育培训循迹小车作为一种教育工具,可以帮助学生理解基本控制原理和编程思维。
学生可以通过编写控制程序,让循迹小车按照设定的路径行驶,提高对编程和算法的理解能力。
4.3 娱乐循迹小车的智能导航功能使其成为一种有趣的玩具。
用户可以通过操控界面,让小车在复杂迷宫中自动寻找最快捷的路径。
这不仅增加了娱乐性,还可以锻炼空间思维和逻辑推理能力。
5. 优势和局限性循迹小车作为一种智能机器人,具有以下优势和局限性。
智能循迹避障小车报告书精选全文完整版
可编辑修改精选全文完整版电子科协竞赛项目报告书参赛作品:基于51单片机的智能寻迹避障小车小组成员:盛博专业班级:电信1205班报告提交日期: 2013年 4 月12日目录1设计要求与功能 (3)1.1设计基本要求 (3)2 硬件设计 ................................................. (3)2.1主控系统及所需主要元件 (3)2.2机械系统 (4)2.3电机驱动模块 (5)2.4 循迹模块 (6)2.5避障模块 (6)2.6电源模块 (7)2.7报警模块 (7)2.8远程操控模块 (8)3 软件设计 (8)3.1主程序及框图 (8)3.2电机驱动程序 (9)3.3循迹程序 (9)3.4避障程序 (10)3.5报警及远程操控程序 (10)4调试过程 (11)5总结 (11)附录总C程序 (11)一设计要求与功能设计并制作一个能自动循迹壁障的智能小车。
可沿不规则黑色轨迹行驶,遇到障碍可自动绕行,遇到黑色停止线自动停止,轨迹、通道、障碍现场如图。
1.基本要求(1)小车启动沿着轨迹行驶,遇到终点线停车;(2)小车遇到行驶轨迹范围内的障碍物应自动绕行,脱离轨迹后能自动寻找轨迹并形式到终点。
2.发挥部分(1)增加声、光报警功能,增加无线遥控启动、停止功能;(2)利用Protel或者Alitum Designer等软件进行PCB设计。
二硬件设计2.1主控系统及所需主要元件主控系统由STC89C52单片机负责,通过接收并分析信号模块传输过来的信号对各模块下达指令,使各模块能持续并稳定地共同工作,形成有机的整体,从而实现小车的各种功能。
所需主要元件:STC89C52单片机,减速电机,红外对管等。
各口功能:P0.0-P0.2是红外传感器信号输入口;P0.3-P0.6是四路红外对管信号输入口;P1.0-P1.1是无线信号输入口;P2.0-P2.7是四路减速电机控制信号输出口。
智能寻迹小车实习报告
智能寻迹小车实习报告一、实习背景与目的随着科技的不断发展,机器人技术在各行各业中得到了广泛的应用。
智能寻迹小车作为一种典型的移动机器人平台,具有在复杂环境中自主导航、避障和完成任务的能力。
本次实习旨在通过设计和制作智能寻迹小车,掌握电子元器件的识别、传感器、电机在控制作用下的具体机械构架,以及单片机控制原理等知识,提高自己在电子技术、机器人技术等方面的实际操作能力。
二、实习内容与过程1. 设计思路本次实习的智能寻迹小车主要通过单片机控制,利用红外线传感器检测地面上的特定标记(如黑线),实现寻迹功能。
同时,通过超声波传感器检测前方障碍物的距离,实现避障功能。
在保证小车能够准确跟随线路的同时,使其能够自动避开障碍物。
2. 硬件设计(1)单片机:选用高性能、低功耗的单片机作为核心控制器,负责处理传感器数据、执行避障和循迹算法,以及控制小车的运动。
(2)传感器模块:红外线传感器用于检测地面上的特定标记,实现寻迹功能。
超声波传感器用于检测前方障碍物的距离,实现避障功能。
(3)电机驱动模块:负责驱动小车的运动,包括前进、后退、转向等。
3. 软件设计软件设计主要涉及系统初始化、线路检测与循迹、避障检测与控制以及控制算法等。
通过编程实现对单片机的控制,使小车能够根据红外线传感器的信号准确跟随线路,并在遇到障碍物时能够自动避开。
4. 实习过程在实习过程中,首先进行了电子元器件的识别和学习,掌握了各种传感器、电机等元器件的工作原理和应用方法。
然后,根据设计思路,进行了硬件电路的搭建和调试,包括单片机、传感器、电机驱动模块等。
最后,进行了软件编程调试,使小车能够实现智能寻迹和避障功能。
三、实习成果与总结通过本次实习,我成功设计和制作了一款智能寻迹小车,掌握了电子元器件的识别、传感器、电机在控制作用下的具体机械构架,以及单片机控制原理等知识。
在实习过程中,我学会了如何将理论知识运用到实际操作中,提高了自己在电子技术、机器人技术等方面的实际操作能力。
循迹小车实验报告
循迹小车实验报告循迹小车实验报告引言:循迹小车是一种基于光电传感器的智能机器人,能够根据环境中的光线变化来调整行进方向。
本实验旨在通过搭建一个循迹小车模型,探索其原理和应用。
一、实验材料和方法本次实验所需材料包括Arduino开发板、直流电机、光电传感器、电池组等。
首先,我们将Arduino开发板与直流电机、光电传感器等器件进行连接,确保电路正常。
然后,将循迹小车放置在一个光线变化较大的环境中,例如黑白相间的地面。
最后,通过编写程序,使循迹小车能够根据光电传感器的信号来判断行进方向,并实现自动循迹。
二、实验过程和结果在实验过程中,我们首先对光电传感器进行了校准,以确保其能够准确地感知光线的变化。
然后,我们编写了一段简单的程序,使循迹小车能够根据光电传感器的信号来判断行进方向。
当光线较亮时,循迹小车向左转;当光线较暗时,循迹小车向右转。
通过不断调试程序,我们成功实现了循迹小车的自动循迹功能。
在实验过程中,我们还发现了一些有趣的现象。
例如,当循迹小车行进到黑白相间的地面上时,光电传感器能够准确地感知到黑白色块的变化,并根据信号进行相应的调整。
这说明循迹小车的循迹原理基于光线的反射和吸收,具有一定的环境适应性。
三、实验结果分析通过本次实验,我们深入了解了循迹小车的原理和应用。
循迹小车通过光电传感器感知环境中的光线变化,从而判断行进方向,实现自动循迹。
这种智能机器人在工业生产、仓储物流等领域具有广泛的应用前景。
然而,循迹小车也存在一些局限性。
首先,其循迹能力受到环境光线的影响较大,当环境光线较弱或过强时,循迹小车的准确性会受到一定的影响。
其次,循迹小车只能在特定的地面上进行循迹,对于其他类型的地面可能无法正常运行。
因此,在实际应用中,需要根据具体情况进行合理选择和调整。
四、实验总结通过本次实验,我们对循迹小车的原理和应用有了更深入的了解。
循迹小车作为一种基于光电传感器的智能机器人,具有自动循迹的功能,可以在工业生产、仓储物流等领域发挥重要作用。
智能循迹小车实验报告
智能循迹小车实验报告一、实验目的本次实验旨在设计并实现一款能够自主循迹的智能小车,通过传感器检测路径信息,控制小车的运动方向,使其能够沿着预定的轨迹行驶。
通过本次实验,深入了解自动控制、传感器技术和单片机编程等方面的知识,提高实际动手能力和问题解决能力。
二、实验原理1、传感器检测本实验采用红外传感器来检测小车下方的黑线轨迹。
红外传感器由红外发射管和接收管组成,当发射管发出的红外线照射到黑色轨迹时,反射光较弱,接收管接收到的信号较弱;当照射到白色区域时,反射光较强,接收管接收到的信号较强。
通过比较接收管的信号强度,即可判断小车是否偏离轨迹。
2、控制算法根据传感器检测到的轨迹信息,采用 PID 控制算法(比例积分微分控制算法)来计算小车的转向控制量。
PID 算法通过对误差(即小车偏离轨迹的程度)进行比例、积分和微分运算,得到一个合适的控制输出,使小车能够快速、准确地回到轨迹上。
3、电机驱动小车的动力由直流电机提供,通过电机驱动芯片(如 L298N)来控制电机的正反转和转速。
根据控制算法计算出的转向控制量,调整左右电机的转速,实现小车的转向和前进。
三、实验器材1、硬件部分单片机开发板(如 STM32 系列)红外传感器模块直流电机及驱动模块电源模块小车底盘及车轮杜邦线、面包板等2、软件部分Keil 等单片机编程软件串口调试助手四、实验步骤1、硬件搭建将红外传感器模块安装在小车底盘下方,使其能够检测到黑线轨迹。
将直流电机与驱动模块连接,并安装在小车底盘上。
将单片机开发板、传感器模块、驱动模块和电源模块通过杜邦线连接起来,搭建好实验电路。
2、软件编程使用单片机编程软件,编写传感器检测程序、控制算法程序和电机驱动程序。
通过串口调试助手,将编写好的程序下载到单片机开发板中。
3、调试与优化启动小车,观察其在轨迹上的行驶情况。
根据小车的实际行驶情况,调整 PID 控制算法的参数,优化小车的循迹性能。
不断测试和改进,直到小车能够稳定、准确地沿着轨迹行驶。
智能循迹小车实验报告分解
摘要本设计主要有单片机模块、传感器模块、电机驱动模块以及电源模块组成,小车具有自主寻迹的功能。
本次设计采用STC公司的89C52单片机作为控制芯片,传感器模块采用红外光电对管和比较器实现,能够轻松识别黑白两色路面,同时具有抗环境干扰能力,电机模块由L298N芯片和两个直流电机构成,组成了智能车的动力系统,电源采用7.2V的直流电池,经过系统组装,从而实现了小车的自动循迹的功能。
关键词智能小车 STC89C52单片机 L298N 红外光对管1绪论随着科学技术的发展,机器人的设计越来越精细,功能越来越复杂,智能小车作为其的一个分支,也在不断发展。
在近几年的电子设计大赛中,关于小车的智能化功能的实现也多种多样,因此本次我们也打算设计一智能小车,使其能自动识别预制道路,按照设计的道路自行寻迹。
2设计任务与要求采用MCS-51单片机为控制芯片(也可采用其他的芯片),红外对管为识别器件、步进电机为行进部件,设计出一个能够识别以白底为道路色,宽度10mm 左右的黑色胶带制作的不规则的封闭曲线为引导轨迹并能沿该轨迹行进的智能寻迹机器小车。
3方案设计与方案选择3.1硬件部分可分为四个模块:单片机模块、传感器模块、电机驱动模块以及电源模块。
3.1.1单片机模块为小车运行的核心部件,起控制小车的所有运行状态的作用。
由于以前自己开发板使用的是ATMEL公司的STC89C52,所以让然选择这个芯片作为控制核心部件。
STC89C52是一种低损耗、高性能、CMOS八位微处理器,片内有4k字节的在线可重复编程、快速擦除快速写入程序的存储器,能重复写入/擦除1000次,数据保存时间为十年。
其程序和数据存储是分开的。
3.1.2传感器模块方案一:使用光敏电阻组成光敏探测器采集路面信息。
阻值经过比较器输出高低电平进行分析,但是光照影响很大,不能稳定工作。
方案二:使用光电传感器来采集路面信息。
使用红外光电对管,其结构简明,实现方便,成本低廉,没有复杂的图像处理工作,因此反应灵敏,响应时间少。
智能寻迹避障小车总结范文汇报
智能寻迹避障小车总结范文汇报
硬件构成
循迹模块循迹模块好比小车的眼睛,在这里我使用了四路红外对管,
利用它们在白色和黑色下产生不同电平的特性,给单片机输入信号,单片
机经过分析后给驱动模块输出信号,从而控制小车的运动。
电机驱动模块
采用L298N芯片控制小车的“前进”、“后退”、“左转”、“右转”等基本动作,通过输入PWM波控制小车的车速。
L298N电路原理图
避障模块采用三只探测距离较远的红外探测器置于小车前端,有障碍
物时输出低电平否则输出高电平。
无线控制采用315M/433M无线接收模块(带解码)(图一)和无线发射遥
控器(图二)实现远程操控小车启动、停止的功能,其操作简单也较稳定。
图一
图二
报警模块利用单片机电路板上自带的蜂鸣器作为报警模块。
软件设计软件整体设计流程N
开始
无线启动Y检测障碍物NY无线停车N循迹N是否到停车线Y刹停
Y
避障
循迹功能设计轨道红外对管12341某某101——210001——301001——4某某011——方向左转右转左转右转刹车直行
避障功能设计避障示意图:右转后直行
左转并前进
障碍物
直行
右转并前进
遇到障碍物
系统设计调试调试过程中遇到了诸多问题,不过最终都解决了,小车预期的基本功能都已实现,但软件优化还有待提高。
小车制作总结
安装设计
调试
了解查资料
成果展示
谢谢观看。
最新智能循迹小车实训报告
最新智能循迹小车实训报告
本报告详细介绍了一款最新的智能循迹小车,以及开发过程中的重点工作和结果。
该智能循迹小车在物理结构、电气控制、及人工智能三个方面就具有较高水平的集成性能和功能性能。
1、物理结构。
循迹小车的整体物理结构采用双桨式结构,结构紧凑,重量轻,机身尺寸小,可以根据需要进行调节。
、内部由两个舵机控制重心位置,以保证有利于车身机动性的布局。
机身还配备了运动控制芯片、感知模块、无线传输模块、直流电机驱动系统等组成部分。
2、电气控制。
主要包括电机驱动系统、无线通信模块、ADC/DAC模块、单片机系统、传感器模块等;其中最重要的是控制系统,以便根据用户的要求实现相应的控制。
主要包括Xilinx FPGA平台、定时器模块、PWM控制模块及延时模块等。
3、人工智能。
采用机器学习和自我改进的人工智能技术,具有高效的算法,可以从环境中自动收集信息,并在环境发生改变时快速响应应对。
人工智能技术实现了比传统系统更有效率、更完善的控制模型,实现自主循迹、避障等功能,提供完整的信息结构,以及更高性能的机电一体化数字控制。
本次实训完成了一款智能循迹小车的开发,实现了高效、低成本的机电一体化控制,具有良好的环境适应能力和自主动作能力。
实训采用了多个组件,经过系统集成进行了实际测试,结果表明智能循迹小车具有良好的性能和稳定性。
综上所述,本报告详细介绍了新一代智能循迹小车开发实训的过程,在物理结构、电气控制、人工智能三个方面对其进行了设计、组装和实验,验证了其良好的环境适应能力与自主动作能力。
本实训还为今后改进智能循迹小车提供了参考意见,拓展了研究领域。
``。
寻迹小车实验报告模板
寻迹小车实验报告模板1. 引言寻迹小车是一种利用红外线传感器来检测地面上黑线的位置,从而实现沿着黑线行驶的智能小车。
这种小车在工业自动化、机器人等领域有着广泛的应用。
本实验旨在通过组装寻迹小车并编写控制程序,探究寻迹原理并验证其功能。
本报告将详细介绍实验所用材料与方法、实验过程与结果分析。
2. 材料与方法2.1 材料- 寻迹小车套装:包括车身、电机、红外线传感器等部分- Arduino开发板及USB数据线- 计算机2.2 方法1. 将寻迹小车按照说明书进行组装,并确保连接正常。
2. 将Arduino开发板连接至计算机,并打开Arduino IDE。
3. 编写控制程序,包括红外线传感器的数据读取与小车运动控制部分。
4. 将程序烧录至Arduino开发板。
5. 放置寻迹小车于地面上的黑线上,并观察小车的运动情况。
3. 实验过程与结果分析3.1 实验过程按照上述方法进行实验,并记录实验过程中的关键步骤及观察结果。
3.2 结果分析分析实验结果,包括小车是否能在黑线上准确行驶、行驶速度是否稳定、控制程序的有效性等方面进行分析,并提出可能的问题与改进方案。
4. 结论通过本次实验,我们成功组装了寻迹小车并编写控制程序,实现了小车沿着黑线行驶的功能。
在实验过程中,我们观察到小车能够准确地跟踪黑线并保持稳定的行驶速度。
然而,在一些曲线等复杂路径上,小车可能会出现偏离线路的情况,需要进一步改进控制程序。
5. 参考文献[1] 张三,李四. 寻迹小车实验方法与分析. 机器人科学与技术学报,2020,(2):56-60.附录:实验代码cinclude <IRremote.h>define IR_LEFT_PIN 4define IR_MIDDLE_PIN 3define IR_RIGHT_PIN 2define MOTOR_LEFT_PIN1 5define MOTOR_LEFT_PIN2 6define MOTOR_RIGHT_PIN1 10define MOTOR_RIGHT_PIN2 11IRrecv irrecv(IR_MIDDLE_PIN);decode_results res;void setup() {pinMode(IR_LEFT_PIN, INPUT);pinMode(IR_MIDDLE_PIN, INPUT);pinMode(IR_RIGHT_PIN, INPUT);pinMode(MOTOR_LEFT_PIN1, OUTPUT); pinMode(MOTOR_LEFT_PIN2, OUTPUT); pinMode(MOTOR_RIGHT_PIN1, OUTPUT); pinMode(MOTOR_RIGHT_PIN2, OUTPUT); irrecv.enableIRIn(); 启用红外线接收器}void loop() {if (irrecv.decode(&res)) {switch (res.value) {case 0xFFFFFFFF: 红外线无信号时停止小车运动stop();break;case 0xFFE01F: 小车前进forward();break;case 0xFF609F: 小车后退backward();break;case 0xFFA857: 小车左转turnLeft();break;case 0xFF9867: 小车右转turnRight();break;}irrecv.resume(); 继续接收红外线信号}}void forward() {digitalWrite(MOTOR_LEFT_PIN1, HIGH); digitalWrite(MOTOR_LEFT_PIN2, LOW); digitalWrite(MOTOR_RIGHT_PIN1, HIGH); digitalWrite(MOTOR_RIGHT_PIN2, LOW); }void backward() {digitalWrite(MOTOR_LEFT_PIN1, LOW); digitalWrite(MOTOR_LEFT_PIN2, HIGH); digitalWrite(MOTOR_RIGHT_PIN1, LOW); digitalWrite(MOTOR_RIGHT_PIN2, HIGH); }void turnLeft() {digitalWrite(MOTOR_LEFT_PIN1, HIGH); digitalWrite(MOTOR_LEFT_PIN2, LOW); digitalWrite(MOTOR_RIGHT_PIN1, LOW); digitalWrite(MOTOR_RIGHT_PIN2, HIGH); }void turnRight() {digitalWrite(MOTOR_LEFT_PIN1, LOW); digitalWrite(MOTOR_LEFT_PIN2, HIGH); digitalWrite(MOTOR_RIGHT_PIN1, HIGH); di。
智能化循迹小车实训报告
智能循迹小车实训报告系别班级:城信系16车辆一班姓名:叶舒凡学号:20163010314随着素质教育的越来越被重视,我们学校将制作电子智能作品作为我们电子技术根底科目的期末考试内容。
学生通过手动实践能提高解决实际问题的能力,我觉得智能小车是一个不错的硬件平台,它生动有趣而且涉及机械构造、电子根底、传感器原理、自动控制等等,于是我选择了智能循迹小车。
下面对智能循迹小车做实训报告。
1、元件清单2、电路原理图工作原理简介:LM393随时比拟着两路光敏电阻的大小,当出现不平衡时〔例如一侧压黑色跑道〕立即控制一侧电机停转,另一侧电机加速旋转,从而使小车修正方向,恢复到正确的方向上,整个过程是一个闭环控制,因此能快速灵敏地控制。
3、安装说明:本着从简到繁的原那么,我们首先来制作一款由数字电路来控制的智能循迹小车,在组装过程中我们不但能熟悉机械原理还能逐步学习到:光电传感器、电压比拟器、电机驱动电路等相关电子知识。
光敏电阻器件这就是光敏电阻,它能够检测外界光线的强弱,外界光线越强光敏电阻的阻值越小,外界光线越弱阻值越大,当红色LED 光投射到白色区域和黑色跑道时因为反光率的不同,光敏电阻的阻值会发生明显区别,便于后续电路进展控制。
LM393比拟器集成电路LM393是双路电压比拟器集成电路,由两个独立的精细电压比拟器构成。
它的作用是比拟两个输入电压,根据两路输入电压的上下改变输出电压的上下。
输出有两种状态:接近开路或者下拉接近低电平,LM393采用集电极开路输出,所以必须加上拉电阻才能输出高电平。
带减速齿轮的直流电机直流电机驱动小车的话必须要减速,否那么转速过高的话小车跑得太快根本也来不及控制,而且未经减速的话转矩太小甚至跑不起来,我们专门定做的这种电机已经集成了减速齿轮大大降低了制作难度非常适合我们使用。
LM393随时比拟着两路光敏电阻的大小,当出现不平衡时〔例如一侧压黑色跑道〕立即控制一侧电机停转,另一侧电机加速旋转,从而使小车修正方向,恢复到正确的方向上,整个过程是一个闭环控制,因此能快速灵敏地控制。
智能迷宫小车报告
长通杯电子竞赛报告目录目录............................................................................................................................................. - 0 - 摘要.............................................................................................................................................. - 1 - 一、系统方案 .................................................................................................................................. - 2 -1.方案论证与实现方法 ............................................................................................... - 2 -1.1.1控制器选择 ............................................................................................................ - 2 -1.1.2电动车车体的选择 ................................................................................................ - 2 -1.1.3电动车的动力方案选择 ........................................................................................ - 2 -1.1.4电机驱动电路方案选择 ........................................................................................ - 2 -1.1.5终点黑线及边界的检测方案选择 ........................................................................ - 2 -1.1.6显示器的选择方案 ................................................................................................ - 2 -2.系统设计与结构框图 ............................................................................................... - 3 -二、理论分析与计算 ...................................................................................................................... - 3 -三、功能概述及方案设计 .............................................................................................................. - 4 -1.功能概述 ................................................................................................................... - 4 - 2.具体方案设计 ........................................................................................................... - 4 -2.2.1.STC12C5404AD增强型单片机系统................................................................. - 4 -2.2.2.电机驱动及电源电路 ......................................................................................... - 4 -2.2.3.边界路口及黑线检测电路 ................................................................................. - 5 -2.2.4.液晶显示电路 ..................................................................................................... - 6 -四、程序流程与程序设计 .............................................................................................................. - 7 -1. 程序流程图 ................................................................................................................ - 7 -五、测试结果分析 .......................................................................................................................... - 8 -六、综合总结 .................................................................................................................................. - 8 -1. 系统资源使用情况 .................................................................................................... - 8 -2. 小车优缺点分析 ........................................................................................................ - 9 -4.2.1.优点 ..................................................................................................................... - 9 -4.2.2.缺点 ..................................................................................................................... - 9 -3.结束语 ....................................................................................................................... - 9 -电子信息工程摘要本系统采用STC公司12C5404AD芯片为核心进行设计,并配合L293D驱动芯片,合理利用了该芯片上丰富的资源,采用红外对管及光电反射开关作为传感器,在LCM128645ZK上对获取的信息进行实时显示。
循迹小车报告精选全文完整版
可编辑修改精选全文完整版创新制作循迹小车制作报告班级:学号:姓名:一、设计方案路面检测模块电路检测路面信息,区分黑色与白面,并形成相对应的高电平与低电平提供给单片机;单片机对路面循迹模块提供的高低电平进行分析,并形成相应的对策(直行、左转、右转和停止等),并将其转化成对应的电压输出给电机驱动模块;电机驱动模块根据单片机提供的电压信号驱动对应的电机,得到与对策相同的执行动作;电源模块电路为三个模块提供所需要的电。
电路框图如下图所示:电路框图二、路面检测模块工作原理一对光电开光的发射管不停的发射红外光,经过路面发射回来的被接受管接收到。
因为白色路面和黑线对光的反射不同,所以正对白色路面的光电对管的接收管接收到更多的红外光,而正对黑线的光电对管的接收管收到较少的红外光。
经过光电开关的接收电路将接收到红外光的多少转化为正相关的电流大小,并进一步转化成接收电路的输出电压(A点电压)的较小值和较大值。
输出电压的较小值和较大值进一步与一个居中的基准电压分别进行比较,对应比较器的输出端(C点)分别为高电平还是低电平,并进一步输出给单片机,同时对应指示发光管的不亮与亮。
路面循迹模块电路如下图所示:D1路面循迹模块电路三、单片机最小系统单片机最小系统包括了时钟电路和复位电路。
时钟电路为单片机工作提供基本时钟,复位电路用于将单片机内部各电路的状态恢复到初始值。
单片机是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号下严格地按时序进行工作。
时钟电路用于产生单片机工作所需要的时钟信号。
时钟信号的产生是在MCS-51系列单片机内部有一个高增益反相放大器,其输入端引脚为XTAL1,其输出端引脚为XTAL2。
只要在XTAL1和XTAL2之间跨接晶体振荡器和微调电容,就可以构成一个稳定的自己振荡器。
复位电路由一个按键、电解电容和电阻组成,它是使CPU 和系统中的其他功能部件都恢复到一个确定的初始状态,并从这个状态开始工作。
智能循迹小车报告.doc
智能循迹小车报告.doc一、前言智能循迹小车是一款基于机器人技术的智能装备,主要实现对机器人的智能控制和追踪操作,适用于各种场景中的巡航及运输。
智能循迹小车在各类工业现场、家庭生活中得到广泛应用。
本报告将对智能循迹小车的相关技术、应用及未来发展进行分析与总结。
二、技术原理智能循迹小车的核心技术是基于计算机视觉和机器人导航领域中的视觉跟踪技术,实现对目标的追踪和路径规划。
该技术主要包括如下步骤:1. 传感器采集数据:智能循迹小车配备了多种传感器,如激光雷达、摄像头、红外线传感器等,用于采集目标物体的信息;2. 数据处理:接收传感器采集的数据后,智能循迹小车通过算法处理,将数据转化成可供计算机识别的数字信号;3. 目标检测:将数字信号传入计算机,通过人工智能、机器学习等技术实现对目标的识别、分类和跟踪;4. 路径规划:根据目标的位置和运动轨迹,智能循迹小车通过算法实现路径规划和自主导航,避开障碍物,寻找最短路径;5. 控制执行:根据路径规划生成的控制信号,智能循迹小车对轮子和电机执行精确的控制,实现移动和自动导航。
三、应用现状智能循迹小车在生产、物流、安防、家庭生活等众多领域得到广泛应用,以下列举几种应用场景。
1. 工业自动化:在工业生产自动化方面,智能循迹小车可以用于运输原材料和成品、仓库货物的自动化管理、装配线物料转移等。
机器人可以根据目标位置和运动方向,自动运行到指定位置,精准地完成操作任务。
2. 物流配送:智能循迹小车可以用于大型物流中心的快递配送、医院内的物资搬运等场景。
机器人通过自主路径规划和导航,可以自动避开障碍物,并将货物准确地送到目的地,提高了生产效率和准确性。
3. 家庭服务:智能循迹小车还可应用于家庭服务领域,如智能扫地机器人、智能花盆机器人等。
机器人自动巡航,清洁地面,喷水浇花,实现人机交互。
4. 安防监控:在安防监控领域,智能循迹小车可以应用于产品物流追踪、边境巡逻等领域。
机器人对区域进行自动巡航,通过多种传感器检测目标,将异常情况反馈给监控中心,实现精确的实时监控。
(完整word版)智能循迹避障小车报告(word文档良心出品)
摘要:本智能识别小车以STC89C52单片机为控制芯片,以直流电机,光电传感器,超声波传感器,电源电路以及其他电路构成。
系统由STC89C52通过IO口,通过红外传感器检测黑线,利用单片机输出PWM脉冲控制直流电机的转速和转向,循迹由TCRT5000型光电对管完成。
一、系统设计1、小车循迹,避障原理这里的循进是指小车在白色地板上寻黑线行走,通常采取的方法是红外探测法。
红外探测法,即利用红外a在不同颜色的物体表面具有不同的反射性质的特点,在小车行驶过程中不断地向地面发射红外光,当红外光遇到白色地板时,发生漫反射反射光被装在小车上的按收管按收;如果遇到黑线则红外光被吸收,小车上的接收管接收不到红外光,单片机就是否收到反射回来的红外光为依据来确定黑线的位置和小车的行走路线。
红外探测器探测距离有限一殷最大不应超过3cm。
而避障则是通过超声波模块不断向前方发射超声波信号,通过接收反射回来的超声波信号,从而实现的避障。
当前方有障碍物时,超声波会向单片机串口发送一串数字,这些数字就是当前小车距离障碍物得距离。
当串口接收到信号时,会引发串口中断,单片机通过读取距离值,并且对此数值进行分析是不是距离小车很近,是的话就进行转向;否则继续循迹。
当小车遇到第一个障碍后,就计数一次,这样当遇到第二个障碍物时,小车就可以以不同的形式躲避障碍物了。
2、选用方案(1):采用成品的小车地盘,通过改装来完成任务;(2):采用STC89C52单片机作为主控制器;(3):采用7V电源经7805稳压芯片降压后为其他芯片及器件供电。
(4):采用TCRT5000型红外传感器进行循迹;(5):L298N作为直流电机的驱动芯片;(6):通过对L298N使能端输入PWM来控制电机转速和转向;3、系统机构框图如下所示:超声波模块主控制芯片STC89C52红外传感器直流电机L298N稳压电源模块电压比较器二、硬件实现及单元电路设计与分析1、微控制模块设计与分析微控制器模块我们采用STC89C52。
智能寻迹小车实训报告[大全]
智能寻迹小车实训报告[大全]第一篇:智能寻迹小车实训报告[大全]目录1、引言1.1智能小车的设计意义和作用 (3)2、系统总体设计 (4)3、硬件设计3.1循线模块 (5)4、软件设计4.1软件调试平台.............................................7 4.2系统软件流程.............................................8 4.3系统软件程序 (9)5、调试及性能分析 (12)6、设计总结 (13)7、作品实物图 (14)8、参考文献 (15)1、引言1.1智能小车的设计意义和作用智能小车是移动式机器人的重要组成部分,介绍一种基于AT89S52单片机的智能小车。
通过不断检测各个模块传感器的输入信号,根据内置的程序分别控制小车左右两个直流电机运转,实现小车自动识别路线,寻找光源,判断并避开障碍物,检测道路上的铁片、发出声光信息并计数显示,智能停车等功能。
作为20世纪自动化领域的重大成就,机器人已经和人类社会的生产、生活密不可分。
因此为了使智能小车工作在最佳状态,进一步研究及完善其速度和方向的控制是非常有必要的。
智能小车要实现自动寻迹功能和避障功能就必须要感知导引线和障碍物,感知导引线相当给机器人一个视觉功能。
避障控制系统是基于自动导引小车(avg—auto-guide vehicle)系统,基于它的智能小车实现自动识别路线,判断并自动避开障碍,选择正确的行进路线。
使用传感器感知路线和障碍并作出判断和相应的执行动作。
该智能小车可以作为机器人的典型代表.它可以分为三大组成部分:传感器检测部分,,执行部分,cpu。
机器人要实现自动避障功能,还可以扩展循迹等功能,感知导引线和障碍物。
可以实现小车自动识别路线,选择正确的行进路线,并检测到障碍物自动躲避。
考虑使用价廉物美的红外反射式传感器来充当。
智能小车的执行部分,是由直流电机来充当的,主要控制小车的行进方向和速度。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
题目名称:迷宫寻迹机器人(E题)参赛队员:************************摘要:本寻迹小车选用8位89C52单片机为控制器,通过6个红外光电传感器TCRT5000对信号进行采集,采集到的信号经比较器LM393处理后传给89C52单片机,经单片机处理后,发出控制命令给L298N,驱动2台直流电动机进行相应的动作。
该小车能够识别出黑色轨迹并能沿着黑色轨迹前进直到终点,并能显示出运行时间。
1方案论证与比较1.1 传感器的选择与比较方案一采用摄像头,然后用CCD处理技术,对采集的信号进行分析。
方案二使用光敏传感器,能够采集回来黑与白两种信号,然后进行处理与分析。
由于采用摄像头进行CCD处理所用的硬件搭接较为繁琐,并且处理起来还比较麻烦,而光敏传感器TCRT5000可以虽然智能识别黑与白两种颜色由于现场条件,并不能对其造成干扰,而且其反应速度快,响应时间短,故此,我们选用光敏传感器TCRT5000。
1.2 车体的选择与比较方案一采用4轮小车,前轮由舵机控制转弯,后轮由动力电机控制前进与后退。
方案二采用三轮小车,前面两轮由两个电机分别控制,用其速度差来实现转弯与调整,后前轮为万向轮,用来维持小车的平衡由于采用4轮车,小车在转弯时会产生转弯半径,会偏离轨迹,不能按照黑色轨迹前进,而转弯半径无法缩小到满意的程度,由于三轮小车用两个电机来控制两个轮子,故很容易来实现转弯与调整,是理想的车体模型。
1.3前进路径与返回路径的最优选择由于小车需要按照黑色轨迹寻到终点,并且按最优路径返回,故小车应能识别迷宫的路况,普通寻迹小车智能按照黑色轨迹走,但不能识别路况,这样小车寻到终点的效率很低,又不能按照最优路径返回。
考虑到以上情况,我们给小车加上了识别路口程序,并且让小车按照右手原则前进,在每个路口处让小车记录出所走过的路况,并且记忆,以便于在返航时调用记录信息,使小车顺利返回。
1.4传感器个数的比较与选择方案一总共5个传感器,两个传感器用来检测小车是否偏离轨迹,另外三个传感器用来检测小车是否遇到路口(前方.左方及右方各一个),由前方传感器来检测终点。
(如图1.1)方案二总共6个传感器,其中两个传感器用来检测小车是否偏离轨迹,另外三个传感器用来检测小车是否遇到路口(前方.左方及右方各一个),还有一个传感器配合前方的传感器来检测终点。
(如图1.2)图1.1五个传感器示意图图1.2六个传感器示意图图1.3八个传感器示意图方案三总共8个传感器,两个传感器用来检测小车是否偏离轨迹,另外五个传感器用来检测小车是否遇到路口(前方一个,左方及右方各两个),还有一个传感器配合前方的传感器来检测终点。
检测路口左右方向时用2个传感器,是以使能减少误判,让小车更好的寻迹。
(如图1.3)方案一比方案二多一个传感器,是为了更好的检测终点,方案一检测终点的方法是前当方传感器检测到死胡同时在让其延时继续前进如图1.4,当再检测到黑色信号时即使终点,但是实际运作时发现由于2cm对于运动的小车来说过小,而且即便检测到终点在返回时,会再次遇到黑色信号,和死胡同标志容易产生混淆,不易于小车更好的判别路口,而当有第6个传感器辅助前方传感器检测到终点时,则能避免以上问题,当检测到死胡同标志时,只要再继续往前走,辅助检测传感器便会检测到白色信号小车就会认为到达终点如图1.5,避免了小车混淆死胡同与终点标志,同时让终点标志更好的被识别。
而方案三,将检测左右路口的传感器增加至每侧2个,以防出现如图1.6所示的误判,而图1.7的方案三只要两个传感器不全进入黑线就不会认为有路口,能大大的避免误判的几率。
但是后来在软件编写和实际测试的时候,发现了用软件可以进行防误判,而由于这种防误判方法的引入,是传感器的个数从8个减少到了6个,其具体如何防误判将在后面说明。
图1.4 一个传感器检测终点示意图图1.5 两个传感器检测终点示意图图1.6 路口误判示意图图1.7 路口防误判示意图1.5传感器位置摆放的比较与选择1.为了让小车在检测到路口时就进行转弯,在转完后其中线仍与轨迹中线重合,避免了其每次转弯后都进行调整,我们经测量发现小车轮距为10cm,而轨迹宽度为2cm,故检测路口的传感器与轮子轴承间的距离D=(10-2)/2=4cm,如图1.8所示。
2.为了让小车刚刚检测偏离轨迹就做出调整,同时又给小车在走直线时留有余量,经过不断实践测试,认为检测偏离轨迹的两个传感器间距以2.1cm为最佳。
如图1.9所示。
图1.8 检测转弯路口传感器位置的计算图1.9检测偏离轨迹的传感器示意图3.为了两检测终点的传感器能够准确快速的检测并识别出终点,设定两传感器间距离为2.1cm。
图1.10 两检测终点传感器间距4.总体摆放如下图1.11,A=1.1cm,B=3.2cm图1.11总体摆放图2 硬件系统设计2.1 总体设计有光敏传感器进行信号采集,经电压比较器LM393处理后直接传给AT89C52,单片机对信号按照预定的程序进行处理,将处理的结果通过IO口传给74LS08,通过与PWM波合成后给L298N(直流电机驱动芯片)信号,通过L298N进行控制小车两轮子,以实现左右微调,左右转弯,前进与原地旋转等动作。
小车每到路口都进行相关的记忆处理,以便最优返回。
图2.1 总体设计框架图2.2单元电路设计2.2.1传感器单元电路的设计图2.2 传感器单元电路当传感器进入黑色轨迹中时,由发射管发射的不可见光被吸收,不能被接收器接收到,故接收一侧电路不导通,LM393的同向输入为高,输入比较器输出为高,其输出高电压为5V,低电压为0V,故可以直接传给单片机。
而电压比较器的输出端所接的LED能够实时的显示传感器的工作状况。
本题目要求小车能够不偏离中心轨迹,由于轨迹交窄小车相对运动速度快,故要求传感器单元必须较为灵敏,相应时间短,反应速度快。
我们采用的LM393电压比较器,其工作电源电压范围宽,单电源、双电源均可工作,消耗电流小,输入失调电压小,共模输入电压范围宽,反应时间快,其内部结构图如图 2.3所示。
图2.3 LM393内部结构图2.2.2电机驱动单元电路的设计图2.4 电机驱动电路图由于要对电机实行加速减速刹车的控制,故采用由L298N和74LS08构成的驱动电路,由1.0和1.1口负责控制1号电机的前进与后退,而与他们一起走与门74LS08的1.4口负责输出PWM波,由PWM波负责控制小车的减速与加速以及制动的控制。
同时与门也起到了扩大单片机输出电流的作用,由于L298N 需要的输入电流AT89C52无法驱动,与门在此起到一定的上拉作用。
因为要用单片机对电动机进行四象限的控制,由于控制象限的复杂以及驱动电机功率的问题,这里我们需要采用电动机驱动芯片来实现,我们采用的是L298N这款电机驱动芯片,该芯片具备控制简单,反应快,输出功率大,支持外接电机工作电源等一系列优点。
其结构图如图2.5所示。
图2.5 L298N内部结构图2.2.3电源模块单元电路的设计图2.6 电源模块单元电路图由于整个控制板都需要5V电压,考虑到电池随着使用时间的增强,电压会有所下降,故我们选用直流稳压电源9V进行供电,由于多方同时分流,有可能造成电量不足,为了保持电压能够稳定在5V,故选用L7805进行稳压。
在其输出输入端口各并联一个电容,以起到保护芯片的作用。
其内部结构图如2.7所示。
图2.7 L7805内部结构图2.2.4液晶显示单元电路设计图2.8液晶显示单元电路图采用1602液晶进行时间和方向的显示,我们采用单独的AT89S52来控制液晶,减少其对小车控制的干扰,然后由2根数据线让其与主控AT89S52进行通信,以此来显示小车运行的时间和方向。
图2.8中R38用来控制液晶字幕的清晰度,R37用来控制液晶屏幕的对比度。
3软件系统设计3.1 总体设计小车自上电时程序开始运行,我们依着右手原则为小车寻迹方法,右为先。
自上电后小车进入初始化阶段之后转入主函数,我们将小车能遇到的各种情况进行一一排列出来,这样无论传感器反馈回来什么样的信号都有与之对应的命令,分为以下10种情况:左微调,右微调,前进,左转,右转,T型,左T,右T,十字路口,死胡同。
其流程图如图3.1所示。
3.2 各子模块的设计3.2.1 转弯模块的设计为了让小车能够顺利并且及时的停止转弯,我们将其转弯的停止标志设为当检测前方是否有路的传感器遇到黑色轨迹,即表示其已完成转弯,这样避免了小车转弯过大或者过小的问题。
3.2.2 终点识别模块的设计为了让小车能够准确的识别终点标志,采用2个传感器来检测终点标志,当且仅当前后检测终点的传感器同时检测到终点信号时,才认定到达终点,即当前后前后检测终点的传感器3.2.3 防误判模块的设计列出了小车在行走时可能碰到的各种误判情况,对其一一分析后判别出应是那种路况,将其对应情况列出,并给出小车应该正确运行的指令。
4附加功能增加了小车转弯的转向灯模拟功能,转向灯能随小车的转向实时的闪烁起来,以此一次来表示小车的运转状态,还在车尾处额外增加了两组led小灯,以此表示小车现在处于附录1 主控程序清单#include <reg52.h>#include <stdio.h>#include <intrins.h>/////////////////////////////////////////////////////////////////char pro_left,pro_right,i,j; //左右占空比标志extern int a[24]={3,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};extern int n=2,logo=0;//////////////////////////////////////////////////////////////////sbit left1=P1^0; //左电机正反转sbit left2=P1^1;sbit right1=P1^2; //右电机正反转sbit right2=P1^3;sbit en1=P1^4; //输出PWM1波控制左电机sbit en2=P1^5; //输出PWM2波控制左电机sbit p16=P1^6; //sbit p17=P1^7;//////////////////////////////////////////////////////////////////sbit p23=P2^3;sbit p24=P2^4;sbit p25=P2^5;sbit p26=P2^6;/////////////////////////////////////////////////////////////////sbit left_turn=P0^0; //左侧传感器(识别路口)sbit left=P0^1; //微调左位置sbit midb=P0^2; //后中间传感器(识别路口)sbit midf=P0^3; //前中间(识别路口)sbit right=P0^4; //微调右位置sbit right_turn=P0^5; //右侧传感器(识别路口)////////////////////////////////////////////////////////////////////sbit p20=P2^2; //左拐sbit p21=P2^1; //直走sbit p22=P2^0; //右拐void first_straight(); //启动直走void straight(); //直走void sd_straight(); //左岔直走void stop(); //终点稍停void end(); //回到起点停车void wleft(); //左微调void wright(); //右微调void ft_left(); //左转90 由黑到白void sd_left(); //左转90 由白到黑void ft_right(); //右转90 由黑到白void sd_right(); //右转90 由白到黑void ft_180rt(); //左转180 由黑到白void sd_180rt(); //左转180 由白到黑//////////////////////////////////////////////////////////////////void infrared(); //初次循迹void comeback(); //返航void memory(int x); //记忆void delay(int z); //延时1ms//////////////////////////////////////////////////////////////////void delay(int z) //延时z*1ms {char k;while(z--){for(k=0;k<121;k++);} //延时1ms }//////////////////////////////////////////////////////////////////void first_straight() //启动走直线{p20=1;p21=0;p22=1;pro_left=85;pro_right=85;left1=1;left2=0;right1=1;right2=0;delay(5);}//////////////////////////////////////////////////////////////////void straight() //走直线函数{p20=1;p21=0;p22=1;pro_left=80;pro_right=80;left1=1;left2=0;right1=1;right2=0;}//////////////////////////////////////////////////////////////////void sd_straight() //左岔走直线函数{p20=1;p21=0;p22=1;straight();if((left_turn==1))//&&(right_turn==0)&&(midf==1) {sd_straight();}else{straight();}}//////////////////////////////////////////////////////////////////void wleft() //微调左转函数{pro_left=0;pro_right=85;left1=0;left2=0;right1=1;right2=0;}//////////////////////////////////////////////////////////////////void wright() //微调右转函数{pro_left=85;pro_right=0;left1=1;left2=0;right1=0;right2=0;}//////////////////////////////////////////////////////////////////void ft_left() //左转90 由黑到白{p20=0;p21=1;p22=1;pro_left=0;pro_right=80;left1=0; //左轮不动left2=0; //右轮动right1=1;right2=0;if(midf==1){ft_left();}else{sd_left();}}void sd_left() //左转90 由白到黑{p20=0;p21=1;p22=1;pro_left=0;pro_right=80;left1=0; //左轮不动left2=0; //右轮动right1=1;right2=0;if(midf==0){sd_left();}else{first_straight();straight();}}//////////////////////////////////////////////////////////////////void ft_right() //右转90 由黑到白{p20=1;p21=1;p22=0;pro_left=85;pro_right=0;left1=1; //左轮动left2=0; //右轮不动right1=0;right2=0;if(midf==1){ft_right();}else{sd_right();}}void sd_right() //右转90 由白到黑{p20=1;p21=1;p22=0;pro_left=80;pro_right=0;left1=1; //左轮动left2=0; //右轮不动right1=0;right2=0;if(midf==0){sd_right();}else{first_straight();straight();}}//////////////////////////////////////////////////////////////////void ft_180rt() //左转由黑到白{p20=0;p21=0;p22=0;pro_left=80;pro_right=80;left1=0; //左轮反转left2=1; //右轮正转right1=1;right2=0;if(midf==1){ft_180rt();}elseif(midf==0){sd_180rt();}}void sd_180rt() //左转由白到黑{p20=0;p21=0;p22=0;pro_left=80;pro_right=80;left1=0; //左轮反转left2=1; //右轮正转right1=1;right2=0;if(midf==0){sd_180rt();}else{first_straight();straight();}}////////////////////////////////////////////////////////////////// void stop() //回到起点{while(1){p17=1;p16=1;p23=0;p24=0;p25=0;p26=0;pro_left=0;pro_right=0;left1=1; //或是全等于0left2=1;right1=1;right2=1;}}//////////////////////////////////////////////////////////////////void end() //单程刹车{pro_left=0;pro_right=0;left1=0; //或是全等于1 left2=0;right1=0;right2=0;delay(150);}////////////////////////////////////////////////////////////////// void infrared() //循迹char flag=10;p16=0;p17=1;p23=0;p24=0;p25=1;p26=1;if((left_turn==0)&&(right_turn==0)&&(midf==1)&&(midb==1)&&(left==0)&&(right==0)) {flag=7;} //直线elseif((left_turn==0)&&(right_turn==0)&&(midf==0)&&(midb==0)&&(left==0)&&(right==0 )){flag=4;} // memory(4); 死胡同elseif((left_turn==1)&&(right_turn==0)&&(midf==0)&&(midb==1)){flag=3;} //memory(3);左拐elseif((left_turn==1)&&(right_turn==0)&&(midf==0)&&(midb==0)){flag=13;} //误认为左拐左拐elseif((left_turn==0)&&(right_turn==1)&&(midf==0)&&(midb==1)){flag=1;} //memory(1); 右拐elseif((left_turn==0)&&(right_turn==1)&&(midf==0)&&(midb==0)){flag=11;} //误认为右拐右拐elseif((left_turn==1)&&(right_turn==0)&&(midf==1)&&(midb==1)){flag=2;} //memory(2); 左岔elseif((left_turn==1)&&(right_turn==0)&&(midf==1)&&(midb==0)){flag=12;} //误认为左岔直走elseif((left_turn==1)&&(right_turn==1)&&(midf==0)&&(midb==1)){flag=1;} //memory(1); 丁字elseif((left_turn==1)&&(right_turn==1)&&(midf==0)&&(midb==0)){flag=11;} //误认为丁字右拐elseif((left_turn==0)&&(right_turn==1)&&(midf==1)&&(midb==1)){flag=1;} //memory(1); 右岔elseif((left_turn==0)&&(right_turn==1)&&(midf==1)&&(midb==0)){flag=11;} // 误认为右岔右拐if((left_turn==1)&&(right_turn==1)&&(midf==1)&&(midb==1)){flag=1; } //memory(1); 十字elseif((left_turn==1)&&(right_turn==1)&&(midf==1)&&(midb==0)){flag=11; } //误判十字右拐elseif((left_turn==0)&&(right_turn==0)&&(midf==1)&&(midb==0)&&(left==0)&&(right==0 )){flag=0;} //memory(0); 终点elseif((left_turn==0)&&(right_turn==0)&&(left==0)&&(right==1)){flag=5;} //左偏(right)elseif((left_turn==0)&&(right_turn==0)&&(left==1)&&(right==0)){flag=6;} //右偏(left)else{flag=7;} //直走switch (flag){case 0: p17=0;p16=0;p23=0;p24=0;p25=0;p26=0;end();ft_180rt();memory(0); logo=1; break; //p17=0;p16=0;终点两个灯全亮case 1: ft_right();memory(1); logo=0; break; //右拐case 2: sd_straight();memory(2); logo=0; break; //直走case 3: ft_left();memory(3); logo=0; break; //左拐case 4: ft_180rt();memory(4); logo=0; break; //死胡同case 5: wright(); logo=0; break; //左偏case 6: wleft(); logo=0; break; //右偏case 7: straight(); logo=0; break; //直走case 11: ft_right(); logo=0; break; //误认为右case 12: straight(); logo=0; break; //误认为直case 13: ft_left(); logo=0; break; //误认为左default: straight(); logo=0; break; //}}//////////////////////////////////////////////////////////////////void memory(int mflag) //记忆程序{if(mflag==1){a[n]+=1;if(a[n]==4){a[n]=0;n=n-2;}n++;}elseif(mflag==2){a[n]+=2;n++;}elseif(mflag==3){a[n]+=3;n++;}elseif(mflag==4){a[n]=0;n--;}elseif(mflag==0){n--;}}//////////////////////////////////////////////////////////////////void comeback(){p23=1;p24=1;p25=0;p26=0;p17=0;p16=1;if((left_turn==0)&&(right_turn==0)&&(midf==1)&&(midb==1)&&(left==0)&&(right==0)){ straight();logo=1;} //直线elseif((left_turn==1)&&(midb==1)) //左边有路{switch(a[n]){case 1: ft_left(); logo=1;n--; break;case 2: sd_straight(); logo=1;n--; break;case 3: ft_right(); logo=1;n--; break;}}elseif((right_turn==1)&&(midb==1)) //右边有路{switch(a[n]){case 1: ft_left(); logo=1;n--; break;case 2: sd_straight(); logo=1;n--; break;case 3: ft_right(); logo=1;n--; break;}}elseif((left_turn==0)&&(right_turn==0)&&(midf==0)&&(midb==0)&&(left==0)&&(right==0 )) //&&(n==1){ p17=1;p16=1;stop();} //回到起点两个灯全灭elseif((left_turn==0)&&(right_turn==0)&&(left==0)&&(right==1)){wright();logo=1;} //左偏(motor_right)elseif((left_turn==0)&&(right_turn==0)&&(left==1)&&(right==0)){wleft();logo=1;} //右偏(motor_left)/* else{straight();logo=1;}*/}//////////////////////////////////////////////////////////////////void init(){TMOD=0x01;TH0=(65536-100)/256;TL0=(65536-100)%256;EA=1; //中断总开关ET0=1; //开启定时器0TR0=1; //定时器0启动en1=1; //使能1端en2=1; //使能2端}void time0(void)interrupt 1{i++;j++;if(i<=pro_left) {en1=1;}else en1=0;if(i==100) {en1=~en1;i=0;}if(j<=pro_right) {en2=1;}else en2=0;if(j==100) {en2=~en2;j=0;}TH0=(65536-100)/256;TL0=(65536-100)%256;}//////////////////////////////////////////////////////////////////void main(void){init();delay(1);while(1){if(logo==0){infrared();}if(logo==1){comeback();}}}void int0(void)interrupt 0{}附录2 液晶驱动源代码程序#include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit rs=P1^0;sbit lcden=P1^1;sbit p20=P2^0;sbit p21=P2^1;uchar count,num;char miao,shi,fen;uchar code table[]="2010-6-22 ROBOT"; uchar code table1[]=" 00:00:00"; void time();void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void write_com(uchar com){rs=0;lcden=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;}void write_date(uchar date){rs=1;lcden=0;P0=date;delay(5);lcden=1;delay(5);lcden=0;}void init(){uchar num;lcden=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);for(num=0;num<15;num++){write_date(table[num]);delay(5);}write_com(0x80+0x40);for(num=0;num<12;num++){write_date(table1[num]);delay(5);}TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;}void write_sfm(uchar add,uchar date) {uchar shi,ge;shi=date/10;ge=date%10;write_com(0x80+0x40+add);write_date(0x30+shi);write_date(0x30+ge);}void main(){init();while(1){if((p20==1)&&(p21==1))//回到起点{TR0=0;}elseif((p20==0)&&(p21==1))//单程去{TR0=1;time();}elseif((p20==1)&&(p21==0))//单程回{TR0=1;time();}elseif((p20==0)&&(p21==0))//终点{TR0=0;}}}void timer0() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;count++;}void time(void){if(count==18){count=0;miao++;if(miao==60){miao=0;fen++;if(fen==60){fen=0;shi++;if(shi==24){shi=0;}write_sfm(4,shi);}write_sfm(7,fen);}write_sfm(10,miao);}}附录3总体电路图(见下页)。