PID学习

2020-02-20 20:40发布



  1. 这是arduino的基本PID程序

  2. unsigned long lastTime;
  3. double Input, Output, Setpoint;
  4. double errSum, lastErr;
  5. double kp, ki, kd;
  6. void Compute()
  7. {
  8.    /*How long since we last calculated*/
  9.    unsigned long now = millis();
  10.    double timeChange = (double)(now - lastTime);
  11.   
  12.    /*Compute all the working error variables*/
  13.    double error = Setpoint - Input;
  14.    errSum += (error * timeChange);
  15.    double dErr = (error - lastErr) / timeChange;
  16.   
  17.    /*Compute PID Output*/
  18.    Output = kp * error + ki * errSum + kd * dErr;
  19.   
  20.    /*Remember some variables for next time*/
  21.    lastErr = error;
  22.    lastTime = now;
  23. }
  24.   
  25. void SetTunings(double Kp, double Ki, double Kd)
  26. {
  27.    kp = Kp;
  28.    ki = Ki;
  29.    kd = Kd;
  30. }
复制代码



这是arduino的基本PID程序

unsigned long lastTime;
double Input, Output, Setpoint;
double errSum, lastErr;
double kp, ki, kd;
void Compute()
{
   /*How long since we last calculated*/
   unsigned long now = millis();
   double timeChange = (double)(now - lastTime);
  
   /*Compute all the working error variables*/
   double error = Setpoint - Input;
   errSum += (error * timeChange);
   double dErr = (error - lastErr) / timeChange;
  
   /*Compute PID Output*/
   Output = kp * error + ki * errSum + kd * dErr;
  
   /*Remember some variables for next time*/
   lastErr = error;
   lastTime = now;
}
  
void SetTunings(double Kp, double Ki, double Kd)
{
   kp = Kp;
   ki = Ki;
   kd = Kd;
}
复制代码


这是一个PID的基本程序,我看了一下,一知半解,如果用到我的这种小车里,
input:编码器检测小车速度值,
output:输出小车速度:
setpoint:设置小车直线标准速度
unsigned long now = millis();//这是arduino中计时的一个函数,即now为从程序执行到此的时间
我不太了解timechange计算是从哪开始到哪结束???????

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。