sistem PID

Fork of kontrolPID by Muhammad Fathoni Nurrohman

kontrolPID.cpp

Committer:
sarlilouis
Date:
2017-10-27
Revision:
0:a400d726fdc6
Child:
2:b37bdc0b8677

File content as of revision 0:a400d726fdc6:

#include "mbed.h"
#include "kontrolPID.h"
 float _kP, _kI, _kD;
 int _interval;
 short _limit_Min, _limit_Max;
 float _current_Error, _sum_Error, _delta_Error, _previous_Error;
 float _controller_Output;
kontrolPID::kontrolPID(float kP, float kI, float kD,
                        int interval, 
                        short limit_Min, short limit_Max){
    _kP = kP;
    _kI = kI;
    _kD = kD;
    _interval = interval;
    _limit_Min = limit_Min;
    _limit_Max = limit_Max;
}
 
void kontrolPID::resetPID(){
    _current_Error = 0;
    _delta_Error = 0;
    _sum_Error = 0;
}
 
float kontrolPID::hitungPID(float _process_Value, float _set_Point){
    _current_Error = _set_Point - _process_Value;
    _delta_Error = _current_Error - _previous_Error;
    _sum_Error = _current_Error + _previous_Error;
    
    _controller_Output = _kP * _current_Error + _kI * _sum_Error * _interval + _kD * _delta_Error / _interval;
    
    if (_limit_Max < _controller_Output){
        _controller_Output = _limit_Max;
    }
    else if (_limit_Min > _controller_Output){
        _controller_Output = _limit_Min;
    }
    
    _previous_Error = _current_Error;
    
    return _controller_Output;
}