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.
shared/PID_Control/PID.h@0:ee7e9405e1c7, 2021-04-14 (annotated)
- Committer:
- e2011220
- Date:
- Wed Apr 14 07:26:19 2021 +0000
- Revision:
- 0:ee7e9405e1c7
first
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| e2011220 | 0:ee7e9405e1c7 | 1 | #ifndef PID_H_ |
| e2011220 | 0:ee7e9405e1c7 | 2 | #define PID_H_ |
| e2011220 | 0:ee7e9405e1c7 | 3 | |
| e2011220 | 0:ee7e9405e1c7 | 4 | #include "mbed.h" |
| e2011220 | 0:ee7e9405e1c7 | 5 | |
| e2011220 | 0:ee7e9405e1c7 | 6 | class PID |
| e2011220 | 0:ee7e9405e1c7 | 7 | { |
| e2011220 | 0:ee7e9405e1c7 | 8 | public: |
| e2011220 | 0:ee7e9405e1c7 | 9 | PID(): _pid_state() |
| e2011220 | 0:ee7e9405e1c7 | 10 | {} |
| e2011220 | 0:ee7e9405e1c7 | 11 | ~PID() |
| e2011220 | 0:ee7e9405e1c7 | 12 | { |
| e2011220 | 0:ee7e9405e1c7 | 13 | _tick_i.detach(); |
| e2011220 | 0:ee7e9405e1c7 | 14 | _tick_d.detach(); |
| e2011220 | 0:ee7e9405e1c7 | 15 | } |
| e2011220 | 0:ee7e9405e1c7 | 16 | |
| e2011220 | 0:ee7e9405e1c7 | 17 | double get_control(); |
| e2011220 | 0:ee7e9405e1c7 | 18 | void set_state(double target, double current); |
| e2011220 | 0:ee7e9405e1c7 | 19 | |
| e2011220 | 0:ee7e9405e1c7 | 20 | void set_PID(double k, double Ti, double Td); |
| e2011220 | 0:ee7e9405e1c7 | 21 | void reset(); |
| e2011220 | 0:ee7e9405e1c7 | 22 | protected: |
| e2011220 | 0:ee7e9405e1c7 | 23 | typedef struct pid_con_s{ |
| e2011220 | 0:ee7e9405e1c7 | 24 | double k; |
| e2011220 | 0:ee7e9405e1c7 | 25 | double Ti; |
| e2011220 | 0:ee7e9405e1c7 | 26 | double Td; |
| e2011220 | 0:ee7e9405e1c7 | 27 | double current; |
| e2011220 | 0:ee7e9405e1c7 | 28 | double target; |
| e2011220 | 0:ee7e9405e1c7 | 29 | }pid_con_t; |
| e2011220 | 0:ee7e9405e1c7 | 30 | |
| e2011220 | 0:ee7e9405e1c7 | 31 | pid_con_t _pid_state; |
| e2011220 | 0:ee7e9405e1c7 | 32 | |
| e2011220 | 0:ee7e9405e1c7 | 33 | virtual double _get_control() = 0; |
| e2011220 | 0:ee7e9405e1c7 | 34 | virtual void _calc_p() = 0; |
| e2011220 | 0:ee7e9405e1c7 | 35 | virtual void _calc_i() = 0; |
| e2011220 | 0:ee7e9405e1c7 | 36 | virtual void _calc_d() = 0; |
| e2011220 | 0:ee7e9405e1c7 | 37 | virtual void _reset() = 0; |
| e2011220 | 0:ee7e9405e1c7 | 38 | private: |
| e2011220 | 0:ee7e9405e1c7 | 39 | Ticker _tick_i, _tick_d; |
| e2011220 | 0:ee7e9405e1c7 | 40 | |
| e2011220 | 0:ee7e9405e1c7 | 41 | void _on_isr_i(); |
| e2011220 | 0:ee7e9405e1c7 | 42 | void _on_isr_d(); |
| e2011220 | 0:ee7e9405e1c7 | 43 | }; |
| e2011220 | 0:ee7e9405e1c7 | 44 | |
| e2011220 | 0:ee7e9405e1c7 | 45 | #endif |