История изменений
Исправление WRG, (текущая версия) :
сейчас как раз этим и занимаюсь. вывожу ошибку на serial и смотрю через picocom. она почему-то всегда равна как раз 13, т.е. конечному результату, который я хочу получить. буду колупать дальше, почему не так работает.
накопал еще arduino pid library, там функция, аналогичная моей pid_compute() выглядит так
bool PID::Compute()
{
if(!inAuto) return false;
unsigned long now = millis();
unsigned long timeChange = (now - lastTime);
if(timeChange>=SampleTime)
{
/*Compute all the working error variables*/
double input = *myInput;
double error = *mySetpoint - input;
ITerm+= (ki * error);
if(ITerm > outMax) ITerm= outMax;
else if(ITerm < outMin) ITerm= outMin;
double dInput = (input - lastInput);
/*Compute PID Output*/
double output = kp * error + ITerm- kd * dInput;
if(output > outMax) output = outMax;
else if(output < outMin) output = outMin;
*myOutput = output;
/*Remember some variables for next time*/
lastInput = input;
lastTime = now;
return true;
}
else return false;
}
Исходная версия WRG, :
сейчас как раз этим и занимаюсь. вывожу ошибку на serial и смотрю через picocom. она почему-то всегда равна как раз 13, т.е. конечному результату, который я хочу получить. буду колупать дальше, почему не так работает.