Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Asservissement/PIDcontroller.h@0:b127c787a51b, 2015-05-24 (annotated)
- 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?
User | Revision | Line number | New 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 |