Arduino PID demo

版权声明:转载请注明原文地址即可,要是本文对您有些许帮助的话,请您在下方点个赞,谢谢啦ヾ(o◕∀◕)ノヾ https://blog.csdn.net/qq_33583069/article/details/88783564
float Kp = 0.5,Ki = 0.5,Kd = 0.5; 
float Pout,Iout,Dout,Output;
float now,lasttime=0,timechange;
float Input,lastinput,Setpoint=127.0;
float error,errorsum=0,Derror;
int settime = 1000;

void setup(){
  Serial.begin(9600);
}
void loop(){
  now = millis();
  timechange=npw-lasttime;
  if(timechange>=settime){
    Input=(analogRead(0)/4.0);
    error=Setpoint-Input;
    errorsum=errorsum+error;
    Derror=Input-lastinput;
    Pout=Kp*error;
    Iout=Ki*errorsum;
    Dout=Kd*Derror;
    if(Iout>255)Iout=255;
    if(Iout<0)Iout=0;
    Output=Pout+Iout+Dout;
    if(Output>255)Output=255;
    if(Output<0)Output=0;
    lastinput=Input;
    lasttime=now;
    analogWrite(3,Output);
    Serial.print(Setpoint);
    Serial.print(" : ");
    Serial.print(Input);
    Serial.print(" : ");
    Serial.println(Output);
  }
}

猜你喜欢

转载自blog.csdn.net/qq_33583069/article/details/88783564
PID