Перейти к содержимому

Питание и батарея … ↩ 8.13 m3

mod. Пятница, 09 октября 2026 09:26 . См. 98

Betaflight без GUI · Урок 8 из 13 · Модуль 3. Полётная настройка

Измерение напряжения и тока, пороги разряда и ёмкость батареи — вкладка Power & Battery в командах.

Напряжения задаются в сотых долях вольта: 4.30 В — это 430. Ошибка в десять раз здесь — почти норма у новичков.

Содержание

1. Цели урока

technobee_0905_1ea9d.jpg

После этого урока вы будете понимать:

  • как выбрать источник измерения напряжения и тока
  • почему напряжения задаются в сотых долях вольта
  • как калибровать аналоговые датчики напряжения и тока
  • где хранятся настройки батареи: в профиле (прошивки 2026.x) или одним набором (4.4–2025.12)
↑ К оглавлению

2. Шаг 1. Включить измерение

Два выпадающих списка в блоке [Батарея] выбирают источник показаний, а не калибруют датчики. На скриншоте для обоих выбран [Встроенный АЦП]:

# set battery_meter = ADC
# set current_meter = ADC
Plain text
Поле на скриншотеCLIПрактический смысл
[Использовать в качестве датчика напряжения] — [Встроенный АЦП] set battery_meter = ADC Напряжение берётся с аналогового входа полётника. Иные источники в 4.5.4: NONE и ESC; подключённый внешний датчик сам по себе не выбирается автоматически.
[Использовать в качестве датчика тока] — [Встроенный АЦП] set current_meter = ADC Ток берётся с аналогового входа. Другие значения CLI: NONE, VIRTUAL, ESC, MSP; при VIRTUAL действуют иные настройки калибровки.
Это выбор источника, а не feature: В 4.5.4 feature VBAT и feature CURRENT_METER не используются: проверьте источник командами get battery_meter и get current_meter. Сами команды ADC имеют смысл только если соответствующий аналоговый датчик доступен на вашей плате.
↑ К оглавлению

3. Напряжение ячейки

Пороговые напряжения ячейки в CLI задаются в сотых долях вольта. Числа ниже воспроизводят показанный экран, а не задают безопасные пороги для любой химии аккумулятора.

Поле на скриншотеCLIПрактический смысл
[Минимальное напряжение на банку] — 3.3 В set vbat_min_cell_voltage = 330 Нижний порог ячейки для критического предупреждения/расчёта оставшегося заряда; реальный уровень под нагрузкой нужно подбирать под батарею.
[Максимальное напряжение ячейки] — 4.3 В set vbat_max_cell_voltage = 430 Верхняя граница, в том числе для автоматического определения числа ячеек; это НЕ команда зарядить обычный LiPo до 4.30 В.
[Предупреждать, если напряжение на банке] — 3.5 В set vbat_warning_cell_voltage = 350 Порог предупреждения; во время полёта напряжение проседает под нагрузкой.

Ниже на скриншоте отдельный блок [Датчик напряжения] калибрует аналоговый вход, выбранный через battery_meter = ADC:

Поле GUI в блоке [Датчик напряжения]CLIПрактический смысл
[Шкала] — 110 set vbat_scale = 110 Калибровка показания батареи; увеличение шкалы увеличивает рассчитанное напряжение. Число зависит от аппаратной схемы.
[Значение делителя] — 10 set vbat_divider = 10 Аппаратный коэффициент делителя: изменение влияет на расчёт напряжения обратно пропорционально; берите значение платы, не копируйте со скриншота.
[Значение множителя] — 1 set vbat_multiplier = 1 Дополнительная часть калибровки делителя; также зависит от платы.

От батареи до числа на экране

АЦП полётного контроллера не измеряет полное напряжение батареи напрямую. На плате резистивный делитель уменьшает его: батарея → делитель → вход АЦП → цифровое показание → пересчёт прошивкой → [Напряжение] в блоке [Состояние питания]. Подавать напряжение батареи прямо на вход микроконтроллера нельзя. При battery_meter = ESC напряжение приходит от ESC, и настройки vbat_scale / vbat_divider / vbat_multiplier не калибруют этот источник.

