智能迷宫寻迹小车报告

合集下载

智能循迹小车___设计报告

智能循迹小车___设计报告

智能循迹小车___设计报告设计报告:智能循迹小车一、设计背景智能循迹小车是一种能够通过感知地面上的线条进行导航的小型机器人。

循迹小车可以应用于许多领域,如仓库管理、物流配送、家庭服务等。

本设计旨在开发一款功能强大、性能稳定的智能循迹小车,以满足不同领域的需求。

二、设计目标1.实现循迹功能:小车能够准确地识别地面上的线条,并按照线条进行导航。

2.提供远程控制功能:用户可以通过无线遥控器对小车进行控制,包括前进、后退、转向等操作。

3.具备避障功能:小车能够识别和避开遇到的障碍物,确保行驶安全。

4.具备环境感知功能:小车能够感知周围环境,包括温度、湿度、光照等参数,并将数据传输给用户端。

5.高稳定性和可靠性:设计小车的硬件和软件应具备较高的稳定性和可靠性,以保证长时间的工作和使用。

三、设计方案1.硬件设计:(1) 采用Arduino控制器作为主控制单元,与传感器、驱动器等硬件模块进行连接和交互。

(2)使用红外传感器作为循迹传感器,通过检测地面上的线条来实现循迹功能。

(3)使用超声波传感器来检测小车前方的障碍物,以实现避障功能。

(4)添加温湿度传感器和光照传感器,以提供环境感知功能。

(5)将无线模块与控制器连接,以实现远程控制功能。

2.软件设计:(1) 使用Arduino编程语言进行程序设计,编写循迹、避障和远程控制的算法。

(2)设计用户界面,通过无线模块将控制信号发送给小车,实现远程控制。

(3)编写数据传输和处理的程序,将环境感知数据发送到用户端进行显示和分析。

四、实施计划1.硬件搭建:按照设计方案中的硬件模块需求,选购所需元件并进行搭建。

2.软件开发:根据设计方案中的软件设计需求,编写相应的程序并进行测试。

3.功能调试:对小车的循迹、避障、远程控制和环境感知功能进行调试和优化。

4.性能测试:使用不同场景和材料的线条进行测试,验证小车的循迹性能。

5.用户界面开发:设计用户端的界面,并完成与小车的远程控制功能的对接。

循迹小车实习报告

循迹小车实习报告

一、实习背景随着科技的发展,自动化技术在各个领域得到了广泛应用。

智能循迹小车作为自动化技术的一个重要应用,具有广泛的前景。

为了提高我们的实践能力,培养我们的创新精神,我们参加了智能循迹小车实习课程。

通过本次实习,我们学习了智能循迹小车的设计、制作和调试方法,了解了其工作原理,提高了我们的动手能力和团队协作能力。

二、实习目的1. 熟悉智能循迹小车的结构、原理和功能。

2. 掌握智能循迹小车的制作方法,提高动手能力。

3. 学习电路设计、传感器应用、单片机编程等知识。

4. 培养团队协作精神,提高沟通能力。

三、实习内容1. 智能循迹小车原理及结构智能循迹小车主要由以下几部分组成:车体、驱动电机、传感器、单片机、控制电路等。

车体是智能循迹小车的承载部分,驱动电机负责提供动力,传感器用于检测路面信息,单片机负责处理传感器信息,控制电路负责将单片机的指令转换为电机驱动信号。

2. 电路设计电路设计主要包括以下几个方面:(1)电源电路:为智能循迹小车提供稳定的电源。

(2)驱动电路:将单片机的控制信号转换为电机驱动信号。

(3)传感器电路:将传感器信号转换为单片机可识别的信号。

(4)控制电路:对单片机输出的控制信号进行放大、滤波等处理。

3. 传感器应用智能循迹小车主要采用红外传感器进行路面检测。

红外传感器具有体积小、成本低、安装方便等优点。

在制作过程中,我们需要对红外传感器进行调试,使其能够准确检测路面信息。

4. 单片机编程单片机编程是智能循迹小车实现智能控制的关键。

我们主要学习了C语言编程,掌握了单片机的基本指令、函数、中断等知识。

在编程过程中,我们需要编写程序,使单片机能够根据传感器信息控制小车行驶。

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. 优势和局限性循迹小车作为一种智能机器人,具有以下优势和局限性。

智能小车循迹项目总结汇报

智能小车循迹项目总结汇报

