


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、河浙;求A辱创新设计与实践实训题目:基于S08单片机的自动寻迹小车设计专业班级:自动化学生姓名:学 号:指导教师:王威设计地点:2010年12 月 20 日日期:成绩:创新设计与实训任务书学生姓名专业班级自动化学号题目基于S08单片机的自动寻迹小车设计课题性质其他课题来源自拟指导教师王威主要内容(参数)全国大学生“飞思卡尔”杯智能车竞赛是教育部主办的大学生5大赛事之一,具有较强的综合训练作用。本设计基于S08单片机,基于反射式光耦设计自动寻迹小车,主要内容如下:1、设计智能车寻迹电路;2、设计智能车电机驱动及调速电路;3、编写程序,能够适应各种赛道。通过本次创新设计使得学生巩固所学的理论与技能
2、,提高学生的实践能力和应用能力,初步掌握实际的工程设计方法,设计步骤,为将来的学习与毕业 设计打下坚实的基础。任务要求(进度)(包括应具备的条件、图表等)设计要求:1. 设计基于光电开关的寻迹电路;2. 设计小车主电机驱动及调速电路;3. 编写主程序,使小车能够根据比赛赛道自动寻迹前进;4. 绘制相应的硬件图纸及软件流程图;5. 完成软件与硬件设计并加以调试;6. 按照要求撰写创新设计与实践报告书。主要参考资料1 王威.嵌入式微控制器 S08AW原理与实践M.北京:北京航空航天大学 出版社,2009.2 陈杰.传感器与检测技术M.北京:高教出版社,2004.3 邵贝贝 龚光华.单片机认识与实践
3、M.北京:北京航空航天大学出版社,2006.4 阎石.数字电子技术基础(第三版).北京:高等教育出版社,1989审查意见系(教研室)主任签字:年月日绪论1. 1设计背景为加强大学生实践、创新能力和团队精神的培养,促进高等教育教学改革, 受教育部高等教育司委托(教高司函2005201号文,附件1),由教育部高等学 校自动化专业教学指导分委员会(以下简称自动化分教指委)主办全国大学生智 能汽车竞赛。该竞赛以“立足培养、重在参与、鼓励探索、追求卓越”为指导思 想,是以智能汽车为竞赛平台的多学科专业交叉的创意性科技竞赛,是面向全国大学生的一种具有探索性的工程实践活动,旨在促进高等学校素质教育,培养大学
4、生的综合知识运用能力、基本工程实践能力和创新意识,激发大学生从事科学 研究与探索的兴趣和潜能,倡导理论联系实际、求真务实的学风和团队协作的人 文精神。该竞赛分竞速赛与创意赛两类比赛。竞速赛是在规定的模型汽车平台上,使 用飞思卡尔半导体公司的8位、16位微控制器作为核心控制模块,通过增加道 路传感器、电机驱动电路以及编写相应软件,制作一部能够自主识别道路的模型 汽车,按照规定路线行进,以完成时间最短者为优胜。创意赛在统一比赛平台上, 充分发挥参赛队伍想象力,以特定任务为创意目标,完成研制作品,由竞赛专家 组观摩作品现场展示、质疑、现场观众投票等环节,最终决定比赛名次。该竞赛 涵盖了控制、模式识别
5、、传感技术、电子、电气、计算机、机械等多个学科知识。 该竞赛以飞思卡尔半导体公司为协办方,已成功举办了五届,曾得到了原教 育部副部长吴启迪教授、原高教司张尧学司长及理工处领导、飞思卡尔公司与各 高校师生的高度评价,已发展成全国26个省(自治区)、直辖市的300余所高校 广泛参与的全国大学生智能汽车竞赛。 第三、四、五届连续被教育部批准列入国 家教学质量与教学改革工程资助项目之一(附件 2,教高函201013号)。飞思 卡尔公司在2010年8月26与国家教育部国际合作交流司签署了关于 “高等学校 人才培养战略合作协议”,此协议将继续赞助全国大学生“飞思卡尔”杯智能汽 车竞赛。1. 2设计的意义智
6、能车竞赛与教育部已举办的数学建模、电子设计、机械设计、结构设计4大专业竞赛不同,是以迅猛发展的汽车电子为背景,涵盖了控制、模式识别、传 感技术、电子、电气、计算机、机械等多个学科交叉的科技创意性比赛。引导和激励学生实事求是、刻苦钻研、勇于创新、多出成果、提高素质,发现和培养 一批在学术科技上有作为、有潜力的优秀人才。1. 3设计所需的设备采用组委会提供的标准赛车底盘(赛车MATIZ配备标准驱动电机RS-380SH 转向舵机和可充电蓄电池);单片机FREESCALE8位单片机MC9S08AW®发评估 板;传感器采用红外反射式对管及触发电路;电机驱动采用基于 33886芯片的H-Brid
7、ge驱动电路。车模介绍车模:G768电机:RS380-ST/3545,舵机:FUTABA30102总体设计2.1小车系统可分为6个部分:电源管理:稳定电压,使系统电压稳定在要求的电压范围光电传感器:检测路径,校正小车在跑道上的位置车速传感:实时检测小车当前的速度参数选择:根据小车当前的状态,确定算法的参数驱动电机:根据小车的速度、位置,增减速度转向电机:控制小车的方向电澹箸理此电代感MCU转向电机、车速他感丫参数选扌杀驱动电机2.2 跑道小车跑道宽度50CM中间黑线20mm小车从出发去出发,跑完一圈后,在起 始线后1米范围内自动停下来。3硬件电路设计3.1 传感器的选择光电式传感器是利用光电器
8、件把光信号转换成电信号的装置。光电式传感器工作时,先将被测量转换为光量的变化,然后通过光电器件再把光量的变化转换为相应的电量变化,从而实现非电量的测量。光电式传感器的核心(敏感元件)是光电器件,光电器件的基础是光电效应。本设计采用采用A/D转换的光电对管红外光耦传感器,当发光二极管由 A- B导通时,会发出红外线,经小车跑道散射,红外接收二极管在接收到红外线时会由C-D导通,从而使OUT1的电压由+5V123变为+0.7。V CCV CC1KAOUT 1B尹 UD13.2 车速检测电动机的测速有很多方法,常见的有测速发电机测速、霍尔传感器测速、编 码器测速、光电码盘测速等。测速发电机测速适合大
9、型电机的测速。 霍尔传感器 测速的方法具有抗干扰能力强,准确可靠地特点,但是测速分度较低,结构也比 较复杂。编码器测速,不但使用方便,运行可靠稳定而且分辨率高,也是目前智 能车大赛中普遍使用的测速装置,但是价格有点高。我们将着重介绍光电码盘测 速,这种测速方法比较简单、容易操作,而且编码器也是基于光电码盘测速的原 理。接下来的是电路部分,需要用到槽型光耦,槽型光耦的外形成一个“凹” 字型,一边是个红外发射管另一边是接收管, 它们都被塑料壳包起来,中间留了 一条很细的窄缝,没有障碍物时接收管能接受到红外线, 有东西挡住中间时接收 管就接收不到了。在选择槽型光耦时中间缝越细小说明管子性能越好。从右
10、图电路中可以看出没有遮 挡时,发射管发出的光线直接被接收 管接收,接收管导通集电极电位为低 电平,当光线被遮挡时,接收管接受 不到光线,处于截止状态,集电极为 高电平,后面串了个CD40106B施密 特触发器的作用是对信号整形,遮光 物体进入和离开时都有一个过程,这 就使得信号变化也有一个过程,不是规则的方波,不能直接提供给 MCU加上施 密特触发器以后,通过阀值触发,就变成规则的电平信号了。将方波信号送入测速芯片CD4040BC可在Q0-Q11管脚输出小车的速度。3链接电路图、CD4040BC.u-別holoh封装图如下:3.3 电源管理通过稳压芯片LM294将电池电压7.2V将为5V供单片
11、机和光电传感器,使用一23 7个普通二极管将另一路输出电压钳制到 5.7V向舵机供电。电路图如下:7.2V3.4 转向电机1、舵机内部结构:由舵盘、齿轮组、位置反馈电位计、直流电机、控制电 路板等组成2、工作原理:脉宽信号给定参考位置,舵机内部电路通过反馈控制调节舵 盘角位。舵盘角位由PW控制信号的脉宽决定。3、舵机基本参数:型号:S3010电 压:4.0 6.0 V角度控制:1°/400us工作速度:0.16 + 0.02堵转力矩:6.5 + 1.3 Kg.cm3.5 驱动电机电机驱动电路,我们在此使用 MC3388芯片直接驱动 MC3388特性:工作电压:5-40V导通电阻:12
12、0毫欧姆输入信号:TTL/CMOS PW频率: 10KHZ短路保护、欠压保护、过温保护等电机外形33SBC Simipllfked AppUcaUdni DlagratmIN50V工 UTMCU OUTOUT33886ouriOUTJMC33886驱动电路FSIN1叱our?PfiND ®AfiND4系统软件设计在智能车系统的设计中,硬件是基础,没有一个好的硬件平台,软件就无法 运行。对于智能车系统来说,软件的核心是控制算法。而完成这些任务的编程语 言有汇编语言和C语言。软件部分是整个智能车系统的灵魂,在硬件方面各参赛 队之间大同小异,真正体现各参赛队智能车的优势和最后决定比赛成绩好
13、坏的往 往是软件部分,尤其是核心控制算法的设计。4.1控制算法PID( Proportional Integral Differential)控制是比例、积分、微分控制的简称。在自动控制领域中,PID控制是历史最久、生命力最强的基本控制方式。PID控制器的原理是根据系统的被调量实测值与设定值之间的偏差,利用偏差的比例、积分、微分三个环节的不同组合计算出对广义被控对象的控制量。常规PID控制系统原理框图PID控制算法可分为位置型和增量型两种:(1)位置型算法模拟调节器的调节动作是连续的,任何瞬间的输出控制量u都对应于执行机构(如调节阀)的位置。数字控制器的输出控制量也和阀门位置相对应,故称 为位
14、置型算式(简称位置式)。(2)增量型算法增量型算法仅仅是在算法设计上的改进,其输出是相对于上次控制输出量的 增量形式,并没有改变位置型算法的本质,即它仍然反映执行机构的位置开度。 如果希望输出控制量的增量,则必须采用具有保持位置功能的执行机构。4.2主程序流程图主程序流程图如图所示。系统首先对设备进行初始化,然后选择进入参数修 改程序。参数设定完之后打开中断,最后循环执行位置速度控制程序。4.3程序的初始化初始化部分包括参数的读取、PID初始化、定时器和脉冲计数器的初始化、 I/O端口的初始化、PWM控制器的初始化和键盘显示控制器 7279的初始化。图4.2初始化程序流程图4.4位置速度控制程
15、序首先读取前方传感器组的状态来判断赛车和黑线的位置关系,通过该位 置关系给出相应的转向舵机的转角和电机的转速。具体程序流程图如图。4.5中断处理程序中断处理程序每20毫秒执行一次,中断处理函数的主要目的是定时读取脉冲 计数器的值并把该值反馈给PID控制程序,然后调用PID控制程序。图给出了程序 流程图。进入中断1T清中断标志T读取码盘脉冲值T脉冲计数寄存器清零1PID速度控制1T返回4.6 PID控制程序系统采用增量式的速度 PID,具体流程图如图4.5f程序入口:1T偏差计算r设置调节死区1F增量式速度PID计算是否超过最大值?是输出最大值是否低于最小值?是输出最小值I返回驱动电机占空比图4
16、.5 PID控制程序5系统调试5.1开发工具包括源程序的编程序的开发是在组委会提供的 CodeWarrior IDE下进行的, 写、编译和链接,并最终生成可执行文件。CodeWarrior 6.2是面向以HC1和S12为CPU勺单片机嵌入式应用开发软件 包。包括集成开发环境IDE、处理器专家库、全芯片仿真、可视化参数显示工具、 项目工程管理器、C交叉编译器、汇编器、链接器以及调试器。5.2调试过程我们使用的是单片机本身配套的 BDM在调试时,把程序编译下载到S08AC60 单片机内,运行后可通过内存窗口查看程序运行状况。根据小车在模拟跑道上的状况调整参数,完善硬件、软件设计,最终达到理想的水平
17、。总 结在此份报告中,我主要介绍了智能车准备的基本思路,包括电路、软件、以 及最重要的控制算法的创新思想。在电路方面,我们以模块形式分类,在电源管理、电机驱动、舵机驱动、传 感器、速度检测,这五个模块分别设计,在查找资料的基础上确定合适的最优方 案;然后我加以实验,最后以报告中所提到的形式决定了我们最终的电路。在算法方面,我们使用C语言编程,利用比赛推荐的开发工具调试程序,经 过小组成员不断讨论、改进,终于设计出一套比较通用的,稳定的程序。在这套 算法中,我们结合路况调整车速,做到直线加速,弯道减速,保证在最短时间跑 完全程。虽然成功的完成了智能车的设计制作,但是赛车的整体性能还有可提高的环
18、节,我们在以下方面还有待于更大的提高。 路线识别方面,如果合理的调整红外 装置,则可以更远的探测路线,以便做好弯道前的准备,这样便可以在直道上更 充分的加速。在循线算法方面,更多的阅读文献,查阅资料,可以使得理论更加 成熟,也可以更有效的完善算法。参考文献1王威嵌入式微控制器S08AW原理与实践M.北京:北京航空航天大学出 版社,2009.2陈杰传感器与检测技术M.北京:高教出版社,2004.3邵贝贝 龚光华.单片机认识与实践M.北京:北京航空航天大学出版社, 2006.4阎石.数字电子技术基础(第三版).北京:高等教育出版社,19895陈懂,刘瑢,金世俊.智能小车的多传感器数据融合.现代电子
19、技术,2005, 第六期6臧杰,阎岩.汽车构造M.北京.机械工业出版社.20057沈长生常用电子元器件使用一读通M 北京.人民邮电出版社.20048宗光华机器人的创意设计与实践M.北京.北京航空航天大学出版 社.20049张伟等.Protel DXP高级应用M.北京.人民邮电出版社.200210张文春.汽车理论M.北京.机械工业出版社.200511王晓明.电动机的单片机控制M.北京.北京航空航天大学出版社.2002附表1 :硬件电路图+7.2+5后调试BDMJP?z Kuoo5UL76544C c CSGGD FfDDDDGAGNDFSIN1V+V+OUT1OUT2 DNCPGNDPGNDDN
20、CIN2D1OOPV+OUT2OUT2D2PGNDPGND92”13“15一;fIRQPTD3疋SETPTD2PTF0VSSADPTF1VDDADPTF2PTD1PTF3PTD0PTF4PTE7PTC6PTESPTF7PTE5PTF5PTBlPTF6PTESPTE0PTE2PTE1PTBTTPVTTg RRTTTTTptg3B V Vo+7.2OUTG00uFMC9S08AW60+5U?484039383736353433464544J43度421470OPTOISO1TitleCLEARVCCCLOCKOUTPUTAQABQBCQCDQDPTGNDLOADC.EARVCCCLOCKOUTPU
21、TAQABQBCQCDQDPTGNDLOADSzeNumberRevisionBDate:18-Dec-2010Sheet ofFie:个人十雷学习大四资全部部电路理图pREVOwnaayDB56附表2 :程序源代码#include <hidef.h> /* for Enablelnterrupts macro */#include "derivative"" /* include peripheral declarations */#include <math.h>定义舵机变量 *定义数组,存放12路ad转化后的值*/int ad_dat
22、a12; /*int ad_add=0;int ad_average=O ;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 Stopl TPM2C0V=2500;PTCD_PTCD
23、6=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、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 structint Ne
25、xtPoint;int ThisPoint;/设定目标Desired valueint Kp;/比例常数Proportional Constint Ki;/积分常数Integral Constint Kd;/微分常数Derivative Constint LastError;Error-1int PrevError;Error-2int SumError;/Sums of Errors speedPID ;! £e;ep-pe+ppe-pe=ppe-pe!_ldLOaV=£Biep_pe !(!OOOO_LOSLOaVi!)JOj !£OXO=LOSLOaV !
26、2e;ep-pe+ppe-pe=ppe-pe!_ldL0aV=2Biep_pe !(!OOOO_LOSLOaVi!)JOj !soxo=iosioav ! l,e;ep-pe+ppe-pe=ppe-pe !_ldlOaV=lMep_pe !(!OOOO_LOSLOaVi!)JOj ! 10x0= los ioav ! Oe;ep-pe+ppe-pe=ppe-pe !_ldlOaV=01Biep_pe !(!OOOO_LOSLOaVi!)JOjOe;ep_|'弟昜M半孫旦辍刑翳H 'o B®av野誤/*出!ooxo=iosioav:o=ppe_pe (P!OA)e;ep
27、-;s6 piOA/羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊/!ooxo=iosioav9iav-8av!ddX0=Sl 丄 Odbzav-oav:zlzlX0=H 丄 Odb!ooxo=sosioava/vj:ooxo=odoioav(P!0A);!U|9av P!OA/羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊羊/* !aidto=dd¥ '*/:aidfa Gid旬s!
28、 Gid心is SJ0JJ3 jo siuns/Ijojjiuns ;uiS-jojj3/IJOJJASJd ;UI|,-jojj3/!jojj3;sb| ;uiISUOO 9AneAIJ9a/3 MISUOO |BJ691U|/心M;suoq leuoiyodojd/tdy men|E/ P9JIS9Q卑目君視/IlujOdSjii 丄 mHuQdlxoN MIJQruis jeped 心/* UldSE=dd* */:aids CHdPeedsADC1SC1=0X04;for(;!ADC1SC1_COCO;);ad_data4=ADC1RL;ad_add=ad_add+ad_data4;A
29、DC1SC1=0X05;for(;!ADC1SC1_COCO;);ad_data5=ADC1RL;ad_add=ad_add+ad_data5;ADC1SC1=0X06;for(;!ADC1SC1_COCO;);ad_data6=ADC1RL;ad_add=ad_add+ad_data6;ADC1SC1=0X07;for(;!ADC1SC1_COCO;);ad_data7=ADC1RL;ad_add=ad_add+ad_data7;ADC1SC1=0X08;for(;!ADC1SC1_COCO;);ad_data8=ADC1RL;ad_add=ad_add+ad_data8;ADC1SC1=0
30、X09;for(;!ADC1SC1_COCO;);ad_data9=ADC1RL;ad_add=ad_add+ad_data9;ADC1SC1=0X0A;for(;!ADC1SC1_COCO;);ad_data10=ADC1RL;ad_add=ad_add+ad_data10;ADC1SC1=0X0B;for(;!ADC1SC1_COCO;);ad_data11=ADC1RL;ad_add=ad_add+ad_data11;ad_average= ad_add /7;*if(ad_data0>=ad_average)flag0=1;if(ad_data0<ad_average)fl
31、ag0=0;if(ad_data1>=ad_average)flag 1=300;if(ad_data1<ad_average)flag 1=0;if(ad_data2>=ad_average)flag2=5;if(ad_data2<ad_average)flag2=0;if(ad_data3>=ad_average)flag3=700;if(ad_data3<ad_average)flag3=0;if(ad_data4>=ad_average)flag4=8;if(ad_data4<ad_average)flag4=0;if(ad_data5&
32、gt;=ad_average)flag5=1100;if(ad_data5<ad_average)flag5=0;if(ad_data6>=ad_average)flag6=13;if(ad_data6<ad_average)flag6=0;if(ad_data7>=ad_average)flag7=1500;if(ad_data7<ad_average)flag7=0;if(ad_data8>=ad_average)flag8=17;if(ad_data8<ad_average)flag8=0;if(ad_data9>=ad_average)f
33、lag9=1900;if(ad_data9<ad_average)flag9=0;if(ad_data10>=ad_average)flag10=21;if(ad_data10<ad_average)flag10=0;if(ad_data11>=ad_average)flag11=2300;if(ad_data11<ad_average)flagl 1=0;AD=flag0+flag1+flag2+flag3+flag4+flag5+flag6+flag7+flag8+flag9+flag10+flag11;/*/if(right_close=0)if(AD= 1
34、)Turn=0;mid_fla( if(AD= 301)Turn=1;mid_flag=0;left_close=1;if(AD= 300)if(AD= 305)Turn=3;mid if(AD= 5)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; midif(AD= 1108) Turn=9;mid_flag=1;left_close=0;right
35、_close=0;if(AD= 1100)Turn=10; mid_flag=1;left_close=0;right_close=0if(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
36、;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; mi
37、d_flag=O; right_close=1;if(AD= 2300)Turn=22;mid_flag=0; right_close=1;/* *PID初始化 *void PIDInit(void)/*、O初始化 */sPID.ThisPoint=0;/设定目标Desired valuesPID.Kp=0;/比例常数Proportional ConstsPID.Ki=0;/积分常数Integral ConstsPID.Kd=0;/微分常数Derivative ConstsPID.LastError=0;Error-1sPID.PrevError=0;Error-2sPID.SumError=
38、0;/Sums of ErrorsDjPID.ThisPoint=0;/设定目标Desired value 302DjPID.Kp=1;/比例常数Proportional ConstDjPID.Ki=1;/积分常数Integral ConstDjPID.Kd=3;/微分常数Derivative ConstDjPID.LastError=0;Error-1DjPID.PrevError=0;Error-2DjPID.SumError=0;/Sums of Errors50void lOlnit(void)PTGDD_PTGDD4=0;G4复位按键PTGPE_PTGPE4=1;PTGDD_PTGD
39、D3=1;/*G3连接计数芯片4040清零管脚,高电平清零*/PTGD_PTGD3=0;PTGDD_PTGDD1=1;/*G1拉高蜂鸣器,高电平有效,强驱动*/PTGDS_PTGDS1=1;PTGD_PTGD1=1;PTGD_PTGD1=0;测速计数输入*/PTEDD=0x00; /*EPTCDD_PTCDD6=1; /*C6 连接驱动芯片 386 的 IN1*/PTFDD_PTFDD7=1; /* F7 连接驱动芯片 386 的 IN2*/PTCD_PTCD6=0;PTFD_PTFD7=1;时钟初始化*void ICGInit(void)ICGC 仁0x78; /*fllICGC2=0x20
40、;/*系数为p=1,外部晶振*/倍频因子N=8,分频因子 R=1*/电机舵机初始化*/void servoInit(void)TPM2SC=0x0F;/*TPM2M0D=2500;TPM2C1SC=0x28; /*TPM2C1V=185;总线时钟128分频*/舵机初始化-通道0设置边缘对齐的pwm中断请求不允许*/TPM2C0SC=0x28; /*TPM2C0V=0;/*/*电机初始化-通道0设置边缘对齐的设定初始占空比,舵机处于中间位置 */殳延日寸 *pwm中断请求不允许*/void delay(int de)while(de-) _RESET_WATCHDOG();void delay1
41、(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) Disablelnterrupts;if(TPM3SC & 0x80)=0x80)TPM
42、3SC_TOF = 0;speed=PTED&0x3F;PTGD_PTGD3=1;计数器清零PTGD_PTGD3=0;if(Turn>7)&&( Turn<15)l0=1;elsel0=0;if(Turn>14) r=1; if(Turn<8) r=2;zw10=zw9;zw9=zw8;zw8=zw7;zw7=zw6;zw6=zw5;zw5=zw4;zw4=zw3;zw3=zw2;zw2=zw1;zw1=zw0; zw0=l0;EnableInterrupts; 速度PID*/* int speedPIDCalc (speedPID *pp)in
43、t 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; sPID.Ki=O;sPID.Kd=10;elsesPID.Kp=180; sPID.Ki=O; sP
44、ID.Kd=5;/ 110/ 0/ 10/ 145/ 1/15return (pp->Kp*Erro 叶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->L
45、astError;pp->LastError=Error;return (pp->Kp*Erro r+pp->Ki*pp->SumError/2500+pp->Kd*dError);舵机控制*void SteerContral(void)int djpid;DjPID.NextPoint=0;DjPID.ThisPoint=ZhuanjiaoTurn; /turnif(v>0)djpid=v;else为黑线位置djpid=101+steerPIDCalc(&DjPID);v=0;TPM2C1V=djpid;a=TPM2C1V;电机控制*void Sp
46、eedContral(void)if(circle>=2)TPM2C0V=2500;PTCD_PTCD6=0;PTFD_PTFD7=0;for(;)_RESET_WATCHDOG();elsesPID.NextPoint=speed;sPID.ThisPoint=ShuruspeedTurn;if(u>0)uk=u;elseuk=speedPIDCalc(&sPID);u=0;TPM2C0V=uk; w=TPM2C0V;起始延时*void Start_Key(void)for(;)if(PTGD_PTGD4=0)delay1(1);if (PTGD_PTGD4=0)dela
47、y2(10);EnableInterrupts;break ;_RESET_WATCHDOG();起始线识别*/void StartLine()if(ad_data7v=30|ad_data8<=30)&&ad_data10>=70&&(ad_data5>=100|ad_data 6>=100)&&(a d_data3v=30|ad_data4<=30)&&ad_data1>=70)circle+ ;PTGD_PTGD6=1;delay(8000);PTGD_PTGD6=0;/* Illivoi
48、d main(void)IOInit();ICGInit();ADCInit();servoInit();PIDInit();/ SOPT_COPE=0;TPM3SC = 0x4F;/*总线时钟 128 分频 */TPM3MOD = 2500;Disablelnterrupts;/ EnableInterrupts;Start_Key();for(;)get_data();/StartLine();n=zw10*1024+zw9*512+zw8*256+zw7*128+zw 6 *64+zw5*32+zw4*16+zw3*8+zw2*4+zw1 *2+zw0;m=zw 6*64+zw5*32+zw4*16+zw3*8+zw2*4+zw1*2+zw0;if(m=124)|(m=120)|(m=112)/ /直道入弯if(speed>4)&&(r=1)/ v=TPM2C1V- (Turn-14)*speed;Stop1;if(speed>4)&&(r=2)/ v=TPM2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 法律实践面试题及答案
- 能源上锁考试题及答案
- 抽象概括面试题及答案
- 银川高空作业考试试题及答案
- 广发银行营销岗面试题及答案
- 石油单招实操考试试题及答案
- 蜀山教师面试题及答案
- 2025年道路桥梁与渡河工程专业毕业设计开题报告
- 2025年水务招聘考试题库
- 2025年起重技术考试题库
- 酒店预防突发性流行病应急预案
- 《地下水环境监测技术规范》(HJT164-2004)练习题
- 2024年共青团中央所属单位度高校毕业生招考聘用61人高频500题难、易错点模拟试题附带答案详解
- 机房维保巡检服务报告
- 13J104蒸压加气混凝土砌块板材构造
- 肿瘤恶液质营养治疗指南
- 美术实训室功能设计方案
- 护理优势专科汇报
- 银行职工反诈工作总结
- 盆底功能障碍问卷(PFDI20)
- 设备安装管理培训课件
评论
0/150
提交评论