Что такое АЦП и его «отсчёт». АЦП — аналого-цифровой преобразователь микроконтроллера. Он измеряет напряжение на своём входе после делителя, а не на клеммах батареи. В этой прошивке используется 12-битный отсчёт: входное напряжение представляется целым числом от 0 до 4095. Нуль означает около 0 В на входе АЦП; 4095 — напряжение, близкое к его опорному. Это число — внутренний результат измерения, его не вводят в CLI и не путают с числом ячеек батареи.

Что такое опорное напряжение. Это напряжение, которому соответствует верхний отсчёт АЦП; на контроллере оно обычно около 3,3 В, но прошивка учитывает измеренное значение. Это не напряжение всей батареи и не параметр vbat_scale. Представьте линейку: при входе 0 В АЦП возвращает 0; при входе 3,3 В — около 4095; при 1,65 В (середина шкалы) — около 2048. Если после делителя приходит примерно 1,53 В, внутренний отсчёт будет около 1900. Опорное напряжение определяет масштаб этой линейки.

Только после этих двух измерений прошивка восстанавливает напряжение на клеммах батареи. Для аналогового датчика в Betaflight 4.5.4 приближённая формула (без целочисленного округления) такова:

\[V_{\mathrm{bat}} \approx \frac{N}{4095}\,V_{\mathrm{ref}}\,\frac{S_v}{D_v M_v}\]

Расшифровка без формулы: N — полученное АЦП целое число от 0 до 4095 без единиц измерения; Vref — опорное напряжение АЦП в вольтах, примерно 3,3 В; Sv — CLI-параметр vbat_scale (на снимке 110); Dv — vbat_divider (10); Mv — vbat_multiplier (1). N и Vref прошивка получает сама; настройки пользователя — только три последних коэффициента.

На скриншоте коэффициенты 110, 10 и 1 вместе дают множитель 11. Поэтому примерно 1,53 В на входе АЦП соответствуют 16,80 В в отдельной панели [Датчик напряжения] → [Батарея]. В [Состояние питания] рядом показано 16,71 В — это другое поле интерфейса; его отличие объяснено ниже. Значения делителя на скриншоте не являются рекомендацией для другой платы.

Пример калибровки напряжения

Учебный пример. Без пропеллеров измерьте напряжение мультиметром на выводах подключённой батареи и сравните с [Напряжение] в GUI в тот же момент, без нагрузки. Пусть мультиметр показывает 15,6 В, GUI — 15,0 В, текущая [Шкала] равна 110. Оставьте аппаратные vbat_divider и vbat_multiplier без изменений:

\[S_{v,\mathrm{new}} \approx S_{v,\mathrm{old}}\frac{V_{\mathrm{meter}}}{V_{\mathrm{GUI}}} = 110\cdot\frac{15{,}6}{15{,}0}=114{,}4\approx114\]
# set vbat_scale = 114
# save
Plain text

После перезагрузки сравните показания повторно: масштаб — целое число, поэтому понадобится контрольное измерение. Если GUI показывает слишком низкое напряжение, увеличивают vbat_scale; если завышает — уменьшают. Не «исправляйте» калибровку изменением vbat_max_cell_voltage: это порог, а не измерительный коэффициент.

4.30 В на экране — не рекомендация по зарядке: Для обычного LiPo ориентируйтесь на его паспорт (обычно до 4.20 В на ячейку); для LiHV возможен другой предел. vbat_max_cell_voltage — порог прошивки, а не настройка зарядного устройства.

Состояние питания: значения нового скриншота

В правом верхнем блоке [Состояние питания] показаны текущие данные, а не шесть дополнительных команд set. На новом снимке:

Строка GUIПоказаноЧто означает
[Подключено] Да (банок: 4) Контроллер сообщает, что батарея подключена и определены четыре ячейки (4S).
[Напряжение] 16,71 В Напряжение в сводном состоянии батареи; это не выставленное пользователем целевое значение.
[Израсходовано mAh] 46 мАч Накопленный расход с момента учёта, не ёмкость 1500 мАч и не остаток батареи.
[Ток потребления] 0,61 А Показание тока в сводном состоянии на момент обновления.
[Power Draw] 10,2 Вт Расчётная мощность по напряжению и току именно этого блока; отдельного датчика мощности нет.
[Voltage Drop] 0,49 В В этой версии GUI — разница между настроенным максимумом для четырёх ячеек и 16,71 В; это НЕ непосредственно измеренная просадка под нагрузкой.

Проверка двух вычисляемых строк по исходникам конфигуратора:

\[P = U_{\mathrm{state}}I_{\mathrm{state}} = 16{,}71\cdot0{,}61\approx10{,}2\,\mathrm{W}\]\[\Delta U_{\mathrm{GUI}} = n\,U_{\mathrm{max,cell}}-U_{\mathrm{state}} = 4\cdot4{,}30-16{,}71=0{,}49\,\mathrm{V}\]

Здесь 4,30 В — vbat_max_cell_voltage со скриншота, а не напряжение, измеренное «до нагрузки». Поэтому [Voltage Drop] не равен разнице между полями 16,80 В и 16,71 В.

Почему две панели на снимке дают разные числа: В [Датчик напряжения] → [Батарея] показано 16,80 В, а в [Датчик тока] → [Батарея] — 0,00 А. В [Состояние питания] при этом 16,71 В и 0,61 А. Конфигуратор запрашивает отдельные датчики и сводное состояние батареи разными сообщениями. По одному кадру нельзя установить причину расхождения или калибровать датчики по разности этих полей; сначала получите стабильные показания и сравните их с внешним измерением.
↑ К оглавлению

4. Датчик тока

Поля блока [Датчик тока] на скриншоте относятся к выбранному источнику current_meter = ADC. Калибровочные числа одной платы не следует переносить на другую.

Поле на скриншотеCLIПрактический смысл
[Масштаб] — 400 set ibata_scale = 400 Калибровка аналогового датчика тока. При нулевом смещении ток в коде прошивки обратно пропорционален масштабу: больший ibata_scale даёт меньшие показания.
[Смещение] — 0 мА set ibata_offset = 0 Компенсация нулевой точки датчика: при отсутствии нагрузки проверяйте показание тока.
[Ёмкость (mAh)] — 1500 set bat_capacity = 1500 Номинальная ёмкость для расчёта остатка и предупреждений по расходу; не изменяет измеренный ток и сама по себе не «калибрует» счётчик mAh.

От тока до израсходованных mAh

В отличие от вольтметра, ток измеряется не параллельно батарее: цепь измерения тока (например, шунт с усилителем или датчик Холла на плате) выдаёт напряжение, связанное с током. Оно поступает на отдельный вход АЦП. Прошивка пересчитывает его по [Масштаб] и [Смещение] в амперы, затем суммирует расход во времени и показывает [Израсходовано mAh]. На новом снимке в [Состояние питания] видно 0,61 А и 46 мАч, а отдельная панель [Датчик тока] → [Батарея] показывает 0,00 А. По одному такому кадру нельзя откалибровать масштаб или объяснить расхождение показаний; для калибровки нужна проверенная опорная величина.

Для current_meter = ADC исходник Betaflight 4.5.4 приближённо даёт:

\[I_{\mathrm{A}} \approx \frac{10\,U_{\mathrm{ADC,mV}}}{S_i} + \frac{O_{\mathrm{i,mA}}}{1000}\]

Что здесь означает каждое число: U_ADC_mV — напряжение сигнала датчика тока на входе АЦП в милливольтах (его получает контроллер, не вводит пилот); Si — значение ibata_scale; Oi — значение смещения ibata_offset в миллиамперах. Результат — ток в амперах. Например, масштаб 400 означает 40 мВ сигнала на 1 А: при нулевом смещении сигнал 400 мВ будет интерпретирован как 10 А. Чем больше масштаб ibata_scale при том же сигнале, тем меньше рассчитанный ток. Расход mAh — накопленный за время ток, не значение bat_capacity.

Пример калибровки тока ADC

Сначала проверьте нуль: когда через датчик ток не течёт, [Ток потребления] должен быть близок к нулю; при смещении нуля исправляйте ibata_offset. После этого сравнивайте масштаб с проверенным амперметром при известной нагрузке либо оценивайте его по полному циклу «полёт — зарядка». В учебном примере при ibata_offset = 0 полётник насчитал 1200 мАч, а зарядное устройство вернуло 1500 мАч; старый масштаб — 400:

\[S_{i,\mathrm{new}} \approx S_{i,\mathrm{old}}\frac{Q_{\mathrm{shown}}}{Q_{\mathrm{charge}}} = 400\cdot\frac{1200}{1500}=320\]
# set ibata_scale = 320
# save
Plain text