智能小车循迹项目总结汇报智能小车循迹项目总结汇报一、项目背景智能小车循迹项目是一个基于图像识别技术的智能汽车控制系统。

随着人工智能和物联网技术的快速发展,智能汽车正在成为一个热门领域。

循迹技术是智能汽车中的关键技术之一,它可以让汽车沿着指定的轨迹行驶,自动避开障碍物,给人们带来更方便、更安全的出行体验。

二、项目目标本项目的目标是设计一个能够自动循迹的智能小车。

通过使用图像识别技术,小车能够识别道路上的黑色轨迹,并沿着轨迹行驶。

同时,小车还具备自动避障功能,能够检测到前方的障碍物并自动停下来。

此外,小车还具备远程控制功能,用户可以通过手机APP控制小车的运动。

三、项目实施1. 硬件准备为了实现项目目标,我们购买了一些需要的硬件设备,包括智能小车底盘、摄像头模块、避障传感器、控制电路板等。

2. 硬件搭建我们首先进行了硬件的搭建工作。

将摄像头模块和避障传感器连接到控制电路板上,并将电路板安装到小车底盘上。

确保硬件设备能够正常工作。

3. 软件开发在硬件搭建完成后,我们开始了软件开发工作。

首先,我们搭建了一个图像识别模型,使用卷积神经网络训练来识别道路上的黑色轨迹。

然后,我们编写了控制算法,根据摄像头传回的图像识别结果,控制小车沿着轨迹行驶。

4. 测试与优化在软件开发完成后,我们进行了测试与优化工作。

通过对小车在道路上的行驶进行测试,我们发现小车在某些情况下行驶不稳定,有时无法循迹。

于是,我们对控制算法进行了优化,通过增加反馈控制机制,解决了这个问题。

四、项目成果经过一段时间的努力,我们成功地完成了智能小车循迹项目。

最终的成果是一个能够自动循迹的智能小车。

该小车能够识别道路上的黑色轨迹,并沿着轨迹行驶。

同时,小车还具备自动避障功能,能够检测到前方的障碍物并自动停下来。

另外,小车还通过手机APP实现了远程控制功能。

五、项目总结通过这个项目,我学到了许多有关智能汽车和图像识别技术的知识。

我了解到智能汽车是一个复杂的系统工程,需要涉及多个领域的知识,包括机械、电子、计算机等。

智能寻迹小车设计报告

智能寻迹小车设计报告

目录1.项目设计目的 (1)2.项目设计正文 (3).项目分析及方案制定 (3).设计步骤及流程图 (4)寻迹设计步骤 (4)流程图 (4).主要模块介绍 (4)LM393的主要特点 (4)LM393引脚图及内部框图 (5)LM393 功能简介 (5)89C2051 (5)89C2051简介 (5)89C2051 主要性能参数 (5)89C2051 功能特性概述 (6).电路设计及PCB绘制 (6)电源电路 (6)红外收发电路 (6)电机驱动电路 (7)单片机最小系统 (7)整体电路 (8)PCB板的绘制 (8). 成品展示 (9)3.项目设计总结 (9)4.参考文献 (10)智能寻迹小车——CDIO三级项目王君杰(电子信息工程 1501 6)一、项目设计目的在科技飞速发展的今天,智能化的概念已经渗入到各行各业,自动控制系统也出现在生活的方方面面,早到工厂的机械化生产,近到目前的自动驾驶。

越来越多的领域涉及到电控制技术。

特别是使用单片机一类的MCU的控制,在生活中越来越常见。

因此,基于单片机控制的电路的学习和时间对于我们来说就显得尤为重要。

同时,对于单片机作为软件主控单元,结合模电数电的硬件电路支持的综合项目开发,也是作为大学生需要了解并且熟练运用的基础。

掌握了这些知识,对于我们以后的职业发展也有着莫大的帮助。

二、项目设计正文、项目分析及方案制定首先对于“智能寻迹小车”这个标题而言,我们可以分为两个部分:小车和智能寻迹。

“小车”决定了硬件电路的大致构成:电源、电容、电阻、开关、电机、LED。

而“智能”则决定了一些高级电路的选用:MCU、传感器、电机驱动、电位器及一些IC。

其次,假如去掉“智能”两字,仅关注如何做成一个能够行驶的小车,那么电路的搭建将会变得尤为简单。

