OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8767|回复: 5

平衡车的速度环问题 主要是积分系数I有疑惑

[复制链接]

16

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2014-4-12
在线时间
0 小时
发表于 2015-5-18 08:34:30 | 显示全部楼层 |阅读模式
5金钱
[mw_shl_code=c,true]//(1)  [/mw_shl_code] [mw_shl_code=c,true]PID_Control.OUT+=PID_Speed.I*Position; //(2) void TIM4_IRQHandler(void) //TIM4中断 { if (TIM_GetITStatus(TIM4, TIM_IT_Update) != RESET) //检查指定的TIM中断发生与否:TIM 中断源 { static u8 ms1=0,ms2=0,ms3=0; ms1++; ms2++; ms3++; if(ms1==2) { ms1=0; MPU6050_Pose(); } if(ms2==4) { ms2=0; Calculate_Pwm(Pitch); } if(ms3==20) { Lowpass_Filter(); } TIM_ClearITPendingBit(TIM4, TIM_IT_Update ); //清除TIMx的中断待处理位:TIM 中断源 } [/mw_shl_code]

[mw_shl_code=c,true]void Lowpass_Filter()//低通滤波器 { Ablosute_Count=(TIM2->CNT - COUNTER_RESET)+(TIM3->CNT - COUNTER_RESET); Speed_New=Ablosute_Count*0.5; Speed=Speed_New*0.3+Speed_Old*0.7; Speed_Old=Speed; Position+=Speed;//对速度积分 Position+=Speed_Need; if(Position>24000) Position=24000; if(Position<-24000) Position=-24000; TIM2->CNT= COUNTER_RESET; TIM3->CNT= COUNTER_RESET; }[/mw_shl_code]


目前我的小车已经能只用角度环站起来了(挺稳的 几乎不动) 还没加速度环。因为对速度环的理论还没完全搞清楚。所以想在论坛上讨教清楚。

看了很多的PID资料,里面都会提到KI(积分系数),Ti(积分时间),T(采样周期)。那么问题来了?

PS:代码附在上面 1我是每个20ms  采一次速度的积分值。许多人说这就是积分时间。我也是这么觉得的。那采样周期T在哪呢?(在代码(2)中)

[/mw_shl_code]

2代码中的I是指什么呢? 是积分时间Ti呢,还是积分系数KI呢?

(在代码(1)中)

[/mw_shl_code]

最佳答案

查看完整内容[请看2#楼]

1、你先确定你的控制环路设计,是角度环在内,速度环在外构成内外环系统;还是角度环和速度环并列线性化叠加; 2、PID分为位置式和增量式,以简单的位置式来说,你的PID运算周期就是你的采样周期,“I是指什么呢? 是积分时间Ti呢,还是积分系数KI呢?”  这些只是PID算式的参数,实际中并不需要管这个,总的来说I就只有一个参数,你去试凑就好了。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2012-8-22
在线时间
6 小时
发表于 2015-5-18 08:34:31 | 显示全部楼层
1、你先确定你的控制环路设计,是角度环在内,速度环在外构成内外环系统;还是角度环和速度环并列线性化叠加;
2、PID分为位置式和增量式,以简单的位置式来说,你的PID运算周期就是你的采样周期,“I是指什么呢? 是积分时间Ti呢,还是积分系数KI呢?”  这些只是PID算式的参数,实际中并不需要管这个,总的来说I就只有一个参数,你去试凑就好了。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-5-19 01:18:00 | 显示全部楼层
帮顶....
回复

使用道具 举报

16

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2014-4-12
在线时间
0 小时
 楼主| 发表于 2015-5-19 16:20:50 | 显示全部楼层
回复【3楼】Still:
---------------------------------
谢谢你的回答。我的pid是角度环和速度环并列线性化叠加。最终我是想用遥控器控制平衡车的行走。你这么说的话我感觉清楚了一些,但还没有完全理解。在我的程序中,积分时间就是采样周期20ms,我是完全理解了。PID_Speed.I我把它理解为改变积分作用的强弱。这么理解正确吗?
回复

使用道具 举报

5

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2012-8-22
在线时间
6 小时
发表于 2015-5-22 16:40:54 | 显示全部楼层
回复【4楼】魂淡:
---------------------------------
你的速度环周期才50HZ? 是因为你的遥控信号是50HZ的吗? 不过遥控玩一玩应该也是可以的。后面I参数可以这样理解
回复

使用道具 举报

2

主题

4

帖子

0

精华

新手入门

积分
32
金钱
32
注册时间
2015-7-31
在线时间
0 小时
发表于 2015-8-4 16:58:15 | 显示全部楼层
回复【5楼】Still:
---------------------------------
请问如何加上速度环在平衡车里面?已经有了角速度环和角度环?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-19 07:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表