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.
Fork of analoghalls5 by
meta.h@2:8696a62a4077, 2015-03-01 (annotated)
- Committer:
- bwang
- Date:
- Sun Mar 01 10:56:57 2015 +0000
- Revision:
- 2:8696a62a4077
- Parent:
- 1:1f58bdcf2956
- Child:
- 3:0a2396597e0d
latest
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| bwang | 1:1f58bdcf2956 | 1 | #ifndef __META_H |
| bwang | 1:1f58bdcf2956 | 2 | #define __META_H |
| bwang | 1:1f58bdcf2956 | 3 | |
| bwang | 1:1f58bdcf2956 | 4 | #include "includes.h" |
| bwang | 1:1f58bdcf2956 | 5 | #include "core.h" |
| bwang | 1:1f58bdcf2956 | 6 | #include "sensors.h" |
| bwang | 1:1f58bdcf2956 | 7 | |
| bwang | 1:1f58bdcf2956 | 8 | class Modulator { |
| bwang | 1:1f58bdcf2956 | 9 | public: |
| bwang | 1:1f58bdcf2956 | 10 | Modulator(Inverter *inverter) {_inverter = inverter;} |
| bwang | 1:1f58bdcf2956 | 11 | virtual void Update(float va, float vb) = 0; |
| bwang | 1:1f58bdcf2956 | 12 | protected: |
| bwang | 1:1f58bdcf2956 | 13 | Inverter* _inverter; |
| bwang | 1:1f58bdcf2956 | 14 | }; |
| bwang | 1:1f58bdcf2956 | 15 | |
| bwang | 1:1f58bdcf2956 | 16 | class SinusoidalModulator: public Modulator { |
| bwang | 1:1f58bdcf2956 | 17 | public: |
| bwang | 1:1f58bdcf2956 | 18 | SinusoidalModulator(Inverter *inverter):Modulator(inverter) {} |
| bwang | 1:1f58bdcf2956 | 19 | virtual void Update(float va, float vb); |
| bwang | 1:1f58bdcf2956 | 20 | }; |
| bwang | 1:1f58bdcf2956 | 21 | |
| bwang | 1:1f58bdcf2956 | 22 | class PidController { |
| bwang | 1:1f58bdcf2956 | 23 | public: |
| bwang | 1:1f58bdcf2956 | 24 | PidController(float ki, float kp, float kd, float out_max, float out_min); |
| bwang | 1:1f58bdcf2956 | 25 | float Update(float ref, float in); |
| bwang | 1:1f58bdcf2956 | 26 | private: |
| bwang | 1:1f58bdcf2956 | 27 | float _ki, _kp, _kd; |
| bwang | 1:1f58bdcf2956 | 28 | float _last_in, _integral; |
| bwang | 1:1f58bdcf2956 | 29 | float _out_max, _out_min; |
| bwang | 1:1f58bdcf2956 | 30 | }; |
| bwang | 1:1f58bdcf2956 | 31 | |
| bwang | 1:1f58bdcf2956 | 32 | class StatusUpdater { |
| bwang | 1:1f58bdcf2956 | 33 | public: |
| bwang | 1:1f58bdcf2956 | 34 | StatusUpdater(Inverter *inverter, Motor *motor, User *user); |
| bwang | 1:1f58bdcf2956 | 35 | void Config(int fast_sample_rate, int slow_sample_rate); |
| bwang | 1:1f58bdcf2956 | 36 | void Start(); |
| bwang | 1:1f58bdcf2956 | 37 | private: |
| bwang | 1:1f58bdcf2956 | 38 | static void time_upd_isr(); |
| bwang | 1:1f58bdcf2956 | 39 | private: |
| bwang | 1:1f58bdcf2956 | 40 | Inverter *_inverter; |
| bwang | 1:1f58bdcf2956 | 41 | Motor *_motor; |
| bwang | 1:1f58bdcf2956 | 42 | User *_user; |
| bwang | 1:1f58bdcf2956 | 43 | int _fast_sample_rate; |
| bwang | 1:1f58bdcf2956 | 44 | int _slow_sample_rate; |
| bwang | 1:1f58bdcf2956 | 45 | |
| bwang | 1:1f58bdcf2956 | 46 | static unsigned long _time; |
| bwang | 1:1f58bdcf2956 | 47 | Ticker _time_ticker; |
| bwang | 1:1f58bdcf2956 | 48 | }; |
| bwang | 1:1f58bdcf2956 | 49 | |
| bwang | 1:1f58bdcf2956 | 50 | class LoopDriver { |
| bwang | 1:1f58bdcf2956 | 51 | public: |
| bwang | 1:1f58bdcf2956 | 52 | LoopDriver(Inverter *inverter, Motor *motor, User *user, Modulator *modulator, int update_frequency); |
| bwang | 1:1f58bdcf2956 | 53 | void Start(); |
| bwang | 1:1f58bdcf2956 | 54 | private: |
| bwang | 1:1f58bdcf2956 | 55 | float Clarke(float a, float b, float c, float *alpha, float *beta); |
| bwang | 1:1f58bdcf2956 | 56 | float Parke(float alpha, float beta, float *d, float *q); |
| bwang | 1:1f58bdcf2956 | 57 | float InverseParke(float d, float q, float *alpha, float *beta); |
| bwang | 1:1f58bdcf2956 | 58 | private: |
| bwang | 1:1f58bdcf2956 | 59 | static void update(); |
| bwang | 1:1f58bdcf2956 | 60 | private: |
| bwang | 1:1f58bdcf2956 | 61 | Inverter *_inverter; |
| bwang | 1:1f58bdcf2956 | 62 | Motor *_motor; |
| bwang | 1:1f58bdcf2956 | 63 | User *_user; |
| bwang | 1:1f58bdcf2956 | 64 | Modulator *_modulator; |
| bwang | 1:1f58bdcf2956 | 65 | |
| bwang | 1:1f58bdcf2956 | 66 | int _update_frequency; |
| bwang | 2:8696a62a4077 | 67 | }; |
| bwang | 1:1f58bdcf2956 | 68 | |
| bwang | 1:1f58bdcf2956 | 69 | #endif |
| bwang | 1:1f58bdcf2956 | 70 |
