diff --git a/mcconf/mcconf_outrunner2.h b/mcconf/mcconf_outrunner2.h index d1418e4e..de0a55d0 100644 --- a/mcconf/mcconf_outrunner2.h +++ b/mcconf/mcconf_outrunner2.h @@ -38,8 +38,8 @@ // Sensorless settings #define MCPWM_IS_SENSORLESS 1 // Use sensorless commutation -#define MCPWM_MIN_RPM 250 // Auto-commutate below this RPM -#define MCPWM_CYCLE_INT_LIMIT_MIN_RPM 900.0 // Minimum RPM to calculate the BEMF coupling from +#define MCPWM_MIN_RPM 150 // Auto-commutate below this RPM +#define MCPWM_CYCLE_INT_LIMIT_MIN_RPM 1100.0 // Minimum RPM to calculate the BEMF coupling from #define MCPWM_CYCLE_INT_LIMIT 62.0 // Flux integrator limit 0 ERPM #define MCPWM_CYCLE_INT_LIMIT_HIGH_FAC 0.8 // Flux integrator limit percentage at MCPWM_CYCLE_INT_START_RPM_BR ERPM #define MCPWM_BEMF_INPUT_COUPLING_K 600.0 // Input voltage to bemf coupling constant diff --git a/mcpwm.c b/mcpwm.c index 6d3fee96..391e0dba 100644 --- a/mcpwm.c +++ b/mcpwm.c @@ -1275,6 +1275,10 @@ static msg_t rpm_thread(void *arg) { rpm_dep.cycle_int_limit_max = rpm_dep.cycle_int_limit + (float)ADC_Value[ADC_IND_VIN_SENS] * conf.sl_bemf_coupling_k / conf.sl_min_erpm_cycle_int_limit; + if (rpm_dep.cycle_int_limit_running < 1.0) { + rpm_dep.cycle_int_limit_running = 1.0; + } + if (rpm_dep.cycle_int_limit_running > rpm_dep.cycle_int_limit_max) { rpm_dep.cycle_int_limit_running = rpm_dep.cycle_int_limit_max; }