分享
安徽工程大学.pdf
下载文档

ID:3494911

大小:2.29MB

页数:45页

格式:PDF

时间:2024-05-16

收藏 分享赚钱
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
安徽 工程 大学
I 第十一届“恩智浦”杯全国大学生 智能汽车竞赛 技技 术术 报报 告告 学 校:安徽工程大学 队伍名称:金枪鱼队 参赛队员:张国义 曹鹏飞 莫雄飞 带队教师:王冠凌 王春亭 II III 摘要 本文是以第十一届“恩智浦”杯全国大学生智能汽车竞赛为背景,介绍了CCD 巡线小车系统的软硬件结构。本次设计的智能车系统以 MKL26Z256VLL4微控制器为核心控制单元,通过 TSL1401 线性 CCD 模块,对赛道的边界进行识别,以检测出赛道元素;通过 futaba 3010 舵机进行方向的变化;通过龙邱 512 线3 相增量式编码器进行电机转速的测量。在获取上述信息的情况下,处理器对得到的信息进行处理,利用 PID 控制算法进行计算,得到输出量以此控制舵机转向和驱动电机并控制转速。该系统实现了 C 车模的速度控制和方向控制,涉及了电路设计,机械设计,算法策略等等。后期对车模的各项控制参数进行调节,以此达到更快的车速和车模稳定性。关键词:MKL26、CCD、PID 算法、参数调节算法、参数调节 IV 目录 引言引言.1 1 第一章第一章 系统整体方案设计系统整体方案设计.2 2 1.1 概述.2 1.2 系统总体方案的选定.2 1.3 硬件电路设计.3 1.4 软件方案.3 第二章第二章 智能车机械结构与优化智能车机械结构与优化.4 4 2.1 车模的机械结构.4 2.2 线性 CCD 支架安装.5 2.3 编码器的安装.6 2.4 舵机的安装.7 2.5 车轮结构.8 2.6 小结.10 第第三三章章 硬件电路设计硬件电路设计.1111 3.1 主控制板设计.11 3.1.1 概述.11 3.1.2 电源模块电路.11 3.1.3 起跑线检测模块.12 3.2 驱动板电路.14 3.2.1 专用栅极驱动芯片的选择.14 3.2.2 MOSFET 的选择.14 3.2.3 控制逻辑电路设计.15 3.3 线性 CCD 电路.16 3.4 PCB 板.17 第四章第四章 智能车控制软件设计智能车控制软件设计.1818 4.1 主程序流程图.18 4.2 主要程序说明.19 V 4.2.1 线性 CCD 传感器.19 4.2.2 速度控制.21 4.2.3 方向控制.25 4.3 小结.26 第五章第五章 系统开发及调试工具系统开发及调试工具.2727 5.1 开发环境.27 5.2 上位机调试软件.27 第六章第六章 车模主要参数车模主要参数.2 29 9 6.1 智能车外形参数.29 6.2 智能车技术参数.29 第七章第七章 总结总结.3030 参考文献.3131 附录一.3232 附录二.4040 1 引言 全国大学生智能汽车竞赛是以智能汽车为研究对象的创意性科技竞赛,是面向全国大学生的一种具有探索性工程实践活动,是教育部倡导的大学生科技竞赛之一。本竞赛以“立足培养,重在参与,鼓励探索,追求卓越”为指导思想,旨在促进高等学校素质教育,培养大学生的综合知识运用能力、基本工程实践能力和创新意识,激发大学生从事科学研究与探索的兴趣和潜能,倡导理论联系实际、求真务实的学风和团队协作的人文精神,为优秀人才的脱颖而出创造条件。本竞赛以竞速赛为基本竞赛形式,辅助以创意赛和技术方案赛等多种形式。竞速赛以统一规范的标准硬软件为技术平台,制作一部能够自主识别道路的模型汽车,按照规定路线行进,并符合预先公布的其他规则,以完成时间最短者为优胜。创意赛是在统一限定的基础平台上,充分发挥参赛队伍想象力,以创意任务为目标,完成研制作品;竞赛评判由专家组、现场观众等综合评定。技术方案赛是以学术为基准,通过现场方案交流、专家质疑评判以及现场参赛队员和专家投票等互动形式,针对参赛队伍的优秀技术方案进行评选,其目标是提高参赛队员创新能力,鼓励队员之间相互学习交流。本竞赛过程包括理论设计、实际制作、整车调试、现场比赛等环节,要求学生组成团队,协同工作,初步体会一个工程性的研究开发项目从设计到实现的全过程。竞赛融科学性、趣味性和观赏性为一体,是以迅猛发展、前景广阔的汽车电子为背景,涵盖自动控制、模式识别、传感技术、电子、电气、计算机、机械与汽车等多学科专业的创意性比赛。本竞赛规则透明,评价标准客观,坚持公开、公平、公正的原则,保证竞赛向健康、普及、持续的方向发展。在制作此次比赛车模的过程中,从机械结构到硬件设计,再到软件修改,都经历了很多挫折,也经过了多次修改和调试,最终确定了这么一套系统。在这份报告中,我们主要从车模总体方案,硬件搭建,电路说明,软件编写等方面详细地对我们队的车模进行介绍。2 第一章第一章 系统整体系统整体方案设计方案设计 1.1 概述 根据第十一届“恩智浦”杯全国大学生智能汽车竞赛对光电组竞赛的规则,我们选用了规定的 C 车模,采用飞思卡尔 32 位微控制器 MKL26Z256VLL4 作为核心控制单元,自主设计了主控制板和驱动电路板,以及光电管起跑线检测模块电路。利用线性 CCD 采集的赛道信息,通过算法实现小车的自主巡线和不同赛道的适应。因 C 车模有四轮着地,且前轮是由 3010 舵机控制车模的转向,后轮是由两个电机分别驱动的结构。我们分析了车体机械结构对小车运动性能的影响。依据第十一届智能车竞赛规则对车模进行了合理的改造,尤其是对前轮的处理,以此达到更加轻巧、稳固的机械结构。同时,硬件电路的设计也是参考了很多相关的书籍,利用我们平时所学的知识,不断地进行改进和合理化,以此达到电路的最优化,稳定和防干扰性。在后期的调试过程中,也是深入了解了 PID 调节,算法优化等等方面,以此提高程序的高效性。在本报告中,我们将对整车系统的方案,硬件电路设计,机械结构设计,软件算法等方面逐一介绍,这是我们队每一个成员在过去几个月中辛苦研究探讨所得。当然,通过做智能车比赛,我们学习到了机械,硬件电路,计算机,控制等等诸多方面的知识,同时,也是对我们自身动手能力的锻炼和创新意识的培养,相信对我们每一个人都将是有着很大的意义。1.2 系统总体方案的选定 为了满足比赛规则对于光电组竞赛的要求,本次设计的智能车系统采用飞思卡尔的 32 位微控制器 MKL26Z256VLL4 单片机作为核心控制单元用于智能车的控制。利用 TSL1401 线性 CCD 采集赛道信息,可以将传感器采集到的赛道亮度信息转换为电压值,利用单片机的 ADC 功能进行采集;利用龙邱 512 线 3 相增量式编码器与齿轮的机械连接以获取电机转速脉冲,单片机获取这些脉冲后以计算出相应电机转速。通过获取以上这些信息,单片机经过处理给出相应的 PWM 值给 futaba 3010舵机,以控制舵机的转动,从而控制整个车模的转向。同时,在调试过程中,我们利用 OLED 显示赛道边界和中线信息,以及各项 PID 参数和速度参数设置,结合按键和拨码开关,以此控制参数的变化达到调试的作用;另外,利用单片机的串口功能和蓝牙模块,传输数据,结合 PC 上位机得到车模在赛道上运行的各项参数信息。并且,比赛规则中要求我们检测出起跑线并停车,所以我们利用两个TCRT5000 光电管检测黑线,以检测出起跑线,检测信号回传给单片机,从而做出电机制动。如图 1.1 即为整个智能车系统的结构框图。3 图 1.1 系统结构框图 1.3 硬件电路设计 车模系统的硬件电路是整个系统的基础,它保证了软件算法的稳定运行和相关信息的采集。考虑到 C 车车模的四轮着地性,以及信号的干扰因素,我们将驱动电路和主控制电路分开,分别放在舵机后和电机上。并且在主控制板上整合了光电管检测模块电路分别放在电路板两侧,刚好可以检测到赛道中间两侧的黑线。而主控制板和驱动板通过软排线连接完成两板之间的通信,线性 CCD 也通过软排线连接到主板上以及舵机线的安插。以此保证整车系统的简洁美观。1.4 软件方案 智能车系统通过线性 CCD 获取赛道边界的信息,程序检测灰度信息的跳变沿来检测黑线,计算智能车距离中线的偏差,从而获取准确的车模行驶偏移量。随后采用 PID 算法对电机的转速进行速度闭环控制,同时,对舵机的方向的控制是基于 PID 的模糊控制,并且加入了非线性增益,以使舵机的转向更加平滑。通过软件的这些实时控制,使智能车在赛道中行驶。MKL26 微控制器 龙邱编码器 线性 CCD 电机 TCRT5000光电管 Futaba3010舵机OLED 蓝牙 按键和拨码开关 4 第二章 智能车机械结构与优化 智能车各系统的控制都是在机械结构的基础上实现的,因此在设计整个软件架构和算法之前一定要对整个模型车的机械结构有一个清晰的认识,要针对具体的设计方案来调整车模的机械结构,并在实际的调试过程中,不断地改进优化和提高结构的稳定性。本章主要介绍 C 车模系统的各结构设计。2.1 车模的机械结构 本次比赛选用东莞市博思电子数码科技有限公司的 C 型车模,其长度为28.5cm,宽度为 16cm,有两个 RN_260 电机,配以 FUTABA3010 舵机。对于光电组来说,C 型车模的选用,利于速度的提升,并且有极好的调零装置,可以自由组装。如图 2.1 所示。图 2.1 C 型车模 车模上的两个电机位置不能改变,可以改变位置的结构只有电池,主控制板,驱动板的位置,同时,CCD 固定杆的长度不仅影响着前瞻,而且过长的杆长也会导致 CCD 的不稳定性,必将影响 CCD 读取赛道信息的准确性。同时,舵机的安装也起着很重要的作用,它控制着整个车模的转向,并且,不合理的安装也将导致车模的跳轮和震动。所以,经过不断地调试,最终确定如图 2.2 的车模机械结构。5 图 2.2 整车车模结构 如图 2.2 所示,主控制板和电池分别放在 CCD 固定支架的两侧,而驱动板利用限位螺丝孔放置在两电机上方。CCD 支架的高度为 32cm,垂直固定在整辆车模的正中央位置。2.2 线性 CCD 支架安装 为了减小高杆上方的重量,我们利用碳素杆将线性 CCD 固定在碳纤维管,这种碳纤维管强度高,重量轻,性能稳定。同时,利用圆法兰光轴固定座将碳纤维管固定在车模中央。这样的搭建结构,可以用很轻的质量获得较好的稳定度,支架的刚度也有所保证,便于拆卸。而 CCD 的前瞻决定着赛道的判断,所以,这样的一套稳定可靠的固定结构是必须具备的。如图 2.3 所示即为 CCD 安装图。6 图 2.3 CCD 的安装 2.3 编码器的安装 编码器是检测电机转速的重要器件,这里我们没有采用体积,重量较大的欧姆龙编码器,这对整个车模的后部的稳定性势必产生重大影响,而是选用了体积小,质量轻,稳定性高的龙邱 512 线 3 相增量式编码器。外壳直径为 14mm,长度为 18mm,输出信号类型为 CMOS 信号,抗干扰能力强,不需上拉电阻,直接喝单片机相连接,供电电压为 3.3V 到 5v,同时,编码器可输出编码器的运转方向,即不需要正交解码也可以完成方向识别。我们配合齿轮的咬合和相应编码器支架的固定,最后确定了如图 2.4 所示的编码器固定结构。当然,齿轮咬合要求传动流畅又不易打齿,使车子在行进时不会发出很大噪声,否则会加大传感器的噪声,不利于小车的控制。7 图 2.4 编码器的安装 2.4 舵机的安装 根据比赛规则要求,本次竞赛选用的舵机为 FUTABA S3010 舵机,这种舵机在工作电压为 6V 时扭力为 6.5kg.cm,动作速度为 0.16+/-0.02sec/60,所以对于车模打角来说,是绝对足够的。舵机安装的好坏决定着车模转向的流畅性和灵活性,是车模调试中重要的一部分。我么根据车轮位置高度和打角流畅性的考虑,最终采用了如图 2.5 所示的结构,便于安装、拆卸和维护。根据我们调试的过程来看,舵机的损耗度是巨大的,尤其是第十一届竞赛中加入路肩作为车模是否冲出赛道的依据,所以,一8 套方便的舵机结构是必须的。图 2.5 舵机的安装 2.5 车轮结构 对于车模来说,完全不同的两套车轮结构,即使程序相同,跑出来的效果也是有着巨大的差异。所以对于车模来说,前轮的相对位置决定着车模是否能够跑出理想的状态。这里,我们采用了车轮外倾和前束的机械机构。下面就对这两种结构进行描述和分析。车轮外倾,在过车轮轴线且垂直于车辆支承平面的平面内,车轮轴线与水平线之间所夹锐角。如图 2.6 所示,即由车前方看轮胎中心线与垂直线所成的角度,向外为正,向内为负。其角度的不同能改变轮胎与地面的接触点,直接影响轮胎的磨损状况。并改变了车重在车轴上的受力分布,避免轴承产生异常磨损。此外,外倾角的存在可用来抵消车身载重后,悬架系统机件变形所产生的角度变化。外倾角的存在也会影响车的行进方向,因此左右轮的外倾角必须相等,在受力互相平衡的情况下不致影响车辆的直线行驶,再与车轮前束配合,使车轮直线行驶并避免轮胎磨损不均。四轮定位仪测量车轮外倾角的范围为10。9 图 2.6 车轮外倾 车轮前束如图 2.7 所示,同一轴两端车轮轮辋内侧轮廓线的水平直径的端点为等腰梯形的顶点,等腰梯形前后底边长度之差为前束。当梯形前底边小于后底边时,前束为正,反之则为负。车轮的水平直径与车辆纵向对称平面之间的夹角为前束角。由于车轮外倾及路面阻力使前轮有向两侧张开做滚锥运动的趋势但受车轴约束,不能向外滚动,导致车轮边滚边滑,增加了磨损,通过前束可使车轮在每瞬间的滚动方向都接近于正前方,减轻了轮毂外轴承的压力和轮胎的磨损。四轮定位仪测量车轮前束角的范围为6。图 2.7 车轮外倾 10 2.6 小结 模型车的性能与机械结构有着非常密切的联系。良好的机械结构是模型车提高速度的关键基础。在同等的控制环境下,机械机构的好坏对其速度的影响十分显著。我们非常重视对智能汽车的机械结构的改进,经过大量的理论研究和实践,我们小车的大部分质量都集中在两轮前后,达到降低重心的目的,从而提高了小车整体的稳定性和可靠性。11 第三章 硬件电路设计 3.1 主控制板设计 3.1.1 概述 对于此次比赛规则的要求,车模硬件上的设计都是基于飞思卡尔公司Cortex-M0+核的 MKL26Z256VLL4 单片机芯片完成的。在考虑了合适各个传感器的电学性能之后,我们对车模的硬件电路进行设计,主要目标是完成既定的车模任务,即路径识别。除此之外,为了方便调试和查看车模的各项控制参数,我们增加 OLED 显示屏、按键和串口进行调试。基本的框架图如图 3.1 所示:图 3.1 硬件电路基本框架 3.1.2 电源模块电路 首先了解一下不同电源的特点,电源分为开关电源和线性电源,线性电源的电压反馈电路是工作在线性状态,开关电源是指用于电压调整的管子工作在饱和和截至区即开关状态的。线性电源一般是将输出电压取样然后与参考电压送入比较电压放大器,此电压放大器的输出作为电压调整管的输入,用以控制调整管使其结电压随输入的变化而变化,从而调整其输出电压,但开关电源是通过改变调整管的开和关的时间即占空比来改变输出电压的。从其主要特点上看:线性电源技术很成熟,制作成本较低,可以达到很高的稳定度,纹波也很小,而且没有开关电源具有的干扰与噪音,开关电源效率高、损耗小、可以降压也可以升压,但是交流纹波稍大些。KL26 主控 线性 CCD 编码器 按键和拨码 OLED 蓝牙 后驱动板 TCRT5000光电管 电机 舵机 12 电源模块对于一个控制系统来说极其重要,关系到整个系统是否能够正常工作,因此在设计控制系统时应选好合适的电源模块。竞赛规则规定,比赛使用智能汽车竞赛统一配发的标准车模用 7.2V 2000mAh Ni-cd 供电,而在硬件组成中,用于巡线的线性 CCD 和按键拨码需要 3.3V 供电,其他诸如 OLED,最小系统板,光电管等则需要 5V 供电,以及舵机需要 5V6V 的电源供电。综上所述,整个系统供电分为 7.2V,6V,5V,3.3V 这些供电电压需求。常用的电源有串联型线性稳压电源(LM2940、TPS 系列、7805 等)和开关型稳压电源(LM2596、LM2575、AS1015 等)两大类。前者具有纹波小、电路结构简单的优点,但是效率较低,功耗大;后者功耗小,效率高,电流大,但电路却比较复杂,电路的纹波大。由于考虑到传感器,芯片等供电的稳定性,所以我们采取电源分离的方法,以保证系统的正常工作。如下图 3.2 即为电源电路。图 3.2 电源模块电路 3.1.3 起跑线检测模块 作为比赛规则中重要的一环,停车的重要性毋庸置疑。在这里,我们就采用红外光电反射 TCRT5000 传感器,检测黑线。13 该传感器模块对环境光线适应能力强,其具有一对红外线发射与接收管,发射管发射出一定频率的红外线,当检测方向遇到障碍物(反射面)时,红外线反射回来被接收管接收,经过比较器电路处理之后,绿色指示灯会亮起,同时信号输出接口输出数字信号(一个低电平信号),可通过电位器旋钮调节检测距离,有效距离范围 230cm,工作电压为 3.3V-5V。该传感器的探测距离可以通过电位器调节、具有干扰小、便于装配、使用方便等特点,可以广泛应用于机器人避障、避障小车、流水线计数及黑白线循迹等众多场合。当模块检测到黑色信号时,电路板上绿色指示灯点亮电平,同时 OUT 端口持续输出低电平信号,该模块检测距离 230cm,检测角度 35,检测距离可以通过电位器进行调节,顺时针调电位器,检测距离增加;逆时针调电位器,检测距离减少。传感器主动红外线反射探测,因此目标的反射率和形状是探测距离的关键。其中黑色探测距离最小,白色最大;小面积物体距离小,大面积距离大。对于光电竞赛组,用线性 CCD 检测起跑线,存在很大的不稳定性。所以我们需要更加稳妥的检测方式,光电管无疑是相对稳定和安全的。如下图 3.3 即为光电管检测起跑线电路。图 3.3 光电管检测电路 14 3.2 驱动板电路 本次光电组需要驱动 2 个电机,驱动的设计尤为重要。常用的电机驱动有两种方式:一、采用集成电机驱动芯片;二、采用 N 沟道 MOSFET 和专用栅极驱动芯片设计。市面上常见的集成 H 桥式电机驱动芯片中,飞思卡尔公司的 33886 型芯片性能较为出色,该芯片具有完善的过流、欠压、过温保护等功能,内部 MOSFET 导通电阻为 120 毫欧,具有最大 5A 的连续工作电流。使用集成芯片的电路设计简单,可靠性高,但是性能受限。由于比赛电机内阻仅为几毫欧,而集成芯片内部的每个 MOSFET 导通电阻在 120 毫欧以上,大大增加了电枢回路总电阻,此时直流电动机转速降落较大,驱动电路效率较低,电机性能不能充分发挥。由于分立的 N 沟道 MOSFET 具有极低的导通电阻,大大减小了电枢回路总电阻。另外,专门设计的栅极驱动电路可以提高 MOSFET 的开关速度,使 PWM 控制方式的调制频率可以得到提高,从而减少电枢电流脉动。并且专用栅极驱动芯片通常具有防同臂导通、硬件死区、欠电压保护 等功能,可以提高电路工作的可靠性。3.2.1 专用栅极驱动芯片的选择 IR 公司号称功率半导体领袖,所以我们主要在 IR 公司的产品中进行选择。其中IR2184S 型半桥驱动芯片可以驱动高端和低端两个 N 沟道 MOSFET,能提供较大的栅极驱动电流,并具有硬件死区、硬件防同臂导通等功能。使用两片 IR2184S 型半桥驱动芯片可以组成完整的直流电机 H 桥式驱动电路。由于其功能完善,价格低廉容易采购,所以我们选择它进行设计,如图 3.4 所示。图 3.4 IR2184 3.2.2 MOSFET 的选择 选择 MOSFET 时主要考虑的因素有:耐压、导通内阻和封装。智能汽车电源是额定电压为 7.2V 的电池组,由于电机工作时可能处于再生发电状态,所以驱15 动部分的元件耐压值最好取两倍电源电压值以上,即耐压在 16V 以上。而导通内阻则越小越好。封装越大功率越大,即同样导通电阻下通过电流更大,但封装越大栅极电荷越大,会影响导通速度。常用的 MOSFET 封装有 TO-220、TO-252、SO-8 等,TO-252 封装功率较大、而栅极电荷较小。于是我们最终选择了 IR 公司TO-252 封装的 LR7843 型 N 沟道 MOSFET,VDSS=55 伏、RDS(on)=8.0 毫欧、ID=110 安。3.2.3 控制逻辑电路设计 芯片 IR2184S 的控制信号有两个管脚:IN 和 SD。IR2184S 输入输出信号关系图如图 3.5 所示:图 3.5 IR2184 输入输出关系图 而当两片IR2184S驱动如图 3.6 所示可逆桥式电路时,其真值表为表3.1:图 3.6 可逆桥式电路 16 表 3.1 可逆桥式电路中 IR2184S 输入输出信号真值表 状态 输入 输出 IN1 SD1 IN2 SD2 HO1 LO1 HO2 LO2 正转 H H L H H L L H 反转 L H H H L H H L 上桥臂制动 H H H H H L H L 下桥臂制动 L H L H L H L H 关闭 X L X L L L L L 图 3.6 驱动电路 3.3 线性 CCD 电路 线性 CCD 是采集赛道元素信息的传感器,电路的优劣直接影响到软件中对赛道的判断和决策。线性 CCD 传感器为 TSL1401,接一级运放调理信号,做好对电源的滤波来降低噪声。本组没有绘制 CCD 传感器的 PCB 板,而是直接购买了现成的模块。如图 3.7 所示电路。17 图 3.7 线性 CCD 电路 3.4 PCB 板 考虑到检测起跑线黑线,光电管电路的放置很重要,所以为了让我们适应赛道上的起跑线,我们将光电管分别放置在主控板的两侧。如下图 3.8 所示。图 3.8 电路 PCB 板 18 第四章 智能车控制软件设计 4.1 主程序流程图 图 4.1 软件整体框图 我们以 5ms 为周期对小车进行中断控制,其中断控制中包含:(1)副程序的周期运转(2)CCD 数据采集(3)电源电量检测(4)速度控制(5)方向控制(6)起跑线检测(7)按键扫描 而在副程序中,我们实现:(1)串口数据发送 系统初始化 各项参数初始化 执行副程序?串口发送等副程序 是 否 中断程序 CCD 数据采集 速度、方向控制 19 (2)OLED 显示更新(3)按键控制,参数设定 4.2 主要程序说明 4.2.1 线性 CCD 传感器 TSL1401 线性 CCD 传感器阵列由一个 128X1 的光电二极管阵列,相关的电荷放大器电路和一个内部的像素数据保持功能组成,它提供了同时集成起始和停止时间的所有像素。该阵列 128 个像素,其中每一个具有光敏面积 3524.3 平方微米。像素之间的间隔是 8 微米。操作简化内部控制逻辑,只需要一个串行输入端(SI)的信号和时钟 CLK。图 4.2 CCD 功能框图 在光电二极管的光能量冲击下产生的光电流,这是由有源积分电路,与该像素相关的集成。在积分周期期间,采样电容器连接到积分器的输出通过一个模拟切换。在每个像素中累积的电荷量是和光强度和积分时间成正比的。积分器的输出和复位控制由一个 128 位的移位寄存器和复位逻辑控制的。输出周期是一个逻辑时钟 SI=1 时。对于正确的操作的最小保持时间条件满足后,SI 在时钟的下一个上升沿之前必须变低。一个内部信号,称之为 Hold,是在像素电路中,产生于 SI 的上升沿,然后发送给模拟开关。这会导致所有 128 个采样电容被切断,并启动一个积分器复位期间。由于 SI 脉冲式主频通过移位寄存器,存储在采样电容器的电荷被顺序地连接到一个电荷耦合输出放大器上产生一个电压,模拟输出 AO。同时,在第一个 18 个个时钟周期,所有的像素集成复位,下一个集成从 19 时钟周期开始。在第 129 时钟上升沿,SI 脉冲同步输出的移位寄存器和模拟量输出 AO 假设高阻抗状态。请注意,这个第 129 的时钟脉冲被要求终止第 128 像素的输出,以及返回的内在逻辑到一个已知的状态。如果需20 要一个最低的积分时间,那么下一个 SI 脉冲可以是在第 129 个时钟 脉冲后的一个最小延迟时间的 TQT(像素电荷转移时间)后出现。AO 型运算放大器的输出,不需要一个外部下拉电阻。这种设计允许输出电压摆幅。VDD=5V 时,没有光输入时输出是 0V,正常的白电平为 2V,4.8V 为饱和光照水平。当设备未在输出信号的相位,AO 是在一个高阻抗状态。模拟输出(AO)的电压由下式给出:Vout=Vdrk+(RE)(Ee)(tint)公式 4-1 式中,Vout 是为白色状态的模拟输出电压 Vdrk 是黑暗条件下的模拟输出电压 Re 是对于给定的 V/中给出的光的波长 Ee 是在 Uw/CM2 的事件辐照 Tint 是集成在几秒钟的时间 对与线性阵列的积分时间是指光被采样和电荷积聚在每个像素的积分电容器的周期。灵活地调整整合是 TAOS TSL14XX 的线性阵系列一个强大的和有用的功能的。通过改变积分时间,避免在广泛的光照的光照水平时达到饱和,所需的输出电压可以是在输出引脚上获得。积分时间是 SI 正脉冲和 HOLD 引脚连接在一起。除非另有说明,将假定次设置。高脉冲发送到 SI(观察定时规则的建立和保持时钟沿)开始一个新的周期的像素输出和集成安装。但是,最低的(n+1)个时钟,其中 n 是像素的数目,在下一个高脉冲被施加到 SI 之前必须发生。没有必要在紧接的(N+1)个时钟发送 SI。在 SI 脉冲之间的等待时间可高达 100ms,用来在光线较暗的时候增加积分时间一创建更高的输出电压。最小的积分时间可以从公式计算:Tint(min)=(1 )x(N-18)pixels+20us n 是像素的数目 TSL1401CL 的最大时钟频率为 8Mhz 的情况下,最低的积分时间就是:Tint(min)=0.125usX(128-18)+20us=33.75us 最好的作用是初始上电运行第一个 SI 脉冲时钟数据之后,运行时钟的(N+1)倍。之后,紧接着第(n+1)时钟的 SI 脉冲是有效的。N+1 高时钟边沿之后输出将进入高阻抗状态。这是很好的做法,当时钟不运作的时候让时钟保持在低状态,因为 SI 脉冲是由低到高的转变,需要开始一个新的周期。该积分时间的选择是有效的,只要它属于的最小值和最大值之间的范围内积分时间。如果阵列上入射的光的量在一个给定的积分周期期间产生的饱和输出(最大电压输出),但是数据是不准确的,如果发生这种情况,积分周期应当减少,知道每个像素的模拟输出电压低于饱和电压。目标的光采样窗口被激活的时间周期是降低的输出电压电平,以防止饱和。相关代码如下:void CCDImageCapture(uint8_t*ImageData)21 uint8_t i;uint16_t Temp=0;SI_SetVal();/*SI =1*/SamplingDelay();CLK_SetVal();/*CLK=1*/SamplingDelay();SI_ClrVal();/*SI =0*/SamplingDelay();for(i=0;i 100;i+)/SamplingDelay();CLK_ClrVal();/*CLK=0*/SamplingDelay();/SamplingDelay();for(i=0;i128;i+)/SamplingDelay();CLK_SetVal();/*CLK=1*/SamplingDelay();Temp=adc_once(ADC0_SE12,ADC_8bit)/100;if(Temp 400)g_fCarSpeedSet=g_fCarSpeedSetCurveMax;else g_fCarSpeedSet=g_fCarSpeedSetCurveMax+30.0(float)ABS(gi_Midline_)*0.075f);SpeedRank=(int16_t)g_fCarSpeedSet;gf_Last_Speed_error=gf_Speed_error;gf_Speed_error=g_fCarSpeedSet-ControlSpeed;if(gf_Speed_error=0)dU_k=SPEED_CONTROL_P*(gf_Speed_error-gf_Last_Speed_error)+SPEED_CONTROL_Curve_I*gf_Speed_error;else dU_k=SPEED_CONTROL_P*(gf_Speed_error-gf_Last_Speed_error)+SPEED_CONTROL_Curve_I*gf_Speed_error;g_fSpeedControlOut+=dU_k;if(guc_Park_Flag)if(g_fCarSpeed 1.0f)gf_Steering_Out=1.0f;if(gf_Steering_Out 0.2f)gf_Steering_Out=0.2f;if(gf_Steering_Out 0)Control_Loop_5ms();gui_cnt_5ms-=1;if(gui_cnt_10ms 1)Control_Loop_10ms();gui_cnt_10ms-=2;if(gui_cnt_20ms 3)Control_Loop_20ms();gui_cnt_20ms-=4;if(gui_cnt_50ms 9)Control_Loop_50ms();gui_cnt_50ms-=10;33 if(gui_cnt_100ms 19)Control_Loop_100ms();gui_cnt_100ms-=20;if(gui_cnt_200ms 39)Control_Loop_200ms();gui_cnt_200ms-=40;if(gui_cnt_500ms 99)gpio_turn(PTD7);/*LED3翻 转*/Control_Loop_500ms();gui_cnt_500ms-=100;if(gui_cnt_1s 199)Control_Loop_1s();gui_cnt_1s-=200;void PIT_IRQHandler(void)static uint8_t Console_=0;static uint8_t Power_en=0;if(PIT_TFLG(PIT0)=1)/判断是否 PIT0 进入中断 CCD3_SI_L;/脉冲 if(Console_)CCDImageCapture(CCDImage1);/*CCD 采集*Starting_sun_Judge();/光电起跑线检测 CCD1_Edge_Detection(CCDImage1);/*直 接 从CCD数 据 提 取 跳 变 边 缘*gi_Midline_=CCD1_TaskLine();/*路径识别与中线输出*Starting_sun_Judge();/光电起跑线检测 else Fuzzy_K=0;Midline_slope=0;DirectionControl();/*方向控制*34 SpeedControl();/*速度控制*MotorOutput();CCDExposure();/*CCD 曝光*Console_=0;else /Test_lock();/遥控发车停车 Force_lock();/防堵转 Starting_sun_Judge();/光电起跑线检测 Key_unm=Key();if(Key_unm)Key_con=Key_unm;if(Power_en+=100)/*Power_ADC 测量*/Power_Measure();Power_en=0;Console_=1;if(guc_Straightaway_flag1)CCD3_CLK_L;else CCD3_CLK_H;gui_cnt_5ms+=1;/普通时序程序调度区 gui_cnt_10ms+=1;gui_cnt_20ms+=1;gui_cnt_50ms+=1;gui_cnt_100ms+=1;35 gui_cnt_200ms+=1;gui_cnt_500ms+=1;gui_cnt_1s+=1;CCD3_SI_H;PIT_Flag_Clear(PIT0);/清中断标志位 else if(PIT_TFLG(PIT1)=1)Starting_sun_Judge();/光电起跑线检测 PIT_Flag_Clear(PIT1);/清中断标志位 /*副调度环服务*/*副调度环 5ms 服务 */void Control_Loop_5ms(void)/*副调度环 10ms 服务*/void Control_Loop_10ms(void)if(Write_Buffer_mode=1)ANO_Write_Buffer();/*副调度环 20ms 服务*36 */void Control_Loop_20ms(void)if(Write_Buffer_mode=2)CCD_Write_Buffer(CCDImage1,CCDImage_Normalization);/*副调度环 50ms 服务*/void Control_Loop_50ms(void)UI_Adjust(Key_con);/UI 数据更新 Key_con=0;UI_Display();/UI 数据显示 /*副调度环 100ms 服务*/void Control_Loop_100ms(void)static uint8_t Lock_remove_Count=0;/延时发车 if(Lock_remove_signal)Lock_remove_Count+;else Lock_remove_Count=0;if(Lock_remove_Count 20)if(g_ucCarLock)g_ucCarLock=0;guc_Park_Flag=0;else g_ucCarLock=1;37 Lock_remove_Count=0;Lock_remove_signal=0;/*副调度环 200ms 服务*/void Control_Loop_200ms(void)/*副调度环 500ms 服务*/void Control_Loop_500ms(void)S_S=S_S;/*副调度环 1S 服务 */void Control_Loop_1s(void)巡线程序:int16_t Midcourt_Line_Calculate_Auxiliary_Lose_Double(uint8_t i,int16_t Mid)if(i=1)if(Mid -500)Mid=-500;if(Mid -CCD1_x_half)Mid=-CCD1_x_half;else if(i=2)if(Mid CCD1_x_half)Mid=CCD1_x_half;return Mid;/*直道判定*/void Straighta_Way_Judge(void)static uint32_t gui_Straighta_Count_Start=0;if(ABS(gi_Midline_Correct1)100)&(ABS(Midline)20)guc_Straightaway_flag1=1;else if(ABS(gi_Midline_Correct1)150)&(ABS(Midline)30)guc_Straightaway_flag1=1;else if(ABS(gi_Midline_Correct1)200)&(ABS(Midline)40)guc_Straightaway_flag1=1;else gui_Straighta_Count_Start=g_ilJourney;guc_Straightaway_flag1=0;39 /*起跑线判定*/void Starting_Way_Judge(void)static uint8_t num1=0,num2=0;if(g_uiHalfWay1 0)&(num1 4)guc_Starting_flag1=1;num1=0;if(g_uiHalfWay1 0)&(num2 4)guc_Starting_flag1=1;/起跑线 num2=0;40 附录二

此文档下载收益归作者所有

下载文档
你可能关注的文档
收起
展开