创新设计与实践报告自动寻迹小车
- 格式:doc
- 大小:3.61 MB
- 文档页数:34
智能循迹小车___设计报告设计报告:智能循迹小车一、设计背景智能循迹小车是一种能够通过感知地面上的线条进行导航的小型机器人。
循迹小车可以应用于许多领域,如仓库管理、物流配送、家庭服务等。
本设计旨在开发一款功能强大、性能稳定的智能循迹小车,以满足不同领域的需求。
二、设计目标1.实现循迹功能:小车能够准确地识别地面上的线条,并按照线条进行导航。
2.提供远程控制功能:用户可以通过无线遥控器对小车进行控制,包括前进、后退、转向等操作。
3.具备避障功能:小车能够识别和避开遇到的障碍物,确保行驶安全。
4.具备环境感知功能:小车能够感知周围环境,包括温度、湿度、光照等参数,并将数据传输给用户端。
5.高稳定性和可靠性:设计小车的硬件和软件应具备较高的稳定性和可靠性,以保证长时间的工作和使用。
三、设计方案1.硬件设计:(1) 采用Arduino控制器作为主控制单元,与传感器、驱动器等硬件模块进行连接和交互。
(2)使用红外传感器作为循迹传感器,通过检测地面上的线条来实现循迹功能。
(3)使用超声波传感器来检测小车前方的障碍物,以实现避障功能。
(4)添加温湿度传感器和光照传感器,以提供环境感知功能。
(5)将无线模块与控制器连接,以实现远程控制功能。
2.软件设计:(1) 使用Arduino编程语言进行程序设计,编写循迹、避障和远程控制的算法。
(2)设计用户界面,通过无线模块将控制信号发送给小车,实现远程控制。
(3)编写数据传输和处理的程序,将环境感知数据发送到用户端进行显示和分析。
四、实施计划1.硬件搭建:按照设计方案中的硬件模块需求,选购所需元件并进行搭建。
2.软件开发:根据设计方案中的软件设计需求,编写相应的程序并进行测试。
3.功能调试:对小车的循迹、避障、远程控制和环境感知功能进行调试和优化。
4.性能测试:使用不同场景和材料的线条进行测试,验证小车的循迹性能。
5.用户界面开发:设计用户端的界面,并完成与小车的远程控制功能的对接。
电子实习报告:循迹小车设计一、实习背景及目的随着科技的不断发展,电子技术在各个领域的应用日益广泛,特别是在智能机器人领域。
为了提高我们对电子技术的实际应用能力,本次电子实习选择了设计制作循迹小车这一项目。
通过本次实习,我们希望能够掌握单片机原理、传感器应用、电路设计等知识,提高自己的动手能力和创新能力。
二、设计原理及方案1. 设计原理循迹小车是一种基于单片机控制的智能小车,其主要原理是通过传感器检测路径上的黑线,然后单片机对信号进行处理,控制小车的转向,使小车能够沿着黑线行驶。
同时,小车还具备避障功能,当遇到前方障碍物时,能够自动减速并改变方向。
2. 设计方案(1)硬件设计硬件设计主要包括单片机、传感器、电机驱动模块、电源模块等。
我们选择了STC89C52单片机作为控制核心,传感器采用红外循迹模块,电机驱动模块选用L298N,电源模块则采用开关电源。
(2)软件设计软件设计主要涉及系统初始化、线路检测与循迹、避障检测与控制等。
初始化模块主要完成单片机各端口的配置,以及传感器、电机等设备的初始化。
线路检测与循迹模块通过判断红外传感器的状态来确定小车行驶的方向。
避障检测与控制模块则通过检测前方障碍物,控制小车的减速和转向。
三、实习过程及成果1. 实习过程在实习过程中,我们首先学习了单片机原理、传感器应用、电机驱动等知识,然后根据设计方案进行电路图的设计,接着进行电路焊接,最后进行程序编写和调试。
2. 实习成果经过一段时间的努力,我们成功完成了循迹小车的设计制作。
在实际测试中,小车能够沿着黑线顺利行驶,遇到障碍物时能够自动减速并改变方向。
此外,我们还对小车进行了优化,使它在行驶过程中更加稳定。
四、总结与展望通过本次实习,我们不仅学到了很多关于单片机、传感器、电机驱动等方面的知识,还提高了自己的动手能力和创新能力。
同时,我们也意识到在实际设计过程中,需要不断调试和优化,才能使产品达到预期效果。
展望未来,我们可以进一步改进循迹小车,例如增加速度控制、远程控制等功能,使其更加智能化。
自动寻迹小车设计报告一、系统设计1、设计要求(1)自动寻迹小车从安全区域启动。
(2)小车按检测路线运行,自动区分直线轨道和弯路轨道,在弯路处拐弯,实现灵活前进、转弯、等功能2.小车寻迹的原理这里的寻迹是指小车在白色地板上寻黑线行走,通常采取的方法是红外探测法。
红外探测法,即利用红外线在不同颜色的物体表面具有不同的反射性质的特点,在小车行驶过程中不断地向地面发射红外光,当红外光遇到白色纸质地板时发生漫反射,反射光被装在小车上的接收管接收;如果遇到黑线则红外光被吸收,小车上的接收管接收不到红外光。
单片机就是否收到反射回来的红外光为依据来确定黑线的位置和小车的行走路线。
红外探测器探测距离有限,一般最大不应超15cm。
对于发射和接收红外线的红外探头,可以自己制作或直接采用集成式红外探头。
3、模块方案根据设计要求,本系统主要由控制器模块、寻迹传感器模块、直流电机及其驱动模块等构成。
控制器模块:控制器模块由AT89C51单片机控制小车的行走。
寻迹传感器模块:寻迹传感器用光电传感器ST188检测线路并反馈给单片机执行。
ST188采用高发射功率红外光电二极管和高灵敏度双光电晶体管组成。
检测距离:4--13mm直流电机及其驱动模块:直流电机用L298来驱动。
L298N是一个具有高电压大电流的全桥驱动芯片,它相应频率高,一片L298N可以分别控制两个直流电机,而且还带有控制使能端。
用该芯片作为电机驱动,操作方便,稳定性好,性能优良。
4.系统结构框图:二、硬件实现及单元电路设计1、微控制器模块的设计在本次设计中我们采用了AT89C51位主控制器。
它具有智能化,可编程,小型便携等优点。
2.光电传感器:本次试验我们采用了ST188光电传感器,ST188采用高发射功率红外光电二极管和高灵敏度双光电晶体管组成。
检测距离:4--13mm。
其连接电路图如下:3.直流电机及其驱动模块在直流电机驱动问题上,我们采用一片L298来驱动直流电机。
一、实习背景随着科技的发展,自动化技术在各个领域得到了广泛应用。
智能循迹小车作为自动化技术的一个重要应用,具有广泛的前景。
为了提高我们的实践能力,培养我们的创新精神,我们参加了智能循迹小车实习课程。
通过本次实习,我们学习了智能循迹小车的设计、制作和调试方法,了解了其工作原理,提高了我们的动手能力和团队协作能力。
二、实习目的1. 熟悉智能循迹小车的结构、原理和功能。
2. 掌握智能循迹小车的制作方法,提高动手能力。
3. 学习电路设计、传感器应用、单片机编程等知识。
4. 培养团队协作精神,提高沟通能力。
三、实习内容1. 智能循迹小车原理及结构智能循迹小车主要由以下几部分组成:车体、驱动电机、传感器、单片机、控制电路等。
车体是智能循迹小车的承载部分,驱动电机负责提供动力,传感器用于检测路面信息,单片机负责处理传感器信息,控制电路负责将单片机的指令转换为电机驱动信号。
2. 电路设计电路设计主要包括以下几个方面:(1)电源电路:为智能循迹小车提供稳定的电源。
(2)驱动电路:将单片机的控制信号转换为电机驱动信号。
(3)传感器电路:将传感器信号转换为单片机可识别的信号。
(4)控制电路:对单片机输出的控制信号进行放大、滤波等处理。
3. 传感器应用智能循迹小车主要采用红外传感器进行路面检测。
红外传感器具有体积小、成本低、安装方便等优点。
在制作过程中,我们需要对红外传感器进行调试,使其能够准确检测路面信息。
4. 单片机编程单片机编程是智能循迹小车实现智能控制的关键。
我们主要学习了C语言编程,掌握了单片机的基本指令、函数、中断等知识。
在编程过程中,我们需要编写程序,使单片机能够根据传感器信息控制小车行驶。
5. 调试与优化在制作过程中,我们需要对智能循迹小车进行调试,使其能够稳定、准确地行驶。
调试过程中,我们需要对电路、传感器、单片机等部分进行调整,以达到最佳效果。
四、实习成果通过本次实习,我们成功制作了一台智能循迹小车,并使其能够稳定、准确地行驶。
智能循迹小车实验报告第一篇:智能循迹小车实验报告摘要本设计主要有单片机模块、传感器模块、电机驱动模块以及电源模块组成,小车具有自主寻迹的功能。
本次设计采用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. 引言本文是对我在ABC科技公司实习期间参与的循迹小车项目进行总结和回顾。
循迹小车是一种能够根据指定轨迹自动行驶的智能小车,通过感应地面上的黑线来调整行进方向。
在实习期间,我参与了该项目的设计、搭建和调试工作。
2. 项目背景循迹小车项目是ABC科技公司为了提高生产效率和降低人力成本而推出的一项智能化解决方案。
该小车可以在工厂车间内自动巡航,根据预定的线路完成指定任务,如搬运物料、检测设备等。
3. 设计与搭建在项目开始之前,我与团队成员共同制定了小车的设计和功能需求。
我们决定使用Arduino开发板作为控制器,并选择了红外传感器作为检测黑线的装置。
在搭建过程中,我按照设计要求购买了所需零件,并亲自组装了小车的机械结构。
经过反复测试和调整,我们最终得到了一个紧凑且稳定的小车平台。
4. 程序设计为了实现小车的循迹功能,我编写了一段基于Arduino的程序。
首先,我们需要通过红外传感器检测地面上的黑线,然后根据检测结果调整电机的转动方向。
我通过编写函数和模块化的方法,使得程序结构清晰,易于理解和维护。
在实际运行过程中,我发现红外传感器的精度和环境因素对循迹效果有一定影响。
通过不断优化程序和调整传感器的位置,我最终解决了这个问题,并获得了较为稳定的循迹效果。
5. 调试与优化在完成小车搭建和程序设计之后,我们进行了一系列的调试工作。
通过调整电机的转速和响应时间,我们使得小车能够在不同的运行速度下准确地循迹。
同时,我们还对传感器进行了灵敏度的调整,并增加了一些异常情况的处理逻辑。
调试的过程充满了挑战,但也让我学到了很多解决问题的方法和技巧。
经过不断的尝试和优化,我最终使得小车实现了预期的功能,并达到了较高的稳定性和可靠性。
6. 实习总结通过参与循迹小车项目的实习经历,我获得了丰富的实践经验和技术知识。
在项目中,我学会了如何将理论知识应用于实际项目中,并与团队成员合作解决问题。
通过与工程师们的交流和学习,我了解了业界对于智能小车的需求和发展趋势。
一、实训目的通过本次单片机循迹小车实训,使学生掌握单片机的基本原理和编程方法,了解循迹小车的构造和工作原理,提高学生动手能力和实践能力,培养学生的创新精神和团队协作精神。
二、实训背景随着科技的不断发展,单片机在各个领域得到了广泛应用。
单片机具有体积小、功耗低、成本低、易于编程等优点,是现代电子设备的核心控制单元。
循迹小车作为一种典型的嵌入式系统,具有较好的应用前景。
通过本次实训,学生可以了解单片机在循迹小车中的应用,提高自己的实际操作能力。
三、实训内容1. 硬件部分(1)单片机:选用AT89C52单片机作为循迹小车的核心控制单元。
(2)循迹传感器:采用红外传感器,用于检测地面上的黑色轨迹线。
(3)电机驱动模块:选用L298N电机驱动模块,驱动直流电机。
(4)电源模块:采用可充电锂电池,为整个系统提供稳定的电源。
(5)其他辅助元件:如电阻、电容、二极管等。
2. 软件部分(1)系统初始化:设置单片机的IO口、定时器、中断等。
(2)循迹算法:根据红外传感器的输入信号,判断小车与轨迹线的相对位置,控制小车行驶方向。
(3)电机控制:根据循迹算法的结果,控制电机的转速和方向,实现小车的前进、后退、左转和右转等动作。
(4)数据通信:通过串口通信,将小车行驶过程中的数据传输到上位机。
四、实训步骤1. 硬件搭建(1)根据电路图,将各个模块连接起来。
(2)检查电路连接是否正确,确保各个模块正常工作。
2. 软件编程(1)编写系统初始化程序,设置单片机的IO口、定时器、中断等。
(2)编写循迹算法程序,根据红外传感器的输入信号,判断小车与轨迹线的相对位置。
(3)编写电机控制程序,根据循迹算法的结果,控制电机的转速和方向。
(4)编写数据通信程序,通过串口通信,将小车行驶过程中的数据传输到上位机。
3. 调试与优化(1)将编写好的程序烧录到单片机中。
(2)调试程序,观察循迹小车的运行状态。
(3)根据调试结果,优化循迹算法和电机控制程序。
创新设计与实践实训题目:基于S08单片机的自动寻迹小车设计专业班级:自动化学生姓名:学号:指导教师:王威设计地点:2010年12 月20 日创新设计与实训任务书绪论1.1 设计背景为加强大学生实践、创新能力和团队精神的培养,促进高等教育教学改革,受教育部高等教育司委托(教高司函[2005]201 号文,附件1),由教育部高等学校自动化专业教学指导分委员会(以下简称自动化分教指委)主办全国大学生智能汽车竞赛。
该竞赛以“立足培养、重在参与、鼓励探索、追求卓越”为指导思想,是以智能汽车为竞赛平台的多学科专业交叉的创意性科技竞赛,是面向全国大学生的一种具有探索性的工程实践活动,旨在促进高等学校素质教育,培养大学生的综合知识运用能力、基本工程实践能力和创新意识,激发大学生从事科学研究与探索的兴趣和潜能,倡导理论联系实际、求真务实的学风和团队协作的人文精神。
该竞赛分竞速赛与创意赛两类比赛。
竞速赛是在规定的模型汽车平台上,使用飞思卡尔半导体公司的8 位、16 位微控制器作为核心控制模块,通过增加道路传感器、电机驱动电路以及编写相应软件,制作一部能够自主识别道路的模型汽车,按照规定路线行进,以完成时间最短者为优胜。
创意赛在统一比赛平台上,充分发挥参赛队伍想象力,以特定任务为创意目标,完成研制作品,由竞赛专家组观摩作品现场展示、质疑、现场观众投票等环节,最终决定比赛名次。
该竞赛涵盖了控制、模式识别、传感技术、电子、电气、计算机、机械等多个学科知识。
该竞赛以飞思卡尔半导体公司为协办方,已成功举办了五届,曾得到了原教育部副部长吴启迪教授、原高教司张尧学司长及理工处领导、飞思卡尔公司与各高校师生的高度评价,已发展成全国26 个省(自治区)、直辖市的300 余所高校广泛参与的全国大学生智能汽车竞赛。
第三、四、五届连续被教育部批准列入国家教学质量与教学改革工程资助项目之一(附件2,教高函[2010]13 号)。
飞思卡尔公司在2010 年8 月26 与国家教育部国际合作交流司签署了关于“高等学校人才培养战略合作协议”,此协议将继续赞助全国大学生“飞思卡尔”杯智能汽车竞赛。
实习报告:循迹小车设计与实现一、实习背景与目的随着科技的不断发展,自动化技术在各个领域得到了广泛的应用。
循迹小车作为一种自动化设备,不仅可以用于娱乐和教育,还可以应用于工业、农业等领域。
本次实习旨在通过设计和制作循迹小车,掌握单片机原理、电路设计、传感器应用等技能,提高自己在自动化领域的实际操作能力。
二、实习内容与过程1. 设计思路在设计循迹小车时,首先需要确定设计思路。
通过对循迹小车的功能和性能要求进行分析,确定采用单片机作为控制核心,利用传感器检测路径,通过电机驱动实现小车的运动。
2. 硬件设计(1)单片机模块:选用51系列单片机作为控制核心,负责接收传感器信号,处理数据,发出控制命令。
(2)传感器模块:采用红外传感器检测路径,当传感器检测到黑线时,输出高电平信号。
(3)电机驱动模块:采用L298N电机驱动模块,负责驱动小车前进、后退和转向。
(4)电源管理模块:为整个系统提供稳定的电源供应。
(5)舵机控制模块:用于调整小车的方向。
3. 软件设计根据设计思路,编写单片机程序,实现对传感器的数据采集、处理和控制命令的发出。
程序主要包括以下部分:(1)传感器信号处理:通过判断传感器信号的变化,确定小车当前所处的状态。
(2)路径识别:根据传感器信号,判断小车是否偏离路径,并调整方向。
(3)速度控制:根据小车所处的状态,调整电机转速,实现速度控制。
(4)舵机控制:根据路径变化,调整舵机角度,使小车保持直线行驶。
三、实习成果与总结经过一段时间的紧张制作,循迹小车终于完成了。
在实际运行中,小车能够准确识别路径,稳定行驶。
通过本次实习,我收获颇丰,总结如下:1. 掌握了单片机原理和编程技巧,提高了自己在嵌入式系统领域的实际操作能力。
2. 学会了电路设计和搭建,熟悉了各种电子元器件的使用。
3. 了解了传感器在自动化设备中的应用,提高了自己在信息处理方面的能力。
4. 学会了团队合作,培养了沟通与协作能力。
总之,本次实习使我受益匪浅,为今后的学习和工作打下了坚实的基础。
智能寻迹小车实习报告一、实习背景与目的随着科技的不断发展,机器人技术在各行各业中得到了广泛的应用。
智能寻迹小车作为一种典型的移动机器人平台,具有在复杂环境中自主导航、避障和完成任务的能力。
本次实习旨在通过设计和制作智能寻迹小车,掌握电子元器件的识别、传感器、电机在控制作用下的具体机械构架,以及单片机控制原理等知识,提高自己在电子技术、机器人技术等方面的实际操作能力。
二、实习内容与过程1. 设计思路本次实习的智能寻迹小车主要通过单片机控制,利用红外线传感器检测地面上的特定标记(如黑线),实现寻迹功能。
同时,通过超声波传感器检测前方障碍物的距离,实现避障功能。
在保证小车能够准确跟随线路的同时,使其能够自动避开障碍物。
2. 硬件设计(1)单片机:选用高性能、低功耗的单片机作为核心控制器,负责处理传感器数据、执行避障和循迹算法,以及控制小车的运动。
(2)传感器模块:红外线传感器用于检测地面上的特定标记,实现寻迹功能。
超声波传感器用于检测前方障碍物的距离,实现避障功能。
(3)电机驱动模块:负责驱动小车的运动,包括前进、后退、转向等。
3. 软件设计软件设计主要涉及系统初始化、线路检测与循迹、避障检测与控制以及控制算法等。
通过编程实现对单片机的控制,使小车能够根据红外线传感器的信号准确跟随线路,并在遇到障碍物时能够自动避开。
4. 实习过程在实习过程中,首先进行了电子元器件的识别和学习,掌握了各种传感器、电机等元器件的工作原理和应用方法。
然后,根据设计思路,进行了硬件电路的搭建和调试,包括单片机、传感器、电机驱动模块等。
最后,进行了软件编程调试,使小车能够实现智能寻迹和避障功能。
三、实习成果与总结通过本次实习,我成功设计和制作了一款智能寻迹小车,掌握了电子元器件的识别、传感器、电机在控制作用下的具体机械构架,以及单片机控制原理等知识。
在实习过程中,我学会了如何将理论知识运用到实际操作中,提高了自己在电子技术、机器人技术等方面的实际操作能力。
循迹小车实验报告循迹小车实验报告引言:循迹小车是一种基于光电传感器的智能机器人,能够根据环境中的光线变化来调整行进方向。
本实验旨在通过搭建一个循迹小车模型,探索其原理和应用。
一、实验材料和方法本次实验所需材料包括Arduino开发板、直流电机、光电传感器、电池组等。
首先,我们将Arduino开发板与直流电机、光电传感器等器件进行连接,确保电路正常。
然后,将循迹小车放置在一个光线变化较大的环境中,例如黑白相间的地面。
最后,通过编写程序,使循迹小车能够根据光电传感器的信号来判断行进方向,并实现自动循迹。
二、实验过程和结果在实验过程中,我们首先对光电传感器进行了校准,以确保其能够准确地感知光线的变化。
然后,我们编写了一段简单的程序,使循迹小车能够根据光电传感器的信号来判断行进方向。
当光线较亮时,循迹小车向左转;当光线较暗时,循迹小车向右转。
通过不断调试程序,我们成功实现了循迹小车的自动循迹功能。
在实验过程中,我们还发现了一些有趣的现象。
例如,当循迹小车行进到黑白相间的地面上时,光电传感器能够准确地感知到黑白色块的变化,并根据信号进行相应的调整。
这说明循迹小车的循迹原理基于光线的反射和吸收,具有一定的环境适应性。
三、实验结果分析通过本次实验,我们深入了解了循迹小车的原理和应用。
循迹小车通过光电传感器感知环境中的光线变化,从而判断行进方向,实现自动循迹。
这种智能机器人在工业生产、仓储物流等领域具有广泛的应用前景。
然而,循迹小车也存在一些局限性。
首先,其循迹能力受到环境光线的影响较大,当环境光线较弱或过强时,循迹小车的准确性会受到一定的影响。
其次,循迹小车只能在特定的地面上进行循迹,对于其他类型的地面可能无法正常运行。
因此,在实际应用中,需要根据具体情况进行合理选择和调整。
四、实验总结通过本次实验,我们对循迹小车的原理和应用有了更深入的了解。
循迹小车作为一种基于光电传感器的智能机器人,具有自动循迹的功能,可以在工业生产、仓储物流等领域发挥重要作用。
一、实习目的本次电子实习旨在通过制作循迹小车,培养学生对电子电路、传感器、单片机应用及编程等知识的综合运用能力,提高学生的动手实践能力和创新意识。
通过实习,使学生掌握以下技能:1. 熟悉电子元器件的识别与选用;2. 掌握传感器的工作原理及在循迹小车中的应用;3. 学会单片机编程,实现小车循迹及避障功能;4. 培养团队协作精神和解决问题的能力。
二、实习内容1. 硬件设计(1)车架:选用轻便、坚固的塑料或木制材料制作车架,保证小车在行驶过程中的稳定性。
(2)传感器:选用红外传感器作为循迹传感器,用于检测地面上的黑线。
红外传感器应安装在车头两侧,保证对黑线的检测范围。
(3)电机驱动:选用直流电机作为动力来源,通过L298N电机驱动模块控制电机的正反转及速度。
(4)单片机:选用AT89S51单片机作为控制核心,编写程序实现小车循迹及避障功能。
2. 软件设计(1)循迹算法:通过红外传感器检测地面上的黑线,根据黑线与传感器的距离,调整单片机的PWM输出,控制电机速度,使小车保持直线行驶。
(2)避障算法:利用红外传感器检测前方障碍物,当检测到障碍物时,通过调整单片机的PWM输出,使小车改变行驶方向,绕过障碍物。
3. 实物组装与调试(1)按照设计图纸,将各元器件焊接在电路板上。
(2)将电路板安装到车架上,连接好传感器、电机驱动模块和电源。
(3)编写程序,实现小车循迹及避障功能。
(4)进行实地测试,调整参数,使小车性能达到最佳。
三、实习过程及心得体会1. 实习过程(1)查阅资料,了解循迹小车的工作原理及所需元器件。
(2)设计电路图,确定元器件清单。
(3)焊接电路板,组装小车。
(4)编写程序,实现循迹及避障功能。
(5)进行实地测试,调整参数。
2. 心得体会(1)通过本次实习,我对电子电路、传感器、单片机编程等知识有了更深入的了解,提高了自己的动手实践能力。
(2)在实习过程中,我学会了查阅资料、分析问题、解决问题,培养了团队协作精神。
智能循迹小车实验报告一、实验目的本次实验旨在设计并实现一款能够自主循迹的智能小车,通过传感器检测路径信息,控制小车的运动方向,使其能够沿着预定的轨迹行驶。
通过本次实验,深入了解自动控制、传感器技术和单片机编程等方面的知识,提高实际动手能力和问题解决能力。
二、实验原理1、传感器检测本实验采用红外传感器来检测小车下方的黑线轨迹。
红外传感器由红外发射管和接收管组成,当发射管发出的红外线照射到黑色轨迹时,反射光较弱,接收管接收到的信号较弱;当照射到白色区域时,反射光较强,接收管接收到的信号较强。
通过比较接收管的信号强度,即可判断小车是否偏离轨迹。
2、控制算法根据传感器检测到的轨迹信息,采用 PID 控制算法(比例积分微分控制算法)来计算小车的转向控制量。
PID 算法通过对误差(即小车偏离轨迹的程度)进行比例、积分和微分运算,得到一个合适的控制输出,使小车能够快速、准确地回到轨迹上。
3、电机驱动小车的动力由直流电机提供,通过电机驱动芯片(如 L298N)来控制电机的正反转和转速。
根据控制算法计算出的转向控制量,调整左右电机的转速,实现小车的转向和前进。
三、实验器材1、硬件部分单片机开发板(如 STM32 系列)红外传感器模块直流电机及驱动模块电源模块小车底盘及车轮杜邦线、面包板等2、软件部分Keil 等单片机编程软件串口调试助手四、实验步骤1、硬件搭建将红外传感器模块安装在小车底盘下方,使其能够检测到黑线轨迹。
将直流电机与驱动模块连接,并安装在小车底盘上。
将单片机开发板、传感器模块、驱动模块和电源模块通过杜邦线连接起来,搭建好实验电路。
2、软件编程使用单片机编程软件,编写传感器检测程序、控制算法程序和电机驱动程序。
通过串口调试助手,将编写好的程序下载到单片机开发板中。
3、调试与优化启动小车,观察其在轨迹上的行驶情况。
根据小车的实际行驶情况,调整 PID 控制算法的参数,优化小车的循迹性能。
不断测试和改进,直到小车能够稳定、准确地沿着轨迹行驶。
循迹避障小车实习报告一、实习目的与意义本次实习旨在通过设计和制作循迹避障小车,掌握嵌入式系统的基本原理和应用,培养实际操作能力和创新能力。
循迹避障小车是一种具有自动循迹和避障功能的智能小车,它可以在预设的路径上自动行驶,并在遇到障碍物时自动调整路径,实现自主导航。
二、实习内容与过程1. 设计思路在设计循迹避障小车时,我们首先确定了整体的设计思路:采用STM32单片机作为主控制器,通过循迹传感器检测路径,利用避障传感器检测障碍物,并根据检测结果控制小车的行驶方向和速度。
2. 硬件设计硬件设计主要包括单片机、循迹传感器、避障传感器、电机驱动器、电机等。
我们选择了STM32F103作为主控制器,因为它具有高性能和丰富的外设资源。
循迹传感器采用红外传感器,用于检测路径上的黑线;避障传感器也采用红外传感器,用于检测前方障碍物。
电机驱动器选用L298N,它可以驱动两个直流电机,实现小车的转向和前进。
3. 软件设计软件设计主要包括单片机的初始化、循迹检测、避障处理、电机控制等。
我们编写了相应的程序,实现了以下功能:(1)循迹功能:通过循迹传感器检测路径上的黑线,根据黑线的高低电平变化调整小车的行驶方向。
(2)避障功能:通过避障传感器检测前方障碍物,当检测到障碍物时,控制小车减速并调整行驶方向。
(3)遥控功能:通过遥控器实现小车的前进、后退、左转、右转等基本操作。
4. 实习结果经过反复调试,我们的循迹避障小车在预设的路径上能够自动行驶,并在遇到障碍物时能够自动避让。
此外,通过遥控器,我们可以实现对小车的远程控制。
三、实习收获与反思通过本次实习,我们深入了解了嵌入式系统的设计和应用,掌握了STM32单片机的编程和调试技巧,提高了实际操作能力和创新能力。
同时,我们也认识到在实际项目中,需要充分考虑硬件和软件的兼容性,以及系统的稳定性和可靠性。
总之,本次实习是一次富有挑战性和收获满满的实践过程。
我们将继续努力,将所学知识应用到实际项目中,为我国的嵌入式技术发展贡献自己的力量。
实习报告总结:制作循迹小车首先,我要感谢学校为我们提供了这次宝贵的实习机会,让我们能够通过制作循迹小车来提高自己的实践能力和创新能力。
在这次实习中,我学到了很多关于电子工程和嵌入式系统的知识,也锻炼了自己的动手能力。
接下来,我将对这次实习进行总结。
一、实习目标本次实习的主要目标是让我们了解并掌握循迹小车的基本原理和制作方法,通过实际操作,培养我们的动手能力、创新能力和团队协作能力。
二、实习内容在实习过程中,我们首先学习了循迹小车的工作原理和相关知识,然后分组进行设计和制作。
我们小组成员共同讨论,确定了使用STC12C5A60S2单片机作为控制核心,利用红外传感器检测黑线来实现循迹功能,同时使用超声波传感器进行避障。
我们还设计了电路图,并完成了电路板的焊接和调试。
最后,我们将电路板与小车车体相连,编写了控制程序,使小车能够实现循迹行驶和遇障停止的功能。
三、实习收获通过这次实习,我收获颇丰。
首先,我深入了解了循迹小车的原理和制作过程,掌握了单片机的基本应用和电路设计技巧。
其次,我在实际操作中锻炼了自己的动手能力,学会了如何解决实际问题。
此外,我还学会了如何与团队成员协作,共同完成任务。
这次实习让我明白了理论联系实际的重要性,也让我对电子工程和嵌入式系统产生了更浓厚的兴趣。
四、存在问题及改进措施在制作过程中,我们遇到了一些问题。
例如,电路板焊接过程中出现了短路现象,导致小车无法正常工作。
为了解决这个问题,我们重新检查了电路图,发现并修复了短路部位。
此外,我们还发现小车的循迹精度不高,需要进一步优化控制程序。
在今后的实践中,我们将努力学习相关知识,提高自己的技能,不断改进小车的性能。
五、总结总之,这次实习让我们受益匪浅。
我们不仅学到了很多关于电子工程和嵌入式系统的知识,还锻炼了自己的动手能力和团队协作能力。
通过制作循迹小车,我们深刻体会到了理论与实践相结合的重要性。
在今后的学习和工作中,我们将不断努力,将自己所学知识运用到实际中,为我国电子工程事业做出贡献。
一、实验目的本次实验旨在设计和实现一款基于电动驱动的循迹小车,通过红外传感器检测地面上的黑线,实现对小车行进路径的自动控制。
通过本次实验,掌握以下技能:1. 红外传感器的原理和应用;2. 单片机的编程和驱动控制;3. 电动小车的组装与调试;4. 掌握电路设计和调试方法。
二、实验原理1. 红外传感器原理:红外传感器通过发射红外线并接收反射回来的红外线来检测物体的存在。
当红外线照射到黑色路线上时,反射回来的红外线强度减弱,传感器检测到变化后,将信号传输给单片机。
2. 单片机控制原理:单片机接收到红外传感器的信号后,根据预设的程序控制小车的前进、后退、转弯等动作。
3. 电机驱动原理:电机驱动电路将单片机的控制信号转换为电机所需的电流,驱动电机旋转,从而实现小车的运动。
三、实验器材1. 电动小车底盘;2. 红外传感器模块;3. 单片机(如Arduino);4. 电机驱动模块(如L298N);5. 电池;6. 连接线;7. 电阻、电容等电子元件;8. 黑色纸带。
四、实验步骤1. 组装电路:将红外传感器模块、单片机、电机驱动模块、电池等元件按照电路图连接起来。
2. 编写程序:根据实验要求,编写单片机的控制程序。
程序主要包括以下功能:- 红外传感器数据采集;- 小车运动控制(前进、后退、转弯);- 电机驱动控制。
3. 调试程序:将编写好的程序烧录到单片机中,连接电池,观察小车是否能够按照预期路径行进。
4. 调整传感器位置:根据红外传感器的实际工作情况,调整传感器位置,确保传感器能够准确检测到地面上的黑线。
5. 调整电机速度:通过调整电机驱动模块的PWM信号,调整电机的转速,使小车运动平稳。
6. 优化程序:根据实验结果,对程序进行优化,提高小车的循迹精度和稳定性。
五、实验结果与分析1. 实验结果:经过调试,小车能够按照地面上的黑线行进,实现自动循迹。
2. 分析:- 红外传感器对光线敏感,容易受到环境光线干扰。
在光线较强或较弱的环境中,需要对传感器进行调整,以确保其正常工作。
循迹小车实训报告一、引言随着科技的不断发展,嵌入式系统在各个领域的应用越来越广泛。
循迹小车作为嵌入式系统的一个典型应用,具有很高的实用价值。
本次实训旨在通过设计和制作循迹小车,让学生掌握嵌入式系统的基础知识和实践技能,提高学生的动手能力和创新意识。
二、项目背景循迹小车是一种基于传感器和单片机控制的小型移动机器人,能够在预设的轨道上自动行驶。
它由传感器模块、单片机控制模块、电机驱动模块和舵机控制模块等组成。
循迹小车广泛应用于工业自动化、物流搬运、环境监测等领域。
三、项目目标1. 掌握循迹小车的工作原理和设计方法;2. 学会使用传感器、单片机、电机驱动模块和舵机等硬件;3. 熟悉C语言编程,编写循迹小车的控制程序;4. 培养团队合作精神和创新意识。
四、项目内容1. 硬件设计(1)传感器模块:采用红外对管作为传感器,用于检测轨道线。
(2)单片机控制模块:采用51单片机作为控制核心,负责处理传感器信号,控制电机驱动模块和舵机控制模块。
(3)电机驱动模块:采用L298N电机驱动芯片,驱动两个直流电机。
(4)舵机控制模块:采用SG90舵机,用于控制小车转向。
2. 软件设计(1)主程序:初始化各个模块,读取传感器信号,根据信号判断小车位置,控制电机驱动模块和舵机控制模块。
(2)中断服务程序:处理传感器中断,实时调整小车行驶方向。
3. 系统调试(1)硬件调试:检查电路连接是否正确,确保各个模块正常工作。
(2)软件调试:通过程序调试,使小车能够准确循迹。
五、项目实施1. 硬件制作(1)根据电路图,焊接传感器、单片机、电机驱动模块和舵机等元器件。
(2)搭建循迹小车车体,连接各个模块。
2. 软件编程(1)编写主程序,实现小车循迹功能。
(2)编写中断服务程序,实现小车转向功能。
3. 系统调试(1)调试硬件电路,确保各个模块正常工作。
(2)调试软件程序,使小车能够准确循迹。
六、项目成果1. 成功制作了一辆循迹小车,能够准确地在预设轨道上行驶。
可编辑修改精选全文完整版创新制作循迹小车制作报告班级:学号:姓名:一、设计方案路面检测模块电路检测路面信息,区分黑色与白面,并形成相对应的高电平与低电平提供给单片机;单片机对路面循迹模块提供的高低电平进行分析,并形成相应的对策(直行、左转、右转和停止等),并将其转化成对应的电压输出给电机驱动模块;电机驱动模块根据单片机提供的电压信号驱动对应的电机,得到与对策相同的执行动作;电源模块电路为三个模块提供所需要的电。
电路框图如下图所示:电路框图二、路面检测模块工作原理一对光电开光的发射管不停的发射红外光,经过路面发射回来的被接受管接收到。
因为白色路面和黑线对光的反射不同,所以正对白色路面的光电对管的接收管接收到更多的红外光,而正对黑线的光电对管的接收管收到较少的红外光。
经过光电开关的接收电路将接收到红外光的多少转化为正相关的电流大小,并进一步转化成接收电路的输出电压(A点电压)的较小值和较大值。
输出电压的较小值和较大值进一步与一个居中的基准电压分别进行比较,对应比较器的输出端(C点)分别为高电平还是低电平,并进一步输出给单片机,同时对应指示发光管的不亮与亮。
路面循迹模块电路如下图所示:D1路面循迹模块电路三、单片机最小系统单片机最小系统包括了时钟电路和复位电路。
时钟电路为单片机工作提供基本时钟,复位电路用于将单片机内部各电路的状态恢复到初始值。
单片机是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号下严格地按时序进行工作。
时钟电路用于产生单片机工作所需要的时钟信号。
时钟信号的产生是在MCS-51系列单片机内部有一个高增益反相放大器,其输入端引脚为XTAL1,其输出端引脚为XTAL2。
只要在XTAL1和XTAL2之间跨接晶体振荡器和微调电容,就可以构成一个稳定的自己振荡器。
复位电路由一个按键、电解电容和电阻组成,它是使CPU 和系统中的其他功能部件都恢复到一个确定的初始状态,并从这个状态开始工作。
制作循迹小车实习总结制作循迹小车实习总结篇一:电子实习报告智能循迹小车电子实习报告学院:电气学院专业班级:学生姓名:指导教师:完成时间:成绩:目录一、设计要求及注意事项...................................2二、设计的作用、目的...........................................2 三、设计的具体实现.......................................2 1.系统概述................................................. (2)2.单元电路设计(或仿真)与分析.................................3 (1)电源模块................................................... (3)(2)电机驱动模块........................................... (4)(3)简易控制模块........................................ (6)(4)红外循迹模块........................................... (7) 3.电路的安装与调试................................................ (8)(1)安装................................................ (8)(2)调试................................................ (10)四、心得体会,存在的问题和进一步改进的意见.......... (11)五、附录...........................................111.元件说明.................................................. (11)(1)电阻................................................ (11)(2)电解电容............................................ (11)(3)LED...................................................12(4)芯片...................................................12 电子实习报告一、设计要求及注意事项1.能独立完成设计内容并完全掌握其内部结构、工作原理和安装调试过程。
创新设计与实践实训题目:基于S08单片机的自动寻迹小车设计专业班级:自动化学生:学号:指导教师:王威设计地点:2010年 12 月 20 日创新设计与实训任务书绪论1.1 设计背景为加强大学生实践、创新能力和团队精神的培养,促进高等教育教学改革,受教育部高等教育司委托(教高司函[2005]201 号文,附件1),由教育部高等学校自动化专业教学指导分委员会(以下简称自动化分教指委)主办全国大学生智能汽车竞赛。
该竞赛以“立足培养、重在参与、鼓励探索、追求卓越”为指导思想,是以智能汽车为竞赛平台的多学科专业交叉的创意性科技竞赛,是面向全国大学生的一种具有探索性的工程实践活动,旨在促进高等学校素质教育,培养大学生的综合知识运用能力、基本工程实践能力和创新意识,激发大学生从事科学研究与探索的兴趣和潜能,倡导理论联系实际、求真务实的学风和团队协作的人文精神。
该竞赛分竞速赛与创意赛两类比赛。
竞速赛是在规定的模型汽车平台上,使用飞思卡尔半导体公司的8 位、16 位微控制器作为核心控制模块,通过增加道路传感器、电机驱动电路以及编写相应软件,制作一部能够自主识别道路的模型汽车,按照规定路线行进,以完成时间最短者为优胜。
创意赛在统一比赛平台上,充分发挥参赛队伍想象力,以特定任务为创意目标,完成研制作品,由竞赛专家组观摩作品现场展示、质疑、现场观众投票等环节,最终决定比赛名次。
该竞赛涵盖了控制、模式识别、传感技术、电子、电气、计算机、机械等多个学科知识。
该竞赛以飞思卡尔半导体公司为协办方,已成功举办了五届,曾得到了原教育部副部长吴启迪教授、原高教司尧学司长及理工处领导、飞思卡尔公司与各高校师生的高度评价,已发展成全国26 个省(自治区)、直辖市的300 余所高校广泛参与的全国大学生智能汽车竞赛。
第三、四、五届连续被教育部批准列入国家教学质量与教学改革工程资助项目之一(附件2,教高函[2010]13 号)。
飞思卡尔公司在2010 年8 月26 与国家教育部国际合作交流司签署了关于“高等学校人才培养战略合作协议”,此协议将继续赞助全国大学生“飞思卡尔”杯智能汽车竞赛。
1.2 设计的意义智能车竞赛与教育部已举办的数学建模、电子设计、机械设计、结构设计4大专业竞赛不同,是以迅猛发展的汽车电子为背景,涵盖了控制、模式识别、传感技术、电子、电气、计算机、机械等多个学科交叉的科技创意性比赛。
引导和激励学生实事、刻苦钻研、勇于创新、多出成果、提高素质,发现和培养一批在学术科技上有作为、有潜力的优秀人才。
1.3 设计所需的设备采用组委会提供的标准赛车底盘(赛车MATIZ,配备标准驱动电机RS-380SH、转向舵机和可充电蓄电池);单片机FREESCALE的8位单片机MC9S08AW60开发评估板;传感器采用红外反射式对管及触发电路;电机驱动采用基于33886芯片的H-Bridge驱动电路。
车模介绍◆车模:G768◆电机:RS380-ST/3545,◆舵机:FUTABA30102 总体设计2.1 小车系统可分为6个部分:◆电源管理:稳定电压,使系统电压稳定在要求的电压围◆光电传感器:检测路径,校正小车在跑道上的位置◆车速传感:实时检测小车当前的速度◆参数选择:根据小车当前的状态,确定算法的参数◆驱动电机:根据小车的速度、位置,增减速度◆转向电机:控制小车的方向2.2 跑道小车跑道宽度50CM,中间黑线20mm,小车从出发去出发,跑完一圈后,在起始线后1米围自动停下来。
3 硬件电路设计3.1 传感器的选择光电式传感器是利用光电器件把光信号转换成电信号的装置。
光电式传感器工作时,先将被测量转换为光量的变化,然后通过光电器件再把光量的变化转换为相应的电量变化,从而实现非电量的测量。
光电式传感器的核心(敏感元件)是光电器件,光电器件的基础是光电效应。
本设计采用采用A/D转换的光电对管红外光耦传感器,当发光二极管由A→B导通时,会发出红外线,经小车跑道散电动机的测速有很多方法,常见的有测速发电机测速、霍尔传感器测速、编码器测速、光电码盘测速等。
测速发电机测速适合大型电机的测速。
霍尔传感器测速的方法具有抗干扰能力强,准确可靠地特点,但是测速分度较低,结构也比较复杂。
编码器测速,不但使用方便,运行可靠稳定而且分辨率高,也是目前智能车大赛中普遍使用的测速装置,但是价格有点高。
我们将着重介绍光电码盘测速,这种测速方法比较简单、容易操作,而且编码器也是基于光电码盘测速的原理。
接下来的是电路部分,需要用到槽型光耦,槽型光耦的外形成一个“凹”字型,一边是个红外发射管另一边是接收管,它们都被塑料壳包起来,中间留了一条很细的窄缝,没有障碍物时接收管能接受到红外线,有东西挡住中间时接收管就接收不到了。
在选择槽型光耦时中间缝越细小说明管子性能越好。
从右图电路中可以看出没有遮挡时,发射管发出的光线直接被接收管接收,接收管导通集电极电位为低电平,当光线被遮挡时,接收管接受不到光线,处于截止状态,集电极为高电平,后面串了个CD40106BC施密特触发器的作用是对信号整形,遮光物体进入和离开时都有一个过程,这就使得信号变化也有一个过程,不是规则的方波,不能直接提供给MCU,加上施密特触发器以后,通过阀值触发,就变成规则的电平信号了。
将方波信号送入测ABCDVCC1KVCCOUT1码盘123456789101112131415164040vcc3.3 电源管理DC BLM29407.2VLM29405V5.7V3.4 转向电机1、舵机部结构:由舵盘、齿轮组、位置反馈电位计、直流电机、控制电路板等组成2、工作原理:脉宽信号给定参考位置,舵机部电路通过反馈控制调节舵盘角位。
舵盘角位由PWM控制信号的脉宽决定。
3、舵机基本参数:型号: S3010电压: 4.0 ~ 6.0 [V]角度控制:1°/ 400us工作速度: 0.16 + 0.02堵转力矩: 6.5 + 1.3 [ Kg.cm]4 系统软件设计在智能车系统的设计中,硬件是基础,没有一个好的硬件平台,软件就无法运行。
对于智能车系统来说,软件的核心是控制算法。
而完成这些任务的编程语言有汇编语言和C 语言。
软件部分是整个智能车系统的灵魂,在硬件方面各参赛队之间小异,真正体现各参赛队智能车的优势和最后决定比赛成绩好坏的往往是软件部分,尤其是核心控制算法的设计。
4.1 控制算法PID (Proportional Integral Differential )控制是比例、积分、微分控制的简称。
在自动控制领域中,PID 控制是历史最久、生命力最强的基本控制方式。
PID 控制器的原理是根据系统的被调量实测值与设定值之间的偏差,利用偏差的比例、积分、微分三个环节的不同组合计算出对广义被控对象的控制量。
常规PID 控制系统原理框图PID 控制算法可分为位置型和增量型两种:(1)位置型算法MC33886驱动电路电机外形模拟调节器的调节动作是连续的,任何瞬间的输出控制量 u 都对应于执行机构(如调节阀)的位置。
数字控制器的输出控制量也和阀门位置相对应,故称为位置型算式(简称位置式)。
(2)增量型算法增量型算法仅仅是在算法设计上的改进,其输出是相对于上次控制输出量的增量形式,并没有改变位置型算法的本质,即它仍然反映执行机构的位置开度。
如果希望输出控制量的增量,则必须采用具有保持位置功能的执行机构。
4.2 主程序流程图主程序流程图如图所示。
系统首先对设备进行初始化,然后选择进入参数修改程序。
参数设定完之后打开中断,最后循环执行位置速度控制程序。
4.3 程序的初始化初始化部分包括参数的读取、PID 初始化、定时器和脉冲计数器的初始化、I/O 端口的初始化、PWM 控制器的初始化和键盘显示控制器7279的初始化。
关键参数实时修改程序程序入口初始化是否进行参数修改?开中断读取光电传感器组的状态位置速度控制程序否是图4.2 初始化程序流程图4.4 位置速度控制程序首先读取前方传感器组的状态来判断赛车和黑线的位置关系,通过该位置关系给出相应的转向舵机的转角和电机的转速。
具体程序流程图如图。
图4.3 位置速度控制程序4.5 中断处理程序中断处理程序每20毫秒执行一次,中断处理函数的主要目的是定时读取脉冲计数器的值并把该值反馈给PID控制程序,然后调用PID控制程序。
图给出了程序流程图。
4.6 PID控制程序系统采用增量式的速度PID,具体流程图如图4.5 。
图4.5 PID控制程序5 系统调试5.1 开发工具程序的开发是在组委会提供的CodeWarrior IDE下进行的,包括源程序的编写、编译和,并最终生成可执行文件。
CodeWarrior 6.2 是面向以HC1和S12为CPU的单片机嵌入式应用开发软件包。
包括集成开发环境IDE、处理器专家库、全芯片仿真、可视化参数显示工具、项目工程管理器、C交叉编译器、汇编器、器以及调试器。
5.2 调试过程我们使用的是单片机本身配套的BDM,在调试时,把程序编译下载到S08AC60单片机,运行后可通过存窗口查看程序运行状况。
根据小车在模拟跑道上的状况调整参数,完善硬件、软件设计,最终达到理想的水平。
总结在此份报告中,我主要介绍了智能车准备的基本思路,包括电路、软件、以及最重要的控制算法的创新思想。
在电路方面,我们以模块形式分类,在电源管理、电机驱动、舵机驱动、传感器、速度检测,这五个模块分别设计,在查找资料的基础上确定合适的最优方案;然后我加以实验,最后以报告中所提到的形式决定了我们最终的电路。
在算法方面,我们使用C语言编程,利用比赛推荐的开发工具调试程序,经过小组成员不断讨论、改进,终于设计出一套比较通用的,稳定的程序。
在这套算法中,我们结合路况调整车速,做到直线加速,弯道减速,保证在最短时间跑完全程。
虽然成功的完成了智能车的设计制作,但是赛车的整体性能还有可提高的环节,我们在以下方面还有待于更大的提高。
路线识别方面,如果合理的调整红外装置,则可以更远的探测路线,以便做好弯道前的准备,这样便可以在直道上更充分的加速。
在循线算法方面,更多的阅读文献,查阅资料,可以使得理论更加成熟,也可以更有效的完善算法。
参考文献1 王威.嵌入式微控制器S08AW原理与实践[M].:航空航天大学,2009.2 杰. 传感器与检测技术[M].:高教,2004.3 邵贝贝龚光华.单片机认识与实践[M].:航空航天大学,2006.4 阎石.数字电子技术基础(第三版). :高等教育,19895 懂,瑢,金世俊.智能小车的多传感器数据融合.现代电子技术,2005,第六期6 臧杰,阎岩. 汽车构造[M]. . 机械工业.20057 长生.常用电子元器件使用一读通[M].. 人民邮电.20048 宗光华.机器人的创意设计与实践[M].. 航空航天大学.20049 伟等.Protel DXP高级应用[M].. 人民邮电.200210 文春. 汽车理论[M]..机械工业.200511 王晓明. 电动机的单片机控制[M].. 航空航天大学.2002附表2:程序源代码#include <hidef.h> /* for EnableInterrupts macro */#include "derivative.h" /* include peripheral declarations */#include <math.h>/*********************************定义舵机变量******************************************/int ad_data[12]; /*定义数组,存放12路ad转化后的值*/int ad_add=0;int ad_average=0 ;int AD,Turn;int mid_flag,left_close,right_close;charZhuanjiao[]={180,170,160,150,140,130,121,113,106,100,95,90,85,80,74,67,59,50,40,30,20,10,0}; int flag0,flag1,flag2,flag3,flag4,flag5,flag6,flag7,flag8,flag9,flag10,flag11;/*********************************定义电机变量******************************************/#define Stop1 TPM2C0V=2500;PTCD_PTCD6=0;PTFD_PTFD7=0;//能耗#define Stop2 TPM2C0V=1500;PTCD_PTCD6=1;PTFD_PTFD7=0;//反转int cangshu[]={6,6,6,5,5,4,4,3,3,0,0,0,0,0,-3,-3,-4,-4,-5,-5,-6,-6,-6,};//char ShuruSudu[]={35,35,35,35,38,38,40,40,42,42,45,45,45,42,42,40,40,38,38,35,35,35,35}; //char Shuruspeed[]={23,23,23,23,24,25,26,27,28,29,35,35,35,29,28,27,26,25,24,23,23,23,23}; //冲出跑道char Shuruspeed[]={12,12,12,13,14,15,16,17,18,19,20,20,20,19,18,17,16,15,14,13,12,12,12};//刚好// char Shuruspeed[]={8,8,8,7,7,8,9,9,10,11,13,13,13,11,10,9,9,8,7,7,8,8,8};int speed,a,b;int u=0;int v,w;int uk;int m,n;int zw[]={0,0,0,0,0,0,0,0,0,0,0};int r;int l[]={0};int circle=0;typedef struct{int NextPoint;int ThisPoint; //设定目标 Desired valueint Kp; //比例常数 Proportional Constint Ki; //积分常数 Integral Constint Kd; //微分常数 Derivative Constint LastError; //Error[-1]int PrevError; //Error[-2]int SumError; //Sums of Errors} speedPID ;speedPID sPID; /* *pp=&sPID; */typedef struct{int NextPoint;int ThisPoint; //设定目标 Desired valueint Kp; //比例常数 Proportional Constint Ki; //积分常数 Integral Constint Kd; //微分常数 Derivative Constint LastError; //Error[-1]int PrevError; //Error[-2]int SumError; //Sums of Errors} steerPID ;steerPID DjPID; /*, *pp=&DjPID; *//*************************************************************************/void ADCInit(void){ADC1CFG=0X00; /*A/D初始化,高速模式,8位精度,ADCK=总线频率*/ADC1SC2=0X00; /*软件触发,比较功能禁止*/APCTL1=0XFF; /*AD0~AD7使能*/APCTL2=0XFF; /*AD8-AD15使能*/ADC1SC1=0X00; /*禁止转换完成中断,单词转换,选择AD0,并启动了转换*/}/*************************************************************************/void get_data(void){ad_add=0; /*采集*/ADC1SC1=0X00; /*选择AD通道0,若转化没有结束则等待,否则将转化结果存放入ad_data[0]中*/for(;!ADC1SC1_COCO;);ad_data[0]=ADC1RL;ad_add=ad_add+ad_data[0] ;ADC1SC1=0X01;for(;!ADC1SC1_COCO;);ad_data[1]=ADC1RL;ad_add=ad_add+ad_data[1] ;ADC1SC1=0X02;for(;!ADC1SC1_COCO;);ad_data[2]=ADC1RL;ad_add=ad_add+ad_data[2] ;ADC1SC1=0X03;for(;!ADC1SC1_COCO;);ad_data[3]=ADC1RL;ad_add=ad_add+ad_data[3] ;ADC1SC1=0X04;for(;!ADC1SC1_COCO;);ad_data[4]=ADC1RL;ad_add=ad_add+ad_data[4];ADC1SC1=0X05;for(;!ADC1SC1_COCO;);ad_data[5]=ADC1RL;ad_add=ad_add+ad_data[5] ;ADC1SC1=0X06;for(;!ADC1SC1_COCO;);ad_data[6]=ADC1RL;ad_add=ad_add+ad_data[6] ;ADC1SC1=0X07;for(;!ADC1SC1_COCO;);ad_data[7]=ADC1RL;ad_add=ad_add+ad_data[7];ADC1SC1=0X08;for(;!ADC1SC1_COCO;);ad_data[8]=ADC1RL;ad_add=ad_add+ad_data[8];ADC1SC1=0X09;for(;!ADC1SC1_COCO;);ad_data[9]=ADC1RL;ad_add=ad_add+ad_data[9] ;ADC1SC1=0X0A;for(;!ADC1SC1_COCO;);ad_data[10]=ADC1RL;ad_add=ad_add+ad_data[10];ADC1SC1=0X0B;for(;!ADC1SC1_COCO;);ad_data[11]=ADC1RL;ad_add=ad_add+ad_data[11];ad_average= ad_add /7;/*************************************************************************/ if(ad_data[0]>=ad_average){flag0=1;}if(ad_data[0]<ad_average){flag0=0;}if(ad_data[1]>=ad_average){}if(ad_data[1]<ad_average) {flag1=0;}if(ad_data[2]>=ad_average) {flag2=5;}if(ad_data[2]<ad_average) {flag2=0;}if(ad_data[3]>=ad_average) {flag3=700;}if(ad_data[3]<ad_average) {flag3=0;}if(ad_data[4]>=ad_average) {flag4=8;}if(ad_data[4]<ad_average) {flag4=0;}if(ad_data[5]>=ad_average) {flag5=1100;}if(ad_data[5]<ad_average) {flag5=0;}if(ad_data[6]>=ad_average) {flag6=13;}if(ad_data[6]<ad_average) {}if(ad_data[7]>=ad_average){flag7=1500;}if(ad_data[7]<ad_average){flag7=0;}if(ad_data[8]>=ad_average){flag8=17;}if(ad_data[8]<ad_average){flag8=0;}if(ad_data[9]>=ad_average){flag9=1900;}if(ad_data[9]<ad_average){flag9=0;}if(ad_data[10]>=ad_average){flag10=21;}if(ad_data[10]<ad_average){flag10=0;}if(ad_data[11]>=ad_average){flag11=2300;}if(ad_data[11]<ad_average){flag11=0;}AD=flag0+flag1+flag2+flag3+flag4+flag5+flag6+flag7+flag8+flag9+flag10+flag11;/**********************************************************************************/if(right_close==0){if(AD== 1){Turn=0;mid_flag=0;left_close=1;}if(AD== 301){Turn=1;mid_flag=0;left_close=1;}if(AD== 300){Turn=2;mid_flag=0;left_close=1;}if(AD== 305){Turn=3;mid_flag=0;left_close=1;}if(AD== 5){Turn=4; mid_flag=0;left_close=1;}if(AD== 705){Turn=5; mid_flag=0;left_close=1;}if(AD== 700){Turn=6;mid_flag=0; left_close=1;}if(AD== 708){Turn=7;mid_flag=0; left_close=1;}if(AD== 8){Turn=8; mid_flag=0;left_close=1;}}if(AD== 1108){Turn=9;mid_flag=1;left_close=0;right_close=0; }if(AD== 1100)Turn=10; mid_flag=1;left_close=0;right_close=0; }if(AD== 1113){Turn=11;mid_flag=1;left_close=0;right_close=0; }if(AD==13){Turn=12;mid_flag=1;left_close=0;right_close=0; }if(AD== 1513){Turn=13;mid_flag=1;left_close=0;right_close=0; }if(left_close==0){if(AD== 1500){Turn=14; mid_flag=0; right_close=1;}if(AD== 1517){Turn=15; mid_flag=0;right_close=1;}if(AD== 17){Turn=16; mid_flag=0; right_close=1;}if(AD== 1917){Turn=17; mid_flag=0; right_close=1;}if(AD== 1900){Turn=18; mid_flag=0; right_close=1;}if(AD== 1921){Turn=19;mid_flag=0; right_close=1;}if(AD== 21){Turn=20; mid_flag=0; right_close=1;if(AD== 2321){Turn=21; mid_flag=0; right_close=1;}if(AD== 2300){Turn=22;mid_flag=0; right_close=1;}}}/*************************PID初始化**********************/void PIDInit(void){sPID.ThisPoint=0; //设定目标 Desired valuesPID.Kp=0; //比例常数 Proportional ConstsPID.Ki=0; //积分常数 Integral ConstsPID.Kd=0; //微分常数 Derivative ConststError=0; //Error[-1]sPID.PrevError=0; //Error[-2]sPID.SumError=0; //Sums of ErrorsDjPID.ThisPoint=0; //设定目标 Desired value 302DjPID.Kp=1; //比例常数 Proportional Const 50DjPID.Ki=1; //积分常数 Integral ConstDjPID.Kd=3; //微分常数 Derivative ConststError=0; //Error[-1]DjPID.PrevError=0; //Error[-2]DjPID.SumError=0; //Sums of Errors}/*************************IO初始化**********************/void IOInit(void){PTGDD_PTGDD4=0; //G4复位按键PTGPE_PTGPE4=1;PTGDD_PTGDD3=1; /*G3连接计数芯片4040清零管脚,高电平清零*/ PTGD_PTGD3=0;PTGDD_PTGDD1=1; /*G1拉高蜂鸣器,高电平有效,强驱动*/PTGDS_PTGDS1=1;PTGD_PTGD1=1;PTGD_PTGD1=0;PTEDD=0x00; /*E 测速计数输入*/PTCDD_PTCDD6=1; /*C6连接驱动芯片386的IN1*/PTFDD_PTFDD7=1; /* F7连接驱动芯片386的IN2*/PTCD_PTCD6=0;PTFD_PTFD7=1;}/*************************时钟初始化**********************/void ICGInit(void){ICGC1=0x78; /*fll系数为p=1,外部晶振*/ICGC2=0x20; /*倍频因子N=8,分频因子R=1*/}/*************************电机舵机初始化**********************/void servoInit(void){TPM2SC=0x0F; /*总线时钟128分频*/TPM2MOD=2500;TPM2C1SC=0x28; /*舵机初始化------通道0设置边缘对齐的PWM,中断请求不允许*/ TPM2C1V=185;TPM2C0SC=0x28; /*电机初始化------通道0设置边缘对齐的PWM,中断请求不允许*/ TPM2C0V=0; /*设定初始占空比,舵机处于中间位置*/}/*************************延时****************************/void delay(int de){while(de--){ __RESET_WATCHDOG();}}void delay1(int de){int i=100;while(de--)while(i--)__RESET_WATCHDOG();}void delay2(int count) /* 延时子程序*/{int i,j,k;for(i=0;i<count;i++){for(j=0;j<100;j++){for(k=0;k<800;k++){__RESET_WATCHDOG(); /*复位看门狗计数器*/}}}}/*************************溢出中断处理****************** **/ interrupt VectorNumber_Vtpm3ovf void TPM3OVF_ISR(void){DisableInterrupts;if((TPM3SC & 0x80)==0x80){TPM3SC_TOF = 0;}speed=PTED&0x3F;;PTGD_PTGD3=1;//计数器清零PTGD_PTGD3=0;if((Turn>7)&&(Turn<15)){l[0]=1;}else{l[0]=0;if(Turn>14) r=1;if(Turn<8) r=2;}zw[10]=zw[9];zw[9]=zw[8];zw[8]=zw[7];zw[7]=zw[6];zw[6]=zw[5];zw[5]=zw[4];zw[4]=zw[3];zw[3]=zw[2];zw[2]=zw[1];zw[1]=zw[0];zw[0]=l[0];EnableInterrupts;}/*********************速度PID****************************/int speedPIDCalc (speedPID *pp){int Error,dError;Error=pp->ThisPoint-pp->NextPoint; //偏差e(k)pp->SumError+=Error; //积分 e(1)+e(2)+*******dError=Error-pp->LastError; //当前微分pp->PrevError=pp->LastError;pp->LastError=Error;if((w>=1500)||((Turn>14)||(Turn<8)))sPID.Kp=80; // 110sPID.Ki=0; // 0sPID.Kd=10; // 10}else{ // 145sPID.Kp=180; // 1sPID.Ki=0; // 15sPID.Kd=5;}return (pp->Kp*Error+pp->Ki*pp->SumError/50+pp->Kd*dError);}/*********************舵机PID****************************/int steerPIDCalc (steerPID *pp){int dError,Error;Error=pp->ThisPoint-pp->NextPoint; //偏差pp->SumError+=Error; //积分dError=pp->LastError-pp->PrevError; //当前微分pp->PrevError=pp->LastError;pp->LastError=Error;return (pp->Kp*Error+pp->Ki*pp->SumError/2500+pp->Kd*dError); }/*********************舵机控制****************************/void SteerContral(void){int djpid;DjPID.NextPoint=0;DjPID.ThisPoint=Zhuanjiao[Turn]; //turn为黑线位置if(v>0){djpid=v;}else{djpid=101+steerPIDCalc(&DjPID);}v=0;TPM2C1V=djpid;a=TPM2C1V;}/*********************电机控制****************************/void SpeedContral(void)if(circle>=2){TPM2C0V=2500;PTCD_PTCD6=0;PTFD_PTFD7=0;for(;;){__RESET_WATCHDOG();}}else{sPID.NextPoint=speed;sPID.ThisPoint=Shuruspeed[Turn];if(u>0){uk=u;}else{uk=speedPIDCalc(&sPID);}u=0;TPM2C0V=uk;w=TPM2C0V;}}/*********************起始延时***************************/ void Start_Key(void){for(;;){if(PTGD_PTGD4==0){delay1(1);if (PTGD_PTGD4==0){delay2(10) ;EnableInterrupts;break ;}}__RESET_WATCHDOG();}}/********************起始线识别*******************************////////////////void StartLine(){if((ad_data[7]<=30||ad_data[8]<=30)&&ad_data[10]>=70&&(ad_data[5]>=100||ad_data[6]>=100)&&(a d_data[3]<=30||ad_data[4]<=30)&&ad_data[1]>=70){circle++ ;PTGD_PTGD6=1;delay(8000);PTGD_PTGD6=0;}}///************************************************************************////void main(void){IOInit();ICGInit();ADCInit();servoInit();PIDInit();// SOPT_COPE=0;TPM3SC = 0x4F; /*总线时钟128分频*/TPM3MOD = 2500;DisableInterrupts;// EnableInterrupts;Start_Key();for(;;){get_data(); // // //StartLine();n=zw[10]*1024+zw[9]*512+zw[8]*256+zw[7]*128+zw[6]*64+zw[5]*32+zw[4]*16+zw[3]*8+zw[2]*4+zw[1] *2+zw[0];m=zw[6]*64+zw[5]*32+zw[4]*16+zw[3]*8+zw[2]*4+zw[1]*2+zw[0];if((m==124)||(m==120)||(m==112)) /////// //直道入弯{if((speed>4)&&(r==1)){// v=TPM2C1V-(Turn-14)*speed;Stop1;}if((speed>4)&&(r==2)){// v=TPM2C1V+(8-Turn)*speed;Stop1;}u=100*speed*(abs(Turn-12));r=0;SteerContral();SpeedContral();}////////////// ////大S道else if(m==0){if(speed>12){ Stop1;TPM2C1V=TPM2C1V+cangshu[Turn]*speed;}else{PTCD_PTCD6=0;PTFD_PTFD7=1;u=90000/(speed*(abs(Turn-12)));//+speedPIDCalc(&sPID) }SteerContral();SpeedContral();}else{if(Turn==10||Turn==11||Turn==12){if(speed<13){u=2500;PTCD_PTCD6=0;PTFD_PTFD7=1;}else if(speed>20){Stop1;u=70*speed;}else{u=14000/speed ; //u=900PTCD_PTCD6=0;PTFD_PTFD7=1;}v=191;SteerContral();SpeedContral();}if(((Turn > 6) && (Turn < 10)) && ((speed > 3)&&(speed<13))) {PTCD_PTCD6=0;PTFD_PTFD7=1;u=50000/(speed*(12-Turn)) ; //u=1250SpeedContral();}if(((Turn > 12) && (Turn < 16)) && ((speed > 3)&&(speed<13))) {PTCD_PTCD6=0;PTFD_PTFD7=1;u=50000/(speed*(Turn-12)); //u=1250SpeedContral();}if(((Turn > 6) && (Turn < 10)) && (speed > 12)){Stop1;u=25*speed*(12-Turn);SpeedContral();}if(((Turn > 12) && (Turn < 16)) && (speed > 12)){Stop1;u=25*speed*(Turn-12);SpeedContral();}if(((Turn> 3) && (Turn < 7)) && (speed <10)){PTCD_PTCD6=0;PTFD_PTFD7=1;u=30000/(speed*(12-Turn));SpeedContral();}if(((Turn> 15) && (Turn< 19)) && (speed <10)){ PTCD_PTCD6=0;PTFD_PTFD7=1;u=30000/(speed*(Turn-12));SpeedContral();}if(((Turn > 3) && (Turn < 7)) && (speed > 9)) { Stop1;u=15*speed*(12-Turn);SpeedContral();}if(((Turn> 15) && (Turn < 19)) && (speed > 9)) {Stop1;u=15*speed*(Turn-12);SpeedContral();}if(((Turn> 18) || (Turn< 4)) && (speed < 8)) { PTCD_PTCD6=0;PTFD_PTFD7=1;if(Turn > 18){u=10000/(speed*(Turn-12));}if(Turn <4){u=10000/(speed*(12-Turn));}SpeedContral();}if(((Turn > 18) || (Turn< 4)) && (speed >10)) {Stop1;u=20*(abs(Turn-12))*speed;SpeedContral();}else{PTCD_PTCD6=0;PTFD_PTFD7=1;SpeedContral();}SteerContral();}__RESET_WATCHDOG();}}附3:红外传感器参数说明该红外传感器(ST188)的特点是采用高发射功率红外光电二极管和高灵敏度光电晶体管组成,采用非接触式检测方式。