假如做一个“上电即跑”的小车,那么连开关都不需要,仅需要电源(干电池即可),两个电机(3V/100mA)和两个限流电阻按图一方式连接即可。

巡迹小车实验报告

巡迹小车实验报告

巡迹小车实验报告
【原创版】
目录
1.实验目的
2.实验设备与材料
3.实验步骤
4.实验结果与分析
5.实验结论
正文
一、实验目的
本次实验的主要目的是通过制作和测试巡迹小车,了解并掌握机器人的控制原理及其在实际应用中的表现。

巡迹小车作为一种基础的机器人系统,可用于研究传感器、执行器、控制算法等方面的技术,为后续的机器人开发奠定基础。

二、实验设备与材料
1.巡迹小车套件
2.电脑
3.面包板
4.跳线
5.电子元件(如电阻、电容等)
6.工具(如镊子、钳子等)
7.5V 电源
三、实验步骤
1.准备阶段:检查实验设备是否齐全,将面包板、电子元件等摆放在桌面上,为接下来的焊接工作做好准备。

2.焊接阶段:根据电路图和说明书,将电阻、电容等元件焊接到面包板上,并连接电源、电机等设备。

3.调试阶段:使用电脑上的编程软件对小车进行编程,设置其运动轨迹和速度等参数,并通过串口通信将程序下载到小车。

4.测试阶段:将小车放置在实验平台上,观察其运动轨迹是否正确,调整参数以达到最佳效果。

四、实验结果与分析
经过多次调试和测试,巡迹小车能够准确地按照预定轨迹行驶,运动速度和方向控制准确。

这表明本次实验中,我们成功地掌握了机器人的控制原理,并为后续的机器人研究和开发积累了经验。

五、实验结论
本次巡迹小车实验的成功,证明了我们团队在机器人领域的研究能力。

通过这次实验,我们不仅学会了如何制作和控制巡迹小车,还深入了解了机器人的构造和运行原理。

循迹小车实验报告

循迹小车实验报告

循迹小车实验报告循迹小车实验报告引言:循迹小车是一种基于光电传感器的智能机器人,能够根据环境中的光线变化来调整行进方向。

本实验旨在通过搭建一个循迹小车模型,探索其原理和应用。

一、实验材料和方法本次实验所需材料包括Arduino开发板、直流电机、光电传感器、电池组等。

首先,我们将Arduino开发板与直流电机、光电传感器等器件进行连接,确保电路正常。

然后,将循迹小车放置在一个光线变化较大的环境中,例如黑白相间的地面。

最后,通过编写程序,使循迹小车能够根据光电传感器的信号来判断行进方向,并实现自动循迹。

二、实验过程和结果在实验过程中,我们首先对光电传感器进行了校准,以确保其能够准确地感知光线的变化。

然后,我们编写了一段简单的程序,使循迹小车能够根据光电传感器的信号来判断行进方向。

当光线较亮时,循迹小车向左转;当光线较暗时,循迹小车向右转。

通过不断调试程序,我们成功实现了循迹小车的自动循迹功能。

在实验过程中,我们还发现了一些有趣的现象。

例如,当循迹小车行进到黑白相间的地面上时,光电传感器能够准确地感知到黑白色块的变化,并根据信号进行相应的调整。

这说明循迹小车的循迹原理基于光线的反射和吸收,具有一定的环境适应性。

三、实验结果分析通过本次实验,我们深入了解了循迹小车的原理和应用。

循迹小车通过光电传感器感知环境中的光线变化,从而判断行进方向,实现自动循迹。

这种智能机器人在工业生产、仓储物流等领域具有广泛的应用前景。

然而,循迹小车也存在一些局限性。

首先,其循迹能力受到环境光线的影响较大,当环境光线较弱或过强时,循迹小车的准确性会受到一定的影响。

其次,循迹小车只能在特定的地面上进行循迹,对于其他类型的地面可能无法正常运行。

因此,在实际应用中,需要根据具体情况进行合理选择和调整。

四、实验总结通过本次实验,我们对循迹小车的原理和应用有了更深入的了解。

循迹小车作为一种基于光电传感器的智能机器人,具有自动循迹的功能,可以在工业生产、仓储物流等领域发挥重要作用。

智能循迹小车实验报告

智能循迹小车实验报告

智能循迹小车实验报告一、实验目的本次实验旨在设计并实现一款能够自主循迹的智能小车,通过传感器检测路径信息,控制小车的运动方向,使其能够沿着预定的轨迹行驶。

