PID改进飞思卡尔智能车算法
智能车PID的算法推荐

PID( Proportional Integral Derivative )控制是最早发展起来的控制策略之一,由于其算法简单、鲁棒性(稳定性)好和可靠性高,被广泛应用于工业过程控制,尤其适用于可建立精确数学模型的确定性控制系统。
模拟PID控制系统原理框图PID是一种线性控制器,它根据给定值r in(k)与实际输出值y out(k)的差值e(t)构成控制方案,利用运放实现模拟PID的一个例子:式中:以上为典型模拟PID应用例子。
关于各调节器的作用说明:♥比例调节器P1、起调节作用与输出量和给定量的差成正比,有差就有调节作用,所以他的调节结果总是有差存在,这种调节不可消除差,所以叫这种调节为有静差调节;2、但这种调节作用快,能很快减小误差,是最常用的一种调节器!3、积分I调节慢,所以PI是最常用的一种搭配!♥积分调节器I1、是给定量与输出量的差对时间的积分,在电路里就是用给定量与输出量的差给电容充电,只要时间足够长,电容器的电压总会到达给定量,使输出量与给定量的差为零;2、积分调节器是一种无静差调节器,意思是说可调节到给定值,做到精确、准确输出;♥微分控制调节器D1、,这种控制总是以输出量与给定量的差的变化率成正比,差变化越剧烈,调节作用越大,差变化越平稳,调节作用越弱;2、这种微分调节作用,使得输出量平稳而很少波动;3、这种微分调节作用,对输出量的变化、波动产生强烈的阻尼、抑制的作用,就像摩擦力的作用;数字式PID应用:增量式PID的算式为:如果换换成智能车里的方向控制就变为:Pwm_offset=PWMMiddle+PID_P*(error-last_error)+PID_I*(error)+PID_D*(error+pre_error-2*la st_error);其中:error=middle-offset,注意这个公式里的offset应该有正负之分,左右偏移的值互为相反。
这样自然就确定了最后的方向。
智能汽车控制策略及PID算法分析

智能汽车控制策略及其PID 算法分析作者:王保磊机电1103-11221077目录背景简介一.智能汽车竞赛简介: (1)系统建立二.控制策略: (1)2.1:理论分析 (2)2.2 : PID 控制规律的离散化 (3)2.3 : matlab 分析 (4)2.4 :系统校正 (9)总结三.总结: (14)一.智能汽车竞赛简介。
全国大学生“飞思卡尔”杯智能汽车竞赛是在规定的模型汽车平台上,使用飞思卡尔半导体公司的 8 位、 16 位微控制器作为核心控制模块,通过增加道路传感器、电机驱动电路以及编写相应软件,制作一个能够自主识别道路的模型汽车,按照规定路线行进,以完成时间最短者为优胜。
因而该竞赛是涵盖了控制、模式识别、传感技术、电子、电气、计算机、机械等多个学科的比赛。
摄像头组比赛规则:采用模拟或数字摄像头对赛道信息进行采集,通过硬件二值化并进行软件信息处理,获得赛道信息,采用规定的舵机和电机控制小车的行走。
相同的赛道,竞速,完成赛道时间短的队伍获胜。
下图为赛道示意图和实际赛道照片。
为保证小车一直沿着黑色引导线快速行驶,系统主要的控制对象是小车的转向和车速。
即应使小车在直道上以最快的速度行驶。
在进入弯道的时刻尽快减速,且角度的转向要适合弯道的曲率,确保小车平滑地转弯,并在弯道中保持恒速。
从弯道进入直道时,小车的舵机要转向至中间,速度应该立即得到提升,直至以最大的速度行进。
为实现上述控制思想,我们采用不同的控制方法来控制小车的转角和速度。
下图为小车的实物模型:二.控制策略。
2.1:理论分析:Ov7620 数字摄像头采集到的赛道信息为采集点灰度值,这些灰度值与设定的阀值进行比较转化为二进制信息,利用这些二进制信息可以确定赛道黑线位置,进而确定小车当前位置及理想通过曲线。
求得理想通过曲线上各点的斜率进而确定赛道类型,通过算法控制电机转速,以保证小车安全通过赛道防止侧翻和打滑。
计算小车的当前位置横坐标值即摄像头视野中线与理想通过曲线与横坐标交点的差值。
PID控制改进算法—变结构PID控制原理

