Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
pidcontroller.cpp
- Committer:
- bwang
- Date:
- 2015-03-01
- Revision:
- 0:54cf32d35f4d
- Child:
- 1:1f58bdcf2956
File content as of revision 0:54cf32d35f4d:
#include "includes.h"
#include "classes.h"
PidController::PidController(float ki, float kp, float kd, float out_max, float out_min) {
_ki = ki;
_kp = kp;
_kd = kd;
_last_in = 0.0f;
_integral = 0.0f;
_out_max = out_max;
_out_min = out_min;
}
float PidController::Update(float ref, float in) {
float error = ref - in;
_integral += error;
if (_integral > _out_max) _integral = _out_max;
if (_integral < _out_min) _integral = _out_min;
float deriv = _last_in - in;
_last_in = in;
float tmp = _ki * _integral + _kp * error + _kd * deriv;
if (tmp > _out_max) tmp = _out_max;
if (tmp < _out_min) tmp = _out_min;
return tmp;
}