技术报告_添加程序版_第1页
技术报告_添加程序版_第2页
技术报告_添加程序版_第3页
技术报告_添加程序版_第4页
技术报告_添加程序版_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第一章 引言随着汽车电子领域发展的如火如荼,以其为背景的全国大学生智能汽车竞赛于今年拉开了第一届的帷幕。这项赛事是与全国数学建模、电子设计、机械设计、结构设计等4大专业竞赛并列的第五项大学生设计竞赛。我们怀着浓厚的兴趣,作为天津大学的代表队之一参加了比赛。自信天英队的队员由在校的博士、硕士研究生和本科生组队,其中李飞主要负责硬件和结构的设计,李博和李景运负责软件的编写和调试。经过几个月的辛勤工作,在指导老师孟庆浩老师的悉心指导下圆满完成了智能车的制作。我们队的制作过程可分为以下三个阶段:第一个阶段,3月2号到4月初,准备阶段。这一阶段主要进行了资料查找、熟悉单片机和传感器选型等前期工作。根据队

2、员的设计经验和阅读的大量参考文献,通过对比以后我们将目标选定在了相对简单的光电传感器上,放弃了复杂的CCD检测方法。基于此次比赛的检测要求,我们选定了传感器型号为TCRT5000,并就其数字和模拟输出分别进行了相应的电路设计。第二个阶段,从4月初到6月底,设计调试阶段。我们主要进行了各部分电路的设计搭建与程序代码编写调试。我们完全采用了组委会提供的MC9S12DG128开发板和MC33886电机驱动芯片,首先设计制作了线性稳压电路与电机驱动电路,编写AD转换与模糊路径识别程序,对模糊算法和简单的逻辑判断算法进行了实验。根据其试验的实际效果,最后决定使用模糊算法。同时我们还就传感器布局进行了一系

3、列的仿真,确定采用“W”型布局。第三个阶段,从7月初到参加比赛,整车调试阶段。在这个期间,我们所有队员都全身心的投入到比赛中。根据智能车的实际情况对程序进行了一遍一遍的修改与调试,并对硬件电路进行了相应的改进,取得了快速性与稳定性的协调统一,最终完成了智能车的制作。本技术报告的正文包括以下几部分内容:第二章主要介绍了硬件方面的设计,包括电路设计以及机械安装等。其中包括两个部分的内容:第一部分是信息检测相关模块的设计,如所采用黑带检测方法及传感器布局。第二部分是开发板外围电路的设计,例如电源管理模块,单片机与传感器电路的接口等等,主要介绍了自行制作的集成以上电路的电源驱动电路板的设计及其安装固定

4、。第三章的主要内容是我们采用的HCS12控制软件主要理论、算法说明及代码设计介绍。第四章为报告总结,概括说明模型汽车制作过程中的整体情况和各项技术指标。并指出了其中存在的问题和未来进一步改进的方向。第二章 硬件电路设计2.1路径识别电路在本次比赛中采用一定宽度的白色纸作赛道,与白色有较大反差的黑色线条作引导,这就需要我们使用传感器感知此导引线以使车模实现自动按路径行进。智能车要实现自动导引功能就必须要感知导引线,感知导引线相当给机器人一个视觉功能。自动寻迹是基于自动导引小车(AGVauto-guided vehicle)系统,实现小车自动识别路线,判断选择正确的行进路线。2.1.1传感器选择一

5、般来说完成小车寻线前进的任务可以选择两种传感器:即CCD摄像头和反射式光电传感器。1)CCD摄像头进行图像采集和识别方法,但是不适用在小体积系统使用,并且还涉及图像采集、图像识别等领域。此种方法分辨率比较高,对路面的信息处理准确,但对硬件和软件的要求都较严格,算法比较复杂,实时性欠佳。2)反射式光电传感器,在智能识别技术中有着广泛的应用。它可以用来检测地面明暗和颜色的变化,也可以探测有无接近的物体。这种光电传感器的基本原理是,自带一个光源和一个光接收装置,光源发出的光经过待测物体的反射被光敏元件接收,再经过相关电路的处理得到所需要的信息。采用这种方法比较简单,响应速度快,算法简单,实时性比较好

