Updated er app

This commit is contained in:
Benjamin Vedder 2021-05-21 00:00:28 +02:00
parent 7bdb0a36c0
commit 1c83713540
2 changed files with 45 additions and 40 deletions

View File

@ -20,44 +20,39 @@
#ifndef APP_EROCKIT_CONF_H_
#define APP_EROCKIT_CONF_H_
#define APP_CUSTOM_TO_USE "er/app_erockit_v2.c"
#define APPCONF_APP_TO_USE APP_CUSTOM
#define APPCONF_SHUTDOWN_MODE SHUTDOWN_MODE_ALWAYS_ON
#define APP_CUSTOM_TO_USE "er/app_erockit_v2.c"
#define APPCONF_APP_TO_USE APP_CUSTOM
#define APPCONF_SHUTDOWN_MODE SHUTDOWN_MODE_ALWAYS_ON
#define MCCONF_DEFAULT_MOTOR_TYPE MOTOR_TYPE_FOC
#define MCCONF_FOC_SENSOR_MODE FOC_SENSOR_MODE_SENSORLESS
#define MCCONF_FOC_CC_DECOUPLING FOC_CC_DECOUPLING_DISABLED
#define MCCONF_FOC_OPENLOOP_RPM 100.0
#define MCCONF_FOC_TEMP_COMP true
#define MCCONF_FOC_TEMP_COMP_BASE_TEMP 21.0
#define MCCONF_FOC_MOTOR_L 12e-6
#define MCCONF_FOC_MOTOR_R 16.3e-3
#define MCCONF_FOC_MOTOR_FLUX_LINKAGE 5.38e-3
#define MCCONF_FOC_OBSERVER_GAIN 35e6
#define MCCONF_L_CURRENT_MAX 50.0
#define MCCONF_L_CURRENT_MIN -50.0
#define MCCONF_L_IN_CURRENT_MAX 10.0
#define MCCONF_L_IN_CURRENT_MIN -10.0
#define MCCONF_FOC_CURRENT_KP 0.012
#define MCCONF_FOC_CURRENT_KI 20.1
#define MCCONF_FOC_HALL_TAB_0 255
#define MCCONF_FOC_HALL_TAB_1 189
#define MCCONF_FOC_HALL_TAB_2 122
#define MCCONF_FOC_HALL_TAB_3 156
#define MCCONF_FOC_HALL_TAB_4 56
#define MCCONF_FOC_HALL_TAB_5 22
#define MCCONF_FOC_HALL_TAB_6 88
#define MCCONF_FOC_HALL_TAB_7 255
#define MCCONF_FOC_SL_ERPM 2000.0
#define MCCONF_M_INVERT_DIRECTION true
#define MCCONF_DEFAULT_MOTOR_TYPE MOTOR_TYPE_FOC
#define MCCONF_FOC_SENSOR_MODE FOC_SENSOR_MODE_SENSORLESS
#define MCCONF_FOC_CC_DECOUPLING FOC_CC_DECOUPLING_DISABLED
#define MCCONF_FOC_OPENLOOP_RPM 100.0
#define MCCONF_FOC_TEMP_COMP true
#define MCCONF_FOC_TEMP_COMP_BASE_TEMP 21.0
#define MCCONF_FOC_MOTOR_L 12e-6
#define MCCONF_FOC_MOTOR_R 13.3e-3
#define MCCONF_FOC_MOTOR_FLUX_LINKAGE 5.61e-3
#define MCCONF_FOC_OBSERVER_GAIN 35e6
#define MCCONF_L_CURRENT_MAX 50.0
#define MCCONF_L_CURRENT_MIN -50.0
#define MCCONF_L_IN_CURRENT_MAX 10.0
#define MCCONF_L_IN_CURRENT_MIN -10.0
#define MCCONF_FOC_CURRENT_KP 0.025
#define MCCONF_FOC_CURRENT_KI 27.0
#define MCCONF_FOC_SL_ERPM 2000.0
#define MCCONF_M_INVERT_DIRECTION false
#define MCCONF_FOC_PHASE_FILTER_MAX_ERPM 6000.0
#define MCCONF_FOC_PLL_KP 500.0
#define MCCONF_FOC_PLL_KI 5000.0
#define MCCONF_S_PID_KP 0.01
#define MCCONF_S_PID_KI 0.1
#define MCCONF_S_PID_KD 0.00015
#define MCCONF_S_PID_KD_FILTER 0.5
#define MCCONF_S_PID_MIN_RPM 100.0
//#define MCCONF_S_PID_KP 0.01
//#define MCCONF_S_PID_KI 0.1
//#define MCCONF_S_PID_KD 0.00015
//#define MCCONF_S_PID_KD_FILTER 0.5
#define MCCONF_S_PID_KP 0.002
#define MCCONF_S_PID_KI 0.03
#define MCCONF_S_PID_KD 0.00015
#define MCCONF_S_PID_KD_FILTER 0.05
#define MCCONF_S_PID_MIN_RPM 100.0
#endif /* APP_EROCKIT_CONF_H_ */

18
applications/er/app_erockit_v2.c Normal file → Executable file
View File

@ -324,7 +324,8 @@ static THD_FUNCTION(my_thread, arg) {
const float stop_timer_max = 50.0;
const float S_min = 200.0;
const float S_ramp_step = 0.5;
const float S_ramp_step_up = 10.0;
const float S_ramp_step_down = 0.1;
const float output_filter = 0.3;
const float poles = 8;
@ -371,10 +372,19 @@ static THD_FUNCTION(my_thread, arg) {
kmh_now = ((rpm / 60.0) * wheel_d * M_PI / gearing) * 3.6;
}
// Ramp up target current on low pedal speeds
float erpm_ramp_in = 1500.0;
float erpm_motor = fabsf(mc_interface_get_rpm());
float pedal_current_target = m_set_now->p_pedal_current;
if (erpm_motor < erpm_ramp_in) {
pedal_current_target = utils_map(erpm_motor, 0.0, erpm_ramp_in, 0.0, pedal_current_target);
}
if (running) {
mc_interface_set_pid_speed(erpm_now);
erpm_now += (-m_set_now->p_pedal_current - I) * S_ramp_step;
float error = (-pedal_current_target - I);
erpm_now += error * (error > 0.0 ? S_ramp_step_up : S_ramp_step_down);
utils_truncate_number(&erpm_now, S_min, 4000.0);
if (I < -1.0) {
@ -402,7 +412,7 @@ static THD_FUNCTION(my_thread, arg) {
}
}
utils_step_towards(&erpm_now, S_min, S_ramp_step);
utils_step_towards(&erpm_now, S_min, S_ramp_step_down);
}
static float plot_pwr = 0.0;
@ -511,7 +521,7 @@ static THD_FUNCTION(my_thread, arg) {
}
}
if (!m_kill_sw || (pwr_out < 0.0001 && brake > 0.0001)) {
if (!m_kill_sw || brake > 0.0001) {
comm_can_set_current_brake_rel(255, brake);
} else {
comm_can_set_current_rel(255, pwr_out * m_set_now->p_output_power);