U umax
NO
U umax
YES
U u min
YES
NO
U umin
输出控制量U
4.2 比例环节的作用
比例控制器所产生的原理性稳态误差和结构性稳态误差可以通过引入位置记忆环节来消除, 代 替积分环节的作用。 即令 u (n) Ke(n) u(n 1 ) , 其中 u(n 1) 为上一个控制周期 PID 控制器输出 到执行器的控制变量, 它与本次控制周期输出控制变量之前的阀门位置相对应。 这样只要有误差存 在,就可以使调节阀在当前位置的基础上继续动作,从而消除稳态误差, K P 0 。 比例环节贯穿调节全程, 发挥主导作用, 第 n 次信号采样之后, 比例控制器输出的控制变量为:
(2)当被控变量处于调节阶段时,微分环节将抑制偏差值的减小,可以起到抑制过大超调的作用, 但过强的微分作用必然会使调节速度受到影响甚至使系统提前制动,延长调节时间
如上图所示,在箭头所指位置,虽然被控变量还没有达到给定值,但由于微分环节抑制偏差变化的特性, 使得偏差绝对值减小受阻,从而延长了系统的调节时间,使控制系统动态性能下降。
(2)当目标值与被控变量初始值跨度较大时,由于偏差的初始值较大,使得比例项所输出的控制 作用也较强,调节速度较快;当目标值与被控变量初始值跨度较小时,由于偏差的初始值较小,使 得比例项所输出的控制作用也较弱,调节速度较慢。
可见, 采用固定的比例系数很难同时满足调节过程的不同阶段、 目标值与被控变量初始值不同 跨度时的控制要求。 最理想的情况是:当目标值与被控变量初始值的跨度较大时,使用较小的比例系数,当目标值 与被控变量初始值的跨度较小时,使用较大的比例系数;在调节过程当中,比例系数可以随着偏差 值的变化而进行自动调整,从而既可提高响应速度, 又可防止产生过大的超调量,保证稳定性。
PID算法深度技术帖-写给参加飞思卡尔智能车大赛的朋友

PID算法深度技术帖*写给参加飞思卡尔智能车大赛的朋友作者:王玉鹏(郑州轻工业学院)最近很多朋友问我关于PID的算法。
这里我就简单整理了下:PID控制算法是最经典的自动控制算法。
所有《自动控制原理》教材均有大幅篇章介绍。
从数学模型到传递函数,公式推导不厌其烦。
很多‘童鞋’似懂非懂。
下面我就从程序的角度来讲:下面是PID控制系统的原理图PID算法具体分两种:一种是位置式的,一种是增量式的。
在大多数的情况下,执行机构本身没有状态记忆功能,每时每刻都要靠控制信号驱动,如果失去控制信号,执行机构即失去功能。
在这种场合必须采用位置式PID控制算法。
也有一些执行机构具有记忆功能,即使失去驱动信号仍然可以维持原来的状态不变。
例如在用步进电机作为执行机构的自动化控制系统中(数控机床最为典型)下面主要针对位置式PID来讲,以加温设备为例,软件采用uc/os-ii嵌入式操作系统环境//采用位置式PID控制算法的任务函数float Set;//设定值float KP;//比例常数float KI;//积分常数float KD;//微分常数float LE=0;//上次误差float SE;//累计误差void TaskSampleCtrl(void *pdata)//采样控制函数{float now,E,DE,out;//定义临时变量while(1){now=SampleAdc();//传感器采样一次E=Set-now; //计算当前误差SE+=E; //计算当前误差的积分值DE=E-LE; //计算当前误差的微分值out=KP*E //计算比例项+KI*SE //计算积分项+KD*DE; //计算微分项CtrlOut(out); //控制执行机构LE=E; //保存误差值以进行下次计算OSTimeDly(25); //心跳20ms 延时0.5s(采样周期)}}PID参数调节:1.如果被控制对象的温度很快达到设定值,并超过设定值很多才回调(此种称为超调),则应该减小KP和KI,降低控制强度;加大KD,抑止超调。
PID算法在智能车方向控制中的应用

方向控制中的PID算法2015/12/26 BY 哈工大智能车-技术培训部-刘键方向控制在软件系统中的位置方向控制系统宏观概览PID控制方法理解PID程序编写PID参数调试PID算法微改进1.方向控制算法在软件系统中的位置整个智能车基本上就在做两件事,一个是方向的控制,一个是速度的控制(当然平衡车还多一个平衡的控制),只要能够将这两个量给控制的恰到好处(恰到好处不光是两者单独控制的很好,而是两者一起工作时配合的很好)本文档只讲其中的一个:方向控制中的控制策略问题(四轮车的速度控制与此非常类似,甚至还更简单)。
下面是我们车内软件运行的一个大概的流程图,软件成员后来的所有精力基本都倾注在这三个加粗的方面:方向偏差提取;方向控制算法;速度控制;传感器信息采集(电感电压/光电管/摄像头)速度读取方向偏差提取方向控制算法舵机驱动速度控制算法(舵机PWM 占空比的大小)电机驱动(电机PWM 占空比的大小)周期开始电感压差/中线偏差速度偏差周期开始结束结束方向控制速度控制PD PID整体上就分为两部分,方向和速度控制。
其中两者均为周期性控制,但控制的周期可能不一样。
方向控制的主要步骤如下:1、 采集方向传感器的信息,比如对于摄像头就是进行图像的采集;2、 方向偏差信息的求取,对于摄像头来说就是图像中线的求取,进而得到得到车体当前位置与理想位置的偏差3、 方向控制模块根据这个偏差来计算应该输给舵机的PWM 占空比,进而来调整车体的前进方向。
2方向控制系统宏观概览系统宏观上了解。
通过对系统的全局分析,你不仅可以更清楚了解方向控制的本质,更重要的是还能够从系统中各模块的相互约束关系中找到一些新的能够改进整个控制系统的方案,下面详述~从控制系统的角度来看,典型的方向闭环反馈系统结构图如下图所示,主要由五部分构成:控制目标;被控对象;执行机构;测量反馈;控制算法(这里面就是我们常说的核心PID 啦)。
在构思控制算法之前你首先需要对执行机构,被控对象,测量反馈和控制目标摄像头测量图像舵机驱动舵机实际方向和位置车体测量反馈被控对象执行机构控制目标是首当其冲要考虑的。
PID算法原理及调整规律