通过本次实验,深入了解自动控制、传感器技术和单片机编程等方面的知识,提高实际动手能力和问题解决能力。

二、实验原理1、传感器检测本实验采用红外传感器来检测小车下方的黑线轨迹。

红外传感器由红外发射管和接收管组成,当发射管发出的红外线照射到黑色轨迹时,反射光较弱,接收管接收到的信号较弱;当照射到白色区域时,反射光较强,接收管接收到的信号较强。

通过比较接收管的信号强度,即可判断小车是否偏离轨迹。

2、控制算法根据传感器检测到的轨迹信息,采用 PID 控制算法(比例积分微分控制算法)来计算小车的转向控制量。

PID 算法通过对误差(即小车偏离轨迹的程度)进行比例、积分和微分运算,得到一个合适的控制输出,使小车能够快速、准确地回到轨迹上。

3、电机驱动小车的动力由直流电机提供,通过电机驱动芯片(如 L298N)来控制电机的正反转和转速。

根据控制算法计算出的转向控制量,调整左右电机的转速,实现小车的转向和前进。

三、实验器材1、硬件部分单片机开发板(如 STM32 系列)红外传感器模块直流电机及驱动模块电源模块小车底盘及车轮杜邦线、面包板等2、软件部分Keil 等单片机编程软件串口调试助手四、实验步骤1、硬件搭建将红外传感器模块安装在小车底盘下方,使其能够检测到黑线轨迹。

将直流电机与驱动模块连接,并安装在小车底盘上。

将单片机开发板、传感器模块、驱动模块和电源模块通过杜邦线连接起来,搭建好实验电路。

2、软件编程使用单片机编程软件,编写传感器检测程序、控制算法程序和电机驱动程序。

通过串口调试助手,将编写好的程序下载到单片机开发板中。

3、调试与优化启动小车,观察其在轨迹上的行驶情况。

根据小车的实际行驶情况,调整 PID 控制算法的参数,优化小车的循迹性能。

不断测试和改进,直到小车能够稳定、准确地沿着轨迹行驶。

智能循迹小车设计报告(总17页)

智能循迹小车设计报告(总17页)

智能循迹小车设计报告(总17页)一、设计目的本项目旨在设计一款运用机器视觉技术的智能循迹小车,能够自主寻找指定路径并行驶,可用于实现自动化物流等应用场景。

二、设计方案2.1 系统概述本系统基于STM32F103C8T6单片机和PiCamera进行设计。

STM32F103C8T6单片机负责循迹小车的控制和编码器的反馈信息处理,PiCamera则用于实现图像识别和路径规划,两者之间通过串口进行通讯。

2.2 硬件设计2.2.1 循迹模块循迹模块采用红外传感器对黑线进行探测,通过检测黑线与白底的反差判断小车的行驶方向。

本设计采用5个红外传感器,每个传感器分别对应小车行驶时的不同位置,通过对这5个传感器的读取,可以获取小车所在的实际位置和前进方向。

电机驱动模块采用L298N电机驱动模块,通过PWM信号来控制电机的转速和方向。

左右两侧的电机分别接到L298N模块的IN1~IN4引脚,电机转向由模块内部的电路通过PWM 信号控制。

2.2.4 Raspberry PiRaspberry Pi用于图像处理和路径规划。

本设计使用PiCamera进行图像采集,在RPi 上运行OpenCV进行图像处理,识别道路上的黑线,并通过路径规划算法计算出循迹小车当前应该行驶的方向,然后将该方向通过串口传输给STM32单片机进行控制。

本设计的系统结构分为三个层次:传感器驱动层、控制层、应用层。

其中,传感器驱动层实现对循迹小车上的传感器的读取和解析,生成对应的控制指令;控制层对控制指令进行解析和执行,控制小车的运动;应用层实现图像处理和路径规划,将路径信息传输给控制层进行控制。

在应用层,本设计采用基于灰度阈值的图像处理算法,通过寻找图像中的黑色线条,将黑色线条和白色背景分离出来,以便进行路径规划。

路径规划采用最短路径算法,计算出循迹小车当前应该行驶的方向,然后将该方向发送给控制层进行控制。

2.4 可行性分析本设计的硬件设计采用常见的模块化设计,采用Arduino Mega作为基础模块,通过模块之间的串口通信实现对整个系统的控制,扩展性和可维护性良好。

循迹小车设计概述总结报告

