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.
meta.h@1:1f58bdcf2956, 2015-03-01 (annotated)
- Committer:
 - bwang
 - Date:
 - Sun Mar 01 10:51:28 2015 +0000
 - Revision:
 - 1:1f58bdcf2956
 - Child:
 - 2:8696a62a4077
 
moar
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 | 1:1f58bdcf2956 | 67 | } | 
| bwang | 1:1f58bdcf2956 | 68 | |
| bwang | 1:1f58bdcf2956 | 69 | #endif | 
| bwang | 1:1f58bdcf2956 | 70 |