电机PID(重要)电机PID(重要).doc

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
电机PID(重要)电机PID(重要)

飞思卡尔智能车 电机PID   提到小车的控制必然想到的PID控制,这也是各技术报告都不会漏掉的名词,在飞思卡尔XS128系列(二)PWM模块中已经提到了一些电机控制方面的东西,主要讲了用PID和BANG-BANG控制相结合的方式来控制电机,就是由BANG-BANG来控制力度,用PID来控制精度,下面就具体来讲讲。 ?   先说控制,所谓控制首先由闭环控制和开环控制之分,就是所谓的有反馈和无反馈,当然PID显然是有反馈的控制。所谓的闭环控制就是要根据被控制量的实际情况参与运算来决定操作量的大小或者方向。因为在单回路控制系统中,由于扰动的作用使被控参数偏离给定值,从而产生偏差,而自动控制系统的调节单元将来自变送器的测量值与给定值相比较后产生的偏差进行比例、积分和微分运算,并输出统一标准信号,去控制执行机构的动作,以实现对温度、压力、流量和速度等的自动控制。 ?   然而牵扯到高级PID,像有自适应控制、模糊控制、预测控制、神经网络控制、专家智能控制等等,里面也就模糊控制搞过一定时间,其它我也不懂,就不瞎扯了。 ? ?   比例、积分和微分的线性组合,构成控制量u(t),称为:比例(Proportional)、积分(Integrating)和微分(Differentiation)控制,简称PID控制。比例作用P只与偏差成正比,积分作用I是偏差对时间的累积,而微分作用D是偏差的变化率。 ?   用一句形象的比喻,比例P代表着现在,积分I代表着过去,而微分D则代表着未来。 ? 公式如图: ?   具体于比例、积分和微分,网上有很多这方面的资料,我就不多说了。   下面是关于参数的调整,比例系数、积分系数和微分系数的合理调整时整个PID系统可以正常温度工作的关键。   而最好的寻找PID参数的办法是从系统的数学模型出发,从想要的反应来计算参数。很多时候一个详细的数学描述是不存在的,这时候就需要从实际出发去调整PID参数了。 ? Ziegler——Nichols方法 ?   Ziegler——Nichols方法是基于系统稳定性分析的PID整定方法,在设计过程中无需要考虑任何特性要求,整定方法简单。 ? ? ?  Tyreus——Luyben的整定值即减少了震荡的作用,而且增强了系统的稳定性。 ? 理论上的就不多说了,我自己都懒得多看。 ? ? 代码 /**************************************************************** Code Warrior 5.0 Target : MC9S12XS128 Crystal: 16.000Mhz by:庞辉芜湖 联大飞思卡尔项目组 ******************************************************************/ //拨码开关选择脉冲 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 }; const sint16 speed_arr3[253] = { 40,40,40,95,95,95,40,40,40 }; const sint16 speed_arr4[253] = { 45,45,45,95,95,95,45,45,45 }; const sint16 speed_arr5[253] = { 50,50,50,95,95,95,50,50,50 }; const sint16 speed_arr6[253] = { 37,37,37,100,100,100,37,37,37 }; const sint16 speed_arr7[10] = { 40,40,40,100,100,100,40,40,40 }; void Motor_Change(void) { if(PORTA_PA0 == 0) { ideal_speed = speed_arr1[pos_ + 4]; } else if(PORTA_PA1 == 0) { ideal_speed = speed_arr2[pos_ + 4]; } else if(PORT

文档评论(0)

cduutang + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档