PID算法原理及调整规律一、PID算法简介在智能车竞赛中,要想让智能车根据赛道的不断变化灵活的行进,PID算法的采用很有意义。
首先必须明确PID算法是基于反馈的。
一般情况下,这个反馈就是速度传感器返回给单片机当前电机的转速。
简单的说,就是用这个反馈跟预设值进行比较,如果转速偏大,就减小电机两端的电压;相反,则增加电机两端的电压。
顾名思义,P指是比例(Proportion),I指是积分(Integral),D指微分(Differential)。
在电机调速系统中,输入信号为正,要求电机正转时,反馈信号也为正(PID算法时,误差=输入-反馈),同时电机转速越高,反馈信号越大。
要想搞懂PID算法的原理,首先必须先明白P,I,D各自的含义及控制规律:比例P:比例项部分其实就是对预设值和反馈值差值的发大倍数。
举个例子,假如原来电机两端的电压为U0,比例P为0.2,输入值是800,而反馈值是1000,那么输出到电机两端的电压应变为U0+0.2*(800-1000)。
从而达到了调节速度的目的。
显然比例P越大时,电机转速回归到输入值的速度将更快,及调节灵敏度就越高。
从而,加大P值,可以减少从非稳态到稳态的时间。
但是同时也可能造成电机转速在预设值附近振荡的情形,所以又引入积分I解决此问题。
积分I:顾名思义,积分项部分其实就是对预设值和反馈值之间的差值在时间上进行累加。
当差值不是很大时,为了不引起振荡。
可以先让电机按原转速继续运行。
当时要将这个差值用积分项累加。
当这个和累加到一定值时,再一次性进行处理。
从而避免了振荡现象的发生。
可见,积分项的调节存在明显的滞后。
而且I值越大,滞后效果越明显。
微分D:微分项部分其实就是求电机转速的变化率。
也就是前后两次差值的差而已。
也就是说,微分项是根据差值变化的速率,提前给出一个相应的调节动作。
可见微分项的调节是超前的。
并且D值越大,超前作用越明显。
可以在一定程度上缓冲振荡。
比例项的作用仅是放大误差的幅值,而目前需要增加的是“微分项”,它能预测误差变化的趋势,这样,具有比例+微分的控制器,就能够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。
基于PID算法实现智能车的控制

基于PID算法实现智能车的控制随着科学技术的不断发展,智能控制的应用越来越广泛,几乎渗透到所有的领域。
智能车技术依托于智能控制,是未来发展的趋势。
本论文是第十一届“恩智浦”杯大学生智能汽车竞赛中摄像头组的解决方案,要求设计的智能赛车能够根据既定的轨道路线完成最后的任务。
本论文主要包括硬件系统、软件系统等,简略地阐述了我们的设计方案。
标签:智能控制;智能车;硬件系统;软件系统1智能车系统1.1智能车系统介绍。
我们选用了动力较好的C车模,C车模的精度不是很高的。
因此我们对C 车模进行了一定的改造,主要使它的重量减轻和降低它的地盘高度。
为了使智能车系统更加的可靠,我们将智能车的驱动系统和主控分别设计,这样便于维护,同时可以简化电路,减少出错的概率。
传感器采用了定位眼摄像头用来采集图像和龙邱LQ_ECM15180305_SDZ 512 线增量式编码器用来采集转速。
为了方便调试,我们采用了OLED 显示屏来显示系统状态,按键来调节系统参数,同时使用蓝牙将数据发送给图像上位机从而观测动态数据。
1.2 智能车硬件系统。
为了使智能车能够稳定的运行,必须要保证电路的稳定性。
单片机采用MK60FX512ZVLQ15,使用一片LM1117-3.3 产生的3.3V 电压为单片机单独供电,从而保证单片机稳定工作,不受其他电路影响,经试验证明单片机能够正常稳定的运行,不会出现复位或跑飞现象。
另外采用LM2940 给编码器、蓝牙、OLED 供电,舵机由LM1084-ADJ供电。
调试过程中,采用人机交互模块液晶和按键、无线通讯蓝牙等模块辅助,方便小车的调试。
在采集图像上我们采用了定位眼摄像头,此款摄像头集成高灵敏度感光芯片CMOS数字摄像头芯片,支持从320*240 到80*60 不同分辨率输出,帧率高达60fps,定位眼摄像头搭载180度红外滤光广角镜头,可以在远距离轻松捕获闪烁的红外信标。
1.3 智能车的软件系统1.3.1智能车的软件系统概述。
用于智能车速度控制的PID程序设计

