ARES / Mbed 2 deprecated Robot 2016

Dependencies:   mbed

Committer:
Jagang
Date:
Sun May 24 12:30:47 2015 +0000
Revision:
0:b127c787a51b
Nettoyage du code d'asserv.; L'asserv ne fonctionne plus, juste test, moteurs ? 20% sur 1m

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Jagang 0:b127c787a51b 1 #ifndef PIDcontroller_H
Jagang 0:b127c787a51b 2 #define PIDcontroller_H
Jagang 0:b127c787a51b 3
Jagang 0:b127c787a51b 4 class PIDcontroller
Jagang 0:b127c787a51b 5 {
Jagang 0:b127c787a51b 6 private :
Jagang 0:b127c787a51b 7 float Kp;
Jagang 0:b127c787a51b 8 float Ki;
Jagang 0:b127c787a51b 9 float Kd;
Jagang 0:b127c787a51b 10
Jagang 0:b127c787a51b 11 float err;
Jagang 0:b127c787a51b 12 float err_old;
Jagang 0:b127c787a51b 13 float err_sum;
Jagang 0:b127c787a51b 14 float consigne;
Jagang 0:b127c787a51b 15 float value;
Jagang 0:b127c787a51b 16
Jagang 0:b127c787a51b 17
Jagang 0:b127c787a51b 18 public :
Jagang 0:b127c787a51b 19
Jagang 0:b127c787a51b 20 PIDcontroller()
Jagang 0:b127c787a51b 21 {
Jagang 0:b127c787a51b 22 Kp = (float)1;
Jagang 0:b127c787a51b 23 Ki = (float)1;
Jagang 0:b127c787a51b 24 Kd = (float)1;
Jagang 0:b127c787a51b 25 err = (float)0;
Jagang 0:b127c787a51b 26 err_old = (float)0;
Jagang 0:b127c787a51b 27 err_sum = (float)0;
Jagang 0:b127c787a51b 28 consigne = (float)0;
Jagang 0:b127c787a51b 29 value =(float)0;
Jagang 0:b127c787a51b 30 }
Jagang 0:b127c787a51b 31
Jagang 0:b127c787a51b 32 PIDcontroller(float Kp, float Ki, float Kd)
Jagang 0:b127c787a51b 33 {
Jagang 0:b127c787a51b 34 this->Kp = Kp;
Jagang 0:b127c787a51b 35 this->Ki = Ki;
Jagang 0:b127c787a51b 36 this->Kd = Kd;
Jagang 0:b127c787a51b 37 err = (float)0;
Jagang 0:b127c787a51b 38 err_old = (float)0;
Jagang 0:b127c787a51b 39 err_sum = (float)0;
Jagang 0:b127c787a51b 40 consigne = (float)0;
Jagang 0:b127c787a51b 41 value = (float)0;
Jagang 0:b127c787a51b 42 }
Jagang 0:b127c787a51b 43
Jagang 0:b127c787a51b 44 ~PIDcontroller()
Jagang 0:b127c787a51b 45 {
Jagang 0:b127c787a51b 46
Jagang 0:b127c787a51b 47 }
Jagang 0:b127c787a51b 48
Jagang 0:b127c787a51b 49 void reset()
Jagang 0:b127c787a51b 50 {
Jagang 0:b127c787a51b 51 err_old = (float)0;
Jagang 0:b127c787a51b 52 err_sum = (float)0;
Jagang 0:b127c787a51b 53 }
Jagang 0:b127c787a51b 54 void setConsigne(float consigne)
Jagang 0:b127c787a51b 55 {
Jagang 0:b127c787a51b 56 this->consigne = consigne;
Jagang 0:b127c787a51b 57 }
Jagang 0:b127c787a51b 58
Jagang 0:b127c787a51b 59 float update(float currentValue, float dt = (float)0.1)
Jagang 0:b127c787a51b 60 {
Jagang 0:b127c787a51b 61 err = consigne - currentValue;
Jagang 0:b127c787a51b 62 err_sum = err_sum + err;
Jagang 0:b127c787a51b 63 float err_diff = err-err_old;
Jagang 0:b127c787a51b 64 err_old = err;
Jagang 0:b127c787a51b 65
Jagang 0:b127c787a51b 66 value = Kp*(err + Ki*err_sum + Kd*err_diff/dt);
Jagang 0:b127c787a51b 67
Jagang 0:b127c787a51b 68 return value;
Jagang 0:b127c787a51b 69 }
Jagang 0:b127c787a51b 70
Jagang 0:b127c787a51b 71 void setKp(float Kp)
Jagang 0:b127c787a51b 72 {
Jagang 0:b127c787a51b 73 this->Kp = Kp;
Jagang 0:b127c787a51b 74 }
Jagang 0:b127c787a51b 75
Jagang 0:b127c787a51b 76 void setKi(float Ki)
Jagang 0:b127c787a51b 77 {
Jagang 0:b127c787a51b 78 this->Ki = Ki;
Jagang 0:b127c787a51b 79 }
Jagang 0:b127c787a51b 80
Jagang 0:b127c787a51b 81 void setKd(float Kd)
Jagang 0:b127c787a51b 82 {
Jagang 0:b127c787a51b 83 this->Kd = Kd;
Jagang 0:b127c787a51b 84 }
Jagang 0:b127c787a51b 85
Jagang 0:b127c787a51b 86 void set(float Kp, float Ki,float Kd)
Jagang 0:b127c787a51b 87 {
Jagang 0:b127c787a51b 88 setKp(Kp);
Jagang 0:b127c787a51b 89 setKi(Ki);
Jagang 0:b127c787a51b 90 setKd(Kd);
Jagang 0:b127c787a51b 91 }
Jagang 0:b127c787a51b 92
Jagang 0:b127c787a51b 93 };
Jagang 0:b127c787a51b 94
Jagang 0:b127c787a51b 95 #endif