Калибровка датчика тока iNav
Зачем это нужно
Датчик тока, встроенный в полётный контроллер или регулятор, почти всегда
врёт «из коробки». Заводское значение Scale в iNav — это усреднённая
цифра из даташита конкретного датчика/шунта, а не измерение именно вашей
платы и вашей проводки. На практике показание может отличаться от истины
на 10–30%.
Это не безобидная погрешность: по показанию Battery Current iNav считает,
сколько заряда (мАч) осталось в батарее прямо в полёте. Если датчик
занижает ток, контроллер решит, что заряда осталось больше, чем на самом
деле — и предупреждение о низком заряде придёт позже, чем нужно, вплоть до
отказа мотора в воздухе без предупреждения. Калибровка занимает около
10 минут с мультиметром и превращает «примерно» в «точно».
Инструмент /tools/current-sensor берёт на себя всю математику (line of
best fit по методике INAV/mrd-rc) — от вас нужны только несколько показаний.
Что нужно
⚠️ Пропеллеры СНЯТЫ — прежде всего остального. Калибровка требует
раскручивать мотор на разных уровнях газа под нагрузкой — он будет реально
крутиться, как только вы дадите газ. Снимите пропеллер(ы), надёжно
закрепите аппарат (тиски, стенд, тяжёлый груз) и держите руки, провода и
посторонние предметы подальше от мотора. Проверяйте это перед каждым
прогоном мотора, а не только один раз в начале — ниже это напоминание
повторяется.
Дальше — что понадобится:
- Мультиметр или токовые клещи в режиме измерения постоянного тока (DC A)
— это и есть «истинный» ток, с которым сверяется показание FC. Мультиметр
без клещей включается в разрыв силового провода, между батареей и
входом питания ESC/FC (потребуется один раз разрезать провод или сделать
измерительный переходник); токовые клещи провод разрывать не заставляют. - Заряженный аккумулятор (пак). На почти разряженном паке недоступны
высокие токи на большом газу — точки калибровки лягут слишком близко друг
к другу, регрессия станет менее надёжной. - Компьютер и USB-кабель. Нужны, чтобы обнулить Offset в INAV Configurator
и прочитатьBattery Current(альтернатива для чтения — OSD, если он
показывает ток в реальном времени). Для автоматического мастера ниже
USB обязателен: он говорит с полётником прямо из браузера (Web Serial).
Как это работает (методика)
Инструмент /tools/current-sensor рассчитывает поправочные коэффициенты
Current Sensor Scale и Current Sensor Offset для iNav по канону
INAV/mrd-rc: регрессия по парам мгновенного тока — показание внешнего
мультиметра (истина) против показания Battery Current полётного
контроллера, снятые ОДНОВРЕМЕННО на разных уровнях газа.
⚠️ Без внешнего измерительного прибора калибровку не сделать. У
инструмента уже была история ошибочных методик — обе считали не то:
- Самая первая версия усредняла отношения
old_scale × (израсходовано по OSD за полёт ÷ залито зарядным устройством после полёта)по нескольким
пакам — на неровных бытовых замерах это давало абсурдные значения Scale
(внутренний баг SFHD-53).- Следующая версия заменила усреднение на регрессию (line of best fit), но
всё ещё сравнивала интегральные величины за разные события:
расход мАч за полёт против последующего заряда мАч зарядным устройством.
Это методически неверно — разряд и заряд отличаются по КПД, температуре
и потерям, это не пара «истина / показание прибора» в одной точке.Актуальная методика — пары мгновенного тока (не мАч!), снятые
одновременно, на разных уровнях газа, в одной сессии, на одном паке, с
current_meter_offset = 0, выставленным ДО начала замеров (иначе
оставшийся offset исказит каждую пару). Именно так считает
калькулятор-эталон mrd-rc.
Формула сверена с калькулятором-эталоном mrd-rc
(Setting the current sensor in iNav,
математический вывод —
Current Sensor Scale and Offset calculation: how it works):
метод «линия наилучшего приближения» (line of best fit). Каждая пара
(мультиметр, FC) — точка данных; регрессия «что показал FC» ~ «что реально
показал мультиметр» даёт И новый Scale (наклон), И новый Offset (пересечение
с осью, переведённое в милливольты).
Порядок калибровки (ручной ввод показаний)
- Обнулите Offset. В iNav Configurator: вкладка Battery → Current
Sensor Offset →0. Оставшийся ненулевой offset исказит каждую пару
замеров. Заодно запишите текущий Scale (обычно 400–4000) — начальное
значение берётся из документации на регулятор/датчик тока. - Включите внешний мультиметр (или токовые клещи) в разрыв силового
провода — между батареей и входом питания ESC/FC, чтобы прибор видел
реальный мгновенный ток. - ⚠️ Ещё раз убедитесь, что пропеллер снят, а аппарат надёжно закреплён
— на этом шаге мотор реально раскручивается. На одном паке, в одной
сессии заармите и прогоните мотор(ы) на нескольких разных уровнях газа
(рекомендуется 5 и более, например: холостой ход, 25%, 50%, 75%,
100%). На каждом уровне, когда показания устоятся, запишите ток по
мультиметру (А) и одновременное показание Battery Current по FC
(Configurator → Battery, либо OSD). - Заполните таблицу замеров на странице инструмента (минимум 2 пары, 5 и
более — точнее) и нажмите Рассчитать. Запишите Новый Scale и
Новый Offset обратно в iNav Configurator → Battery → Current Sensor.
Числовой пример (посчитано, подставьте свои замеры)
Ниже — правдоподобный набор замеров для типового мини-квадрика/крыла на 4S
(старый Scale = 400, три уровня газа: холостой ход, крейсер, максимум) и
полный расчёт, каким его делает сервер. Это ИЛЛЮСТРАЦИЯ метода, а не ваши
данные — снимите свои показания мультиметром и введите их в калькулятор
на этой странице.
| № | Газ | Ток, мультиметр i_meter (А) |
Ток, FC i_fc (А) |
|---|---|---|---|
| 1 | холостой ход | 3.2 | 3.6 |
| 2 | крейсер (~50%) | 11.5 | 12.9 |
| 3 | максимум | 24.0 | 26.5 |
Старый Scale (из iNav) — 400.
Шаг 1 — средние значения:
mean_meter = (3.2 + 11.5 + 24.0) / 3 = 12.900
mean_fc = (3.6 + 12.9 + 26.5) / 3 = 14.333
Шаг 2 — отклонения от среднего и их произведения/квадраты (нужны для
наклона регрессии; отклонения даны с 3 знаками после запятой, чтобы ручной
пересчёт по калькулятору сходился с итоговой суммой):
| № | i_meter − mean_meter |
i_fc − mean_fc |
произведение | (i_meter − mean_meter)² |
|---|---|---|---|---|
| 1 | −9.700 | −10.733 | 104.11 | 94.09 |
| 2 | −1.400 | −1.433 | 2.01 | 1.96 |
| 3 | 11.100 | 12.167 | 135.05 | 123.21 |
| Σ (сумма) | — | — | 241.17 | 219.26 |
Шаг 3 — наклон (slope) и новый Scale:
slope = Σ произведение / Σ квадратов = 241.17 / 219.26 ≈ 1.0999
new_scale = old_scale × slope = 400 × 1.0999 ≈ 439.97 → округляем → 440
Шаг 4 — пересечение (intercept) и новый Offset:
intercept = mean_fc − slope × mean_meter
= 14.333 − 1.0999 × 12.900 ≈ 0.144
offset_mV = intercept × new_scale / 10 = 0.144 × 439.97 / 10 ≈ 6.35 → округляем → 6
Итог для этого примера: новый Scale = 440, новый Offset = 6 мВ.
Хотите проверить расчёт — введите Old Scale 400 и эти три пары в
калькулятор выше на этой же странице: он должен выдать ровно New Scale = 440,
New Offset = 6. FC в этом примере завышал ток примерно на 10% (slope ≈ 1.10)
— после записи новых значений Battery Current на экране станет близок к
показанию мультиметра на всех уровнях газа.
Три пары — математический минимум с запасом для демонстрации; в реальной
калибровке используйте 5 и более уровней газа, как рекомендует
методика (см. таблицу требований ниже) — больше точек усредняют шум
замеров и дают более надёжный результат.
Замеры
Таблица принимает до восьми пар (ток по мультиметру / ток по FC, оба в А):
| Пара | Обязательна? |
|---|---|
| 1–2 | да — без второй пары Offset не считается |
| 3–5 | настоятельно рекомендуются — методика требует 5+ уровней газа |
| 6–8 | опционально, повышают точность |
Инструмент не блокирует расчёт при 2–4 парах, но предупреждает: методика
mrd-rc/INAV рассчитана на 5 и более точек с разным током — меньшее число
даёт менее надёжную регрессию.
Результат
- Новый Scale — запишите в iNav Configurator → Battery → Current Sensor Scale;
- Новый Offset — туда же, поле Current Sensor Offset (значение уже в
милливольтах, как ожидает iNav — конвертировать не нужно).
После записи коэффициентов слетайте и сверьте: Battery Current на экране
FC должен быть близок к показанию независимого мультиметра/ваттметра на
разных уровнях газа.
Автоматический мастер (бегунок мотора + MSP)
На той же странице, теперь ПЕРВОЙ карточкой (AD-1058, выше ручной таблицы
из раздела выше), — карточка «Automatic calibration». Кнопка
«Calibrate current sensor (wizard)» открывает
мастер, который собирает пары автоматически, вместо ручного набора текста в
восемь полей. Мастер подключается к полётнику НАПРЯМУЮ из браузера (Web
Serial — только настольный Chrome/Edge по HTTPS, тот же транспорт, что
/tools/inav-connect), у него своё соединение — /tools/inav-connect
трогать/держать открытым параллельно не нужно.
⚠️ Крутится реальный мотор. Обязательно снимите пропеллер до того, как
разблокируете бегунок газа — мастер явно предупреждает об этом модалкой
с чекбоксом-подтверждением перед стартом.
Шаги (соответствуют реальному UI, версия для ролика-инструкции — AD-889):
- Нажмите «Calibrate current sensor (wizard)» — появляется секция
мастера с бегунком газа. - «Connect the flight controller» — выберите COM-порт полётника в
диалоге браузера. Мастер сам читает текущий Scale и Offset; если Offset
не 0, разблокировать бегунок нельзя, пока не нажмёте «Zero the offset
on the flight controller» (методика AD-887 требует Offset=0 до замеров). - «Unlock throttle test» — модалка «Remove the propeller»: подтвердите
чекбоксом, что пропеллер снят и аппарат закреплён. Кнопка окрашена в
красный и разблокируется ТОЛЬКО чекбоксом. - Плавно двигайте бегунок «Throttle» — мотор раскручивается (в пределах
лимита газа-предохранителя выше, по умолчанию 20%, можно поднять). Как
только отпустили бегунок (мышь/тач/клавиатура) — газ автоматически
возвращается на 0, а показание тока с полётника появляется первой
строкой таблицы. - Впишите показание СВОЕГО мультиметра/токовых клещей в соседнее поле той
же строки — точка готова. - Двигайте бегунок ещё раз, на другой уровень газа, отпустите — появляется
НОВАЯ строка (пока мультиметр предыдущей точки не введён, повторное
отпускание просто обновляет ток в текущей строке — не создаёт лишних
точек). Повторите для 2–5 и более уровней газа (idle/25/50/75/100%). - Кнопка «Calculate» становится активной после 2 готовых точек (минимум
для регрессии); подсказка под таблицей рекомендует 5 и более. - Нажмите её — сервер считает Scale/Offset (
calc_scale_and_offset, та же
формула AD-887) и показывает результат (New Scale / New Offset).
Сам по себе расчёт НИЧЕГО не пишет на полётник. - Появляется кнопка «Write to flight controller + reboot» — активна,
только пока есть посчитанные значения И есть подключение. По нажатию
мастер по имени записываетcurrent_meter_scale/current_meter_offsetна
борт (MSP2_COMMON_SET_SETTING), сохраняет их в EEPROM (иначе значения
потерялись бы при следующем отключении питания) и предлагает перезагрузить
полётник, чтобы калибровка точно применилась — подтвердите в диалоге
браузера («плата отключится и переподключится»); можно отказаться —
значения уже сохранены в EEPROM независимо от перезагрузки. Рядом с
кнопкой всегда видно состояние: «не записано» / «записано ✓
(scale=…, offset=…)» / текст ошибки, плюс тост об успехе или отказе.
Повторное нажатие безопасно перезаписывает те же значения ещё раз.
Аварийная остановка: пока есть связь с полётником, доступна большая
красная кнопка «■ EMERGENCY STOP» — немедленно останавливает мотор и
снимает разблокировку бегунка, независимо от текущего состояния. Кнопка
«Disarm» делает то же самое в спокойном режиме (конец сессии). Если
бегунок не трогали 15 секунд — мастер сам останавливает мотор и снимает
разблокировку (защита от «забыл»).
Если браузер не поддерживает Web Serial (Firefox, Safari, мобильные) —
мастер честно сообщает об этом; ручная таблица ниже по-прежнему работает
везде.
Видеоинструкция
Те же шаги в виде короткого ролика (съёмка мультиметра и мотора + запись
экрана мастера, сценарий подготовлен — тикет AD-889) — удобно, если проще
посмотреть один раз, чем читать инструкцию по пунктам. Порядок действий тот
же: пропеллер снят → мультиметр в разрыв провода → подключение по USB →
снятие защиты → газ на разных уровнях → «Рассчитать».
Связанные разделы
- Подбор ВМГ — ток и мощность силовой установки по расчёту
- Разделы платформы — где найти инструменты