Меньший масштаб увеличивает рассчитанный ток и расход. После сохранения проверьте датчик снова. Сопоставление с зарядным устройством — приближённая проверка: нужен сопоставимый начальный и конечный заряд батареи, зарядка имеет потери. Не меняйте bat_capacity в попытке исправить показание [Израсходовано mAh]. Пример относится только к ADC, не к ESC или виртуальному датчику.

Направление калибровки ADC: При нулевом ibata_offset вычисление тока соответствует \(I_{\mathrm{ADC}}\propto 1/S\), где \(S\) — ibata_scale. Если полётник показывает меньше израсходованных mAh, чем зарядное устройство вернуло в батарею, ibata_scale для ADC нужно уменьшать, а не увеличивать.
У других источников иная калибровка: Для виртуального датчика используется ibatv_scale и другой способ расчёта; правило для ADC на него не переносите. Значения get current_meter и get ibata_scale позволяют проверить текущий выбор. В учебной практике ниже взята батарея 1300 мАч, отличная от показанных на скриншоте 1500 мАч.
↑ К оглавлению

5. Профили батареи

В свежих прошивках (ветка 2026.x) настройки батареи хранятся в профилях — так же, как PID в уроке 7. Внутри профиля лежат bat_capacity, пороги vbat_max_cell_voltage / vbat_min_cell_voltage / vbat_warning_cell_voltage, cbat_alert_percent и force_battery_cell_count.

# battery_profile 0
Plain text
В 4.4–2025.12 профилей батареи нет: Команда battery_profile появилась только в версиях 2026.x. Если она отвечает ###ERROR IN input: UNKNOWN COMMAND, TRY 'HELP' — это нормально. В вашей прошивке настройки батареи одни на весь полётник, и все параметры из этого урока (bat_capacity, vbat_min_cell_voltage и остальные) применяются сразу, без выбора профиля.
↑ К оглавлению

6. Практика

Задание 8.1 выполняется в CLI, задания 8.2 и 8.3 — расчётные, на калькуляторе.

Задание 8.1. Питание

Выполняется в CLI, полёт не требуется.

  • set battery_meter = ADC и set current_meter = ADC.
  • set vbat_max_cell_voltage = 430.
  • set vbat_warning_cell_voltage = 350.
  • set bat_capacity = 1300 (ваша ёмкость).
  • save.

Задание 8.2. Калибровка датчика тока ADC

Расчётное задание, аппарат не требуется.

  • Аналоговый датчик, current_meter = ADC, ibata_offset = 0. Полётник показал расход 1200 мАч, зарядное устройство вернуло 1500 мАч.
  • Текущее значение ibata_scale = 400.
  • Вычислите новое значение \(S_{\mathrm{new}}\) по формуле \(S_{\mathrm{new}} = S_{\mathrm{old}} \cdot \frac{Q_{\mathrm{shown}}}{Q_{\mathrm{charge}}}\). Почему новый масштаб меньше старого?

Задание 8.3. Время полёта

Расчётное задание, аппарат не требуется.

  • Батарея 1300 мАч, средний потребляемый ток 13 А, оставляем 20 % запаса.
  • Вычислите время полёта \(t\) по формуле \(t = \frac{k \cdot Q}{I}\), где \(k = 0{,}8\) — доля используемой ёмкости.
↑ К оглавлению

7. Проверьте себя

Сформулируйте ответ своими словами, прежде чем сверяться со справочником ответов (последняя статья курса).

  1. Почему напряжения задаются в сотых долях вольта?
  2. Как устроено измерение напряжения через АЦП и чем калибровать заниженное показание?
  3. Что такое ibata_scale и как исправить заниженный ток при current_meter = ADC?
  4. Где хранятся настройки батареи?
↑ К оглавлению

8. Чек-лист самопроверки

  • Знаю, что напряжения задаются в сотых долях (430 = 4.30 В)
  • Умею выбрать источник напряжения и тока: battery_meter, current_meter
  • Знаю, что такое ibata_scale
  • Проверил, есть ли в моей прошивке battery_profile (в 4.4–2025.12 её нет)
Результат: Все пункты выполнены — переходите к следующему уроку.
↑ К оглавлению

9. Что дальше

  • Предыдущий урок: 7. PID и Rates
  • Следующий урок: 9. Моторы и ESC
  • Полный перечень тем — в статье «Содержание курса».
↑ К оглавлению
  • мод. : Пятница, 09 октября 2026