经常看到说要用PID,PID具体含义是什么呢,,用最简单的语言解释下吧。千万不要用那个积分公式来回答,就算上过大学回来看看也看看是公式一堆,一堆公式。不用PID算法行不行?比如说我上面有角度传感器MPU6050,单片机获取MPU6050的数据后,对这些数据进行判断,进而来实行姿态调整,这样也可以吧?????????
3楼
PID就是一种最简单的最直接的控制系统稳定的方法,思想就是差多少补回来。这就是P,然后微分D是检测变化的快慢提前调节,积分 I 就是对偏差积分,对总体的偏差进行调节。最后按比例将三个值加在一起,再乘以一个总的比例。。说的可能不是很准确,我就是这么理解的
4楼
你那个偏移量不同,调节量也不同,直接分段调节的方式误差太大。
关于6050的参数。首先,现在飞机等设备上使用的机械式陀螺仪,是没有漂移误差的,加速度对倾斜角的测量没有影响。但是我们使用的数字式小型陀螺仪,例如MPU6050,使用的类似电容极板的方式,在非惯性系中测得的陀螺仪值收到加速度的影响。所以就要用加速度去修正陀螺仪的值。就是滤波(或者叫数据融合)
目前用的比较多的是四元数算法然后求欧拉角,然后来表征空间状态。另外一种是卡尔曼(或者拓展卡尔曼)来进行数据融合。这样能得到比较准确的空间矢量。
飞行器的姿态解算的越准确,控制的也就越好
(好吧,大概就是这样,手敲的好累)
我贴上一个2年前看到的PID的故事吧,我觉得讲得还是蛮通俗的:
小云接到这样一个任务:一个水缸有点漏水(而且漏水的速度还不是固定不变的),要求水面高度维持在某个位置,一旦发现水面高度低于要求位置,就要往水缸里加水。 小云接到任务后就一直守在水缸旁边,时间长就觉得无聊,就跑到房里看小说了,开始每30分钟来检查一次水面高度。结果水漏得太快,每次小云来检查时,水都快漏完了,离要求的高度相差很远,后来小云改为每3分钟来检查一次,结果每次来水都没怎么漏,不需要加水,来得太频繁做的是无用功。几次试验后,他确定每10分钟来检查一次。这个检查时间就称为采样周期。
开始小云用勺子加水,水龙头离水缸有十几米远的距离,经常要跑好几趟才加够水,于是小云又改为用桶加,一加就是一桶,跑的次数少了,加水的速度也快了,但好几次将缸给加溢出了,小云又动脑筋,我不用瓢也不用桶,最后选择可用盆,几次下来,发现刚刚好,不用跑太多次,也不会让水溢出。这个加水工具的大小就称为比例系数。
小云又发现水虽然不会加过量溢出了,有时会高过要求位置比较多,还是有溢出的可能。于是他又想了个办法,在水缸上装一个漏斗,每次加水不直接倒进水缸,而是倒进漏斗让它慢慢加。这样溢出的问题解决了,但加水的速度又慢了,有时还赶不上漏水的速度。于是他试着变换不同大小口径的漏斗来控制加水的速度,最终找到了满意的漏斗。漏斗的时间就称为积分时间。
小云终于喘了一口,但任务的要求突然严了,水位控制的及时性要求大大提高,一旦水位过低,必须立即将水加到要求位置,而且不能高出太多,否则不给工钱。小云又为难了!于是他又开动脑筋,终于让它想到一个办法,常放一盆备用水在旁边,一发现水位低了,不经过漏斗就是一盆水下去,这样及时性是保证了,但水位有时会高很多。他又在要求水面位置上面一点将水缸凿一孔,再接一根管子到下面的备用桶里,这样多出的水会从上面的孔里漏出来。这个水漏出的快慢就称为微分时间。
小云接到这样一个任务:一个水缸有点漏水(而且漏水的速度还不是固定不变的),要求水面高度维持在某个位置,一旦发现水面高度低于要求位置,就要往水缸里加水。 小云接到任务后就一直守在水缸旁边,时间长就觉得无聊,就跑到房里看小说了,开始每30分钟来检查一次水面高度。结果水漏得太快,每次小云来检查时,水都快漏完了,离要求的高度相差很远,后来小云改为每3分钟来检查一次,结果每次来水都没怎么漏,不需要加水,来得太频繁做的是无用功。几次试验后,他确定每10分钟来检查一次。这个检查时间就称为采样周期。
开始小云用勺子加水,水龙头离水缸有十几米远的距离,经常要跑好几趟才加够水,于是小云又改为用桶加,一加就是一桶,跑的次数少了,加水的速度也快了,但好几次将缸给加溢出了,小云又动脑筋,我不用瓢也不用桶,最后选择可用盆,几次下来,发现刚刚好,不用跑太多次,也不会让水溢出。这个加水工具的大小就称为比例系数。
小云又发现水虽然不会加过量溢出了,有时会高过要求位置比较多,还是有溢出的可能。于是他又想了个办法,在水缸上装一个漏斗,每次加水不直接倒进水缸,而是倒进漏斗让它慢慢加。这样溢出的问题解决了,但加水的速度又慢了,有时还赶不上漏水的速度。于是他试着变换不同大小口径的漏斗来控制加水的速度,最终找到了满意的漏斗。漏斗的时间就称为积分时间。
小云终于喘了一口,但任务的要求突然严了,水位控制的及时性要求大大提高,一旦水位过低,必须立即将水加到要求位置,而且不能高出太多,否则不给工钱。小云又为难了!于是他又开动脑筋,终于让它想到一个办法,常放一盆备用水在旁边,一发现水位低了,不经过漏斗就是一盆水下去,这样及时性是保证了,但水位有时会高很多。他又在要求水面位置上面一点将水缸凿一孔,再接一根管子到下面的备用桶里,这样多出的水会从上面的孔里漏出来。这个水漏出的快慢就称为微分时间。
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 | |
【FRDM-MCXN947评测】核间通信MUTEX被打赏50分 |