收藏 分享(赏)

第三届智能车报告__大连理工大学hyper-eye.doc

上传人:nanchangxurui 文档编号:6833242 上传时间:2022-08-17 格式:DOC 页数:51 大小:1,004.50KB
下载 相关 举报
第三届智能车报告__大连理工大学hyper-eye.doc_第1页
第1页 / 共51页
第三届智能车报告__大连理工大学hyper-eye.doc_第2页
第2页 / 共51页
第三届智能车报告__大连理工大学hyper-eye.doc_第3页
第3页 / 共51页
第三届智能车报告__大连理工大学hyper-eye.doc_第4页
第4页 / 共51页
第三届智能车报告__大连理工大学hyper-eye.doc_第5页
第5页 / 共51页
亲,该文档总共51页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、第三届“飞思卡尔”杯全国大学生智能汽车竞赛技术报告学 校:大连理工大学队伍名称: HYPER-EYE参赛队员: 赵亮 李胜铭 余洋带队教师: 吴振宇 潘学军 XXVII关于技术报告和研究论文使用授权的说明 本人完全了解第一届“飞思卡尔”杯全国大学生智能汽车邀请赛关保留、使用技术报告和研究论文的规定,即:参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技术报告以及参赛模型车的视频、图像资料,并将相关内容编纂收录在组委会出版论文集中。参赛队员签名: 带队教师签名: 日 期: 目 录第一章 引言1第二章 小车模型的改造和安装3第三章 各模块电路

2、的方案选择和具体设计43.1中央控制电路的设计43.2主电机驱动电路的选择和设计63.3速度检测元件的选择63.4 赛道检测传感器的选择和电路设计73.6 系统电源的设计93.7 人机接口模块的设计10第四章 控制软件的设计114.1 驱动层软件设计114.1.1.系统时钟设置114.1.2. 主电机和舵机驱动114.1.3 速度检测的计数和处理124.1.4 赛道检测的数据采集和处理134.2 决策层软件计算法设计134.2.1 上层传感器决策144.2.2 上下层传感器的联合应用154.2.3 速度闭环控制16第五章 调试说明175.2硬件电路设计调试175.3软件算法效率的测试17第六章

3、 小车模型改造后的主要技术参数18小车模型改造后的主要技术参数见表6.1和表6.2。18第七章 结论19参考文献I附录A 迟滞比较器门限电压估算公式的推导II附录B MCU程序源代码III第一章 引言本设计采用MC9S12DG128单片机作为智能小车的检测和控制核心。测速装置使用霍尔式编码器对电机转速进行检测,通过对速度的检测,使整个系统闭环控速,系统稳定性增强。电机控制模块使用集成电动机控制芯片TD340外加沟道MOSFET管IRF3205驱动控制,主控制器按预定的程序来决定运行规则,通过发送控制信号给电机控制芯片,从而对主电机的转速与转向进行调节,进而控制小车的加速和制动。赛道检测模块采用

4、双排红外反射传感器,通过样条算法,将赛道的走向和转弯的趋势比较精确地计算出来,然后由主控制器将赛道信息转化为转角信号送给舵机,从而实现小车的巡线功能。在调试的过程中采用友好的人机接口界面,清楚地显示小车运行的各项参数。本设计方案的主要特色有以下几方面:采用了双层红外反射式的传感器对赛道检测,其中顶层采用大功率的红外发射管并加以聚焦透镜以提高前瞻距离,顶层红外接收管采用安装黑色套管来消除红外发射和接收管相邻之间的干扰,采用脉冲发射红外线的方法可以预测较远距离的赛道情况,低层采用红外发射接收一体管并通过三次样条函数对顶层传感器进行计算与校验,算出赛道中黑线的具体方位,由此对舵机进行控制,实现了较精

5、确的转向控制。为使控制电路达到最简和适合车体,专门设计了主控板(包括最小系统、电机驱动、人机接口以及传感器接口),大大简化了外围接口电路的设计,使主控系统达到最优。采用霍尔式编码器对电机进行转速检测,由此经过计算得到车体速度,保证了速度测量的准确性与实时性,经合理安装,也简化了机械结构提升了机械性能。为了在调试时监控小车的各项参数并提高小车对赛道的适应性,采用了84*48的Nokia5110点阵型手机液晶显示,显示信息丰富而且小巧友好,并可通过拨码开关对程序状态进行设置,此外还有发光二极管显示小车的一些状态。整个系统的结构框图如图1.1。图1.1 系统构成框图第二章 小车模型的改造和安装根据比

