我爱胆机妙音 发表于 2012-6-10 20:17:41

请教:PID里面的“时间的积分”“dt”是什么

在自平衡小车的代码中经常能看到“dt”,请问这个dt是什么?怎样实现?
实现卡尔曼滤波需要提供运行程序一遍所用的时间,请问包不包括运行setup的时间?
谢谢大家

fedora 发表于 2012-7-7 14:47:37

dt是微分符号,高等数学里面有的,但是工程上应该讲的是一个极小的时间段,这一时间段内PID算法所控制调节的变量与设定值的差值除以时间段叫做微分(D),从0时间点开始累计到现在的变量与设定值的所有差值的加和叫做积分(I),变量与设定的差值就是(P)。每一项前面加一定的的系数,求出的数值就是下一个时间间隔内的执行的值。一般用PI调节较多,就是只用3个中的两个来调节,具体要看控制要求。详细的看看自动控制原理的资料就可以了

Muller_r 发表于 2012-7-7 15:57:25

这个可以请教弘毅,他可是自动控制出身

BlackCat 发表于 2012-7-7 22:35:33

看dt出现在什么地方了,如果在互补滤波中,dt是采样的时间,也就是程序运行一次的时间。
millis() 函数获取当前时间

黑马的代码中是这样计算的
    unsigned long now = millis();                           // 当前时间(ms)
    float dt = (now - preTime) / 1000.0;                  // 微分时间(s)
    preTime = now;                                          // 记录本次时间(ms)

不过他这个时间(s)好像备注错了 /1000后应该是ms

系统提一次运行应该包括 setup,之后不包括

卡尔曼滤波没研究过,应该也差不多是这样的。

如有不对,请指正。
页: [1]
查看完整版本: 请教:PID里面的“时间的积分”“dt”是什么