17#define PID_AVG_BUF_SIZE_SHIFT 5
18#define PID_AVG_BUF_SIZE (1<<PID_AVG_BUF_SIZE_SHIFT)
20#define NOT_TIME_BASED_PID 1
23#define PID_MINIMAL_PERIOD_MS 5
25#define GET_PERIOD_LIMITED(pid_s_ptr) maxI(PID_MINIMAL_PERIOD_MS, ((pid_s_ptr)->periodMs))
27#define MS2SEC(x) (x * 0.001)
51 void updateFactors(
float pFactor,
float iFactor,
float dFactor);
89 void reset(
void)
override;
float getOutput(float target, float input, float dTime) override
float iTermBuf[PID_AVG_BUF_SIZE]
void reset(void) override
void updateITerm(float value) override
void updateFactors(float pFactor, float iFactor, float dFactor)
bool isSame(const pid_s *parameters) const
virtual void updateITerm(float value)
void setErrorAmplification(float coef)
void postState(pid_status_s &pidStatus) const
void showPidStatus(const char *msg) const
float getUnclampedOutput(float target, float input, float dTime)
float getPrevError(void) const
void initPidClass(pid_s *parameters)
float getIntegration(void) const
float getMinValue() const
float getOutput(float target, float input)
float getOutput(float target, float input, float dTime) override
float derivativeFilterLoss
float limitOutput(float v) const