6、赛要求,舵机、主电机和电池部分未作任何改动,主电机和电池仍然固定在原位置,小车的改造主要侧重于印刷电路板和传感器的固定。安装舵机时,考虑到如果按照标准方式安装,舵机左右转角的控制量是不均衡的。很难找到一个函数,使两侧控制量和转角成为平衡的线性关系。因此,我们将舵机倒立安装,两侧使用等长传动杆。这样,不但两侧的控制量变得均衡、易于控制,而且,传动力臂的长度也可以很方便的按照需要进行调整。具体安装方法见图2.1基于电路的简化和小车重心的考虑,依据车体结构将所有控制电路做在一块板子上并在小车中间靠前的位置,这样在避免主电机转动干扰的同时还将外围接口放在控制板的边缘或两侧以接线简洁方便,并最大限度的减

7、少了连接线的长度和复杂度。速度检测传感器(霍尔式编码器)固定在电机旁边的变速齿轮处,重心下调并方便的将转速转换成电平的频率信号,然后通过接线接到主控板上(具体原理见第三章)。赛道检测传感器为双层红外反射传感器。顶层用于预测并判断赛道信息,底层用于定位并对上层传感器所得到的位置信息进行校验。为了使预测的赛道尽可能远,我们采用了大功率的红外发射管并加以聚焦透镜并用铝制的支架架起,与水平面成一定角度;而低层传感器则靠近车体并安装了滚轮,这样行驶弯道和上坡时可以起到很好的调节作用。图2.1舵机的直立安装第三章 各模块电路的方案选择和具体设计3.1中央控制电路的设计中央控制电路是整个系统的核心,控制器完

8、成主电机控制、赛道信息采集、舵机转动控制、速度获取以及人机接口等功能。其中对主电机和舵机的控制是相对重要的任务。通常采用PWM信号来调节电机转速和舵机转角。Freescale公司推出的MC9S12DG128单片机具有PWM输出功能,而且其片上的PWM功能具有独立的定时计数模块,简化了硬件系统的设计。MC9S12DG128单片机有QFP-80和LQFP-112两种封装,考虑到系统的复杂性和适应性,决定选用资源相对较丰富的LQFP-112封装的单片机作为主控制器。在电路板设计上,采取了模块设计的设计思想并整合在一块印刷板以使整个硬件部分简洁,整个电路由控制器系统、主电机驱动及接口、电源管理、人机接

9、口和各传感器接口(包括两层红外传感器、舵机、霍尔式编码器)构成。控制器系统囊括了MC9S12DG128单片机系统的必要组成部分,包括时钟电路、复位电路、锁相环滤波电路、A/D转换器滤波电路、各I/O口接口和BDM调试器接口等;主电机驱动电路包括控制接口和输出驱动接口;电源管理部分包括:单片机系统、主电机、舵机、传感器以及调试接口等(其中为避免各模块之间供电的相互影响以及传感器功耗大的缘故,对各模块电源进行了隔离处理);人机接口电路包括发光二级管、Nokia5110点阵型手机液晶屏、按键、拨码开关、短路帽。控制器(MC9S12DG128单片机)系统如图3.1和部分外围电路如图3.2。第三章 各模

10、块电路的方案选择和具体设计 图3.1单片机最小系统图图3.2部分外围电路3.2主电机驱动电路的选择和设计主电机为永磁式微型直流电动机。它的驱动方案采用直流电机的控制芯片驱动沟道MOSFET管控制。图3.3电机驱动电路直流电机的控制芯片选用ST微电子公司的TD340芯片,MOSFET管采用IRF3205,IRF3205的优点是开关速度快,通路电阻低(最低8毫欧)和电压门信号低(5V可驱动),适合于大电流和低电压运行。具体的电路设计如图3.3。该电路由信号输入电路、TD340和桥电路组成。其中控制信号由单片机输入,TD340用于构成PWM发生器,功率放大电路是由个MOSFET管组成的H桥电路。3.

