Modified Motor Driver Firmware to include Flash + Thermal

Dependencies:   FastPWM3 mbed-dev-STM-lean

Committer:
adimmit
Date:
Mon Aug 29 18:09:36 2022 +0000
Revision:
74:fcc5f8e7f0ef
Parent:
73:5676f1232a81
Child:
75:c7fbacd92b8f
fixing the integer issues w/ NPP;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
benkatz 23:2adf23ee0305 1 /// Values stored in flash, which are modifieable by user actions ///
benkatz 23:2adf23ee0305 2
benkatz 23:2adf23ee0305 3 #ifndef USER_CONFIG_H
benkatz 23:2adf23ee0305 4 #define USER_CONFIG_H
benkatz 23:2adf23ee0305 5
benkatz 23:2adf23ee0305 6
benkatz 25:f5741040c4bb 7 #define E_OFFSET __float_reg[0] // Encoder electrical offset
benkatz 25:f5741040c4bb 8 #define M_OFFSET __float_reg[1] // Encoder mechanical offset
benkatz 25:f5741040c4bb 9 #define I_BW __float_reg[2] // Current loop bandwidth
benkatz 51:6cd89bd6fcaa 10 #define I_MAX __float_reg[3] // Torque limit (current limit = torque_limit/(kt*gear ratio))
benkatz 26:2b865c00d7e9 11 #define THETA_MIN __float_reg[4] // Minimum position setpoint
benkatz 26:2b865c00d7e9 12 #define THETA_MAX __float_reg[5] // Maximum position setpoint
benkatz 51:6cd89bd6fcaa 13 #define I_FW_MAX __float_reg[6] // Maximum field weakening current
benkatz 55:c4c9fec8539c 14 #define R_NOMINAL __float_reg[7] // Nominal motor resistance, set during calibration
benkatz 55:c4c9fec8539c 15 #define TEMP_MAX __float_reg[8] // Temperature safety lmit
benkatz 55:c4c9fec8539c 16 #define I_MAX_CONT __float_reg[9] // Continuous max current
adimmit 71:b314182de37f 17 #define K_SCALE __float_reg[10] // Current Controller KP scaled w/ BW
adimmit 71:b314182de37f 18 #define KI_D __float_reg[11] // Current Controller KI D-Axis
adimmit 71:b314182de37f 19 #define KI_Q __float_reg[12] // Current Controller KI Q-Axis
benkatz 28:8c7e29f719c5 20
adimmit 73:5676f1232a81 21 //MOTOR PARAMETERS MOVED TO FLASH
adimmit 73:5676f1232a81 22 #define R_PHASE __float_reg[13] //Phase resistance in OHMS
adimmit 73:5676f1232a81 23 #define L_D __float_reg[14] //D-axis inductance in HENRIES
adimmit 73:5676f1232a81 24 #define L_Q __float_reg[15] //L-axis inductance in HENRIES
adimmit 73:5676f1232a81 25 //ACTUATOR PARAMETERS
adimmit 74:fcc5f8e7f0ef 26 #define KT __float_reg[17] //Torque Constance Nm/peak phase amp, = WB*NPP*3/2
adimmit 74:fcc5f8e7f0ef 27 #define GR __float_reg[18] //Output gear ratio
adimmit 74:fcc5f8e7f0ef 28 #define KT_OUT __float_reg[19] //KT*GR
adimmit 74:fcc5f8e7f0ef 29 #define WB __float_reg[20] //Flux linkage, Webers. (from motor KT, see above formula)
adimmit 73:5676f1232a81 30 //THERMAL OBSERVER
adimmit 74:fcc5f8e7f0ef 31 #define R_TH __float_reg[21] //Kelvin watt per joule (motor thermal resistance)
adimmit 74:fcc5f8e7f0ef 32 #define INV_M_TH __float_reg[22] //Kelvin per Joule (some observer thing)
adimmit 74:fcc5f8e7f0ef 33 #define T_AMBIENT __float_reg[23] // ambient temperature during temp calibration
adimmit 73:5676f1232a81 34
adimmit 73:5676f1232a81 35
benkatz 25:f5741040c4bb 36 #define PHASE_ORDER __int_reg[0] // Phase swapping during calibration
benkatz 25:f5741040c4bb 37 #define CAN_ID __int_reg[1] // CAN bus ID
benkatz 26:2b865c00d7e9 38 #define CAN_MASTER __int_reg[2] // CAN bus "master" ID
benkatz 28:8c7e29f719c5 39 #define CAN_TIMEOUT __int_reg[3] // CAN bus timeout period
adimmit 74:fcc5f8e7f0ef 40 #define ENCODER_LUT __int_reg[5] // Encoder offset LUT - 128 elements long
adimmit 74:fcc5f8e7f0ef 41 //MOTOR INT PARAMS
adimmit 74:fcc5f8e7f0ef 42 #define NPP __int_reg[200] //Number of motor Pole Pairs
benkatz 37:c0f352d6e8e3 43
benkatz 23:2adf23ee0305 44
adimmit 74:fcc5f8e7f0ef 45 //CHECK THIS BC WTF why would REG[4] break it ???
adimmit 74:fcc5f8e7f0ef 46
benkatz 28:8c7e29f719c5 47
benkatz 51:6cd89bd6fcaa 48
benkatz 23:2adf23ee0305 49 extern float __float_reg[];
benkatz 23:2adf23ee0305 50 extern int __int_reg[];
benkatz 23:2adf23ee0305 51
benkatz 23:2adf23ee0305 52 #endif