6、。缺点也是显而易见的,分辨率不高,易受外界环境光线影响,同时占用单片机端口比较多。经过慎重分析选择,我们最终选定了第二种识别方案,决定采用反射式传感器进行路径识别。反射式光电传感器的光源有多种,常用的有红外发光二极管,普通发光二极管,以及激光二极管,其中普通发光二极管消耗功率比较大,而激光二极管发出的光的频率虽然较集中,传感器只接收很窄的频率范围信号,不容易被干扰但成本过高。我们采用的是红外发光二极管。红外反射式传感器可以采用红外对管自行制作,由于自行制作的传感器发射管与接收管位置难以保证在同一水平线上且固定安装比较困难,容易造成传感器性能不一致,我们放弃了自行制作,而直接采用了成品红外光电传

7、感器。目前市场上的红外反射式光电传感器种类很多且价格低廉,经查阅大量产品资料,在对个型号的传感器测试后,我们选用了价格、性能基本适合的反射式红外传感器TCRT5000。在使用约40A的发射电流,没有强烈日光干扰(在有日光灯的房间里)探测距离能达3cm,完全能满足探测距离要求。图2.1 红外反射式光电传感器TCRT50002.1.2传感器电路设计红外传感器的电路有多种形式,这里我们采用模拟量输出。这里需要传感器输出模拟量经AD转换后输入单片机,模拟量输出的传感器电路如图2.2所示。图2.2 模拟量输出光电传感器电路经过一系列实验,我们发现运放中的反馈电阻尽可能选择高精度的电阻,这样才可以保证各个

8、传感器的输出特性是一致的。虽然模糊算法增加了程序的复杂性,但通过对程序的优化,其实时性基本可以满足控制的要求,并且硬件设计上相对简单。 2.1.3传感器布局光电传感器阵列是智能车的眼睛,眼睛看的好坏直接影响到后续的认路正确与否。由于这里我们采用了模拟式输出的传感器电路,传感器数量过多会影响算法的实时性,所以传感器数量需要一定的优化设计,经多次仿真以及真实的实验,我们最终确定了传感器数量和布局。一共采用7个传感器,分为两排,第一排4个,第二排3个,前后两排间距为3.5cm。因寻迹黑线宽度为2.5cm,为保证传感器能夹在黑线两测用于检测是否跑偏,我们设置同排传感器间距为3cm,稍大于黑线宽度。传感

9、器排布如图2.3所示。S2 S0 S5S3 S1 S4 S6 图2.3 光电传感器排布为防止其他元器件对传感器造成阻挡等不良影响,特将所有传感器焊于电路板底面。在智能车前端原有两安装孔,间距为6cm,故在电路板后端设置间距为6cm的二固定孔,安装时将电路板与车体用带孔的长铁片连接,其上以螺母固定。可通过调整铁片倾向来调整传感器与地面的夹角与距离,十分方便。2.2电机驱动电路我们完全采用了组委会提供的MC33886芯片设计制作了电机驱动电路。其电路如图2.3所示,为提高对电机的驱动能力,特将两个OUT1、OUT2分别连接在一起接到电机的两个输入端上。图2.4 MC33886电机驱动电路2.3电源

10、管理电路智能车系统需要根据各部件正常工作的要求,对配发的标准车模用7.2V 2000mAh Ni-cd蓄电池进行电压调节。其中,单片机系统、路径识别的光电传感器和接收器电路、车速传感器电路需要5V电压,伺服电机工作电压范围6V,直流电机可以使用7.2V 2000mAh Ni-cd蓄电池直接供电。7.2V变5V电路如图2.9所示,采用LM2940芯片输出直流5V电压。 图2.5 7.2V变5V电压电路7.2V变6V电路如图2.6所示,采用LM2575ADJ芯片通过调节可调电阻输出6V电压。图2.6 7.2V变6V电压电路2.4电源驱动电路板设计与安装在程序开发过程中,我们完全采用了组委会提供的S