11、3速度检测元件的选择速度的检测采用霍尔式编码器。码盘固定在主电机附近并尽可能的装底,当主电机转动时,会在码盘上产生脉冲信号。通过检测脉冲信号的频率或周期,就可以得到一个与小车速度成正比的数值,这个数值经过量纲换算,就可以得到小车的速度。由于码盘与电机的相对位置固定,基本不受外界干扰,而且有精度高等优点。固定方案如图3.6:图3.6霍尔式编码器的固定与安装3.4 赛道检测传感器的选择和电路设计检测赛道采用红外线反射传感器。设计中采用模拟与数字结合的方式,即上层采用模拟方案对跑道进行预测,下层采用数字开关量检测方案,对跑道进行精准检测,同时消除掉上层传感器由于检测距离较远而产生的误差。具体的机械结

12、构设计见图3.7。图3.7赛道检测传感器的固定上层模拟方案电路设计如图3.8。图3.8上层电路设计由于多数半导体元件瞬间通过电流的能力要远大于其持续工作使得最大功率。因此对红外发射部分,采用MOSFET对发射管进行逐个开关控制,同时控制接收管只在发射管开通期间采集。这样既降低了整个系统的功耗,又可以适当地增大发射管的发射功率。实验表明,即使使发射管的发射功率达到其额定值的三倍,其电压平均值仍不到额定值的一半,可以持续稳定工作。此电路利用接收管接收到不同强度红外线而导通电阻不同的特性,由A/D转换电路对其进行检测,这使得在距离黑线较近的红外接收管电平会相应升高。利用这一性质,经三次样条算法对其进

13、行计算,找出其最大点,即黑线的所在位置。下层数字量方案设计如图3.9:图3.9下层检测传感器电路原理图下层传感器电路主体是由LM393构成的迟滞比较器,而传感器的检测原理与上层相同。使用比较器,可以很容易地把传感器的电压变化转化成数字电平。如图3.7所示,反相输入端为基准调整端,用电位器R10对电源电压分压,分压结果送入比较器作基准电压。传感器得到的电压送到比较器的同相输入端,与反相输入端的电压比较,高则比较器输出高电平,低则输出低电平。最后,把得到的电平送入单片机,判断传感器检测到的颜色。采用双层传感器进行计算的优点是,在运动过程中,由于传感器探测范围小,分辨率低,所以要增加车体的前瞻性,必

14、须抬高检测传感器,使其与地面成一定角度,而且如果功率有限,即使抬高也不能有很好的接收效果,所以我们使用了大功率红外发射管并加以聚焦透镜使发射距离更远。车体在运动过程中需要精准调节与跑道的相对位置,而红外传感器探测范围较小并会有一定的误差,导致了根据上层传感器计算出来的黑线位置会发生跳变(即有些传感器失效,取值出现盲点)。为了解决这一缺点,设计增加下层传感器对上层传感器进行校验与纠正,下层的数字量设计方案保证了下层检测的准确性,这样就既保证了赛道检测的前瞻性,同时也消除了不必要的干扰。3.6 系统电源的设计可靠的供电是系统稳定运行的保障。尤其是本系统中使用了大功率器件,其工作稳定与否直接决定传感

15、器检测的准确程度。在本系统中,采用了根据需要为各模块分别供电的思想。传感器部分由于发射功率瞬间值很大,而且需要电压稳定。因此,要使用瞬间输出能力强的稳压器件。经多次试验,我们最终采用了航模专用的开关电源模块,它最大的有点是能够在负载和输入端变化很大时仍能保持输出稳定。单片机供电我们采用了5V低压差线性稳压器LT1085-5。经实测,LT1085在压差低于1V的情况下仍能输出稳定的5V直流电压,且线性稳压器纹波极小,为单片机稳定工作和AD参考源精确性提供了保障。本次大赛指定的舵机S3010额定工作电压是4-6V。尽管适当提高电压可以加快舵机响应速度,但为使其工作稳定,我们仍使用了6V直流稳压器7

16、806为其提供稳定的直流电压。主电机由于采用闭环控制,则直接采用镍镉电池输出7.2V直流电为其供电。具体电源LT1085-5为S12提供5V电源6v开关电源为传感器提供6V3A电源7806为舵机提供6V电源电机驱动7.2V镍镉电池部分设计框图如图3.11:图3.11:供电系统框图3.7 人机接口模块的设计为了调试时监控小车的各项参数,同时提高小车对赛道的适应性,特设计了人机接口电路。输入部分采用按键、拨码开关和发光二极管,输出部分采用了8448的Nokia5110点阵型手机液晶显示。调试的过程中,可以显示主要参数,监控小车的运行。同时,可以通过按键和拨码开关对程序状态进行设置,使小车根据不同的

