Prius IPM controller

Dependencies:   mbed

Fork of analoghalls5_5 by N K

Committer:
bwang
Date:
Mon Mar 16 15:40:07 2015 +0000
Revision:
35:83cf9564bd0c
Parent:
33:e7b132029bae
Set for 3A Iq, 0A Id, Ki = 1e-3, Kp = Kd = 0, loop still oscillates but is passable

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 26:d00561c7bf43 19 void ConfigureIdPidController(float ki, float kp, float kd, float pidmin, float pidmax);
bwang 26:d00561c7bf43 20 void ConfigureIqPidController(float ki, float kp, float kd, float pidmin, float pidmax);
bwang 11:dccbaa9274c5 21 void ConfigureThrottle(PinName throttle_pin, float min, float max);
bwang 11:dccbaa9274c5 22 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 23 void ConfigureReference(float max_current);
bwang 24:f1ff9c7256b5 24 void ConfigureDebugger(int debugger_channels, int debugger_size);
bwang 11:dccbaa9274c5 25 void AttachCallBack(void (*f)(Context *), int freq);
bwang 11:dccbaa9274c5 26 void Start();
bwang 11:dccbaa9274c5 27 public:
bwang 11:dccbaa9274c5 28 Inverter *inverter;
bwang 11:dccbaa9274c5 29 Motor *motor;
bwang 11:dccbaa9274c5 30 User *user;
bwang 11:dccbaa9274c5 31 Throttle *throttle;
nki 33:e7b132029bae 32 CurrentSensor *sense_ib, *sense_ic;
bwang 11:dccbaa9274c5 33 PositionSensor *sense_p;
bwang 11:dccbaa9274c5 34 TempSensor *sense_t_motor, *sense_t_inverter;
bwang 11:dccbaa9274c5 35 VoltageSensor *sense_bus;
bwang 11:dccbaa9274c5 36 PidController *pid_d, *pid_q;
bwang 11:dccbaa9274c5 37 Modulator *modulator;
bwang 16:fd6771a6685a 38 Serial *serial;
bwang 11:dccbaa9274c5 39 ReferenceSynthesizer *reference;
bwang 11:dccbaa9274c5 40 LtiFilter *filter_d, *filter_q;
bwang 24:f1ff9c7256b5 41 BufferedDebugger *debugger;
bwang 11:dccbaa9274c5 42 private:
nki 33:e7b132029bae 43 void InitData();
nki 33:e7b132029bae 44 private:
bwang 11:dccbaa9274c5 45 void upd_function();
bwang 11:dccbaa9274c5 46 private:
bwang 11:dccbaa9274c5 47 PinName _oa, _ob, _oc, _ib_pin, _ic_pin, _throttle_pin, _pos_a_pin, _pos_b_pin, _en;
bwang 26:d00561c7bf43 48 float _dki, _dkp, _dkd, _qki, _qkp, _qkd, _min, _max, _cal1_a, _cal2_a,
bwang 26:d00561c7bf43 49 _cal1_b, _cal2_b, _scale, _offset, _max_current, _filter_strength;
bwang 24:f1ff9c7256b5 50 int _debugger_channels, _debugger_size;
bwang 26:d00561c7bf43 51 float _dpidmax, _dpidmin, _qpidmax, _qpidmin;
bwang 11:dccbaa9274c5 52 void (*_callbacks[16])(Context *);
bwang 11:dccbaa9274c5 53 unsigned long _call_times[16];
bwang 11:dccbaa9274c5 54 int _call_periods[16];
bwang 11:dccbaa9274c5 55 int _index;
bwang 11:dccbaa9274c5 56 unsigned long _time;
bwang 11:dccbaa9274c5 57
bwang 11:dccbaa9274c5 58 Ticker *_time_upd_ticker;
bwang 11:dccbaa9274c5 59 };
bwang 11:dccbaa9274c5 60 #endif