飞思卡尔智能车——舵机及PID控制

来源:互联网 发布:网络高利贷不还怎么办 编辑:程序博客网 时间:2024/05/16 19:24

有一次机器人站不起来了(优必选ALPHA1S),问了客服,说是舵机滑丝,才知道有舵机这个东东。

舵机:小车转向的控制机构。也就是控制小车的转向。它的特点是结构紧凑、易安装调试、控制简单、大扭力、成本较低等。舵机的主要性能取决于最大力矩和工作速度(一般是以秒/60°为单位)。它是一种位置伺服的驱动器,适用于那些需要角度不断变化并能够保持的控制系统。在机器人的控制系统中,舵机控制效果是性能的重要影响因素。舵机能够在微机电系统和航模中作为基本的输出执行机构,其简单的控制和输出值得单片机系统很容易与之接口。

-->组成:舵盘、减速齿轮组、位置反馈电位计、直流电机、控制电路等

-->工作原理:控制信号→控制电路板→电机转动→齿轮组减速→舵盘转动→位置反馈电位计→控制电路板反馈。

-->输入线:中间红色——电源线Vcc;黑色——地线GND;白色/橘黄色——控制信号线


-->信号:pwm信号,其中脉冲宽度从0.5-2.5MS,相对应的舵盘位置为0-180度,呈线性变化。

也就是不同脉冲宽度的pwm波,舵机将输出不同的轴转角。所以要控制小车的转角,我们就要控制输出不同脉冲宽度的pwm波。

pwm波脉冲宽度与角度的关系:


PWM:脉冲宽度调制

-->原理:对电路元件的通断进行控制,使输出端得到一系列幅值相等的脉冲。猪八戒的耙子就可以看似脉冲宽度相等的pwm波形。那不相等的呢,可以 把一排身高相等但月半瘦不同的人排排站看做脉冲宽度不相等的pwm波形。可见要想脉冲宽度不相等,就是每个波用的材料的多少(当然前提是等高),在电路中,我们要做的就是在输入的高电压大小相等的前提下,使每个单位时间内输入的高电平时间不相等,就可以得到一组高度相等但脉冲宽度不相等的pwm波。

我们这里引入一个新概念——占空比。


占空比在周期型的现象中,某种现象发生后持续的时间与总时间的比

-->例如,在成语中有句话:「三天打渔,两天晒网」,如果以三天为一个周期,“打渔”的占空比则为三分之一。(这一行和上一行摘自百度百科,版权归百度百科。)

因为感觉这个成语说得很对,就拿来它做例子,根据这个成语,大家也应该懂占空比的意思了。

PID控制:一种调节器控制规律为比例、积分、微分的控制。其中:P:比例(proportion)、I:积分(integral)、D:导数(derivative)
-->其输入e(t)与输出u(t)的关系为:


式子中Kc为比例系数,T1为积分时间参数,Td为微分时间常数。
-->
各个参数的意义作用:
Kc:比例系数。一般增大比例系数,将加快系统的响应。
T1:积分时间常数。一般地,积分控制通常与比例控制或比例微分控制联合使用,构成 PI或 PID控制.增大积分时间常数  (积分变弱)有利于小超调,减小振荡,使系统更稳定,但同时要延长系统消除静差的时间.积分时间常数太小会降低系统的稳定性,增大系统的振荡次数.
Td:微分时间常数。一般微分控制和比例控制和比例积分控制联合使用,组成PD或PID控制,微分控制可改善系统的动态特性。
打个比方,如果现在输出的是1,目标输出是100,那么P的作用是以最快的速度达到100,把P理解成一个系数即可。而I?我们高数上讲0的积分才是一个常数。I就是使误差为0而起调和作用;D是微分的意思,微分就是求导,导数代表切线,切线的方向就是最快到达至高点的方向,这样D可以帮助我们最快获得最优解。微分的作用就是加快调节过程的作用。
公式的推导:

看看最后的结果: 

△Uk=A*e(k)+B*e(k-1)+C*e(k-2)

       根据公式可以看出KP就是P的值,TD是D的值,1/Ti是I的值,都是常数。我们发现式子中还有个T值,T是采样周期,是一个已知数。

式中A、B、C就可以根据式子代入数据得到。

所以,我们只需要要求e(k)、e(k-1)、e(k-2)就可以知道△Uk的值了。再按照△Uk来调节PWM的大小就可以了。

-->
反馈系统:
(图片摘自百度图片,链接地址:点击打开链接)

舵机用PID控制是使小车保持在赛道中央,即偏移距离为0.根据传感器反馈过来的偏移距离用PID计算出给舵机的脉宽,这样就会使小车的偏移距离为0。在飞思卡尔智能车项目里面,我们就会用到PID算法,比如车爬坡平底连续拐弯时。
PID算法的应用基础最开始是对PCB板上的运放的PID参数就行调校。P对应于运放增益;I是运放输入和输出端之间接一个电容引入反馈,就是控制器的输出和输入误差会累积起来影响输出;D就是运放输入端串接一个电容,起的微分作用是阻止输出与输入误差的变化,结合示波器来观察控制电机的PID参数设定。
PID一般有两种:位置式PID和增量式PID。在小车中一般用增量式。因为位置式PID的输出与过去的所有状态有关,计算时要对e(每一次的控制误差)进行累加,这个计算量非常大,而且没有必要。而且小车的PID控制器的输出并不是绝对数值,而是要一个△,代表增多少,减多少。通过增量PID算法,每次输出是PWM要增加多少或者减少多少,而不是PWM的实际值。




0 0
原创粉丝点击