循迹小车设计概述总结报告

循迹小车设计概述总结报告一. 引言循迹小车是指通过光电传感器感知地面上的黑线,并根据黑线的位置来调整车身方向,从而实现沿着黑线自动行驶的一种智能小车。

本篇报告旨在总结循迹小车设计的整体思路、实施过程以及遇到的问题与解决方案。

二. 设计思路循迹小车的设计主要包含以下几个关键要点:1. 感应模块选择选择合适的光电传感器作为感应模块,用于检测地面上的黑线。

常见的光电传感器有红外线传感器、RGB传感器等,可以根据实际需求选择适合的传感器。

2. 控制模块选择选择合适的控制模块,负责接收感应模块的数据,并控制小车的电机进行相应的运动。

常见的控制模块有单片机、树莓派等,可以根据需求和个人技术储备来选择。

3. 算法设计设计循迹算法,根据光电传感器的反馈数据,判断车身当前位置与黑线的位置关系,并根据判断结果来调整小车的行驶方向。

常见的算法有PID控制算法、模糊控制算法等,可以根据实际需求选择适合的算法。

4. 机械结构设计设计小车的机械结构,包括底盘、电机、车轮等。

确保机械结构的稳定性和可靠性,同时要考虑小车的大小、重量和外观等因素。

三. 实施过程在设计循迹小车的过程中,我们按照以下步骤逐步实施:1. 硬件搭建首先,搭建循迹小车的硬件系统,包括连接光电传感器、控制模块和电机等。

确保各个模块之间的连接正确无误,以及硬件系统的稳定性和可靠性。

2. 程序编写根据设计思路和需求,编写程序实现循迹小车的控制逻辑。

涉及到光电传感器数据的读取、算法的实现和电机控制等方面的内容。

在编写过程中,需要进行调试和测试,确保程序的准确性和稳定性。

3. 测试和优化在完成程序编写后,对循迹小车进行测试和优化。

通过实际测试,了解小车在各种情况下的表现,并根据实际情况对程序进行优化和调整,以提高小车的稳定性和自动化程度。

四. 遇到问题与解决方案在循迹小车设计的过程中,我们遇到了一些问题,但通过不断努力和寻找解决方案,最终都得到了解决。

以下是我们遇到的一些问题及解决方案的总结:1. 光照干扰在室外测试时,光照强度的变化会对光电传感器的检测结果产生影响。

循迹小车课程设计报告

循迹小车课程设计报告

循迹小车课程设计报告一、课程背景随着科技的不断发展,机器人技术已经成为现代教育中的重要组成部分。

循迹小车作为机器人教育的一种形式,不仅可以帮助学生学习编程和机械原理,还可以培养学生的动手能力和创造力。

因此,设计一门循迹小车课程,对学生的综合素质培养具有重要意义。

二、课程目标1. 帮助学生了解循迹小车的基本原理和结构,掌握循迹小车的工作原理;2. 培养学生的动手能力和团队合作精神;3. 培养学生的创新意识和解决问题的能力;4. 培养学生的编程能力和逻辑思维能力。

三、课程内容1. 循迹小车的基本原理和结构通过讲解循迹小车的基本原理和结构,帮助学生了解循迹小车是如何工作的,包括传感器、电机、控制器等组成部分。

2. 循迹小车的制作与调试学生将分成小组,每个小组制作一辆循迹小车,并进行调试。

通过实际操作,学生将掌握循迹小车的制作过程和调试方法。

3. 循迹小车的编程学生将学习如何为循迹小车编写程序,包括控制小车的前进、后退、转向等动作。

通过编程,学生将提高他们的逻辑思维能力和解决问题的能力。

4. 循迹小车的比赛与应用在课程结束时,学生将参加循迹小车比赛,通过比赛,学生将展示他们的成果,并学会如何改进循迹小车的性能。

同时,学生还将学习循迹小车在实际生活中的应用。

四、课程教学方法1. 理论讲解通过课堂讲解,帮助学生了解循迹小车的基本原理和结构。

2. 实践操作学生将分成小组,进行循迹小车的制作、调试和编程。

通过实践操作,学生将更好地掌握课程内容。

3. 案例分析通过案例分析,引导学生思考循迹小车在实际生活中的应用,并激发学生的创新意识。

4. 比赛演示在课程结束时,学生将参加循迹小车比赛,通过比赛,学生将展示他们的成果,并学会如何改进循迹小车的性能。

