[mw_shl_code=c,true]//(1)
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();//20ms 计算一次积分的值
}
TIM_ClearITPendingBit(TIM4, TIM_IT_Update ); //清除TIMx的中断待处理位:TIM 中断源
}[/mw_shl_code]
目前我的小车已经能只用角度环站起来了(挺稳的 几乎不动) 还没加速度环。因为对速度环的理论还没完全搞清楚。所以想在论坛上讨教清楚。
看了很多的PID资料,里面都会提到KI(积分系数),Ti(积分时间),T(采样周期)。那么问题来了?
PS:代码附在上面 1我是每个20ms 采一次速度的积分值。许多人说这就是积分时间。我也是这么觉得的。那采样周期T在哪呢?(在代码(2)中)
[/mw_shl_code]
2代码中的I是指什么呢? 是积分时间Ti呢,还是积分系数KI呢?
(在代码(1)中) (PS:这两个问题困扰我好久了,不知道你是怎么理解的呢)
[/mw_shl_code] |