开发应用28用于智能车速度控制的PID程序设计赵国柱1赵悦如2(1.中国民用航空飞行学院模拟机训练中心,四川 广汉 618307;2.成都市第四建筑工程公司,四川 成都610000)摘 要:由于小车在行进过程中路况复杂,还要保持高速,稳定,很具有挑战性。
设计了一种基于单片机的智能车,其中速度量控制采用了PID程序设计。
所以采用闭环控制是必要的选择。
硬件方面给小车提供的测速装置为小车的闭环系统提供了必要的基础。
在PID控制中进行了比例,微分,积分调节,实现了小车的高速行进。
关键词:飞思卡尔单片机;光电传感器;智能车;PIDDOI: 10.3969/j.issn.1671-6396.2015.03.0101 智能车应用前景综述智能车是一种移动式机器人,它是一个集环境、规划、决策、感知、自动行驶等各种功能于一体的综合系统。
它的出现为提高网络的利用率、降低燃油的消耗量,尤其对道路交通安全和运行效率的改善提供了诸多解决方案,因其具有的智能特性而成为了研究者研究的重点。
发展智能车辆是解决很多交通问题,甚至是社会问题的解决方案,正因为有诸多有利因素,智能车设计成为了各国政府、研究机构的热门研究机构[1]。
2 PID控制策略特点PID控制的原理和特点:在工程中常常要用到PID控制方案,设计PID算法至关重要。
该控制器主要是比例、积分、微分控制方案的综合,简称PID控制,又称PID调节。
尤其是在工程对象的具体数量关系不是很清楚的情况下,这时应用PID控制技术就很有效率。
PID控制在实际设计中需要具体问题具体对待,有时就简化为了PI和PD控制策略[2-4]。
其传递函数为:G(s) =X(s)=Kc(1+ TiS +Td S)这种调节器是目前自动控制中使用最普遍也是最基本的调节器。
在计算机控制系统中,数字PID控制算法通常又分为位置式PID和增量式PID。
本次设计中,采用的是位置式PID。
增量式与位置式算法是有差别的,增量式是计算机的积累功能,而为了方便,选择了位置式的PID程序。
四轴PID调试心得