17、情况采取不同的决策方法,使调试更加具有针对性。本模块电路如图3.12。图3.12人机接口电路设计第四章 控制软件的设计4.1 驱动层软件设计4.1.1.系统时钟设置为了加快系统响应速度,使用单片机内部的锁相环电路将外部的16MHz时钟倍频到48MHz,总线时钟24MHz,以提高运算速度和系统响应速度。具体的设置如下:REFDV = 0x01; SYNR = 0x02; /设置系统时钟为48MHz靠锁相环产生的时钟频率由下面的公式得到: 公式3显然,采用16MHz的外部晶体振荡器,可以得到48MHz的系统频率、24MHz的总线频率4。4.1.2. 主电机和舵机驱动考虑舵机对PWM信号的要求较高,

18、为了提高精度,将单片机的8路8位的PWM输出调整为4路16位的PWM输出。主电机驱动采用PWM输出控制,利用MC9S12DG128的PWM输出,将调制信号送到TD340的IN1信号输入端,通过调整占空比调整电机转速,IN2输入端接另一单片机端口以控制转向。舵机的控制同样采用PWM输出控制,舵机的转角是通过调整高电平的宽度来控制的。根据要求,HS-925型舵机的PWM周期为18ms20ms,两侧的极限位置的高电平宽度为1ms和2ms。在控制的过程当中,根据小车前轮的实际转角,对上面的值稍做了些补偿。对PWM模块的具体设置如下:第四章 控制软件的设计 PWMPOL = 0xff;/设置极性为高电平

19、 PWMCLK = 0;/选择时钟为 Clock A 和 B PWMCTL = 0xf0; PWMPRCLK = 0x31;/Clock A= Bus Clock/2 ; /Clock B= Bus Clock/8 PWMPER23 = PERIOD23;/PERIOD23为23通道的周期 PWMPER45 = PERIOD45;/PERIOD45为45通道的周期 PWMDTY23 = 0; PWMDTY45 = 0;4.1.3 速度检测的计数和处理速度检测电路的输出是频率变化的矩形波。要测量小车的速度,主要方法有两种:测周法和测频法。测频方案是使用增强型定时器溢出中断功能产生一个43ms的定

20、时中断,在这个设定时间内,用单片机的脉冲累加器对霍尔编码器产生的脉冲进行计数,定时溢出时,记录霍尔编码器产生的脉冲数。因为电机的转速和红外传感器产生的矩形波频率成正比,通过测频,就可以间接地得到电动机的转速,进而得到小车的整体速度,对小车采取闭环控制。但这个方案对速度测量周期较长。43ms的中断周期直接影响算法对实时速度变化的响应(算法周期为9ms),对加速和减速极为不利。因此决定采用测周方案。测周方案是使用单片机的实时中断,设定一个47us的中断,同时启用输入捕捉功能,对测速传感器传回的脉冲信号的上升沿进行捕捉。使用实时中断对上升沿信号之间的时间间隔进行计数,以T=N47(N为记得的实时中断

21、数量)来计算电机转速。测周的响应周期由电机的转速决定,一般不超过10ms,所以响应速度大大提高。4.1.4 赛道检测的数据采集和处理上层的红外传感器采集赛道的模拟电压,如果检测到黑线,该路的传感器模拟电压应偏高。将其送到A/D的输入端,采集输入的电压。A/D转换器用软件将其设为10位转换,每个序列8个通道,从通道0开始进行连续转换。具体的设置如下:ATD0CTL2_ADPU = 1;ATD0CTL2_AFFC = 1;/正常上电 标志位快速清零ATD0CTL3 = 0x00;/八路转换通道组成序列ATD0CTL4_SMP0 = 1;ATD0CTL4_PRS2 = 1;ATD0CTL4_PRS0

22、 = 1;/十位转换精度 十二分频ATD0CTL5_DJM = 1;ATD0CTL5_SCAN = 1;ATD0CTL5_MULT = 1;/右端对齐 无符号数 序列转换 多通道转换ATD0DIEN=0x00;/禁止数字量输入下层的传感器输出量为数字量,将其输入到PTS口。将PTS口设置为输入,读取端口寄存器里的值即可。4.2 决策层软件计算法设计系统软件流程图,如图4.1。图4.1主程序流程图4.2.1 上层传感器决策对于上层传感器的模拟电压量,由A/D转换后,由于其相对连续的变化量,采用样条函数对其进行计算,由5个传感器,模拟出前方跑道的黑白曲线,求出曲线的最大点,此最大点即为黑线中心点所

