![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
PID
Dependencies: BLE_API mbed nRF51822
PID.cpp
- Committer:
- stoicancristi
- Date:
- 2017-01-12
- Revision:
- 1:d3e12393b71d
- Parent:
- 0:1f4d5c5491b8
File content as of revision 1:d3e12393b71d:
#include "PID.h" PIDClass::PIDClass(float _Kr,float _Ki, float _Kd,float _SetPoint):Kr(_Kr),Ki(_Ki),Kd(_Kd),SetPoint(_SetPoint) { // } float PIDClass::ComputeCommand(float inputADC) { static PID_static param; static float inter = Ki*Kd; static float Kc = sqrt(inter); float outputPWM = 0; float error = 0; error = SetPoint - inputADC; param.integral = param.integral + Ki*Te*error; outputPWM = Kr*error + param.integral + Kd*(error - param.last_error)/Te; param.last_error = error; if(outputPWM > SUPERIOR_MARGIN) { param.integral = param.integral + Kc*(SUPERIOR_MARGIN - outputPWM); outputPWM = SUPERIOR_MARGIN; }else if(outputPWM < INFERIOR_MARGIN) { param.integral = param.integral + Kc*(INFERIOR_MARGIN - outputPWM); outputPWM = 0; } return outputPWM; }