五、课程评估1. 学生考核通过学生的课堂表现、课后作业和循迹小车比赛成绩等方面进行评定。

2. 教师评价教师将对学生的课堂表现、实践操作和项目成果进行评价,及时发现问题并给予指导。

智能循迹小车报告.doc

智能循迹小车报告.doc

智能循迹小车报告.doc一、前言智能循迹小车是一款基于机器人技术的智能装备,主要实现对机器人的智能控制和追踪操作,适用于各种场景中的巡航及运输。

智能循迹小车在各类工业现场、家庭生活中得到广泛应用。

本报告将对智能循迹小车的相关技术、应用及未来发展进行分析与总结。

二、技术原理智能循迹小车的核心技术是基于计算机视觉和机器人导航领域中的视觉跟踪技术,实现对目标的追踪和路径规划。

该技术主要包括如下步骤:1. 传感器采集数据:智能循迹小车配备了多种传感器,如激光雷达、摄像头、红外线传感器等,用于采集目标物体的信息;2. 数据处理:接收传感器采集的数据后,智能循迹小车通过算法处理,将数据转化成可供计算机识别的数字信号;3. 目标检测:将数字信号传入计算机,通过人工智能、机器学习等技术实现对目标的识别、分类和跟踪;4. 路径规划:根据目标的位置和运动轨迹,智能循迹小车通过算法实现路径规划和自主导航,避开障碍物,寻找最短路径;5. 控制执行:根据路径规划生成的控制信号,智能循迹小车对轮子和电机执行精确的控制,实现移动和自动导航。

三、应用现状智能循迹小车在生产、物流、安防、家庭生活等众多领域得到广泛应用,以下列举几种应用场景。

1. 工业自动化:在工业生产自动化方面,智能循迹小车可以用于运输原材料和成品、仓库货物的自动化管理、装配线物料转移等。

机器人可以根据目标位置和运动方向,自动运行到指定位置,精准地完成操作任务。

2. 物流配送:智能循迹小车可以用于大型物流中心的快递配送、医院内的物资搬运等场景。

机器人通过自主路径规划和导航,可以自动避开障碍物,并将货物准确地送到目的地,提高了生产效率和准确性。

3. 家庭服务:智能循迹小车还可应用于家庭服务领域,如智能扫地机器人、智能花盆机器人等。

机器人自动巡航,清洁地面,喷水浇花,实现人机交互。

4. 安防监控:在安防监控领域,智能循迹小车可以应用于产品物流追踪、边境巡逻等领域。

机器人对区域进行自动巡航,通过多种传感器检测目标,将异常情况反馈给监控中心,实现精确的实时监控。

智能循迹小车市场分析报告

智能循迹小车市场分析报告

市场需求:随着科技的发展,智能循迹 小车的应用场景不断拓展,市场需求持 续增长。
03
竞争激烈:智能循迹小车市场竞争激烈, 需要企业不断创新,提高产品质量和品 牌影响力。
技术创新:智能循迹小车的技术不断创 新,提高了产品的性能和功能,为市场 提供了更多的机会。
02
法规政策:政府对智能循迹小车行业的 政策支持,为企业提供了更多的发展机 会。同时,法规政策的变化也会给企业 带来挑战。
市场竞争加剧:随着 市场的扩大,越来越 多的企业进入智能循 迹小车行业,市场竞 争加剧,企业需要不 断创新和优化产品, 提高竞争力。
04
政策支持:政府对智 能循迹小车行业的支 持力度加大,有利于 行业的发展。
01
家庭娱乐:满足家庭娱乐需求,如亲子互动、 家庭聚会等
03
商业应用:应用于商场、超市、酒店等商业场 所,提供导航、导视等服务
智能循迹小车的发展趋 势包括提高识别精度、 降低成本、提高智能化
程度等。
01
家庭娱乐:智能循 迹小车可以作为家 庭娱乐设备,提供 趣味性和互动性。
02
教育领域:智能循 迹小车可以作为教 学工具,帮助学生 学习编程、机器人 等知识。
03
商业应用:智能循 迹小车可以用于商 场、酒店等场所, 提供导航、导览等 服务。
加强知识产 权保护,提 高自主创新 能力
关注市场需 求,开发适 应市场需求 的产品
提高产品质 量,增强市 场竞争力
建立品牌形象:通过广告、
公关等手段,提高品牌知 1
名度和美誉度
提高产品质量:通过技术
创新、工艺改进等手段, 2
提高产品质量和性能
优化产品结构:通过市场
调研,了解消费者需求, 3