11、12核心开发板。为给S12核心开发板供电,同时为了安装调试方便,我们制作了一块电源驱动电路板,上面集成有S12核心开发板与此板的插针式接口、单片机与光电传感器舵机测速系统的信号接口、总电源接口和拨动开关、电源管理的两个变压电路和MC33886电机驱动电路,如图2.11所示:使用时将S12核心开发板插于其上即可,方便可靠。图2.7 电源驱动电路板为给电路板提供安装场所,我们借助车模底部原有的孔与支架,用有机玻璃板搭设了一个平台。有机玻璃板10cm11.5cm,根据车模原有孔的位置打了三个孔,用螺钉和铜螺栓将玻璃板固定在车体上。然后将插于一起的电路板平放其上,用红色绝缘胶带将其固定在有机玻璃平台上

12、。平台下的空间恰好可放置7.2V Ni-cd蓄电池,同时用胶带固定在车模底部的支架上。如图2.8所示: 图2.8 有机玻璃安装平台第三章 软件部分3.1设计思路概述 本队智能车的核心程序-路径识别模块采用的是模糊控制算法,该算法将A/D采集得到的光电传感器输入信号经过模糊化,模糊推理,反模糊化三个步骤,来确定该时刻舵机的转角和驱动电机的转速,从而实现小车的自主寻迹行驶。3.2模糊控制主要理论3.2.1 模糊控制的基本思想把熟练技术人员的实践经验进行总结和形式化描述,用语言达成一组定性条件语句合不精确的决策规则,然后利用模糊集合作为工具使其定量化,用形式化的人的经验法则模仿人的控制策略,再驱动设

13、备对复杂的工业过程进行控制。3.2.2 模糊逻辑的基本概念1. 模糊集合:模糊集合是在不同程度上具有某种特性的所有元素的总和。2. 隶属度函数:模糊集合中某元素x属于该模糊集合的程度称为隶属度。3. 模糊推理:模糊推理实际上是从模糊前提出发按照模糊规则及进行推理,而后得出结论(也是模糊的)。三种模糊推理的基本形式:IF A THEN B;IF A THEN B ELSE C;IF A AND B THEN C。本队所采用的是最后一种模糊推理。3.2.3 模糊控制原理3.2.3.1 模糊化模糊化的输入是精确的输入值,模糊化的输出是模糊量。模糊化的主要功能是根据输入变量的隶属度函数,求出精确的输入

14、值相对于输入变量个语言值的隶属度。建立输入变量隶属度函数共以下四步:1确定所有输入变量的名称2确定每个语言变量的变化范围3确定每个语言变量的语言值个数及名称4确定每个语言变量的每个语言值的位置和形状(一般采用三角形和梯形)模糊化求出精确输入值相对于输入语言变量各语言值的隶属度。3.2.3.2 模糊规则推理 模糊规则推理就是依据模糊规则进行的推理,是模糊控制器的核心工作。模糊推理的输入是所有输入变量的输入精确值相对于输入变量所有语言值的隶属度,模糊推理的输出是输出变量各语言值的隶属度。建立输出变量的隶属度函数。输出变量隶属度函数的建立原则及过程类似于输入变量隶属度函数的建立。(但常采用单值函数作

15、为其隶属度函数)建立模糊规则库。模糊控制规则是模糊推理的依据,主要依据专家的经验与对系统的观察和测量的结果生成,这些规则是用语言描述的。规则库中的数量取决于个输入变量所含语言值的数量、专家的经验及实际的需要。模糊推理(MIN-MAX法)共以下四步:1 建立规则库2 寻找对推理起作用的规则3 确定规则强度:每一条规则强度等于前件中的最小值。4 确定模糊输出:当相同后件的规则强度不同时,模糊输出取其最大值。3.2.3.3 反模糊化(重心法) 在要求较高的系统中,反模糊化一般采用重心法(COG),即求所有模糊输出量的重心。计算公式如下: COG=Si:输出隶属度函数的值Fi:模糊推理最终求出的隶属度

16、3.3本队智能车模糊控制算法说明3.3.1 具体编程思路 本队智能车采用7个反射式光电传感器在车体前方呈W型排开,各传感器会随着对赛道的感光强度输出连续的模拟信号。经过放大器和单片机上的A/D转换器处理输入到单片机中作为控制程序的输入变量。 首先,构造输入变量的隶属度函数并且将输入变量模糊化。 1.5 2.2 2.8 3.5 L M G图1 输入变量隶属度函数图该输入变量隶属度函数由三个模糊子集构成,分别为Little,Medium,Great。由图1可知,一个输入变量可最多属于两个模糊子集,通过对其在两个模糊子集的隶属度可较好的描述该时刻此传感器所处状态。将该图的各条直线方程输入到程序中即可

17、实现隶属度函数的载入,之后将采集到的各传感器信号输入到该隶属函数中,就得到了每个传感器对于三个模糊子集隶属度。 其次,构造输出变量的隶属度函数。-40 -25 -10 0 10 25 40 角度L3 L2 L1 C R1 R2 R3 图2 控制转向伺服电机的输出变量的隶属度函数 80% 90% 100% PWM占空比 S N F图3 控制驱动电机的输出变量的隶属度函数由图2可知,控制转向伺服电机的输出变量隶属度函数由七个模糊子集构成,分别为L3,L2,L1,C,R1,R2,R3。由图3可知,控制驱动电机的输出变量隶属度函数由三个模糊子集构成,分别为S,N,F。由这两个图可知,我们的模糊程序的两

18、个变量的输出变量隶属度函数均采用单值函数,因此在程序中并未单独建立该函数,只是在程序的最开始给予了宏定义。然后,建立模糊推理规则库。根据个人经验、计算机模拟仿真的结果以及智能车在真实赛道上的不断调试,最终得到一个效果较为理想的规则库,详见表1。传感器整体布局如下图所示。S3 S1 S4 S6 S2 S0 S5图4 传感器整体布局示意图表1NO.InputOutputS0S1S2S3S4S5S6AngleSpeed1straightLGGGGGGCF2T-leftLMGGGGGL1F3LLGGGGGL1F4MMGGGGGL1F5MLGGGGGL1F6(fuse)MLMGGGGL2M7GLGGGG

19、GL1F8GMGGGGGL1M9GMMGGGGL2M10(fuse)GMMMGGGL3S11GMLGGGGL2M12GGLGGGGL2M13GGLMGGGL2M14GGLLGGGL2M15GGMLGGGL2S16GGMMGGGL3S17GGGLGGGL3S18GGGMGGGL3S19(fuse)MMMGGGGL3S20(cross)GLGLLGLCF21(cross)LGLGGLGCF22(cross)MMMMMMMCF23T-rightLGGGMGGR1F24LGGGLGGR1F25MGGGMGGR1F26MGGGLGGR1F27(fuse)MGGGLMGR2M28GGGGLGGR1F29G

20、GGGMGGR1M30GGGGMMGR2M31(fuse)GGGGMMMR3S32GGGGMLGR2M33GGGGGLGR2M34GGGGGLMR2M35GGGGGLLR2M36GGGGGMLR3S37GGGGGMMR3S38GGGGGGLR3S39GGGGGGMR3S40(fuse)MGGGMMGR3S本程序共采用40条规则。虽然一共有2187条规则的排列组合,但为了提高程序的运行速度,将一些不可能出现或者出现机率极小的规则略去。如表1中所示,第1条为直线规则,第219条为不同程度的向左转规则,第2022条为遇到交叉线路规则,第2340为不同程度的向右转规则。当七个前件满足规则库中某条规则时

21、,则该条规则有效。本规则表以及上述的两个输出隶属度函数都是为之后的模糊推理做准备的,这几个函数的具体调用将在下文叙述。下一步,进行模糊推理。首先取出每个传感器的隶属度均不为零的所有排列组合,再到规则库中查询与每种排列组合相对应的推理规则,将每条规则的七个前件的隶属度的最小值作为该条规则的强度,也就是两个后件的隶属度。若查询得到的规则的后件有相同的情况,那么取其中的最大值最为该条规则的最终强度。最后,进行反模糊化。依据重心法反模糊化公式,将模糊推理最终求出的输出变量隶属度以及与之对应的输出变量函数值代入公式,求得最终的精确输出。3.3.2 实例分析为将原理说明得更加清楚,现对小车在行使过程中某一

22、时刻的情况进行具体分析。假设该时刻各传感器各输入信号分别为S0=1.6V,S1=3.2V,S26=3.8V(小车前方跑道略微向左偏。首先,根据输入隶属度函数将这七个量进行模糊化,得到模糊量(已将为零的隶属度滤去)S0(L)=0.8,S0(M)=0.1;S1(M)=0.2,S1(G)=0.6;S2(G)S6(G)=1。由此可见,由该组输入可组成四条规则,到规则库中找出对推理起作用的规则,并将前件的最小值赋给后件:If S0(L)=0.8,S1(M)=0.2 then ANGLE(L1)=0.2,SPEED(F)=0.2;If S0(L)=0.8,S1(G)=0.6 then ANGLE(C)=0

23、.6,SPEED(F)=0.6;If S0(M)=0.1,S1(M)=0.2 then ANGLE(L1)=0.1,SPEED(F)=0.1;If S0(M)=0.1,S1(G)=0.6 then 此条规则对推理不起作用。再将相同后件的隶属度取最大值,得到ANGLE(L1)=0.2,ANGLE(C)=0.6;SPEED(F)=0.6。最后由重心法反模糊化得最终结果:ANGLECOG=(0.2*186+0.6*185)/(0.2+0.6)=185.25;SPEEDCOG=200。由此可知,小车舵机略向左转,全速前进。与实际路况基本相符。4 程序代码设计介绍41 整体程序流程图开始传感器输入信号端

24、口声明系统总线初始化伺服电机初始化33886初始化精确输入量模糊化输入变量的隶属度函数模糊输入量规则推理规则库模糊输出量反模糊化输出变量的隶属度函数精确输出量结束3.4.2 程序代码详细介绍1宏定义模块(macro) 定义了舵机转角和驱动电机转速两个输出变量。 舵机处于中心位置=PWM脉宽为1.5ms=程序中185; 舵机处于极左位置=PWM脉宽为2ms=程序中190; 舵机处于极右位置=PWM脉宽为1ms=程序中180。2传感器输入信号端口定义模块 依据单片机手册,将7个A/D转换端口分别定义。3舵机初始化模块(the initial of turning)和驱动电机初始化模块(the co

25、ntrol of 33886) 均根据电机要求,对PWM端口进行初始化。4系统总线初始化(the initial of bus clock) 根据单片机手册,编程使内部系统时钟为48MHz,总线时钟为24MHz。5建立输入变量的隶属度函数(membership function input) 输入图1中各直线方程,根据输入变量Si属于不同的区间,求得隶属度函数值。经7次循环得到所有输入变量的隶属度函数值,并存入数组a73中。6. 建立规则库函数(the rules)利用if语句将表1编程输入,共40条,以查询方式对规则进行判断。以7个前件所属的隶属子函数为输入变量(0=L,1=M,2=G),以

26、后件的隶属子函数作为函数返回值。7模糊推理(the main program) 先将由模糊化得到的隶属度函数数组a73取出;再通过8个for循环将7个传感器的三个隶属度子函数排列组合,并取出其中各项均不为零的所有排列。然后利用子函数min求出其中的最小值赋给minanglei和minspeedi数组,作为该组排列的强度。之后再到规则库中查询与该组排列相对应的规则,将规则的后件赋给tanglei和tspeedi数组。此时,minanglei和tanglei中分别存放了该时各传感器刻转角的隶属度函数值和与之对应隶属子函数;同理,minspeedi和tspeedi中分别存放了该时刻各传感器速度的隶属

27、度函数值和与之对应隶属子函数。再对tanglei和tspeedi中的值进行判断,判断是否有相同的项,如果有则取其中的最大值赋给maxanglem和maxtanglem,并将此时的tanglei和tspeedi赋给finalanglei和finalspeedi;若没有相同项,则直接赋值。这样就得到了该时刻每个输出隶属子函数的最终隶属度,为之后的反模糊化做准备。8反模糊化 将得到的每个输出隶属子函数与其隶属度相乘再求和与各隶属度的和做商,得到的就是该时刻的精确输出量,用以对舵机和驱动电机进行控制。第四章 总结4.1智能车的主要技术指标 物理外形指标:重量(kg)长度(cm)宽度(cm)高度(cm)

28、原来现在1351612其他指标: 电路功耗电机:W13.1A4.9V15.19J传感器:W20.52A5V2.6J单片机系统:W3 A5V J总功耗:WW1W2W315.192.6电容容量传感器电路用0.01uF和33nF各一个,测速电路用100uF一个,7.2V变5V电路用47uF和22uF各一个,7.2V变6V电路用100uF和330uF各一个,电机驱动电路用33nF和47uF各一个,共用电容9个,总容量为646uF。传感器型号TCRT5000,数量7,共两排,前4后3除车模原有的驱动电机、舵机之外伺服电机个数0赛道信息检测精度、频率4.2问题与解决在我们智能车的设计制作过程中,确实遇到了

29、各种各样的问题,在问题的解决过程中,也提高了我们的动手动脑能力,学到了许多在书本上学不到的知识。具体遇到的问题以及解决方法如下:1) 用PWM调节舵机的时候,发现运行时单片机总是复位,不能正常运行,后来经过检查发现是单片机和舵机没有共地。2) 调节舵机的时候,刚开始发现程序运行后舵机没有反应,而通过示波器检测单片机的信号输出是正确的,后来给程序中加了延时子程序后,舵机可以正常动作。3) 调节AD模块的时候,发现参考电压端VRH总是低电平,导致AD输出只有两种信号,不能正确转换,后来经过检查发现没有把单片机的S8开关连接上。4) 用BDM调试的时候,上电后发现智能车前轮始终左转到极限,后轮速度一

30、直不变,无论怎么修改程序都不会引起小车运行状态的变化,开始我们认为是BDM调试器或者是单片机出了问题,更换之后仍然如此,请教卓晴老师后,才发现是没有在主程序里面对系统时钟进行初始化,导致程序运行不正常。5) 用BDM下载程序的时候,点击load后发现程序不能正常下载进去,后来经过检查,发现目标程序在中文目录下,改到英文目录后可以正常下载。6) 为改变传感器检测的灵敏度,在调节传感器电路板的电位计的时候,开始正常,后来突然发现电路中各个焊点的电压均接近5V,我们以为此电路已完全损坏,后经检查发现GND网络的一根导线呈断路状态,接好之后恢复正常。7) 由于车模后轮的机械配合不好导致摩擦太大,大大影

31、响了运行速度,重新装配后摩擦力大大降低,提高了运行速度。8) 由于电路板上给后轮电机供电的接口没有焊接牢固,导致电机的运行不正常,影响了车速,重新焊接后,电机运行达到了正常。9) 仿真时,Plastid软件中对于光电传感器的尺寸没有精确定义,仿真时只好根据实体车模的形状比例进行传感器布局的定性分析。4.3 现存的问题与未来的改进方向目前我们的车模最大的问题就是动力不足,电机在7.2V电压时,最大电流为3.2A,未达到所能承受最大电流3.5A,稳定有余,速度稍嫌不足。同时对于路径识别以及算法部分,想法比较多。如采用数字输出式传感器电路,可考虑在前端伸出两个光电传感器用以探测弯道,将其间距放大到6