23、在的位置。计算公式如下:fi+1(t) = at3+bt2+ct+d0t0.5 公式4其中:a = -4Pi+12Pi+1-12Pi+2-4Pi+3b = 4Pi-10Pi+1+8Pi+2-2Pi+3c = -Pi+Pi+2d = Pi+1 该式的实质是每四个相邻的数据点可以确定中间一段抛物样条曲线。曲线图,如图4.2。图4.2 抛物样条曲线样条曲线是用抛物线作为基本曲线,通过一定的数学方法,把一组离散的数据点用一条复合的曲线光滑地连接起来。在这里,每四个相邻的数据点可以确定中间一段三次抛物样条曲线,上层5个传感器可以构造出4段连续曲线,其具体构造方法如下:中间两段采用三次抛物样条构造。对于两

24、个边界样条,采用一种特殊的处理方式,将三次样条降为二次样条。对于二次样条,由于已知样条端点值和一侧的一阶导数,使得此二次样条可解,从而使构造的样条函数整体为一阶光滑可导,充分利用了传感器的所有信息。因为该方法构造的函数有较好的可导性和连续性,所以可以通过解析法精确求解该函数的极大点,此极大点正为黑线所在的位置。同时由于该函数利用的是5个传感器返回的相对信息,具有较强的抗干扰能力。这种方法弥补了红外传感器赛道空间分辨率低的缺点,并充分利用了单片机A/D采集的功能。4.2.2 上下层传感器的联合应用通过样条地方法已经可以准确的得到前方赛道黑线的准确位置。而下层传感器就其检测准确性而言是相对稳定的。

25、因此,使用上下层传感器联合应用对整个车模的速度、转角进行控制是很有效的。具体而言,我们的控制算法中应用到了赛道两方面的信息。一方面是前方赛道的变化趋势,另一方面则是目前车体相对赛道的偏离程度。有了这两方面信息,车模就可以具备既能充分考虑前方走向,又可以迅速矫正偏差追踪赛道变化的能力。而在上下两层传感器准确检测的前提下,获取这两方面信息是很容易的。简单来说,上下层传感器检测到黑线位置的偏差即可反映前方赛道的斜率,也即变化趋势,下层传感器由于其安装位置紧靠车头,故其能准确反映车模相对赛道位置偏差。而在实际应用中,还应考虑一些细节问题,如上层传感器进入盲区时怎样保持正确决策,高速运行时怎样应对急弯等

26、等。这就要求我们在使用这两方面信息时仍要具体情况具体分析,根据不同的状态应用两种信息的权重也应是不同的。比如在连续的弯道中,为了避免车模跟踪赛道不利冲出赛道,就应加大车体相对赛道偏差所占决策的比重;而在长直道上为了防止赛道形态突变不能及时调整,就应加大赛道变化趋势所占决策的比重等等。4.2.3 速度闭环控制速度控制采用数字PID算法,通过整定参数,使电动机的响应达到满意的速度和精度。PID控制的基本思想是对误差进行比例积分微分运算,实现对系统的基本控制。离散后的PID用误差的累积加和代替积分,用两次误差的差分代替微分。当采样周期很小时,可以近似地认为系统为连续系统。通过整定三种运算的增益来调整

27、电机系统的响应速度和超调量的大小。第五章 调试说明以下的几个问题是调试中遇到的难点:5.2硬件电路设计调试因为上层传感器的位置较高,容易受到外界光线的干扰。调试时,由于各个红外传感器光学和电学特性的差异,上层传感器有时出现状态跳变的情况,导致小车的自适应性较差。为了增强小车的自适应性,在软件中加入了对小车的训练。通过训练,控制器记录下小车上层各传感器感受到的最大值和最小值,然后对其进行线性补偿。这样就可以把小车上层各传感器的特异性消除,解决各传感器光学和电学特性不一致的问题。加入训练之后,小车的运行效果有了很大改善。5.3软件算法效率的测试为了测试软件的算法效率,考虑采用实时时钟进行计时。但是

