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.
Diff: meta.h
- Revision:
- 1:1f58bdcf2956
- Child:
- 2:8696a62a4077
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/meta.h Sun Mar 01 10:51:28 2015 +0000
@@ -0,0 +1,70 @@
+#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
+