32、cm或者7cm,以防止直道时的转向误判为弯道,将此二传感器尽量放前,以提早预警检测到弯道,控制智能车提前拐弯,经方法经仿真,效果比较理想,未来要做的话,可以做一下文章。致 谢首先非常感谢清华大学和飞思卡尔公司组织的这次智能车大赛,能够让我们有机会亲身参与其中,将自己的知识与能力展现出来。书本不是知识的全部空间,实践才是任何知识的最终归宿。在实践中我们真正得到了锻炼,真心感受到了自己的成长,这一切是无法用金钱所能衡量的。还要感谢我们的指导老师孟庆浩老师,在智能车的制作过程中,他悉心指导着我们,就每个问题与我们讨论,给予我们启迪与鼓励。在此,我们小组所有成员向孟老师致以深深的谢意!同时还要感谢学校

33、以及学院给予我们的大力支持。感谢天津大学的另一支参赛队伍给予我们的真诚帮助。在智能车的制作过程中,我们小组每个成员都为之付出了很多的心血,也相互学到了很多东西,相互的鼓励信任与支持让我们成为了一个坚强有力的团队,感谢我们每一个人。最后也感谢评委老师的辛勤劳动,您们辛苦了!谢谢您们!程序见附录。附录:#include /* common defines and macros */#include /* derivative information */#pragma LINK_INFO DERIVATIVE mc9s12dg128b/*macro*#define left3 190#define

34、 left2 188#define left1 186#define center 185#define right1 184#define right2 182#define right3 180#define slow 50 #define normal 65#define fast 80/*the initial of A/D*unsigned char AD_wValue; /uint is in stdtypes.hunsigned char AD_wData7; /全局变量存放 AD0,AD1,AD2的结果 8字节void AD_Init(void) /ATDCTL0, ATDCT

35、L1 reserved for factory testing and is not / available in normal modes. ATD0CTL2 = (ATD0CTL2_ADPU_MASK|ATD0CTL2_AFFC_MASK); /允许ATD正常工作,将转换结束标志设为快速清除方式; ATD0CTL3 = (ATD0CTL3_S4C_MASK|ATD0CTL3_S2C_MASK|ATD0CTL3_S1C_MASK); /7 channels,非FIFO模式 ATD0CTL4 = (ATD0CTL4_SRES8_MASK|ATD0CTL4_PRS2_MASK|ATD0CTL4_

36、PRS0_MASK); /转换精度8位 /the highest AD转换时钟为2MHz,即:24MHz/(5+1)*0.5=2MHz ATD0CTL5 = (ATD0CTL5_DJM_MASK|ATD0CTL5_SCAN_MASK|ATD0CTL5_MULT_MASK); /八位精度采用右对齐方式,结果数据无符号表示,选择多路转换, /通道选择码为000(cc,cb,ca)即从0通道开始的7个通道被采样;连续转换 ATD0DIEN=0x00; / 禁止数字输入缓冲/*The initial of turning* void delay(int a) int j=10000; for(;a0;

37、a-) for(;j0;j-);void PWM0_Init(void) PWME_PWME0 = 0x00; PWMPOL_PPOL0=0; PWMPER0 = 200.0; PWMPRCLK = 0x04; /* Set prescaler register */ PWMSCLA = 75; /* Set scale register */ PWMCLK_PCLK0 = 1; PWMCNT0 = 0; DDRP = 0xff; /控制输出 PWME_PWME0 = 1; /* Run counter */*The control of 33886*void PWM1_Init(void)

