Betaflight | В чём разница между min_check, min_command, min_throttle и вводом стиков (stick inputs)?
От MasterZap
min_check не имеет никакого отношения к ESC (электронным регуляторам скорости)...
min_command — это значение, которое отправляется, когда квадрокоптер отключён (или когда включён и активирована остановка двигателей, то есть когда мы хотим, чтобы моторы не вращались). min_throttle — это значение, которое отправляется, когда квадрокоптер включён (и остановка двигателей отключена).
min_check относится к командам стиков и влияет только на положение стика газа. Он не оказывает никакого влияния на сигнал, отправляемый на ESC.
Недопонимание возникает из-за того, что стик газа «начинает работать» только при значениях выше min_check. Люди пытаются объяснить это фразами вроде: «Полётный контроллер переназначает min_check в min_throttle», что, хотя и верно, вводит в заблуждение, будто между этими параметрами существует прямая связь. Такой связи нет. Просто полётный контроллер учитывает только диапазон от min_check до максимального газа и переназначает этот диапазон в диапазон 0%-100% для внутренней обработки, после чего отправляет на двигатели то, что необходимо.
От waltr
В общем случае (для всех каналов) min_check и max_check используются только для команд со стиков. На канале газа min_check используется в исходном коде для процедуры включения (арминга) и в ПИД-регуляторе, и зависит от других настроек (pid_at_min_throttle, AirMode и т.д.).
mid_rc указывает полётному контроллеру, какое значение соответствует центру стика — обычно это 1500, но может быть и 1520 на некоторых пультах. mid_rc на канале газа не используется .
Значение по умолчанию max_throttle 1850 пришло из прошивки MultiWii и является безопасным максимальным значением для всех ESC. (Отображено в исходном коде в файле config.h
MW2.3)
/******************** Motor maxthrottle ***************/
/_ this is the maximum value for the ESCs at full power, this value can be increased up to 2000 _/
#define MAXTHROTTLE 1850
DEADBAND (мертвая зона) устраняет отклонения в центре стиков (на всех каналах, кроме канала газа), чтобы исключить дрожание стиков и неточность возврата к значению 1500. И только это. Не используйте этот термин в других контекстах.
Ознакомление с MultiWii WIKI и даже с исходным кодом MultiWii в файле config.h
поможет лучше понять назначение этих параметров. Ссылка есть в FAQ «Начало работы / getting started» в Wiki Betaflight.
В Betaflight значения конечных точек стиков задаются с помощью команды rxrange
(неизвестно, в каких версиях она появилась, но её не было в первоначальном портировании кода MultiWii в Betaflight):
rxrange rxrange 0 1000 2000 rxrange 1 1000 2000 rxrange 2 1000 2000 rxrange 3 1000 2000
Эти значения можно подстраивать под конкретную радиоаппаратуру, а также их можно использовать для инвертирования направления стика, поменяв местами значения краев диапазона. Например:
rxrange 0 2000 1000
— инвертирует стик крена.
Прошивка полётного контроллера использует mid_rc
и эти значения для вычисления сигнала стика, передаваемого в ПИД-регулятор. max_check
при этом не используется.
Если канал не достигает этих крайних значений, полётный контроллер просто не будет видеть полный ход стика — либо с одной стороны, либо с обеих. Именно поэтому документации MultiWii и Betaflight рекомендуют настраивать конечные точки стиков радио на стандартные значения. Вторая причина — обеспечение превышения порогов min_check и max_check, чтобы команды стиков корректно работали.
Ещё одно объяснение от Joshua Bardwell:
Максимальные и минимальные значения каналов определяются командой rxrange
. По умолчанию они равны 1000 и 2000. Параметры max_check
и min_check
используются для определения того момента, когда вы перестаете управлять дроном и используете стики для ввода какой либо команды.
Вот ключевой момент:
Как вы выключите двигатели (disarm) квадрокоптера, если активен yaw (рыскание)?
Вам пришлось бы сделать полное отклонение стика, и коптер начал бы безумно вращаться вокруг своей оси yaw. Чтобы решить эту проблему, когда газ (throttle) ниже min_check
, и когда используется арминг стиком (в отличие от арминга переключателем), ввод рыскания (yaw input) отключается. Если вы используете motor_stop
, моторы также останавливаются, когда газ ниже min_check
.
Иногда это поведение называют “мертвой зоной” в нижней части хода стика газа. Многие называют это “Deadband” (это вызывает путаницу с настройками DEADBAND
стиков в CLI (интерфейсе командной строки), поэтому предпочтительнее использовать термин “DEADZONE”).
Можно заметить, что нет необходимости в подобном отключении входов (inputs) в верхней части диапазона газа, потому что при полете мы никогда не вводим стиками команды, требующие этой верхней части диапазона. Единственная команда стиком, которая вводится во время полета, - это выключение двигателей, и для этого нужны низкий газ (throttle) и низкий yaw. В нижней части диапазона газа есть мертвая зона (ниже min_check
), которой нет ни в какой верхней части диапазона каналов.
Видео от Joshua Bardwell:
