Arduino_VESC_Library
vesc_types.h
Go to the documentation of this file.
1 /*
2  * This file is part of the arduino vesc library (https://github.com/arduino_vesc)
3  *
4  * Copyright (c) 2019 Gianmarco Vitelli
5  *
6  * This program is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation, version 3.
9  *
10  * This program is distributed in the hope that it will be useful, but
11  * WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  * General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program. If not, see <http://www.gnu.org/licenses/>.
17  */
18 
19 typedef struct {
20  uint8_t major;
21  uint8_t minor;
22  char hw_name[20];
23  uint8_t stm32_uid[12];
25 } vesc_version;
26 
27 typedef struct {
28  float fet_temp ;
29  float motor_temp;
32  float reset_avg_id;
33  float reset_avg_iq;
35  float rpm;
37  float amp_hours;
39  float watt_hours;
43  float fault;
44  float pid_pos_now;
45  uint8_t controller_id;
46  float mos1_temp;
47  float mos2_temp;
48  float mos3_temp;
49  float reset_avg_vd;
50  float reset_avg_vq;
51 } vesc_values;
52 
53 typedef struct {
54  uint32_t signature;
55  // Switching and drive
56  uint8_t pwm_mode;
57  uint8_t comm_mode;
58  uint8_t motor_type;
59  uint8_t sensor_mode;
60  // Limits
66  float l_min_erpm;
67  float l_max_erpm;
68  float l_erpm_start;
71  float l_min_vin;
72  float l_max_vin;
81  float l_min_duty;
82  float l_max_duty;
83  float l_watt_max;
84  float l_watt_min;
87  // Overridden limits (Computed during runtime)
94  // Sensorless (bldc)
95  float sl_min_erpm;
102  // Hall sensor
103  int8_t hall_table[8];
105  // FOC
108  float foc_f_sw;
109  float foc_dt_us;
118  float foc_motor_l;
119  float foc_motor_r;
123  float foc_pll_kp;
124  float foc_pll_ki;
133  uint8_t foc_hall_table[8];
134  float foc_sl_erpm;
141  // GPDrive
147  // Speed PID
148  float s_pid_kp;
149  float s_pid_ki;
150  float s_pid_kd;
154  // Pos PID
155  float p_pid_kp;
156  float p_pid_ki;
157  float p_pid_kd;
160  // Current controller
163  float cc_gain;
165  // Misc
176  float m_dc_f_sw;
178  uint8_t m_out_aux_mode;
179  // Setup info
180  uint8_t si_motor_poles;
187 
188 typedef enum {
mc_configuration::l_min_duty
float l_min_duty
Definition: vesc_types.h:81
mc_configuration::l_watt_max
float l_watt_max
Definition: vesc_types.h:83
COMM_DETECT_ENCODER
Definition: vesc_types.h:216
mc_configuration::comm_mode
uint8_t comm_mode
Definition: vesc_types.h:57
mc_configuration::foc_encoder_inverted
bool foc_encoder_inverted
Definition: vesc_types.h:111
vesc_values::motor_temp
float motor_temp
Definition: vesc_types.h:29
mc_configuration::sl_min_erpm_cycle_int_limit
float sl_min_erpm_cycle_int_limit
Definition: vesc_types.h:96
COMM_GPD_FILL_BUFFER_INT8
Definition: vesc_types.h:233
mc_configuration::l_battery_cut_start
float l_battery_cut_start
Definition: vesc_types.h:73
mc_configuration::p_pid_ang_div
float p_pid_ang_div
Definition: vesc_types.h:159
mc_configuration::lo_current_min
float lo_current_min
Definition: vesc_types.h:89
mc_configuration::foc_sl_openloop_time
float foc_sl_openloop_time
Definition: vesc_types.h:129
vesc_values::tachometer_value
int32_t tachometer_value
Definition: vesc_types.h:41
mc_configuration::p_pid_kd_filter
float p_pid_kd_filter
Definition: vesc_types.h:158
COMM_SAMPLE_PRINT
Definition: vesc_types.h:208
vesc_values::input_voltage
float input_voltage
Definition: vesc_types.h:36
COMM_SET_CHUCK_DATA
Definition: vesc_types.h:224
mc_configuration::m_current_backoff_gain
float m_current_backoff_gain
Definition: vesc_types.h:168
COMM_PACKET_ID
COMM_PACKET_ID
Definition: vesc_types.h:188
mc_configuration::si_gear_ratio
float si_gear_ratio
Definition: vesc_types.h:181
mc_configuration::l_in_current_min
float l_in_current_min
Definition: vesc_types.h:64
mc_configuration::m_bldc_f_sw_min
float m_bldc_f_sw_min
Definition: vesc_types.h:174
mc_configuration::si_battery_type
uint8_t si_battery_type
Definition: vesc_types.h:183
mc_configuration::foc_sat_comp
float foc_sat_comp
Definition: vesc_types.h:137
mc_configuration::foc_current_filter_const
float foc_current_filter_const
Definition: vesc_types.h:140
COMM_SET_APPCONF
Definition: vesc_types.h:205
mc_configuration::pwm_mode
uint8_t pwm_mode
Definition: vesc_types.h:56
COMM_FORWARD_CAN
Definition: vesc_types.h:223
COMM_BM_DISCONNECT
Definition: vesc_types.h:259
COMM_GET_VALUES_SETUP
Definition: vesc_types.h:236
COMM_PRINT
Definition: vesc_types.h:210
mc_configuration::foc_encoder_sin_offset
float foc_encoder_sin_offset
Definition: vesc_types.h:113
COMM_EXT_NRF_ESB_RX_DATA
Definition: vesc_types.h:244
COMM_BM_MAP_PINS_NRF5X
Definition: vesc_types.h:261
COMM_SET_RPM
Definition: vesc_types.h:197
mc_configuration::foc_pll_ki
float foc_pll_ki
Definition: vesc_types.h:124
COMM_SET_SERVO_POS
Definition: vesc_types.h:201
COMM_DETECT_MOTOR_FLUX_LINKAGE
Definition: vesc_types.h:215
mc_configuration::foc_encoder_cos_offset
float foc_encoder_cos_offset
Definition: vesc_types.h:115
mc_configuration::l_slow_abs_current
bool l_slow_abs_current
Definition: vesc_types.h:75
vesc_values::watt_hours_charged
float watt_hours_charged
Definition: vesc_types.h:40
mc_configuration::motor_type
uint8_t motor_type
Definition: vesc_types.h:58
COMM_GPD_SET_FSW
Definition: vesc_types.h:227
COMM_PING_CAN
Definition: vesc_types.h:251
mc_configuration::s_pid_kp
float s_pid_kp
Definition: vesc_types.h:148
COMM_ALIVE
Definition: vesc_types.h:219
mc_configuration::m_drv8301_oc_mode
uint8_t m_drv8301_oc_mode
Definition: vesc_types.h:172
COMM_ERASE_NEW_APP_ALL_CAN
Definition: vesc_types.h:249
mc_configuration::l_battery_cut_end
float l_battery_cut_end
Definition: vesc_types.h:74
COMM_BM_CONNECT
Definition: vesc_types.h:255
COMM_SET_MCCONF
Definition: vesc_types.h:202
mc_configuration::sl_bemf_coupling_k
float sl_bemf_coupling_k
Definition: vesc_types.h:101
mc_configuration::l_watt_min
float l_watt_min
Definition: vesc_types.h:84
mc_configuration::l_max_duty
float l_max_duty
Definition: vesc_types.h:82
mc_configuration::s_pid_kd_filter
float s_pid_kd_filter
Definition: vesc_types.h:151
mc_configuration::si_wheel_diameter
float si_wheel_diameter
Definition: vesc_types.h:182
COMM_DETECT_HALL_FOC
Definition: vesc_types.h:217
mc_configuration::l_temp_fet_end
float l_temp_fet_end
Definition: vesc_types.h:77
COMM_REBOOT
Definition: vesc_types.h:218
mc_configuration::foc_duty_dowmramp_kp
float foc_duty_dowmramp_kp
Definition: vesc_types.h:125
mc_configuration::s_pid_min_erpm
float s_pid_min_erpm
Definition: vesc_types.h:152
mc_configuration::foc_encoder_sin_gain
float foc_encoder_sin_gain
Definition: vesc_types.h:114
vesc_values::fet_temp
float fet_temp
Definition: vesc_types.h:28
mc_configuration::sl_phase_advance_at_br
float sl_phase_advance_at_br
Definition: vesc_types.h:99
mc_configuration::foc_pll_kp
float foc_pll_kp
Definition: vesc_types.h:123
mc_configuration::lo_in_current_max
float lo_in_current_max
Definition: vesc_types.h:90
COMM_DETECT_MOTOR_PARAM
Definition: vesc_types.h:213
mc_configuration::foc_encoder_offset
float foc_encoder_offset
Definition: vesc_types.h:110
mc_configuration::l_abs_current_max
float l_abs_current_max
Definition: vesc_types.h:65
mc_configuration::foc_temp_comp_base_temp
float foc_temp_comp_base_temp
Definition: vesc_types.h:139
COMM_ERASE_BOOTLOADER_ALL_CAN
Definition: vesc_types.h:263
mc_configuration::cc_startup_boost_duty
float cc_startup_boost_duty
Definition: vesc_types.h:161
mc_configuration::l_temp_accel_dec
float l_temp_accel_dec
Definition: vesc_types.h:80
mc_configuration::m_ntc_motor_beta
float m_ntc_motor_beta
Definition: vesc_types.h:177
COMM_EXT_NRF_SET_ENABLED
Definition: vesc_types.h:245
mc_configuration::si_motor_poles
uint8_t si_motor_poles
Definition: vesc_types.h:180
mc_configuration::l_max_erpm
float l_max_erpm
Definition: vesc_types.h:67
vesc_values::reset_avg_vd
float reset_avg_vd
Definition: vesc_types.h:49
mc_configuration::gpd_buffer_notify_left
int gpd_buffer_notify_left
Definition: vesc_types.h:142
vesc_version::major
uint8_t major
Definition: vesc_types.h:20
vesc_values::fault
float fault
Definition: vesc_types.h:43
COMM_WRITE_NEW_APP_DATA
Definition: vesc_types.h:192
mc_configuration::gpd_current_kp
float gpd_current_kp
Definition: vesc_types.h:145
vesc_values::watt_hours
float watt_hours
Definition: vesc_types.h:39
mc_configuration::foc_motor_r
float foc_motor_r
Definition: vesc_types.h:119
mc_configuration::foc_duty_dowmramp_ki
float foc_duty_dowmramp_ki
Definition: vesc_types.h:126
mc_configuration::cc_ramp_step_max
float cc_ramp_step_max
Definition: vesc_types.h:164
COMM_SET_POS
Definition: vesc_types.h:198
mc_configuration::l_max_vin
float l_max_vin
Definition: vesc_types.h:72
COMM_PLOT_ADD_GRAPH
Definition: vesc_types.h:266
mc_configuration::foc_observer_gain
float foc_observer_gain
Definition: vesc_types.h:121
mc_configuration::foc_sl_d_current_duty
float foc_sl_d_current_duty
Definition: vesc_types.h:130
COMM_ERASE_NEW_APP
Definition: vesc_types.h:191
mc_configuration::foc_sample_v0_v7
bool foc_sample_v0_v7
Definition: vesc_types.h:135
mc_configuration::lo_in_current_min
float lo_in_current_min
Definition: vesc_types.h:91
vesc_values::amp_hours
float amp_hours
Definition: vesc_types.h:37
mc_configuration::s_pid_allow_braking
bool s_pid_allow_braking
Definition: vesc_types.h:153
mc_configuration::foc_observer_gain_slow
float foc_observer_gain_slow
Definition: vesc_types.h:122
COMM_GET_DECODED_PPM
Definition: vesc_types.h:220
mc_configuration::lo_current_motor_max_now
float lo_current_motor_max_now
Definition: vesc_types.h:92
mc_configuration::s_pid_kd
float s_pid_kd
Definition: vesc_types.h:150
mc_configuration::cc_min_current
float cc_min_current
Definition: vesc_types.h:162
COMM_BM_WRITE_FLASH
Definition: vesc_types.h:257
mc_configuration::l_temp_fet_start
float l_temp_fet_start
Definition: vesc_types.h:76
COMM_PLOT_DATA
Definition: vesc_types.h:265
COMM_CUSTOM_APP_DATA
Definition: vesc_types.h:225
mc_configuration::foc_openloop_rpm
float foc_openloop_rpm
Definition: vesc_types.h:127
COMM_BM_ERASE_FLASH_ALL
Definition: vesc_types.h:256
mc_configuration::m_sensor_port_mode
uint8_t m_sensor_port_mode
Definition: vesc_types.h:170
COMM_GPD_OUTPUT_SAMPLE
Definition: vesc_types.h:231
COMM_GET_IMU_DATA
Definition: vesc_types.h:254
mc_configuration::foc_temp_comp
bool foc_temp_comp
Definition: vesc_types.h:138
mc_configuration::foc_encoder_sincos_filter_constant
float foc_encoder_sincos_filter_constant
Definition: vesc_types.h:117
mc_configuration::m_invert_direction
bool m_invert_direction
Definition: vesc_types.h:171
mc_configuration::m_out_aux_mode
uint8_t m_out_aux_mode
Definition: vesc_types.h:178
vesc_values::reset_avg_id
float reset_avg_id
Definition: vesc_types.h:32
mc_configuration::sl_cycle_int_limit
float sl_cycle_int_limit
Definition: vesc_types.h:98
mc_configuration::l_temp_motor_end
float l_temp_motor_end
Definition: vesc_types.h:79
mc_configuration::m_encoder_counts
uint32_t m_encoder_counts
Definition: vesc_types.h:169
COMM_SET_DETECT
Definition: vesc_types.h:200
COMM_SET_HANDBRAKE
Definition: vesc_types.h:199
vesc_version::pairing_done
bool pairing_done
Definition: vesc_types.h:24
mc_configuration::si_battery_cells
int si_battery_cells
Definition: vesc_types.h:184
mc_configuration::foc_sl_openloop_hyst
float foc_sl_openloop_hyst
Definition: vesc_types.h:128
mc_configuration::signature
uint32_t signature
Definition: vesc_types.h:54
COMM_PLOT_INIT
Definition: vesc_types.h:264
vesc_values::mos3_temp
float mos3_temp
Definition: vesc_types.h:48
mc_configuration::gpd_current_filter_const
float gpd_current_filter_const
Definition: vesc_types.h:144
mc_configuration::m_duty_ramp_step
float m_duty_ramp_step
Definition: vesc_types.h:167
vesc_values::reset_avg_iq
float reset_avg_iq
Definition: vesc_types.h:33
mc_configuration::l_current_min_scale
float l_current_min_scale
Definition: vesc_types.h:86
COMM_GET_VALUES_SELECTIVE
Definition: vesc_types.h:239
mc_configuration::foc_encoder_ratio
float foc_encoder_ratio
Definition: vesc_types.h:112
COMM_SET_DUTY
Definition: vesc_types.h:194
mc_configuration::foc_dt_us
float foc_dt_us
Definition: vesc_types.h:109
COMM_GET_VALUES
Definition: vesc_types.h:193
mc_configuration::p_pid_ki
float p_pid_ki
Definition: vesc_types.h:156
mc_configuration::foc_motor_l
float foc_motor_l
Definition: vesc_types.h:118
COMM_FW_VERSION
Definition: vesc_types.h:189
COMM_WRITE_NEW_APP_DATA_ALL_CAN
Definition: vesc_types.h:250
mc_configuration::foc_sl_erpm
float foc_sl_erpm
Definition: vesc_types.h:134
mc_configuration::cc_gain
float cc_gain
Definition: vesc_types.h:163
vesc_version::minor
uint8_t minor
Definition: vesc_types.h:21
COMM_EXPERIMENT_SAMPLE
Definition: vesc_types.h:212
COMM_DETECT_MOTOR_R_L
Definition: vesc_types.h:214
COMM_TERMINAL_CMD_SYNC
Definition: vesc_types.h:253
COMM_SET_CURRENT_BRAKE
Definition: vesc_types.h:196
COMM_PLOT_SET_GRAPH
Definition: vesc_types.h:267
mc_configuration::hall_sl_erpm
float hall_sl_erpm
Definition: vesc_types.h:104
mc_configuration::l_current_max_scale
float l_current_max_scale
Definition: vesc_types.h:85
COMM_SET_MCCONF_TEMP
Definition: vesc_types.h:237
vesc_values::mos1_temp
float mos1_temp
Definition: vesc_types.h:46
mc_configuration::l_current_max
float l_current_max
Definition: vesc_types.h:61
COMM_EXT_NRF_PRESENT
Definition: vesc_types.h:241
mc_configuration::p_pid_kd
float p_pid_kd
Definition: vesc_types.h:157
vesc_values::duty_cycle_now
float duty_cycle_now
Definition: vesc_types.h:34
COMM_GET_APPCONF
Definition: vesc_types.h:206
mc_configuration::foc_current_ki
float foc_current_ki
Definition: vesc_types.h:107
vesc_values::rpm
float rpm
Definition: vesc_types.h:35
COMM_GET_DECODED_BALANCE
Definition: vesc_types.h:268
COMM_ROTOR_POSITION
Definition: vesc_types.h:211
vesc_version
Definition: vesc_types.h:19
mc_configuration::l_min_erpm
float l_min_erpm
Definition: vesc_types.h:66
COMM_GPD_BUFFER_SIZE_LEFT
Definition: vesc_types.h:229
mc_configuration::m_drv8301_oc_adj
int m_drv8301_oc_adj
Definition: vesc_types.h:173
COMM_BM_REBOOT
Definition: vesc_types.h:258
COMM_GET_MCCONF_DEFAULT
Definition: vesc_types.h:204
mc_configuration::foc_sensor_mode
uint8_t foc_sensor_mode
Definition: vesc_types.h:132
mc_configuration::foc_motor_flux_linkage
float foc_motor_flux_linkage
Definition: vesc_types.h:120
COMM_GPD_FILL_BUFFER_INT16
Definition: vesc_types.h:234
COMM_GPD_SET_MODE
Definition: vesc_types.h:232
COMM_JUMP_TO_BOOTLOADER_ALL_CAN
Definition: vesc_types.h:248
COMM_BM_MAP_PINS_DEFAULT
Definition: vesc_types.h:260
COMM_DETECT_APPLY_ALL_FOC
Definition: vesc_types.h:247
mc_configuration::m_fault_stop_time_ms
int32_t m_fault_stop_time_ms
Definition: vesc_types.h:166
mc_configuration::p_pid_kp
float p_pid_kp
Definition: vesc_types.h:155
vesc_values::tachometer_abs_value
int32_t tachometer_abs_value
Definition: vesc_types.h:42
COMM_SET_MCCONF_TEMP_SETUP
Definition: vesc_types.h:238
mc_configuration::l_max_erpm_fbrake
float l_max_erpm_fbrake
Definition: vesc_types.h:69
mc_configuration::s_pid_ki
float s_pid_ki
Definition: vesc_types.h:149
mc_configuration::sl_cycle_int_rpm_br
float sl_cycle_int_rpm_br
Definition: vesc_types.h:100
COMM_GET_DECODED_CHUK
Definition: vesc_types.h:222
mc_configuration::sl_min_erpm
float sl_min_erpm
Definition: vesc_types.h:95
mc_configuration::sensor_mode
uint8_t sensor_mode
Definition: vesc_types.h:59
vesc_values::mos2_temp
float mos2_temp
Definition: vesc_types.h:47
COMM_GET_APPCONF_DEFAULT
Definition: vesc_types.h:207
vesc_values::avg_motor_current
float avg_motor_current
Definition: vesc_types.h:30
COMM_GET_DECODED_ADC
Definition: vesc_types.h:221
vesc_values::pid_pos_now
float pid_pos_now
Definition: vesc_types.h:44
COMM_JUMP_TO_BOOTLOADER
Definition: vesc_types.h:190
mc_configuration::foc_current_kp
float foc_current_kp
Definition: vesc_types.h:106
mc_configuration::foc_sample_high_current
bool foc_sample_high_current
Definition: vesc_types.h:136
COMM_GPD_BUFFER_NOTIFY
Definition: vesc_types.h:228
vesc_values::reset_avg_vq
float reset_avg_vq
Definition: vesc_types.h:50
mc_configuration::l_erpm_start
float l_erpm_start
Definition: vesc_types.h:68
mc_configuration::lo_current_max
float lo_current_max
Definition: vesc_types.h:88
COMM_GET_MCCONF
Definition: vesc_types.h:203
mc_configuration::foc_sl_d_current_factor
float foc_sl_d_current_factor
Definition: vesc_types.h:131
mc_configuration::m_bldc_f_sw_max
float m_bldc_f_sw_max
Definition: vesc_types.h:175
COMM_NRF_START_PAIRING
Definition: vesc_types.h:226
COMM_DETECT_MOTOR_FLUX_LINKAGE_OPENLOOP
Definition: vesc_types.h:246
vesc_values::avg_input_current
float avg_input_current
Definition: vesc_types.h:31
COMM_EXT_NRF_ESB_SET_CH_ADDR
Definition: vesc_types.h:242
mc_configuration::m_dc_f_sw
float m_dc_f_sw
Definition: vesc_types.h:176
COMM_TERMINAL_CMD
Definition: vesc_types.h:209
mc_configuration::gpd_current_ki
float gpd_current_ki
Definition: vesc_types.h:146
COMM_ERASE_BOOTLOADER
Definition: vesc_types.h:262
COMM_APP_DISABLE_OUTPUT
Definition: vesc_types.h:252
vesc_values::controller_id
uint8_t controller_id
Definition: vesc_types.h:45
mc_configuration::lo_current_motor_min_now
float lo_current_motor_min_now
Definition: vesc_types.h:93
mc_configuration::gpd_buffer_interpol
int gpd_buffer_interpol
Definition: vesc_types.h:143
mc_configuration::si_battery_ah
float si_battery_ah
Definition: vesc_types.h:185
vesc_values::amp_hours_charged
float amp_hours_charged
Definition: vesc_types.h:38
COMM_EXT_NRF_ESB_SEND_DATA
Definition: vesc_types.h:243
mc_configuration::foc_f_sw
float foc_f_sw
Definition: vesc_types.h:108
mc_configuration::sl_max_fullbreak_current_dir_change
float sl_max_fullbreak_current_dir_change
Definition: vesc_types.h:97
COMM_GET_VALUES_SETUP_SELECTIVE
Definition: vesc_types.h:240
mc_configuration::l_min_vin
float l_min_vin
Definition: vesc_types.h:71
COMM_GPD_FILL_BUFFER
Definition: vesc_types.h:230
vesc_values
Definition: vesc_types.h:27
mc_configuration
Definition: vesc_types.h:53
mc_configuration::l_temp_motor_start
float l_temp_motor_start
Definition: vesc_types.h:78
COMM_GPD_SET_BUFFER_INT_SCALE
Definition: vesc_types.h:235
mc_configuration::l_max_erpm_fbrake_cc
float l_max_erpm_fbrake_cc
Definition: vesc_types.h:70
COMM_SET_CURRENT
Definition: vesc_types.h:195
mc_configuration::l_in_current_max
float l_in_current_max
Definition: vesc_types.h:63
mc_configuration::foc_encoder_cos_gain
float foc_encoder_cos_gain
Definition: vesc_types.h:116
mc_configuration::l_current_min
float l_current_min
Definition: vesc_types.h:62