mirror of
https://github.com/betaflight/betaflight-configurator.git
synced 2025-07-23 08:15:22 +03:00
Merge pull request #1905 from Asizon/dynamicIdle
Dynamic Idle configurable
This commit is contained in:
commit
94bd817aff
6 changed files with 30 additions and 6 deletions
|
@ -3620,6 +3620,12 @@
|
||||||
"pidTuningThrottleBoostHelp": {
|
"pidTuningThrottleBoostHelp": {
|
||||||
"message": "This feature allows throttle to be temporarily boosted on quick stick movements, which increases acceleration torque to the motors, providing a much faster throttle response."
|
"message": "This feature allows throttle to be temporarily boosted on quick stick movements, which increases acceleration torque to the motors, providing a much faster throttle response."
|
||||||
},
|
},
|
||||||
|
"pidTuningIdleMinRpm": {
|
||||||
|
"message": "Dynamic Idle Value [rpm]"
|
||||||
|
},
|
||||||
|
"pidTuningIdleMinRpmHelp": {
|
||||||
|
"message": "Set this parameter to provide an rpm based floor-value as a safety net against motor desync.<br>A racer might prefer very good response and low rates - therefore a low idle_min_rpm and a high dshot_idle_value may be useful. Freestylers and LOS pilots will appreciate very low thrust at idle and might want to use less dshot_idle_value while using a bit more idle_min_rpm to avoid desyncs at high rates.<br><br>Visit this <a href=\"https://github.com/betaflight/betaflight/wiki/Tuning-Dynamic-Idle\"target=\"_blank\">wiki</a> entry for more info."
|
||||||
|
},
|
||||||
"pidTuningAcroTrainerAngleLimit": {
|
"pidTuningAcroTrainerAngleLimit": {
|
||||||
"message": "Acro Trainer Angle Limit"
|
"message": "Acro Trainer Angle Limit"
|
||||||
},
|
},
|
||||||
|
|
|
@ -460,6 +460,7 @@ var FC = {
|
||||||
integratedYawRelax: 0,
|
integratedYawRelax: 0,
|
||||||
motorOutputLimit: 0,
|
motorOutputLimit: 0,
|
||||||
autoProfileCellCount: 0,
|
autoProfileCellCount: 0,
|
||||||
|
idleMinRpm: 0,
|
||||||
};
|
};
|
||||||
ADVANCED_TUNING_ACTIVE = { ...ADVANCED_TUNING };
|
ADVANCED_TUNING_ACTIVE = { ...ADVANCED_TUNING };
|
||||||
|
|
||||||
|
|
|
@ -1146,6 +1146,7 @@ MspHelper.prototype.process_data = function(dataHandler) {
|
||||||
if(semver.gte(CONFIG.apiVersion, "1.43.0")) {
|
if(semver.gte(CONFIG.apiVersion, "1.43.0")) {
|
||||||
ADVANCED_TUNING.motorOutputLimit = data.readU8();
|
ADVANCED_TUNING.motorOutputLimit = data.readU8();
|
||||||
ADVANCED_TUNING.autoProfileCellCount = data.readU8();
|
ADVANCED_TUNING.autoProfileCellCount = data.readU8();
|
||||||
|
ADVANCED_TUNING.idleMinRpm = data.readU8();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2079,7 +2080,8 @@ MspHelper.prototype.crunch = function(code) {
|
||||||
|
|
||||||
if (semver.gte(CONFIG.apiVersion, "1.43.0")) {
|
if (semver.gte(CONFIG.apiVersion, "1.43.0")) {
|
||||||
buffer.push8(ADVANCED_TUNING.motorOutputLimit)
|
buffer.push8(ADVANCED_TUNING.motorOutputLimit)
|
||||||
.push8(ADVANCED_TUNING.autoProfileCellCount);
|
.push8(ADVANCED_TUNING.autoProfileCellCount)
|
||||||
|
.push8(ADVANCED_TUNING.idleMinRpm);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -516,9 +516,9 @@ TABS.configuration.initialize = function (callback, scrollPosition) {
|
||||||
$('input[name="motorPoles"]').val(MOTOR_CONFIG.motor_poles);
|
$('input[name="motorPoles"]').val(MOTOR_CONFIG.motor_poles);
|
||||||
}
|
}
|
||||||
|
|
||||||
function hideMotorPoles() {
|
function hideRpmFeatures() {
|
||||||
let motorPolesVisible = $("input[id='dshotBidir']").is(':checked') || $("input[name='ESC_SENSOR']").is(':checked');
|
let rpmFeaturesVisible = $("input[id='dshotBidir']").is(':checked') || $("input[name='ESC_SENSOR']").is(':checked');
|
||||||
$('div.motorPoles').toggle(motorPolesVisible);
|
$('div.motorPoles').toggle(rpmFeaturesVisible);
|
||||||
}
|
}
|
||||||
|
|
||||||
$('#escProtocolTooltip').toggle(semver.lt(CONFIG.apiVersion, "1.42.0"));
|
$('#escProtocolTooltip').toggle(semver.lt(CONFIG.apiVersion, "1.42.0"));
|
||||||
|
@ -549,8 +549,8 @@ TABS.configuration.initialize = function (callback, scrollPosition) {
|
||||||
$('div.checkboxDshotBidir').toggle(semver.gte(CONFIG.apiVersion, "1.42.0") && digitalProtocol);
|
$('div.checkboxDshotBidir').toggle(semver.gte(CONFIG.apiVersion, "1.42.0") && digitalProtocol);
|
||||||
$('div.motorPoles').toggle(semver.gte(CONFIG.apiVersion, "1.42.0"));
|
$('div.motorPoles').toggle(semver.gte(CONFIG.apiVersion, "1.42.0"));
|
||||||
//trigger change dshotBidir and ESC_SENSOR to show/hide Motor Poles tab
|
//trigger change dshotBidir and ESC_SENSOR to show/hide Motor Poles tab
|
||||||
$("input[id='dshotBidir']").change(hideMotorPoles).change();
|
$("input[id='dshotBidir']").change(hideRpmFeatures).change();
|
||||||
$("input[name='ESC_SENSOR']").change(hideMotorPoles);
|
$("input[name='ESC_SENSOR']").change(hideRpmFeatures);
|
||||||
|
|
||||||
//trigger change unsyncedPWMSwitch to show/hide Motor PWM freq input
|
//trigger change unsyncedPWMSwitch to show/hide Motor PWM freq input
|
||||||
$("input[id='unsyncedPWMSwitch']").change();
|
$("input[id='unsyncedPWMSwitch']").change();
|
||||||
|
|
|
@ -393,8 +393,10 @@ TABS.pid_tuning.initialize = function (callback) {
|
||||||
if (semver.gte(CONFIG.apiVersion, "1.43.0")) {
|
if (semver.gte(CONFIG.apiVersion, "1.43.0")) {
|
||||||
$('.pid_tuning input[name="motorLimit"]').val(ADVANCED_TUNING.motorOutputLimit);
|
$('.pid_tuning input[name="motorLimit"]').val(ADVANCED_TUNING.motorOutputLimit);
|
||||||
$('.pid_tuning input[name="cellCount"]').val(ADVANCED_TUNING.autoProfileCellCount);
|
$('.pid_tuning input[name="cellCount"]').val(ADVANCED_TUNING.autoProfileCellCount);
|
||||||
|
$('input[name="idleMinRpm-number"]').val(ADVANCED_TUNING.idleMinRpm);
|
||||||
} else {
|
} else {
|
||||||
$('.motorOutputLimit').hide();
|
$('.motorOutputLimit').hide();
|
||||||
|
$('.idleMinRpm').hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
$('input[id="useIntegratedYaw"]').change(function() {
|
$('input[id="useIntegratedYaw"]').change(function() {
|
||||||
|
@ -776,6 +778,7 @@ TABS.pid_tuning.initialize = function (callback) {
|
||||||
FILTER_CONFIG.dyn_notch_max_hz = parseInt($('.pid_filter input[name="dynamicNotchMaxHz"]').val());
|
FILTER_CONFIG.dyn_notch_max_hz = parseInt($('.pid_filter input[name="dynamicNotchMaxHz"]').val());
|
||||||
ADVANCED_TUNING.motorOutputLimit = parseInt($('.pid_tuning input[name="motorLimit"]').val());
|
ADVANCED_TUNING.motorOutputLimit = parseInt($('.pid_tuning input[name="motorLimit"]').val());
|
||||||
ADVANCED_TUNING.autoProfileCellCount = parseInt($('.pid_tuning input[name="cellCount"]').val());
|
ADVANCED_TUNING.autoProfileCellCount = parseInt($('.pid_tuning input[name="cellCount"]').val());
|
||||||
|
ADVANCED_TUNING.idleMinRpm = parseInt($('input[name="idleMinRpm-number"]').val());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -499,6 +499,18 @@
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
<tr class="idleMinRpm">
|
||||||
|
<td><input type="number" name="idleMinRpm-number" step="1" min="0" max="100"/></td>
|
||||||
|
<td colspan="1">
|
||||||
|
<div>
|
||||||
|
<label>
|
||||||
|
<span i18n="pidTuningIdleMinRpm"></span>
|
||||||
|
</label>
|
||||||
|
<div class="helpicon cf_tip" i18n_title="pidTuningIdleMinRpmHelp"></div>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
<tr class="absoluteControlGain">
|
<tr class="absoluteControlGain">
|
||||||
<td><input type="number" name="absoluteControlGain-number" step="1" min="0" max="20"/></td>
|
<td><input type="number" name="absoluteControlGain-number" step="1" min="0" max="20"/></td>
|
||||||
<td colspan="1">
|
<td colspan="1">
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue