Prius IPM controller

Dependencies:   mbed

Fork of analoghalls5_5 by N K

Committer:
bwang
Date:
Mon Mar 09 11:33:14 2015 +0000
Revision:
24:f1ff9c7256b5
Parent:
16:fd6771a6685a
Child:
26:d00561c7bf43
Added multi-channel debug logger in debug/, set up #channels and depth in main(), write in log() function. motor stops turning after trace is captured, requires reset to restart

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bwang 11:dccbaa9274c5 1 #ifndef __CONTEXT_H
bwang 11:dccbaa9274c5 2 #define __CONTEXT_H
bwang 11:dccbaa9274c5 3
bwang 11:dccbaa9274c5 4 #include "includes.h"
bwang 11:dccbaa9274c5 5 #include "transforms.h"
bwang 11:dccbaa9274c5 6 #include "filters.h"
bwang 11:dccbaa9274c5 7 #include "context.h"
bwang 11:dccbaa9274c5 8 #include "core.h"
bwang 11:dccbaa9274c5 9 #include "meta.h"
bwang 11:dccbaa9274c5 10 #include "sensors.h"
bwang 11:dccbaa9274c5 11
bwang 24:f1ff9c7256b5 12 class BufferedDebugger;
bwang 24:f1ff9c7256b5 13
bwang 11:dccbaa9274c5 14 class Context {
bwang 11:dccbaa9274c5 15 public:
bwang 11:dccbaa9274c5 16 Context();
bwang 11:dccbaa9274c5 17 void ConfigureOutputs(PinName oa, PinName ob, PinName oc, PinName en);
bwang 11:dccbaa9274c5 18 void ConfigureCurrentSensors(PinName ib_pin, PinName ic_pin, float scale, float filter_strength);
bwang 11:dccbaa9274c5 19 void ConfigurePidControllers(float ki, float kp, float kd, float pidmin, float pidmax);
bwang 11:dccbaa9274c5 20 void ConfigureThrottle(PinName throttle_pin, float min, float max);
bwang 11:dccbaa9274c5 21 void ConfigurePositionSensor(PinName pos_a_pin, PinName pos_b_pin, float cal1_a, float cal2_a, float cal1_b, float cal2_b, float offset);
bwang 11:dccbaa9274c5 22 void ConfigureReference(float max_current);
bwang 24:f1ff9c7256b5 23 void ConfigureDebugger(int debugger_channels, int debugger_size);
bwang 11:dccbaa9274c5 24 void AttachCallBack(void (*f)(Context *), int freq);
bwang 11:dccbaa9274c5 25 void Start();
bwang 11:dccbaa9274c5 26 public:
bwang 11:dccbaa9274c5 27 Inverter *inverter;
bwang 11:dccbaa9274c5 28 Motor *motor;
bwang 11:dccbaa9274c5 29 User *user;
bwang 11:dccbaa9274c5 30 Throttle *throttle;
bwang 11:dccbaa9274c5 31 CurrentSensor *sense_ib, *sense_ic;
bwang 11:dccbaa9274c5 32 PositionSensor *sense_p;
bwang 11:dccbaa9274c5 33 TempSensor *sense_t_motor, *sense_t_inverter;
bwang 11:dccbaa9274c5 34 VoltageSensor *sense_bus;
bwang 11:dccbaa9274c5 35 PidController *pid_d, *pid_q;
bwang 11:dccbaa9274c5 36 Modulator *modulator;
bwang 16:fd6771a6685a 37 Serial *serial;
bwang 11:dccbaa9274c5 38 ReferenceSynthesizer *reference;
bwang 11:dccbaa9274c5 39 LtiFilter *filter_d, *filter_q;
bwang 24:f1ff9c7256b5 40 BufferedDebugger *debugger;
bwang 11:dccbaa9274c5 41 private:
bwang 11:dccbaa9274c5 42 void InitData();
bwang 11:dccbaa9274c5 43 private:
bwang 11:dccbaa9274c5 44 void upd_function();
bwang 11:dccbaa9274c5 45 private:
bwang 11:dccbaa9274c5 46 PinName _oa, _ob, _oc, _ib_pin, _ic_pin, _throttle_pin, _pos_a_pin, _pos_b_pin, _en;
bwang 11:dccbaa9274c5 47 float _ki, _kp, _kd, _min, _max, _cal1_a, _cal2_a, _cal1_b, _cal2_b, _scale, _offset, _max_current, _filter_strength;
bwang 24:f1ff9c7256b5 48 int _debugger_channels, _debugger_size;
bwang 11:dccbaa9274c5 49 float _pidmax, _pidmin;
bwang 11:dccbaa9274c5 50 void (*_callbacks[16])(Context *);
bwang 11:dccbaa9274c5 51 unsigned long _call_times[16];
bwang 11:dccbaa9274c5 52 int _call_periods[16];
bwang 11:dccbaa9274c5 53 int _index;
bwang 11:dccbaa9274c5 54 unsigned long _time;
bwang 11:dccbaa9274c5 55
bwang 11:dccbaa9274c5 56 Ticker *_time_upd_ticker;
bwang 11:dccbaa9274c5 57 };
bwang 11:dccbaa9274c5 58 #endif