N K
/
analoghalls6
motor spins
Fork of analoghalls5 by
meta.h
- Committer:
- bwang
- Date:
- 2015-03-01
- Revision:
- 1:1f58bdcf2956
- Child:
- 2:8696a62a4077
File content as of revision 1:1f58bdcf2956:
#ifndef __META_H #define __META_H #include "includes.h" #include "core.h" #include "sensors.h" class Modulator { public: Modulator(Inverter *inverter) {_inverter = inverter;} virtual void Update(float va, float vb) = 0; protected: Inverter* _inverter; }; class SinusoidalModulator: public Modulator { public: SinusoidalModulator(Inverter *inverter):Modulator(inverter) {} virtual void Update(float va, float vb); }; class PidController { public: PidController(float ki, float kp, float kd, float out_max, float out_min); float Update(float ref, float in); private: float _ki, _kp, _kd; float _last_in, _integral; float _out_max, _out_min; }; class StatusUpdater { public: StatusUpdater(Inverter *inverter, Motor *motor, User *user); void Config(int fast_sample_rate, int slow_sample_rate); void Start(); private: static void time_upd_isr(); private: Inverter *_inverter; Motor *_motor; User *_user; int _fast_sample_rate; int _slow_sample_rate; static unsigned long _time; Ticker _time_ticker; }; class LoopDriver { public: LoopDriver(Inverter *inverter, Motor *motor, User *user, Modulator *modulator, int update_frequency); void Start(); private: float Clarke(float a, float b, float c, float *alpha, float *beta); float Parke(float alpha, float beta, float *d, float *q); float InverseParke(float d, float q, float *alpha, float *beta); private: static void update(); private: Inverter *_inverter; Motor *_motor; User *_user; Modulator *_modulator; int _update_frequency; } #endif