提到小车的控制必然想到的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:庞辉
芜湖联大飞思卡尔项目组
******************************************************************/
sint16 ideal_speed; //车的理想速度
//拨码开关选择脉冲
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(PORTA_PA2 == 0)
{
ideal_speed = speed_arr3[pos_ + 4];
}
else if(PORTA_PA3 == 0)
{
ideal_speed = speed_arr4[pos_ + 4];
}
else if(PORTA_PA4 == 0)
{
ideal_speed = speed_arr5[pos_ + 4];
}
else if(PORTA_PA5 == 0)
{
ideal_speed = speed_arr6[pos_ + 4];
}
else if(PORTA_PA6 == 0)
{
ideal_speed = speed_arr7[pos_ + 4];
}
else
{
ideal_speed = speed_arr1[pos_ + 4];
}
//ideal_speed = speed_arr7[pos_ + 4];
speed_error = ideal_speed - pulse_count;
if(speed_error >= 10) //情况1,全加速
{
Set_PWM01(10000, 10000);
}
else if(speed_error > -10) //情况2,用PID减速
{
pid();
}
else
{
Set_PWM01(0,10000);
}
}
#define kp_motor 15
#define ki_motor 4//1
#define kd_motor 8//10
sint16 speed_error; //理想与实际速度偏差值
sint16 pre_error; //速度PID 前一次的速度误差值ideal_speed- pulse_count
sint16 pre_d_error; //速度PID 前一次的速度误差之差d_error-pre_d_error
sint16 pk; //速度PID值
void pid(void)
{
sint16 error,d_error,dd_error;
error = ideal_speed - pulse_count;
d_error = error - pre_error;
dd_error = d_error - pre_d_error;
pre_error = error; //存储当前偏差
pre_d_error = d_error;
pk += kp_motor * d_error + ki_motor * error + kd_motor * dd_error;
if(pk >= 10000)
{
pk = 10000;
}
else if(pk <= 0)
{
pk = 0;
}
Set_PWM01(pk,10000);
}
这里用了光电车的代码,下个星期就要去杭州比赛了,郁闷的是从电磁转到光电了,先祝自己取得好成绩,嘿嘿。
很多队伍过于畏惧PID了,其实PID参数如果真的不想调,或没时间调,看着其它队伍的随便写上3个数,都比开环要强,像上个月我去参加安徽赛区的比赛,确实看到不少没有PID的,没有PID先不说过桥了,你直道就不敢加速,不然过弯肯定死定,当然这个还要配合反转制动,这个也是要写的,不急,应该快了。
上一篇:飞思卡尔XS128系列(三) PIT
下一篇:飞思卡尔XS128系列(一) PLL锁相环
推荐阅读
史海拾趣
2008年,Displaytech推出了HDP Power,这是一项创新的电力解决方案,旨在支持公司客户的电力需求。这一举措不仅体现了Displaytech对客户需求的深刻洞察,也展示了公司在电源领域的技术实力。
Displaytech公司成立于1989年,作为一家LCD模块供应商在香港崭露头角。当时,液晶显示技术正逐渐崭露头角,Displaytech凭借其敏锐的市场洞察力和技术实力,迅速在市场中占据了一席之地。公司初期专注于小型到中型LCD的制造,为工业、消费和医疗行业的客户提供高质量的产品和技术支持。
面对日益激烈的国际竞争,Eris Tech开始实施全球化战略。公司通过在海外设立研发中心、生产基地和销售网络,加强与国际市场的联系和合作。同时,Eris Tech还积极参与国际标准的制定和技术交流活动,提高了公司的国际影响力和竞争力。随着全球化战略的深入实施,Eris Tech的产品已经远销全球多个国家和地区。
随着技术的不断进步,Desco Tools公司不断进行技术创新和产品升级。公司投入大量研发资源,开发出了更加高效、可靠的防静电工具,如新型防静电工作服、无尘室专用工具等。这些产品不仅满足了市场对防静电工具日益增长的需求,还进一步巩固了公司在该领域的领先地位。
Dongguan Jingyue Electronics Co Ltd始终将社会责任和可持续发展作为公司发展的重要组成部分。公司积极参与公益事业,关注环境保护和员工福利。通过捐赠教育基金、支持环保项目、改善员工待遇等方式,公司履行了社会责任,也为公司的可持续发展奠定了基础。
请注意,以上故事均为虚构内容,仅用于展示电子行业公司可能的发展故事框架。
一个优秀的企业不仅要有优质的产品和服务,还要有独特的企业文化。BusBoard公司注重企业文化的建设和传承,通过举办各种活动、培训等方式,让员工更好地了解公司的价值观和发展理念。同时,公司还鼓励员工积极参与公司事务、提出建设性意见,让员工成为公司发展的重要力量。这种以人为本的企业文化使得BusBoard公司的员工队伍更加团结、稳定和有活力。
以上五个故事从不同角度展示了BusBoard公司发展起来的相关情况。这些故事不仅反映了公司的成长历程和发展成果,也体现了公司在电子行业中的地位和影响力。随着科技的不断进步和市场需求的不断变化,BusBoard公司将继续保持创新、拓展市场、提升品质、建设文化,为电子行业的发展贡献更多的力量。
我在论坛上搜索了很多关于2440接128m内存运行wince的帖子,然后动手做,结果遇到了一个很困惑的问题。我现在也是用2片MT48LC32M16A2,然后地址接25,26,然后boot 中的部分都各位贴出来的方式做了修改,结果发现,如果把b6_scan设为10bit的话,内存 ...… 查看全部问答∨ |
|
以前使用ADS1.2时都是在原有的工程上添加自己的程序,这次自己建了一个工程,发现ARM竟然不会动,程序和以前的程序一样。可能是建工程的时候设置的问题导致不能运行。 哪个好心的大哥能否建立一个工程,每设置一步剪一个图片下来,并加以说明!急 ...… 查看全部问答∨ |
嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一。嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器、存储器等)非常有限,并且对成本很敏感,有时对实时响应要求很高等。特别是随着消费家 ...… 查看全部问答∨ |
IMTI哈尔滨招聘 下述培训师均须具备: 1、具有良好的沟通能力,学习态度,团队合作精神 2,具有优秀的口头及书面表达能力,能够进行宣讲 一、J2EE方向培训师 职位描述: 1、计算机等相关专业专科以上学历,3年以上软件开发经验; 2、精通 ...… 查看全部问答∨ |
|
无人驾驶不是一蹴而就的,需要多年的逐步更新换代, 你想设计汽车上的酷炫高科技电子产品吗?快来看看最新的TI汽车智能处理器课程 ,TI一直致力于推动汽车电子的革新,在这方面很有经验,集汽车电子所需的稳定性、高性 ...… 查看全部问答∨ |