38、PWME_PWME1 = 0x00; PWMPOL_PPOL1=0; PWMPER1 = 200.0; PWMPRCLK = 0x04; /* Set prescaler register */ PWMSCLA = 75; /* Set scale register */ PWMCLK_PCLK1 = 1; PWMCNT1 = 0; DDRP = 0xff; /控制输出 /* Select clock source */ PWME_PWME1 = 1; /* Run counter */*the control of motor*void PWM0_Control(unsigned char

39、m) PWMDTY0=m; delay(1000); delay(1000);void PWM1_Control(unsigned char m) PWMDTY1=m; delay(1000); delay(1000); /*The initial of BUS CLOCK*/ void Initial_pll(void) REFDV=0x01; /内部系统时钟为 48MHZ,总线时钟为24MHZ / 根据书P103的公式给出 SYNR REFDV 的值 SYNR =0x02; while (!(CRGFLG & 0x08) /等待时钟频率已稳定锁相环频率已锁定 CLKSEL=0x80; /选

40、定所相环时钟 FCLKDIV=0x49; /使FLASH 和 EEPROM 的擦除操作工作频率在200kHZ左右 ECLKDIV=0x49; /*membership function input*/void input(unsigned char S,unsigned char b73) unsigned char i; for(i=0;i7;i+) if(Si=76) /1.5=76 bi0=100; if(76Si&Si=112) /2.2=112 bi0=-(100.0/36.0)*Si+11200.0/36.0; if(76Si&Si=128) /2.5=128 bi1=(100.0

41、/52.0)*Si-7600.0/52.0; if(128Si&Si=178) /3.5=178 bi1=-(100/50)*Si+17800/50; if(143Si&Si178) bi2=100; /*the rules*unsigned char *rules(unsigned char a0,unsigned char a1,unsigned char a2,unsigned char a3, unsigned char a4,unsigned char a5,unsigned char a6,unsigned char b) unsigned char *pt;unsigned ch

42、ar a2=0; if(a0=2)&(a1=0)&(a2=2)&(a3=0)&(a4=0)&(a5=2)&(a6=0) a0=center; a1=fast; else if(a0=0)&(a1=2)&(a2=0)&(a3=2)&(a4=2)&(a5=0)&(a6=2) a0=center; a1=fast; else if(a0=1)&(a1=1)&(a2=1)&(a3=1)&(a4=1)&(a5=1)&(a6=1) a0=center; a1=fast; else if(a0=0)&(a1=2)&(a2=2)&(a3=2)&(a4=2)&(a5=2)&(a6=2) a0=center; a

43、1=fast; else if(a0=0)&(a1=1)&(a2=2)&(a3=2)&(a4=2)&(a5=2)&(a6=2) a0=left1; a1=fast; else if(a0=0)&(a1=0)&(a2=2)&(a3=2)&(a4=2)&(a5=2)&(a6=2) a0=left1; a1=fast; else if(a0=1)&(a1=1)&(a2=2)&(a3=2)&(a4=2)&(a5=2)&(a6=2) a0=left1; a1=fast; else if(a0=1)&(a1=0)&(a2=2)&(a3=2)&(a4=2)&(a5=2)&(a6=2) a0=left1; a

44、1=fast; else if(a0=1)&(a1=0)&(a2=1)&(a3=2)&(a4=2)&(a5=2)&(a6=2) a0=left2; a1=normal; else if(a0=2)&(a1=0)&(a2=2)&(a3=2)&(a4=2)&(a5=2)&(a6=2) a0=left1; a1=fast; else if(a0=2)&(a1=1)&(a2=2)&(a3=2)&(a4=2)&(a5=2)&(a6=2) a0=left1; a1=normal; else if(a0=2)&(a1=1)&(a2=1)&(a3=2)&(a4=2)&(a5=2)&(a6=2) a0=left

45、2; a1=normal; else if(a0=2)&(a1=1)&(a2=1)&(a3=1)&(a4=2)&(a5=2)&(a6=2) a0=left3; a1=slow; else if(a0=2)&(a1=1)&(a2=0)&(a3=2)&(a4=2)&(a5=2)&(a6=2) a0=left2; a1=normal; else if(a0=2)&(a1=2)&(a2=0)&(a3=2)&(a4=2)&(a5=2)&(a6=2) a0=left2; a1=normal; else if(a0=2)&(a1=2)&(a2=0)&(a3=1)&(a4=2)&(a5=2)&(a6=2) a0=left2; a1=normal; else if(a0=2)&(a1=2)&(a2=0)&(a3=0)&(a4=2)&(a5=2)&(a6=2) a0=left2; a1=normal; else if(a0=2)&(a1=2)&(a2=1)&(a3=0)&(a4=2)&

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论