2nd Library

Dependents:   cuboid_balance_ros cuboid_balance mirror_actuator_V1

Committer:
altb2
Date:
Thu Apr 01 13:38:43 2021 +0000
Revision:
3:e3b84ea63c0f
PIDT2 added

Who changed what in which revision?

UserRevisionLine numberNew contents of line
altb2 3:e3b84ea63c0f 1 #ifndef PIDT2_CNTRL_H_
altb2 3:e3b84ea63c0f 2 #define PIDT2_CNTRL_H_
altb2 3:e3b84ea63c0f 3
altb2 3:e3b84ea63c0f 4 #include "mbed.h"
altb2 3:e3b84ea63c0f 5
altb2 3:e3b84ea63c0f 6 class PIDT2_Cntrl
altb2 3:e3b84ea63c0f 7 {
altb2 3:e3b84ea63c0f 8 public:
altb2 3:e3b84ea63c0f 9
altb2 3:e3b84ea63c0f 10 PIDT2_Cntrl(float P, float I, float D, float tau_f, float tau_ro, float Ts, float uMin, float uMax);
altb2 3:e3b84ea63c0f 11
altb2 3:e3b84ea63c0f 12 PIDT2_Cntrl() {};
altb2 3:e3b84ea63c0f 13
altb2 3:e3b84ea63c0f 14 float operator()(float e)
altb2 3:e3b84ea63c0f 15 {
altb2 3:e3b84ea63c0f 16 return update(e);
altb2 3:e3b84ea63c0f 17 }
altb2 3:e3b84ea63c0f 18 float operator()(float e, float y)
altb2 3:e3b84ea63c0f 19 {
altb2 3:e3b84ea63c0f 20 return update(e, y);
altb2 3:e3b84ea63c0f 21 }
altb2 3:e3b84ea63c0f 22
altb2 3:e3b84ea63c0f 23 virtual ~PIDT2_Cntrl();
altb2 3:e3b84ea63c0f 24
altb2 3:e3b84ea63c0f 25 void reset(float initValue);
altb2 3:e3b84ea63c0f 26 void setCoefficients(float P, float I, float D, float tau_f, float tau_ro, float Ts, float uMin, float uMax);
altb2 3:e3b84ea63c0f 27 void setCoeff_P(float P);
altb2 3:e3b84ea63c0f 28 void setCoeff_I(float D);
altb2 3:e3b84ea63c0f 29 void setCoeff_D(float D);
altb2 3:e3b84ea63c0f 30 void scale_PIDT2_param(float scale);
altb2 3:e3b84ea63c0f 31 float update(float e);
altb2 3:e3b84ea63c0f 32 float update(float e, float y);
altb2 3:e3b84ea63c0f 33 void set_limits(float uMin, float uMax);
altb2 3:e3b84ea63c0f 34 float get_ulimit();
altb2 3:e3b84ea63c0f 35 float get_P_gain();
altb2 3:e3b84ea63c0f 36 float get_I();
altb2 3:e3b84ea63c0f 37 float get_D();
altb2 3:e3b84ea63c0f 38 float get_bd();
altb2 3:e3b84ea63c0f 39 float get_ad();
altb2 3:e3b84ea63c0f 40 float get_bi();
altb2 3:e3b84ea63c0f 41 float get_bf();
altb2 3:e3b84ea63c0f 42 float get_af();
altb2 3:e3b84ea63c0f 43
altb2 3:e3b84ea63c0f 44
altb2 3:e3b84ea63c0f 45 private:
altb2 3:e3b84ea63c0f 46
altb2 3:e3b84ea63c0f 47 float IPart, Dpart, d_old, u_old, uf;
altb2 3:e3b84ea63c0f 48 float P, I, D, tau_f, tau_ro, Ts, uMin, uMax;
altb2 3:e3b84ea63c0f 49 float bi, bd, ad, bf, af;
altb2 3:e3b84ea63c0f 50 float P_init, I_init, D_init;
altb2 3:e3b84ea63c0f 51
altb2 3:e3b84ea63c0f 52 void setCoefficients(float P, float I, float D, float tau_f, float tau_ro, float Ts);
altb2 3:e3b84ea63c0f 53 float saturate(float u, float uMin, float uMax);
altb2 3:e3b84ea63c0f 54
altb2 3:e3b84ea63c0f 55 };
altb2 3:e3b84ea63c0f 56
altb2 3:e3b84ea63c0f 57 #endif