Add ramp input to the speed PID loop.

This works together with a new config file of Vesc Tool, that adds 2 variables to the Speed Pid page.

Signed-off-by: Maximiliano Cordoba <mcordoba@powerdesigns.ca>
This commit is contained in:
Maximiliano Cordoba 2020-05-02 17:12:22 -03:00 committed by Esben Rasmussen
parent 960cd3b992
commit 55dc8fd548
2 changed files with 5 additions and 1 deletions

View File

@ -413,6 +413,8 @@ bool confgenerator_deserialize_mcconf(const uint8_t *buffer, mc_configuration *c
conf->s_pid_kd_filter = buffer_get_float32_auto(buffer, &ind);
conf->s_pid_min_erpm = buffer_get_float32_auto(buffer, &ind);
conf->s_pid_allow_braking = buffer[ind++];
conf->s_pid_apply_input_ramp = buffer[ind++];
conf->s_pid_ramp_erpms_ms = buffer_get_float32_auto(buffer, &ind);
conf->s_pid_ramp_erpms_s = buffer_get_float32_auto(buffer, &ind);
conf->p_pid_kp = buffer_get_float32_auto(buffer, &ind);
conf->p_pid_ki = buffer_get_float32_auto(buffer, &ind);
@ -703,6 +705,8 @@ void confgenerator_set_defaults_mcconf(mc_configuration *conf) {
conf->s_pid_kd_filter = MCCONF_S_PID_KD_FILTER;
conf->s_pid_min_erpm = MCCONF_S_PID_MIN_RPM;
conf->s_pid_allow_braking = MCCONF_S_PID_ALLOW_BRAKING;
conf->s_pid_apply_input_ramp = MCCONF_S_PID_APPLY_INPUT_RAMP;
conf->s_pid_ramp_erpms_ms = MCCONF_S_PID_RAMP_ERPMS_MS;
conf->s_pid_ramp_erpms_s = MCCONF_S_PID_RAMP_ERPMS_S;
conf->p_pid_kp = MCCONF_P_PID_KP;
conf->p_pid_ki = MCCONF_P_PID_KI;

View File

@ -166,6 +166,7 @@ typedef struct {
float m_hall_dt_diff_now;
} motor_all_state_t;
// Private variables
static volatile bool m_dccal_done = false;
static volatile float m_last_adc_isr_duration;
@ -812,7 +813,6 @@ void mcpwm_foc_set_pid_speed(float rpm) {
}
motor_now()->m_control_mode = CONTROL_MODE_SPEED;
motor_now()->m_speed_pid_set_rpm = rpm;
if (motor_now()->m_state != MC_STATE_RUNNING) {
motor_now()->m_state = MC_STATE_RUNNING;