working-est copy with class-based code. still open loop

Dependencies:   mbed

Fork of analoghalls6 by N K

Committer:
bwang
Date:
Sun Mar 01 10:51:28 2015 +0000
Revision:
1:1f58bdcf2956
Child:
2:8696a62a4077
moar

Who changed what in which revision?

UserRevisionLine numberNew 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