61 this->
error = setpoint - feedback;
88 (this->
Kd * this->derivative);
96 this->
output = this->prevOutput - this->outputMaxChanged;
107 this->prevOutput = this->
output;
190 Serial.println(F(
"--------------------------------------------------------------------------"));
191 Serial.println(F(
"| SP | FB | Error | P | I | D | RawOut | Out |"));
192 Serial.println(F(
"--------------------------------------------------------------------------"));
194 Serial.print(F(
"| "));
195 Serial.print(setpoint, 3);
196 Serial.print(F(
" | "));
198 Serial.print(feedback, 3);
199 Serial.print(F(
" | "));
201 Serial.print(this->
error, 3);
202 Serial.print(F(
" | "));
205 Serial.print(F(
" | "));
208 Serial.print(F(
" | "));
211 Serial.print(F(
" | "));
214 Serial.print(F(
" | "));
216 Serial.print(this->
output, 3);
217 Serial.println(F(
" |"));
219 Serial.println(F(
"--------------------------------------------------------------------------"));
float integral
Acumulador integral.
float Kd
Ganancia derivativa.
bool saturated
Indica si el PID está saturado.
PID(float Kp, float Ki, float Kd, float outputMin, float outputMax, float dt, float outputMaxChanged)
Constructor del controlador PID.
float prevError
Error previo.
void resetPID()
Reinicia el estado interno del PID.
float deltaOutput
Cambio entre salidas.
float outputMax
Límite máximo de salida.
float statedt(float dt)
Valida y corrige el tiempo de muestreo.
float output
Salida final del PID.
float derivative
Término derivativo.
float Kp
Ganancia proporcional.
void printDebugPID(float setpoint, float feedback)
Imprime información de depuración del PID.
float outputMaxChanged
Máximo cambio permitido por ciclo.
void setOutputLimits(float outputMin, float outputMax)
Establece los límites de salida del PID.
float rawOutput
Salida sin limitación de cambio.
float outputMin
Límite mínimo de salida.
float dt
Tiempo de muestreo.
float prevOutput
Salida previa.
float prevFeedback
Feedback previo para derivative-on-measurement.
float Ki
Ganancia integral.
float proportional
Término proporcional.
float pidNoIntegral
PID sin término integral.
void setDt(float dt)
Establece un nuevo tiempo de muestreo.
float calculoPID(float setpoint, float feedback, bool debugMSG=false)
Calcula la salida del controlador PID.
void setKPID(float Kp, float Ki, float Kd)
Establece nuevas ganancias PID.