智能循迹避障小车报告

智能循迹避障小车报告

摘要:本智能识别小车以STC89C52单片机为控制芯片,以直流电机,光电传感器,超声波传感器,电源电路以及其他电路构成。

系统由STC89C52通过IO口,通过红外传感器检测黑线,利用单片机输出PWM脉冲控制直流电机的转速和转向,循迹由TCRT5000型光电对管完成。

一、系统设计1、小车循迹,避障原理这里的循进是指小车在白色地板上寻黑线行走,通常采取的方法是红外探测法。

红外探测法,即利用红外a在不同颜色的物体表面具有不同的反射性质的特点,在小车行驶过程中不断地向地面发射红外光,当红外光遇到白色地板时,发生漫反射反射光被装在小车上的按收管按收;如果遇到黑线则红外光被吸收,小车上的接收管接收不到红外光,单片机就是否收到反射回来的红外光为依据来确定黑线的位置和小车的行走路线。

红外探测器探测距离有限一殷最大不应超过3cm。

而避障则是通过超声波模块不断向前方发射超声波信号,通过接收反射回来的超声波信号,从而实现的避障。

当前方有障碍物时,超声波会向单片机串口发送一串数字,这些数字就是当前小车距离障碍物得距离。

当串口接收到信号时,会引发串口中断,单片机通过读取距离值,并且对此数值进行分析是不是距离小车很近,是的话就进行转向;否则继续循迹。

当小车遇到第一个障碍后,就计数一次,这样当遇到第二个障碍物时,小车就可以以不同的形式躲避障碍物了。

2、选用方案(1):采用成品的小车地盘,通过改装来完成任务;(2):采用STC89C52单片机作为主控制器;(3):采用7V电源经7805稳压芯片降压后为其他芯片及器件供电。

(4):采用TCRT5000型红外传感器进行循迹;(5):L298N作为直流电机的驱动芯片;(6):通过对L298N使能端输入PWM来控制电机转速和转向;3、系统机构框图如下所示:二、硬件实现及单元电路设计与分析1、微控制模块设计与分析微控制器模块我们采用STC89C52。

该芯片采用双列直插是封装,便于焊接,性能比较稳定,而且在市场上也是比较廉价的单片机。

智能循迹小车开题报告免费

智能循迹小车开题报告免费

智能循迹小车开题报告免费智能循迹小车开题报告一、引言智能循迹小车是一种基于人工智能技术的创新产品,它能够通过内置的传感器和算法,准确地识别和跟踪指定路径,实现自主导航。

本文将介绍智能循迹小车的设计思路、关键技术和应用前景。

二、设计思路智能循迹小车的设计思路是模拟人类的视觉系统,通过感知环境中的标记物,从而准确地跟踪指定路径。

首先,我们需要选择合适的传感器,如摄像头或红外线传感器,用于捕捉环境中的标记物。

然后,通过图像处理或信号处理技术,提取出标记物的特征,并将其与预先设定的路径进行匹配。

最后,利用控制算法,将小车的行动与标记物的位置相对应,实现自主导航。

三、关键技术1. 传感器选择:不同的传感器对于循迹小车的效果有着重要影响。

摄像头能够提供更为精确的图像信息,但对于光线和角度的要求较高;而红外线传感器则能够在光线较差的情况下工作,但对于标记物的识别可能不够准确。

因此,在设计中需要根据实际需求选择合适的传感器组合。

2. 图像处理与模式识别:针对使用摄像头的循迹小车,图像处理和模式识别是关键技术。

通过对图像进行预处理、特征提取和分类,可以实现对标记物的准确识别和跟踪。

常用的算法包括边缘检测、颜色分割和模板匹配等。

3. 控制算法与路径规划:控制算法是实现循迹小车自主导航的核心。

根据传感器获取的标记物信息,控制算法能够实时调整小车的行动,保持在指定路径上。

同时,路径规划算法能够根据预设的路径和环境变化,动态调整小车的行进方向和速度。

四、应用前景智能循迹小车具有广泛的应用前景。

首先,它可以应用于物流行业,实现自动化的仓储和搬运,提高效率和减少人力成本。

其次,智能循迹小车可以用于室内导航和导览,为游客提供方便的导航服务。

此外,它还可以应用于农业领域,实现农作物的自动化种植和采摘。

