智能车制作

标题: PD控制S-D5舵机 [打印本页]

作者: qiangkai311    时间: 2013-3-14 19:28
标题: PD控制S-D5舵机
哪位大神好心人能给指导下PD控制舵机啊!从哪入手,,,能分享想点容易理解的资料最好了!11111111谢谢各位帅哥美女
作者: cgtiso    时间: 2013-3-14 20:02
baidu
作者: exiao    时间: 2013-3-14 20:08
楼上回答简介可行
作者: 眼角宣泄悲伤    时间: 2013-3-14 20:10
先调P吧,P调好了一般的弯道应该能过的,不过直道上会震荡,这时候你再调D,提高弯道的相应速度......
作者: qiangkai311    时间: 2013-3-14 20:18
眼角宣泄悲伤 发表于 2013-3-14 20:10
先调P吧,P调好了一般的弯道应该能过的,不过直道上会震荡,这时候你再调D,提高弯道的相应速度......

一点都不会啊!问题是没有策略,怎么实现?还请指教?
作者: 眼角宣泄悲伤    时间: 2013-3-14 21:46
qiangkai311 发表于 2013-3-14 20:18
一点都不会啊!问题是没有策略,怎么实现?还请指教?

首先你得搞明白P,I,D各有什么作用
P:  比例,能够减小上升时间,但不能消除稳态误差
I:积分,能够消除稳态误差,但会使瞬时响应变差
D:微分,可以加快动态系统响应,但容易引起震荡

先调P就是类似于比例函数,偏差乘以你设定的那个比例系数KP

作者: 恋May    时间: 2013-3-15 08:44
qiangkai311 发表于 2013-3-14 20:18
一点都不会啊!问题是没有策略,怎么实现?还请指教?

不要把PID想的太神秘。
      P就是比例,程序里面 和小车 打个比方。你小车判断弯道,如果是小偏 只需要向右打角30度,假设程序里占空比需要增加a。如果是偏大一点,需要向右打角60度,那么理想假设需要占空比增加2a。P就是a的系数,比例系数。P在30度的时候=1,在60度的时候=2。
      如果只用这个P是可以让小车晃晃荡荡的跑起来,但是小车转向很别扭。理想中的控制算法,只要一个P就够了,但是现实中有很多因素,导致仅仅一个P不能准确的控制。
      就好比你用电水壶烧水,仅仅是想烧到70度,里面一个通电的金属发热,理想情况下,你测量水温70度了,就立马断电,但是水温会稳定在70吗,不会的。因为你即使断电了,那个通电的导体还是有很高的温度的,虽然没通电温度在下降,但是至少会让水温升一点点。和小车的控制是一样的。理想只是P就可以了,但是实际上还是有些因素导致不可能准确的转向你理想的角度。那么如何准确的控制呢,假设 水温在65度的时候 断电,然后导体降温,水温温度慢慢靠近70度。小车转角也是,假设转角有惯性,你一下子转60度会转超过60度角一点点,那么你就转55度,然后惯性在带一点点恰好60度左右。这个5度的范围就是偏差的增量(这次偏差-上次偏差) ,通过I、D 一点点的消除偏差,无限的接近最理想的状态。

温度这个例子,是看过一份资料里面说的。


我说的是最基本的简单的 PID算法很灵活,可以延伸,变形。等你这些基本的都弄懂了再考虑复杂的。什么模糊PID,分段PID。



作者: qiangkai311    时间: 2013-3-16 22:08
眼角宣泄悲伤 发表于 2013-3-14 21:46
首先你得搞明白P,I,D各有什么作用
P:  比例,能够减小上升时间,但不能消除稳态误差
I:积分,能够消除 ...

还请帅哥说明一下KP怎么来确定?用代码实现是怎么一个过程?不胜感激!
角度和pwm的转换是计算出来的还是跳出来的。。。

作者: qiangkai311    时间: 2013-3-16 22:14
恋May 发表于 2013-3-15 08:44
不要把PID想的太神秘。
      P就是比例,程序里面 和小车 打个比方。你小车判断弯道,如果是小偏 只需要 ...

嗯谢谢你讲了这么多,我会好好琢磨琢磨的,基础打牢。。。还请多多指教
那这些参数,比如p ,i, d的值是测出来的还是有经验值可以参考的?

作者: qiangkai311    时间: 2013-3-16 22:17
眼角宣泄悲伤 发表于 2013-3-14 21:46
首先你得搞明白P,I,D各有什么作用
P:  比例,能够减小上升时间,但不能消除稳态误差
I:积分,能够消除 ...

有点印象了。。。呵呵呵。。。
实际还是理解的不讨透彻。。

作者: 恋May    时间: 2013-3-19 10:00
qiangkai311 发表于 2013-3-16 22:14
嗯谢谢你讲了这么多,我会好好琢磨琢磨的,基础打牢。。。还请多多指教
那这些参数,比如p ,i, d的值是 ...

呵呵,P,I,D是先有经验(实际情况中P,I,D的意义,主要是P的意义) 就知道 P大概是多少了。然后 再根据 实际定 也 八九不离十了。
先了解透PID这三个系数在小车行驶过程中的物理意义,这个就是所谓的经验了。

作者: qiangkai311    时间: 2013-3-27 21:37
恋May 发表于 2013-3-19 10:00
呵呵,P,I,D是先有经验(实际情况中P,I,D的意义,主要是P的意义) 就知道 P大概是多少了。然后 再根据 实 ...

嗯谢啦

作者: donsbin    时间: 2013-4-27 15:35
7楼的分析很形象生动
作者: 793810734@qq.om    时间: 2013-6-30 08:26
舵机的PD控制一直搞不太明白,主要是不知道偏差怎么选,望楼主进行详细指导。。
作者: fwh157    时间: 2017-7-11 19:36
恋May 发表于 2013-3-15 08:44
不要把PID想的太神秘。
      P就是比例,程序里面 和小车 打个比方。你小车判断弯道,如果是小偏 只需 ...

PID算法目标值赋值问题,。。寻找信标灯。。舵机用pd算法控制时,在进行pid运算前,赋给目标值什么值,我们要事先知道,我用颜色传感器读出的数据(处理成角度)使用pd算法控制小车的舵机,但是给目标值赋值时,该赋多少?赋给目标值什么值,我们要事先知道。(舵机每次的目标值是多少度,我们并不知道),?能谈谈你对pd算法控制舵机的思想吗?
typedef struct PID
{
    int SetPoint;         //设定目标Desired Value  /*********就是这项******/
    double Proportion;  //比例常数Proportional Const
    double Integral;    //积分常数Integral Const
    double Derivative;  //微分常数Derivative Const
    int LastError;      //Error[-1]
    int PrevError;      //Error[-2]
} PID;






欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2