28、如果在调试的过程中采用单步或设置断点调试,实时时钟会对调试造成麻烦。在实际的调试中,采用了固定端口取反的办法测试算法效率。在每一次算法循环结束之后,对一个端口(例如PORTK)进行取反操作。随着算法的不断循环,在测试端口上会产生一定频率的方波。用示波器观察方波的半周期,就可以得到算法执行一次的准确时间。实践证明,这种方法非常有效。第六章 小车模型改造后的主要技术参数小车模型改造后的主要技术参数见表6.1和表6.2。表6.1 小车外形参数表l/cmw/cmh/cmm/g39.524281232 l:长 w:宽 h:高 m:质量表6.2 小车电路参数表P/WNs/cmT/msCs/F7.6160.

29、850.901769P:电路功耗 N:传感器个数 s:赛道信息检测精度 T:代码运行周期 Cs:电容总容量第七章 结论通过这次设计,小车实现了按黑线规定的赛道较高速行进上下坡并对起跑线识别,能较好的完成各项技术指标。文章都对其所涉及方案论证、系统设计,以及单片机程序代码设计以及软件流程进行了较详细的阐述。值得一提的是,在舵机安装、传感器的布局和上层红外传感器的设计以及检测的算法设计上进行了创新性的设计,使其大大增加了车体的前瞻性和对赛道的检测精度。但系统在整体控制上还可以再进一步优化,希望在接下来的时间内得以完善。参考文献1 卓晴, 黄开胜, 邵贝贝. 学做智能车 北京航空航天大学出版社.20

30、072 康华光. 电子技术基础模拟部分(第四版)M. 北京: 高等教育出版社, 19993 邵贝贝. 单片机嵌入式应用的在线开发方法M. 北京: 清华大学出版社, 2004附录A 迟滞比较器门限电压估算公式的推导图A-1 反相输入迟滞比较器电路一般情况下,输出电压vO与输入电压vI不成线性关系,输出电压转换的临界条件是vPvD=vI,显然这里的vP就是门限电压。根据图A-1,利用叠加原理有: 公式A-1根据输出电压vO的不同值(VOH或VOL),可分别求出上门限电压VT+和下门限电压VT-分别为: 公式A-2 公式A-3那么,门限宽度为: 公式A-4附录B MCU程序源代码/*/*main.c

31、 */* */*/#include define.h#include #include #include #include #include PWM.h#include AD.h#pragma LINK_INFO DERIVATIVE mc9s12dg128b#define DISABLE_STEER PWME_PWME3=0#define LEFT 2#define RIGHT 1#define AHEAD 0/速度表/ /0 ,1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10 ,11 ,12 ,13 ,14 ,15 ,16 ,17 ,18 ,19 ,20 const int st

32、rRate21= 0 ,1 ,2 ,2 ,4 ,4 ,6 ,6 ,8 ,8 ,9 ,10 ,10 ,12 ,14 ,14 ,14 ,16 ,16 ,16 ,16;const int TableV46 =20 ,20 ,20 ,21 ,21 ,22 ,22 ,23 ,23 ,23 ,23 ,23 ,23 ,24 ,24 ,24 ,24 ,24 ,24 ,25 ,25 ,25 ,25 ,25 ,25 ,25 / 26 ,27 ,28 ,29 ,30 ,31 ,32 ,33 ,34 ,35 ,36 ,37 ,38 ,39 ,40 ,41 ,42 ,43 ,44 ,45 ,25 ,26 ,26 ,26

33、 ,26 ,26 ,26 ,26 ,26 ,26 ,26 ,26 ,26 ,26 ,26 ,26 ,26 ,26 ,26 ,26 ; /const int TableRate21=0 ,1 ,2 ,3 ,4 ,6 ,7 ,9 ,10 ,11 ,12 ,14 ,15 ,16 ,18 ,19 ,20 ,22 ,22 ,24 ,24 ;/ const int TableRate21=0 ,2 ,2 ,4 ,4 ,6 ,6 ,8 ,8 ,10 ,10 ,12 ,14 ,15 ,17 ,18 ,20 ,21 ,22 ,23 ,24;const int TableV146 =18 ,18 ,18 ,18

34、,18 ,20 ,20 ,20 ,20 ,20 ,22 ,22 ,22 ,24 ,24 ,24 ,24 ,25 ,25 ,25 ,25 ,25 ,25 ,25 ,25 ,25 / 26 ,27 ,28 ,29 ,30 ,31 ,32 ,33 ,34 ,35 ,36 ,37 ,38 ,39 ,40 ,41 ,42 ,43 ,44 ,45 ,25 ,26 ,26 ,26 ,26 ,26 ,26 ,26 ,26 ,26 ,26 ,26 ,26 ,26 ,26 ,26 ,26 ,26 ,26 ,26 ;const int TableV246 =18 ,18 ,18 ,18 ,18 ,20 ,20 ,2

35、0 ,20 ,20 ,22 ,22 ,22 ,23 ,23 ,23 ,23 ,24 ,24 ,24 ,24 ,24 ,24 ,24 ,24 ,24 / 26 ,27 ,28 ,29 ,30 ,31 ,32 ,33 ,34 ,35 ,36 ,37 ,38 ,39 ,40 ,41 ,42 ,43 ,44 ,45 ,24 ,25 ,25 ,25 ,25 ,25 ,25 ,25 ,25 ,25 ,25 ,25 ,25 ,25 ,25 ,25 ,25 ,25 ,25 ,25 ; /0 ,1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10 ,11 ,12 ,13 ,14 ,15 ,16 ,17 ,

36、18 ,19 ,20 const int TableRate21=0 ,1 ,2 ,2 ,3 ,3 ,4 ,5 ,6 ,8 ,8 ,10 ,11 ,13 ,15 ,16 ,17 ,18 ,19 ,21 ,23;const int TableV346 =17 ,17 ,17 ,17 ,17 ,19 ,19 ,19 ,19 ,19 ,21 ,21 ,21 ,22 ,22 ,22 ,22 ,23 ,23 ,23 ,23 ,23 ,23 ,23 ,23 ,23 / 26 ,27 ,28 ,29 ,30 ,31 ,32 ,33 ,34 ,35 ,36 ,37 ,38 ,39 ,40 ,41 ,42 ,4

37、3 ,44 ,45 ,24 ,24 ,24 ,24 ,25 ,25 ,25 ,25 ,25 ,25 ,25 ,25 ,25 ,25 ,25 ,25 ,25 ,25 ,25 ,25 ;char drvcar;int averAVERNUM;char pthstate8;/-control-/int V; /当前速度int EV; /期望速度int DV; /差距int movV; /速度修正量int speed; /当前电机出力int rate;/-cs-/int cnt;int curV;/extern void curPoint(void); extern void controlV(voi

38、d);extern void LCD_Busy(void);extern void LCD_Init(void);extern void LCD_WriteCom(char dis_com);extern void LCD_WriteDat(char dis_dat);extern void LCD_WriteDBC(char dis_addr_x,char dis_addr_y,char dis_dat);extern void LCD_WriteNum(char dis_addr_x,char dis_addr_y,int dis_num);extern void LCD_WriteStr

39、(char dis_addr_x,char dis_addr_y,char* str);extern void LCD_SetAddr(char dis_addr_x,char dis_addr_y);extern void LCD_Delay(int cnt); /-挂档区-/int highEV;int medEV;int lowEV;char carState;/-5point-/char lowPointPos; unsigned int kpoint;unsigned char Num1,Num2;unsigned int Num;/-decision-/float maxPos;

40、int p5;char roadKey; /设定直道和弯道状态 int countRoad; /计数处于直道的个数char RoundTimesKey;float prePos;float predrv; /上一周期的驱动方向int Acount; /计数算法运行次数float predrv;/前一次转动角度int countRound; /计数处于弯道的个数unsigned char maxPosLight;float dpos;char averState;float dpostemp;float checkpos;/-eeprom-/extern int driveCar(void);e

41、xtern void ECT_Int(void);extern void RealTimer_Int(void);extern void currectExp(void);void car_run(char ss);void delay(unsigned int t);void carControl(void) /drvcar+=2; car_run(drvcar);/ /* V=cnt;controlV(); void main(void) int i,j; DisableInterrupts; ECT_Int(); RealTimer_Int(); DDRA=0xff; DDRS=0x00; DDRT_DDRT6=0; DDRB=0b11111011; PLL_Init(); Start_PLL(); PWM_Init(); LCD_Init(); AD_Init(); Start_Steer(0,0); /Go ahead DDRH=0x00; /H INPUT car_run(0); prePos=2.0; predrv=0; speed=0; countRoad=0; /计数处于直道的个数 Acount=0; roadKey=0; lowPointPos=5; f

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 胎儿教育

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报