本人曾在大二,大三参加过第六,第七届飞思卡尔智能车比赛,之后在考研过后在飞思卡尔智能车为我打下的良好基础下开始制作四轴飞行器.在年中到现在陆续调试了两架四轴,一架十字,一架X.其中四轴的平衡是很重要的一环,其中涉及到的PID整定,因为听闻今年摄像头也要站起来了,个人认为PID整定过程都有可以互相借鉴之处,顾在此一贴,也顺便为我的ARM-ST校园比赛求支持。
PID调试心得本人不是自动化出身,也没有受过专业训练,都是自己摸索,在这里浅述一下自己的PID参数整定心得。
所言之物皆由实践及自己的理解得出,如有不当之处还请指正.首先例举第一个例子,我调的第一台四轴飞行器,十字型四轴飞行器,讲下配置:网上一百多的650机架,好赢20A电调,新西达2212 1000kV,1045的桨,2200mah 电池.采用位置式PID控制,位置式PID公式如下PID的基本意义我在次就不作阐述了,我只讲我的设计,我以姿态角作为被控制对象,所以e(k) = 期望—测量 = 给定值—测量姿态角对于微分项D,我做了一点改变,标准PID的微分项D=kd*(e(k)—e(k-1)),我在实践过程中因为角度的微分就是角速度,而陀螺仪可以直接测出角速度,所以我没有将微分项作为偏差的差而是直接用D=kd*Gyro实现代码如下float pidUpdate(pidsuite* pid, const float measured,float expect,float gyro){float output;static float lastoutput=0;pid—〉desired=expect;//获取期望角度pid—>error = pid-〉desired - measured; //偏差:期望-测量值 pid—>integ += pid—>error * IMU_UPDATE_DT; //偏差积分if (pid—>integ > pid—>iLimit) //作积分限制{pid->integ = pid-〉iLimit;}else if (pid-〉integ 〈—pid-〉iLimit){pid-〉integ = —pid->iLimit;}// pid—〉deriv = (pid—>error — pid—>prevError) / IMU_UPDATE_DT;//微分应该可用陀螺仪角速度代替pid->deriv = -gyro;if(fabs(pid—>error)>Piddeadband)//pid死区{pid—〉outP = pid-〉kp * pid—〉error;//方便独立观察pid->outI = pid—>ki * pid—〉integ;pid—>outD = pid-〉kd * pid-〉deriv;output = (pid-〉kp * pid—>error) +(pid-〉ki * pid->integ) +(pid—〉kd * pid-〉deriv);}else{output=lastoutput;}pid->prevError = pid->error; //更新前一次偏差lastoutput=output;return output;}我这么做的原因是因为,如果使用传统的D的形式,在我快速打舵时会产生输入的设定值变化频繁且幅度较大,四轴飞行器会迅速回到新的期望点,说白了就是非常灵活,四轴回复很猛,也许造成系统的振荡,对PID参数要求较高。
飞思卡尔智能车 电机PID - 云说风轻 - 博客园

比例、积分和微分的线性组合,构成控制量u(t),称为:比例(Proportional)分(Differentiation)控制,简称PID控制。
比例作用P只与偏差成正比,积分作用微分作用D是偏差的变化率。
用一句形象的比喻,比例P代表着现在,积分I代表着过去,而微分D则代表着未来。
公式如图: 具体于比例、积分和微分,网上有很多这方面的资料,我就不多说了。
下面是关于参数的调整,比例系数、积分系数和微分系数的合理调整时整个PID系统可以正常温度工作的关键。
而最好的寻找PID参数的办法是从系统的数学模型出发,从想要的反应来计算参数。
很多时候一个详细 Tyreus¡¡Luyben的整定值即减少了震荡的作用,而且增强了系统的稳定性。
理论上的就不多说了,我自己都懒得多看。
代码/****************************************************************Code Warrior 5.0Target : MC9S12XS128Crystal: 16.000Mhzby:庞辉芜湖联大飞思卡尔项目组******************************************************************///拨码开关选择脉冲const sint16 speed_arr1[253] = {37,37,37,85,85,85,37,37,37};const sint16 speed_arr2[253] = {38,38,38,90,90,90,38,38,38#define #definepang123hui的博客:博客园/pang123hui/ CSDN/pang123hui/。
数字PID及其改进算法

6.2.1 差分变化法
6.2.2 零阶保持器法
6.2.3 双线性变化法
课 6.3 数字PID及其算法
程
6.3.1 位置式PID控制算法
提
6.3.2 PID增量式控制算法
纲
6.4 标准PID算法的改进 6.4.1 “饱和”作用的抑制
第六章 数字PID及其改进算法
6.4.2 不完全微分PID算法
6.4.3 微分先行PID算法
28
程 内 容
z
?
1?
T 2
s
?
2 T
s
?
1
?
2
?
Ts
1 ? T s 2 s ? 1 2 ? Ts
2T
即s近似为
s? 2 T
z z
? ?
1 1
?
2 T
1? 1?
z ?1 z ?1
(6-15)
11
第六章 数字PID及其改进算法
例题:已知某连续控制器的传递函数
D(s) ?
s ? 0.5 (s ? 1) 2
k
程
[ ? u(k) ? K P e(k) ? KI e(i) ? KD e(k) ? e(k ? 1)] ? u 0
i?0
内 容 15
Kp
内 的成分。只要偏差e不为零,它将通过累计作 u0
Kp
容 用影响控制量u,并减小偏差,直至偏差为零,0 3 控制作用不在变化,使系统达到稳态。
t0
Ti
PI调节器的阶跃响应
t
第六章 数字PID及其改进算法
6.1.3 比例积分微分调节器(PID)
e
1.比例积分微分调节器(PID)表达式
? u
飞思卡尔小车PID控制的通俗理解

{ int iError, iIncpid; //当前误差 iError = sptr->SetPoint - NextPoint; //增量计算 iIncpid = sptr->Proportion * iError //E[k]项 - sptr->Integral * sptr->LastError //E[k-1]项 + sptr->Derivative * sptr->PrevError; //E[k-2]项 sptr->PrevError = sptr->LastError; //存储误差,用于下次计算
思,I 是 Integral,积分,D 是 Differential 微分。 打个比方,如果现在的输出是1,目标输出是100,那么 P 的作用
是以最快的速度达到100,把 P 理解为一个系数即可;而 I 呢?大家 学过高数的,0的积分才能是一个常数,I 就是使误差为0而起调和作 用;D 呢?大家都知道微分是求导数,导数代表切线是吧,切线的方 向就是最快到至高点的方向。这样理解,最快获得最优解,那么微分 就是加快调节过程的作用了。
小车调速肯定不是线性的,外界因素那么多,没人能证明是线性的 。如果是线性的,直接 用 P 就可以了。比如在 PWM=60%时,速度是2M/S,那么你要它3M/S,就把 PWM 提 高到90%。因为90/60=3/2,这样一来太完美了。完美是不可能的。
那么不是线性的,要怎么怎么控制 PWM 使速度达到即定的速度呢?即要快,又要准, 又要狠。(即快准狠)系统这个速度的调整过程就必须通过某个算法调整,一般 PID 就是这 个所用的算法。
#define HAVE_NEW_VELOCIT Y 0X01
//***************************************************** //声明 PID 实体
PID算法在智能车中的应用与研究

PID算法在智能车中的应用与研究作者:李志伟毛人杰叶亮时锐来源:《速读·上旬》2016年第12期摘要:本文针对飞思卡尔线性CCD组智能车的问题,采用PID算法,解决了速度与转向控制的问题。
关键词:飞思卡尔智能车;PID算法;Matlab随着科技的快速发展,智能汽车已经成为了当今热门的研究方向。
飞思卡尔全国大学生智能车竞赛作为一项比拼实践及创新能力的比赛,对智能车的控制提出较高要求,对于大学生今后在自动化领域的研究有着重要的指导意义。
1 PID控制原理为了应对赛道中的各种复杂情况,使小车尽快地达到预期速度,实现对小车的闭环控制,我们必须采用一套控制算法。
PID算法作为一种经典的控制算法,由于其算法简单易懂、稳定性好、可靠性高,被广泛应用于各个领域,亦可适用于智能车的速度和转向控制系统。
PID控制全称为比例(proportion)、积分(integral)、微分(derivative)控制器,它将给定值r(t)与实际输出值c(t)的偏差的比例、积分、微分通过线性组合构成控制量,对控制对象进行控制。
其输入e(t)与输出u(t)的关系为:u(t)=kp[e(t)+1/TI∫e(t)dt+TD*de (t)/dt],式中积分的上下限分别是0和t,它的传递函数为:G(s)=U(s)/E(s)=kp[1+1/(TI*s)+TD*s],其中kp为比例系数;TI为积分时间常数;TD为微分时间常数。
2 PID控制器的设计我们的实验平台为恩智浦智能车大赛线性CCD组智能车。
我们的智能车使用线性CCD传感器获取赛道信息实现寻迹。
我们通过官方所提供的原理图使用Altium Designer软件自行设计电路板并使用K60单片机对整个小车进行控制。
为了实时检测智能车的速度,我们在小车的轮胎两侧安装了欧姆龙编码器。
在具体的程序设计过程中,我们使用了C语言并基于IAR7.3环境编写、调试程序。
为了实现PID速度控制,我们设置了这样几个参数来控制车速:speed_set为目标速度,是理想状态下我们所希望小车达到的速度。
PID算法原理及调整规律

PID算法原理及调整规律一、PID算法简介在智能车竞赛中,要想让智能车根据赛道的不断变化灵活的行进,PID算法的采用很有意义。
首先必须明确PID算法是基于反馈的。
一般情况下,这个反馈就是速度传感器返回给单片机当前电机的转速。
简单的说,就是用这个反馈跟预设值进行比较,如果转速偏大,就减小电机两端的电压;相反,则增加电机两端的电压。
顾名思义,P指是比例(Proportion),I指是积分(Integral),D指微分(Differential)。
在电机调速系统中,输入信号为正,要求电机正转时,反馈信号也为正(PID算法时,误差=输入-反馈),同时电机转速越高,反馈信号越大。
要想搞懂PID算法的原理,首先必须先明白P,I,D各自的含义及控制规律:比例P:比例项部分其实就是对预设值和反馈值差值的发大倍数。
举个例子,假如原来电机两端的电压为U0,比例P为0.2,输入值是800,而反馈值是1000,那么输出到电机两端的电压应变为U0+0.2*(800-1000)。
从而达到了调节速度的目的。
显然比例P越大时,电机转速回归到输入值的速度将更快,及调节灵敏度就越高。
从而,加大P值,可以减少从非稳态到稳态的时间。
但是同时也可能造成电机转速在预设值附近振荡的情形,所以又引入积分I解决此问题。
积分I:顾名思义,积分项部分其实就是对预设值和反馈值之间的差值在时间上进行累加。
当差值不是很大时,为了不引起振荡。
可以先让电机按原转速继续运行。
当时要将这个差值用积分项累加。
当这个和累加到一定值时,再一次性进行处理。
从而避免了振荡现象的发生。
可见,积分项的调节存在明显的滞后。
而且I值越大,滞后效果越明显。
微分D:微分项部分其实就是求电机转速的变化率。
也就是前后两次差值的差而已。
也就是说,微分项是根据差值变化的速率,提前给出一个相应的调节动作。
可见微分项的调节是超前的。
并且D值越大,超前作用越明显。
可以在一定程度上缓冲振荡。
比例项的作用仅是放大误差的幅值,而目前需要增加的是“微分项”,它能预测误差变化的趋势,这样,具有比例+微分的控制器,就能够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。
PID算法原理及调整规律

PID算法原理及调整规律一、PID算法简介在智能车竞赛中,要想让智能车根据赛道的不断变化灵活的行进,PID算法的采用很有意义。
首先必须明确PID算法是基于反馈的。
一般情况下,这个反馈就是速度传感器返回给单片机当前电机的转速。
简单的说,就是用这个反馈跟预设值进行比较,如果转速偏大,就减小电机两端的电压;相反,则增加电机两端的电压。
顾名思义,P指是比例(Proportion),I指是积分(Integral),D指微分(Differential)。
在电机调速系统中,输入信号为正,要求电机正转时,反馈信号也为正(PID算法时,误差=输入-反馈),同时电机转速越高,反馈信号越大。
要想搞懂PID算法的原理,首先必须先明白P,I,D各自的含义及控制规律:2 比例P:比例项部分其实就是对预设值和反馈值差值的发大倍数。
举个例子,假如原来电机两端的电压为U0,比例P为0.2,输入值是800,而反馈值是1000,那么输出到电机两端的电压应变为U0+0.2*(800-1000)。
从而达到了调节速度的目的。
显然比例P越大时,电机转速回归到输入值的速度将更快,及调节灵敏度就越高。
从而,加大P值,可以减少从非稳态到稳态的时间。
但是同时也可能造成电机转速在预设值附近振荡的情形,所以又引入积分I解决此问题。
2 积分I:顾名思义,积分项部分其实就是对预设值和反馈值之间的差值在时间上进行累加。
当差值不是很大时,为了不引起振荡。
可以先让电机按原转速继续运行。
当时要将这个差值用积分项累加。
当这个和累加到一定值时,再一次性进行处理。
从而避免了振荡现象的发生。
可见,积分项的调节存在明显的滞后。
而且I值越大,滞后效果越明显。
2 微分D:微分项部分其实就是求电机转速的变化率。
也就是前后两次差值的差而已。
也就是说,微分项是根据差值变化的速率,提前给出一个相应的调节动作。
可见微分项的调节是超前的。
并且D值越大,超前作用越明显。
可以在一定程度上缓冲振荡。
基于飞思卡尔单片机的智能车控制系统设计

毕业设计(论文)基于飞思卡尔单片机的智能车控制系统设计系别自动化工程系专业自动化班级5060418姓名王皓明指导教师赵一丁2010年6月16日基于飞思卡尔单片机的智能车控制系统设计摘要本文以第四届全国大学生智能车竞赛为背景,介绍了智能赛车控制系统的软硬件结构和开发流程。
该比赛采用组委会规定的标准车模,以Freescale半导体公司生产的16位单片机MC9S12DG128为核心控制器,在CodeWarrior 4.7开发环境中进行软件开发,要求赛车在未知道路上完成快速寻线。
本智能车采用双排光电传感器对赛道进行检测,工作电压能与最小系统工作电压相同,可共用一个电源模块。
通过光电传感器提取获得黑线位置,用PID方式对舵机进行反馈控制。
同时通过速度传感器获取当前速度,实现速度闭环控制,根据赛道类型预判信息和当前速度信息对速度进行合理控制。
整个硬件系统包括车模机械结构调整、稳压电源设计、核心控制电路板设计、后轮电机驱动模块设计和上位机通信设计等等。
经过查看各种相关资料,对硬件进行了大量的优化,如针对对各种稳压芯片的测试,确定最优电源电路;测试各种测速方式,最终选用光电管作为测速模块;并在智能车调试过程中不断改进机械结构,使小车运行更加稳定、迅速。
软件系统包括程序初始化、数据采集和车体控制的算法。
为了提高智能赛车的行驶速度和可靠性,经过多次机械结构调整及电路板设计,并经过不断试验,最终确定了现有的系统机械结构和各项控制的PID参数。
关键词:MC9S12DG128 ,智能车,双排光电传感器,PIDIntelligent vehicle control system design based on freescale MCUAuthor :Wang HaomingTutor :ZhaoYidingAbstractBased on the 4th China university of intelligent car race for background, introduces the hardware and software of the control system of intelligent car structure and development process. The game using the standards prescribed by the organizing committee to Freescale semiconductor company models, the production 16-bit single chip MC9S12DG128 for core controller, in CodeWarrior 4.7 development environment in software development and requirement on the road on unknown quick line.This intelligent vehicle using double row of photoelectric sensor, voltage can work with minimal systems can share the same voltage, a power supply module. Through the intelligent vehicle, with black extracted on the way to the PID feedback control. And through the velocity sensor for current velocity, realize speed closed-loop control circuit, according to the type of information and the speed of anticipation to speed control information. The hardware system including mechanical models ,structure adjustment, manostat design, the core control circuit design, rear motor driver module design and computer communication design etc. After check all relevant information on the hardware, the large amounts of optimization, such as all kinds of pressure in the test chip and the optimum power supply circuit, Testing various ways, finally chooses phototube module as a type of cell, And in the intelligent vehicle commissioning process improvement, the mechanical structure is more stable operation, quick. Software system including the initial procedure, the data acquisition and control algorithm. In order to improve the speed of intelligent cars and reliability, and after many mechanical structure adjustment and circuit design, and finally determined through continuous test, the existing system of the mechanical structure and PID control parameters.Key words:MC9S12DG128, intelligent vehicle, double row photoelectric sensor, PID目录1 绪论 (1)1.1智能车的背景及意义 (1)1.2智能车竞赛的研究现状 (2)1.2.1 国外智能车竞赛现状 (2)1.2.2 国内智能车竞赛现状 (3)1.3本文的概况及结构安排 (7)2 智能车方案设计 (8)2.1智能车设计的基本要求 (8)2.2智能车的双排传感器循迹策略方案设计 (8)2.2.1 双排传感器的优势 (8)2.2.2 传感器阵列布局 (9)2.2.3 直道识别方式控制策略 (9)2.2.4 直线稳定控制策略 (13)2.2.5 弯道控制策略 (13)2.2.6 实测结果和现象分析 (14)2.3车模参数 (15)3 硬件设计 (18)3.1智能车整体结构 (18)3.2MC9SDG128B的最小系统及接口设计 (19)3.3电源管理及分布 (20)3.4光电传感器布局 (21)3.4.1 赛道识别传感器模块 (21)3.4.2 测速模块 (22)3.5电机驱动模块 (23)3.6舵机驱动模块 (24)3.7拨码开关模块 (25)4 机械结构调整 (27)4.1一些重要参数对赛车的影响 (27)4.2车模底盘参数调整 (28)4.3重心位置对汽车性能的影响 (30)4.4汽车侧滑的处理 (31)4.5底盘离地间隙 (32)4.6齿轮传动间距调整 (32)4.7后轮差速机构调整 (32)5 智能车软件开发环境及软件设计 (34)5.1智能车软件开发环境 (34)5.1.1 软件调试软件Code Warrior (34)5.1.2 无线调试模块 (36)5.2软件设计 (37)5.2.1 初始化模块 (37)5.2.2 智能车系统的控制策略的设计及实现 (41)5.2.3 PID参数的整合 (45)结论 (48)致谢 (50)参考文献 (51)附录 (52)附录A:智能车硬件连接图 (52)附录B:智能车最终实物图 (53)附录C:PID CONTROLLER (54)1 绪论1.1 智能车的背景及意义智能车系统以迅猛发展的汽车电子为背景,涵盖了控制、模式识别、传感技术、电子、电气、计算机、机械、车辆运动学等多个学科;主要由路径识别、角度控制及车速控制等功能模块组成。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PID改进飞思卡尔智能车算法
PID改进飞思卡尔智能车算法:智能车系统是一个时变且非线性的系统,采用传统PID算法的单一的反馈控制会使系统存在不同程度的超调和振荡现象,无法得到理想的控制效果。
将前馈控制引入到了智能车系统的控制中,有效地改善了系统的实时性,提高了系统的反应速度;并且根据智能车系统的特点,对数字PID算法进行了改进,引入了微分先行和不完全微分环节,改善了系统的动态特性;同时,利用模糊控制具有对参数变化不敏感和鲁棒性强的特点,将模糊算法与PID算法相结合,有效地提高了智能车的适应性和鲁棒性,改善了系统的控制性能。
改进PID算法
智能车的控制是由飞思卡尔公司的S12芯片完成,所以对智能车的控制要采用计算机控制方法。
本文针对智能车控制的特殊性,对传统数字PID算法做了一些改进,这样可以更好地满足智能车控制的需要。
不完全微分PID
将微分环节引入智能车的方向和速度控制,明显地改善了系统的动态性能,但对于误差干扰突变也特别敏感,对系统的稳定性有一定的不良影响。
为了克服上述缺点,本文在PID算法中加入了一阶惯性环节,不完全微分PID算法结构如图1所示。
将一阶惯性环节直接加到微分环节上,可得到系统的传递函数为:
将(1)式的微分项推导并整理,得到方程如下:
式中,,由系统的时间常数和一阶惯性环节时间常数决定的一个常数。
为了编程方便,可以将2-2式写成如下形式:
分析式(3)可知,引入不完全微分以后,微分输出在第一个采样周期内被减少了,此后又按照一定比例衰减[3][4]。
实验表明,不完全微分有效克服了智能车的偏差干扰给速度控制带来的不良影响,具有较好的控制效果。
图2为不完全微分PID算法的程序流程图。
微分先行PID
由于智能车在跑道上行驶时,经常会遇到转弯的情况,所以智能车的速度设定值和方向设定值都会发生频繁的变化,从而造成系统的振荡。
为了解决设定值的频繁变化给系统带来的不良影响,本文在智能车的速度和方向控制上引入了微分先行PID算法,其特点是只对输出量进行微分,即只对速度测量值和舵机偏转量进行微分,而不对速度和方向的设定值进行微分。
这样,在设定值发生变化时,输出量并不会改变,而被控量的变化相对是比较缓和的,这就很好地避免了设定值的频繁变化给系统造成的振荡,明显地改善了系统的动态性能。
图3是微分先行PID控制的结构图,微分先行的增量控制算式如下。
前馈控制的应用
由于智能车的跑道宽度有限制,所以在经过急转弯的时候,如果速度和方向控制不及时,智能车就可能冲出跑道。
由于前馈控制是开环控制,所以前馈控制的响应速度很快。
将前馈控制引入到智能车的控制中,能够提高舵机和伺服电机的反应速度,改善智能车系统的动态性能。
智能车控制系统结构
智能车的控制主要体现在两个方面:一方面是方向的控制,也就是对舵机的控制;另一方面是对速度的控制,也就是对伺服电机的控制。
舵机的数学模型较为简单,具有很好的线性特征,
只采用前馈控制;智能车的速度控制相对复杂一些,速度模型无法准确建立,采用前馈-改进PID算法进行控制。
智能车的控制系统结构如图4所示。
图4中,和分别是舵机和伺服电机数学模型。
从图中可以看出,智能车的方向控制和速度控制是相互独立的,而且它们都是由路线偏差决定的。
舵机转角与路线偏差之间的对应关系是根据舵机的数学模型得到的,在速度控制回路中,既包括反馈回路,又包括前馈环节,伺
服电机的控制量是在前馈补偿基础上,再由增量式PID算法计算得到。
在方向控制中的应用
智能车对方向的控制有两点要求:在直道上,方向保持稳定;在转弯处,需要方向变化准确而且迅速。
只有这样,才能保证智能车在跑道上高速、稳定地运行。
为了提高方向控制的鲁棒性,本文还对路线偏差进行了模糊化处理。
图5是智能车方向模糊前馈控制的结构图,图中和分别是直道和弯道两种情况下的前馈控制函数。
在速度控制中的应用
为了使智能车在直道上以较快速度运行,在转弯时,防止智能车冲出跑道,则必须将智能车的速度降低,这就要求智能车的速度控制系统具有很好的加减速性能。
当智能车经过连续转弯的跑道时,路线偏差的频繁变化会造成速度设定的频繁变化,这会引起速度控制系统的振荡,并且微分环节对误差突变干扰很敏感,容易造成系统的不稳定。
为了解决上述存在的问题,本文对数字PID算法进行了改进,将不完全微分和微分先行引入到PID算法中,大大改善了速度控制系统的动态性能。
图6是智能车速度控制系统结构图。
由于赛道路况和智能车的姿态会经常变化,所以速度控制系统的模型也是不定的,为了提高系统的适应性,本文速度控制系统中采用了模糊PID算法。
将速度设定和实际速度进行模糊分档[5][6],通过调试得到不同情况下相对最优的PID参数,保证了速度控制系统在不同情况下都有较好的控制效果。