总之,智能循迹小车在多个领域都有着广阔的应用前景。

五、总结智能循迹小车是一项基于人工智能技术的创新产品,通过传感器、图像处理和控制算法,实现了自主导航和循迹功能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)方案三 总共8个传感器,两个传感器用来检测小车是否偏离轨迹,另外五个传感器用来检测小车是否遇到路口(前方一个,左方及右方各两个),还有一个传感器配合前方的传感器来检测终点。

检测路口左右方向时用2个传感器,是以使能减少误判,让小车更好的寻迹。

(如图1.3)方案一比方案二多一个传感器,是为了更好的检测终点,方案一检测终点的方法是前当方传感器检测到死胡同时在让其延时继续前进如图1.4,当再检测到黑色信号时即使终点,但是实际运作时发现由于2cm 对于运动的小车来说过小,而且即便检测到终点在返回时,会再次遇到黑色信号,和死胡同标志容易产生混淆,不易于小车更好的判别路口,而当有第6个传感器辅助前方传感器检测到终点时,则能避免以上问题,当检测到死胡同标志时,只要再继续往前走,辅助检测传感器便会检测到白色信号小车就会认为到达终点如图1.5,避免了小车混淆死胡同与终点标志,同时让终点标志更好的被识别。

而方案三,将检测左右路口的传感器增加至每侧2个,以防出现如图1.6所示的误判,而图1.7的方案三只要两个传感器不全进入黑线就不会认为有路口,能大大的避免误判的几率。

但是后来在软件编写和实际测试的时候,发现了用软件可以进行防误判,而由于这种防误判方法的引入,是传感器的个数从8个减少到了6个,其具体如何防误判将在后面说明。

图1.1五个传感器示意图 图1.2六个传感器示意图图1.3八个传感器示意图图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传感器单元电路的设计当传感器进入黑色轨迹中时,由发射管发射的不可见光被吸收,不能被接收器接收到,故接收一侧电路不导通,LM393的同向输入为高,输入比较器输出为高,其输出高电压为5V ,低电压为0V ,故可以直接传给单片机。

而电压比较器的输出端所接的LED 能够实时的显示传感器的工作状况。

图2.2 传感器单元电路本题目要求小车能够不偏离中心轨迹,由于轨迹交窄小车相对运动速度快,故要求传感器单元必须较为灵敏,相应时间短,反应速度快。

我们采用的LM393电压比较器,其工作电源电压范围宽,单电源、双电源均可工作,消耗电流小,输入失调电压小,共模输入电压范围宽,反应时间快,其内部结构图如图 2.3所示。

2.2.2 电机驱动单元电路的设计图2.4 电机驱动电路图由于要对电机实行加速减速刹车的控制,故采用由L298N 和74LS08构成的驱动电路,由1.0和1.1口负责控制1号电机的前进与后退,而与他们一起走与门74LS08的1.4口负责输出PWM 波,由PWM 波负责控制小车的减速与加速以及制动的控制。

同时与门也起到了扩大单片机输出电流的作用,由于L298N 需要的输入电流AT89C52无法驱动,与门在此起到一定的上拉作用。

因为要用单片机对电动机进行四象限的控制,由于控制象限的复杂以及驱动电机功率的问题,这里我们需要采用电动机驱动芯片来实现,我们采用的是L298N 这款电机驱动芯片,该芯片具备控制简单,反应快,输出功率大,支持外接电机工作电源等一系列优点。

其结构图如图2.5所示。

图2.3 LM393内部结构图图2.5 L298N 内部结构图2.2.3电源模块单元电路的设计由于整个控制板都需要5V 电压,考虑到电池随着使用时间的增强,电压会有所下降,故我们选用直流稳压电源9V 进行供电,由于多方同时分流,有可能造成电量不足,为了保持电压能够稳定在5V ,故选用L7805进行稳压。

在其输出输入端口各并联一个电容,以起到保护芯片的作用。

其内部结构图如2.7所示。

图2.6 电源模块单元电路图图2.7 L7805内部结构图2.2.4液晶显示单元电路设计图2.8液晶显示单元电路图采用1602液晶进行时间和方向的显示,我们采用单独的AT89S52来控制液晶,减少其对小车控制的干扰,然后由2根数据线让其与主控A T89S52进行通信,以此来显示小车运行的时间和方向。

图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总体电路图(见下页)。

相关文档
最新文档