gan1211 发表于 2010-4-27 18:26:14

实在不理解PID算法,希望高手可以指点一下

之前做一个三轮寻迹小车,后两轮用直流减速电机控制,前面一个万向轮。现在可以实现寻迹功能,可是速度很慢,一旦调快就会跑出去。在做的过程中发现,利用两个轮的差速转弯不是很好控制,而且两个直流电机本身的性能也不一样,因此在直线跑道上也没有办法沿直线一直走。
    现在在两个电机的轴上都装有霍尔传感器,可以测出当前的速度,试着调整小车可以直线行走。当然,对于小车的控制算法,仅是知道用PID算法比较好,看了书上的公式,感觉还是不理解。
    主要是对于速度式PID,公式如下
       http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_549723.jpg
(原文件名:未命名1.jpg)
这里输出的速度是直接控制小车的,那么如果我直接调节PWM输出,而不用PID,两者都是输出一个值去控制小车,有什么不一样呢?希望有高手看到并帮忙一下,先谢了。

tiancaigao7 发表于 2010-4-27 19:02:37

因为你不知道什么时候应该给出什么样的占空比数值,因此才需要算法。如果你能算得比MCU快的话,而且又能迅速的高速MCU,那你就不需要算法了。

gan1211 发表于 2010-4-27 19:36:25

谢谢1楼
再次请教,比如说现在小车要转弯,我输入一个速度值V,如果不用PID算法的话可能小车得到的速度未必是V,有可大于或者小于,而用了算法,则可以把速度控制在V这个值上。而实际上转弯要转多少还是要自己给定的个值,不知道这样理解对不对?

maorain 发表于 2010-4-30 14:24:18

简单说就是两个轮子的电机由于性能参数不完全一样,导致给定的PWM信号完全相同时转速不同,这时候你需要调节其中的一个电机转速或两个电机同时调节,使得两个电机转速(或速度)相同,才能走出直线,但是调少了和调多了都不行,调少了反应太慢,调多了容易振荡,而你又很难知道要调多少是合适的。这时候可以使用PID,通过调节不同的参数使得速度的调节接近相同。

dikex 发表于 2010-4-30 14:29:36

PID算法是用于使得系统能“快、准、稳”地响应输入
输入是多少当然是要自己给定了

tiancaigao7 发表于 2010-4-30 16:08:57

是的

dani 发表于 2014-8-26 08:12:03

好文章,有一定感悟,多谈一会啊

yick 发表于 2015-7-29 01:08:02

感觉戳到痛点了,但是没有后续...
页: [1]
查看完整版本: 实在不理解PID算法,希望高手可以指点一下