1
0
Fork 0
mirror of https://github.com/betaflight/betaflight-configurator.git synced 2025-07-19 06:15:13 +03:00

Merge pull request #545 from basdelfos/bfc_change_dterm_filter

Added new features and settings for BF 3.2
This commit is contained in:
borisbstyle 2017-07-27 09:37:34 +02:00 committed by GitHub
commit fc371852b2
6 changed files with 200 additions and 108 deletions

View file

@ -545,7 +545,7 @@
"message": "Configure via the BlackBox tab after enabling." "message": "Configure via the BlackBox tab after enabling."
}, },
"featureESC_SENSOR": { "featureESC_SENSOR": {
"message": "Use KISS ESC 24A telemetry as sensor" "message": "Use KISS/BLHeli_32 ESC telemetry as sensor"
}, },
"featureCHANNEL_FORWARDING": { "featureCHANNEL_FORWARDING": {
"message": "Forward aux channels to servo outputs" "message": "Forward aux channels to servo outputs"
@ -571,6 +571,12 @@
"featureVTX": { "featureVTX": {
"message": "Video Transmitter" "message": "Video Transmitter"
}, },
"featureANTI_GRAVITY": {
"message": "Temporary boost I-Term on high throttle changes"
},
"featureDYNAMIC_FILTER": {
"message": "Dynamic gyro notch filtering"
},
"featureFAILSAFE": { "featureFAILSAFE": {
"message": "Enable Failsafe Stage 2" "message": "Enable Failsafe Stage 2"
}, },
@ -845,6 +851,14 @@
"pidTuningNonProfilePidSettings": { "pidTuningNonProfilePidSettings": {
"message": "Profile independent PID Controller Settings" "message": "Profile independent PID Controller Settings"
}, },
"pidTuningAntiGravityGain": {
"message": "Anti Gravity Gain"
},
"pidTuningAntiGravityThres": {
"message": "Anti Gravity Threshold"
},
"pidTuningPidSettings": { "pidTuningPidSettings": {
"message": "PID Controller Settings" "message": "PID Controller Settings"
}, },
@ -1882,6 +1896,12 @@
"pidTuningFilterSettings": { "pidTuningFilterSettings": {
"message": "Filter Settings" "message": "Filter Settings"
}, },
"pidTuningDTermLowpassType": {
"message": "D-Term Lowpass Filter"
},
"pidTuningDTermLowpassTypeTip": {
"message": "Select D-Term lowpass filter type to use. Default is BIQUAD"
},
"pidTuningDTermLowpassFrequency": { "pidTuningDTermLowpassFrequency": {
"message": "D Term Lowpass Frequency [Hz]" "message": "D Term Lowpass Frequency [Hz]"
}, },

View file

@ -80,7 +80,14 @@ var Features = function (config) {
if (semver.gte(CONFIG.apiVersion, "1.31.0")) { if (semver.gte(CONFIG.apiVersion, "1.31.0")) {
features.push( features.push(
{bit: 27, group: 'other', name: 'ESC_SENSOR'} {bit: 27, group: 'other', name: 'ESC_SENSOR'}
) );
}
if (semver.gte(CONFIG.apiVersion, "1.36.0")) {
features.push(
{bit: 28, group: 'other', name: 'ANTI_GRAVITY'},
{bit: 29, group: 'other', name: 'DYNAMIC_FILTER'}
);
} }
} }

View file

@ -313,6 +313,7 @@ var FC = {
dterm_notch_cutoff: 0, dterm_notch_cutoff: 0,
gyro_soft_notch_hz_2: 0, gyro_soft_notch_hz_2: 0,
gyro_soft_notch_cutoff_2: 0, gyro_soft_notch_cutoff_2: 0,
dterm_filter_type: 0,
}; };
ADVANCED_TUNING = { ADVANCED_TUNING = {
@ -330,6 +331,8 @@ var FC = {
pidMaxVelocityYaw: 0, pidMaxVelocityYaw: 0,
levelAngleLimit: 0, levelAngleLimit: 0,
levelSensitivity: 0, levelSensitivity: 0,
itermThrottleThreshold: 0,
itermAcceleratorGain: 0,
}; };
SENSOR_CONFIG = { SENSOR_CONFIG = {

View file

@ -789,6 +789,9 @@ MspHelper.prototype.process_data = function(dataHandler) {
FILTER_CONFIG.gyro_soft_notch_hz_2 = data.readU16(); FILTER_CONFIG.gyro_soft_notch_hz_2 = data.readU16();
FILTER_CONFIG.gyro_soft_notch_cutoff_2 = data.readU16(); FILTER_CONFIG.gyro_soft_notch_cutoff_2 = data.readU16();
} }
if (semver.gte(CONFIG.apiVersion, "1.36.0")) {
FILTER_CONFIG.dterm_filter_type = data.readU8();
}
} }
break; break;
case MSPCodes.MSP_SET_PID_ADVANCED: case MSPCodes.MSP_SET_PID_ADVANCED:
@ -808,11 +811,15 @@ MspHelper.prototype.process_data = function(dataHandler) {
ADVANCED_TUNING.itermThrottleGain = data.readU8(); ADVANCED_TUNING.itermThrottleGain = data.readU8();
ADVANCED_TUNING.pidMaxVelocity = data.readU16(); ADVANCED_TUNING.pidMaxVelocity = data.readU16();
ADVANCED_TUNING.pidMaxVelocityYaw = data.readU16(); ADVANCED_TUNING.pidMaxVelocityYaw = data.readU16();
}
if (semver.gte(CONFIG.apiVersion, "1.24.0")) { if (semver.gte(CONFIG.apiVersion, "1.24.0")) {
ADVANCED_TUNING.levelAngleLimit = data.readU8(); ADVANCED_TUNING.levelAngleLimit = data.readU8();
ADVANCED_TUNING.levelSensitivity = data.readU8(); ADVANCED_TUNING.levelSensitivity = data.readU8();
} }
if (semver.gte(CONFIG.apiVersion, "1.36.0")) {
ADVANCED_TUNING.itermThrottleThreshold = data.readU16();
ADVANCED_TUNING.itermAcceleratorGain = data.readU16();
}
}
break; break;
case MSPCodes.MSP_SENSOR_CONFIG: case MSPCodes.MSP_SENSOR_CONFIG:
SENSOR_CONFIG.acc_hardware = data.readU8(); SENSOR_CONFIG.acc_hardware = data.readU8();
@ -1392,6 +1399,9 @@ MspHelper.prototype.crunch = function(code) {
buffer.push16(FILTER_CONFIG.gyro_soft_notch_hz_2) buffer.push16(FILTER_CONFIG.gyro_soft_notch_hz_2)
.push16(FILTER_CONFIG.gyro_soft_notch_cutoff_2) .push16(FILTER_CONFIG.gyro_soft_notch_cutoff_2)
} }
if (semver.gte(CONFIG.apiVersion, "1.36.0")) {
buffer.push8(FILTER_CONFIG.dterm_filter_type);
}
} }
break; break;
case MSPCodes.MSP_SET_PID_ADVANCED: case MSPCodes.MSP_SET_PID_ADVANCED:
@ -1412,6 +1422,10 @@ MspHelper.prototype.crunch = function(code) {
buffer.push8(ADVANCED_TUNING.levelAngleLimit) buffer.push8(ADVANCED_TUNING.levelAngleLimit)
.push8(ADVANCED_TUNING.levelSensitivity); .push8(ADVANCED_TUNING.levelSensitivity);
} }
if (semver.gte(CONFIG.apiVersion, "1.36.0")) {
buffer.push16(ADVANCED_TUNING.itermThrottleThreshold)
.push16(ADVANCED_TUNING.itermAcceleratorGain);
}
} }
// only supports 1 version pre bf 3.0 // only supports 1 version pre bf 3.0
else { else {

View file

@ -326,6 +326,24 @@
</td> </td>
</table> </table>
</div> </div>
<div class="antigravity topspacer tpa">
<table class="cf">
<thead>
<tr>
<th i18n="pidTuningAntiGravityGain"></th>
<th i18n="pidTuningAntiGravityThres"></th>
</tr>
</thead>
<tbody>
<tr style="height: 35px;">
<td><input type="number" name="itermAcceleratorGain" step="0.1" min="1" max="30" /></td>
<td><input type="number" name="itermThrottleThreshold" step="10" min="20" max="1000" /></td>
</tr>
</tbody>
</table>
</div>
<div class="gui_box grey topspacer"> <div class="gui_box grey topspacer">
<table class="pid_titlebar"> <table class="pid_titlebar">
<thead> <thead>
@ -434,6 +452,21 @@
<p i18n="tuningHelp"></p> <p i18n="tuningHelp"></p>
</div> </div>
</div> </div>
<div class="dtermfiltertype cf_column twothird">
<div class="profile single-field" style="width:200px; margin-bottom: 0px;">
<div class="helpicon cf_tip" i18n_title="pidTuningDTermLowpassTypeTip" style="margin-top: 5px;"></div>
<div class="head" i18n="pidTuningDTermLowpassType"></div>
<div class="bottomarea">
<select name="dtermFilterType">
<option value="0" class="PT1">PT1</option>
<option value="1" class="BIQUAD">BIQUAD</option>
<option value="2" class="FIR">FIR</option>
</select>
</div>
</div>
</div>
<div class="cf_column twothird"> <div class="cf_column twothird">
<div class="gui_box grey topspacer pid_filter"> <div class="gui_box grey topspacer pid_filter">
<table class="pid_titlebar new_rates"> <table class="pid_titlebar new_rates">

View file

@ -258,6 +258,15 @@ TABS.pid_tuning.initialize = function (callback) {
} else { } else {
$('.pid_sensitivity').hide(); $('.pid_sensitivity').hide();
} }
if (semver.gte(CONFIG.apiVersion, "1.36.0")) {
$('.profile select[name="dtermFilterType"]').val(FILTER_CONFIG.dterm_filter_type);
$('.antigravity input[name="itermThrottleThreshold"]').val(ADVANCED_TUNING.itermThrottleThreshold);
$('.antigravity input[name="itermAcceleratorGain"]').val(ADVANCED_TUNING.itermAcceleratorGain / 1000);
} else {
$('.dtermfiltertype').hide();
$('.antigravity').hide();
}
} }
function form_to_pid_and_rc() { function form_to_pid_and_rc() {
@ -368,6 +377,12 @@ TABS.pid_tuning.initialize = function (callback) {
ADVANCED_TUNING.levelAngleLimit = parseInt($('.pid_tuning input[name="angleLimit"]').val()); ADVANCED_TUNING.levelAngleLimit = parseInt($('.pid_tuning input[name="angleLimit"]').val());
ADVANCED_TUNING.levelSensitivity = parseInt($('.pid_tuning input[name="sensitivity"]').val()); ADVANCED_TUNING.levelSensitivity = parseInt($('.pid_tuning input[name="sensitivity"]').val());
} }
if (semver.gte(CONFIG.apiVersion, "1.36.0")) {
FILTER_CONFIG.dterm_filter_type = $('.profile select[name="dtermFilterType"]').val();
ADVANCED_TUNING.itermThrottleThreshold = parseInt($('.antigravity input[name="itermThrottleThreshold"]').val());
ADVANCED_TUNING.itermAcceleratorGain = parseInt($('.antigravity input[name="itermAcceleratorGain"]').val() * 1000);
}
} }
function showAllPids() { function showAllPids() {