Барометр в Betaflight.

Барометры измеряют атмосферное давление для определения высоты. Они обладают высокой чувствительностью, реагируют на дыхание, и очень чувствительны к температуре. Как правило, они оснащены точными датчиками температуры для компенсационных расчетов.
Betaflight использует данные барометра для определения высоты аппарата относительно точки взлета и помощи в контроле высоты при функции GPS Rescue.
В большинстве случаев Betaflight должен автоматически обнаруживать барометр.
Барометры гораздо полезнее для измерения относительных изменений высоты, чем для измерения абсолютной высоты. Современные чипы барометров, такие как Infineon DPS368, могут обнаруживать очень малые изменения высоты (менее 10 см) с хорошим подавлением шума и обновлять значения с частотой 40 Герц.
Чип DPS310 значительно лучше старого BMP280, а DPS368 еще лучше. Клоны как DPS310, так и BMP280 широко распространены; они менее надежны или имеют худшую температурную компенсацию по сравнению с оригиналами.
Betaflight обнуляет данные барометра сразу после включения питания, поэтому показания высоты барометра становятся относительными к точке включения. При взведении двигателей (арме) значение нуля может быть скорректировано повторно.
Барометры, подверженные воздействию турбулентного воздуха (например, потоку от пропеллеров), будут выдавать очень зашумленные значения высоты. Обычная рекомендация — накрывать барометр мягкой пеной для уменьшения этой проблемы.
При активации двигателей и нахождении коптера на земле положительное давление между пропеллерами и землей может интерпретироваться барометром как отрицательная высота. Это разрешается при взлете.
ПримечаниеНе наносите защитное покрытие (conformal coating) на чипы барометров! Это может закрыть порт, через который они измеряют давление воздуха, вызывая неверные показания высоты, которые сильно дрейфуют при изменении температуры.
Подтверждение корректной работы барометра
- Сначала убедитесь, что барометр включен на странице Конфигурации (Configuration) в Конфигураторе (Configurator).
- Значок барометра вверху должен загореться. Это означает, что прошивка включает поддержку барометра и был включен подходящий драйвер.
- Большинство барометров включаются от USB, но некоторым требуется питание от литий-полимерного аккумулятора; если значок не загорается, снимите пропеллеры и проверьте, что происходит при подключении аккумулятора к разъему LiPo.
- Если значок барометра горит, перейдите на вкладку Датчики (Sensors) и выберите Барометр / Высота (Barometer) вверху. Вы должны увидеть показания высоты с барометра. Поднятие коптера или полетного контроллера примерно на 1 метр вверх и вниз должно показывать соответствующее изменение показаний высоты примерно на 1 метр. Наличие некоторого шума и задержки — это нормально.
Расширенная проверка
Режим отладки Baro возвращает:
Debug | Данные |
---|---|
0 | Состояние (во время инициализации) |
1 | Давление в гектопаскалях (hPa), абсолютное |
2 | Температура, сообщаемая барометром, градусы Цельсия × 100 |
3 | Оценка высоты только по барометру, в сантиметрах |
Эти значения можно записывать в лог или отображать на графиках во вкладке Датчики (Sensors) Конфигуратора. Проверьте точность показаний температуры: значение 2145 означает 21.45 градусов Цельсия. Если оно сильно неверно, чип, вероятно, является клоном DPS310, и его температурная компенсация может быть плохой.
Барометр против GPS для оценки высоты
И барометр, и GPS-модуль сообщают данные о высоте.
Барометры реагируют быстрее, чем GPS-модули, но могут быть более зашумленными. С другой стороны, если у GPS нет хорошего индикатора hDOP (горизонтальное размытие точности), оценка высоты по GPS может меняться на несколько метров в течение полета. Современные чипы барометров, например, DPS368, как правило, быстрее и точнее большинства GPS-модулей.
Метод DEFAULT для altitude_source "смешивает" оба источника вместе или, если доступен только один источник, использует то, что есть. Пользователь может принудительно выбрать BARO_ONLY или GPS_ONLY. Это позволяет решить, какой источник обеспечивает лучший контроль высоты при функции GPS Rescue.
Если инициировать GPS Rescue с высотой возврата, скажем, 10 метров над ровным полем, и наблюдать возвратный полет в прямой видимости (Line of Sight), стабильность контроля высоты и плавность снижения легко оценить визуально. Протестируйте с BARO_ONLY и GPS_ONLY. Если оба работают нормально по отдельности, протестируйте метод DEFAULT. Обычно DEFAULT дает наилучший результат.
Когда altitude_source = DEFAULT, пользователь может регулировать относительное влияние барометра и GPS на итоговое значение высоты.
Когда доступен GPS-модуль, Betaflight получает значение hDOP (горизонтальное размытие точности) от GPS. Оно оценивает точность оценки высоты по GPS. Мы используем hDOP для назначения внутреннего значения gpsTrust. Значение по умолчанию — 0.3, что означает: если барометр доступен, GPS учитывается только на 30% в показании высоты. Однако, когда значение hDOP указывает на точные GPS-показания, значение gpsTrust может достигать максимума 0.9.
Настройка altitude_prefer_baro в интерфейсе командной строки дополнительно изменяет значение gpsTrust, когда есть большая разница между двумя показаниями. При altitude_prefer_baro = 100 (по умолчанию) доверие к GPS не затрагивается, если разница между датчиками меньше 1 метра, уменьшается вдвое, если разница составляет 2 метра, и снижается до 1/5 от обычного, когда разница равна 5 метрам. При значении 50 нужна разница в 4 метра, чтобы доверие к GPS уменьшилось вдвое. При значении 0 оценка доверия к GPS не зависит от разницы показаний.
Следовательно, если доступны и GPS, и барометр, и altitude_source установлен в DEFAULT, относительный баланс между барометром и GPS зависит от:
- Оценки точности измерения высоты по hDOP GPS
- Величины разницы между показаниями
- Пользовательской настройки altitude_prefer_baro
Когда altitude_prefer_baro установлен на значение по умолчанию 100, показания барометра будут преобладать, если только погрешность не мала, а hDOP GPS не указывает на его точность. При более низких значениях altitude_prefer_baro относительное влияние GPS будет больше.
В общем, если у вас хороший барометр, особенно оригинальный Infineon DPS310 или DPS368 (и, вероятно, BMP280), вам следует принять значение по умолчанию altitude_prefer_baro = 100 и использовать метод смешивания DEFAULT.
Используйте отладку Altitude для детальной оценки показаний GPS и барометра:
Debug | Данные |
---|---|
0 | Значение gpsTrust |
1 | baroAltitude, сантиметры |
2 | gpsAltitude, сантиметры (сброшенная при взведении) |
3 | Вариометр (Vario) |
Поддержка барометра в прошивке
В Betaflight 4.5 и выше конфигурационный файл платы автоматически включает базовый код BARO и драйверы для тех чипов барометров, которые производитель использует на данной плате, тип интерфейса, используемые пины и так далее.
Вот почему в большинстве случаев барометр должен работать "из коробки".
Если в конфигурационном файле платы нет поддержки барометра, и вы хотите подключить внешний барометр, в Betaflight 4.5 необходимо вручную включить код BARO и необходимую поддержку драйверов в сборку вашей прошивки.
Это достигается (например, для барометра DPS310) путем ввода BARO_BARO_DPS310 в раздел Custom Defines вкладки Firmware Flasher Конфигуратора. Слово BARO включает базовый код барометра, а текст BARO_DPS310 включает код драйвера DPS310. Для BMP280 строка будет BARO_BARO_BMP280.
В версиях 4.4 и ранее весь код барометра и все драйверы включались во все сборки прошивки.
Подключение барометра к шине
Барометры почти всегда подключаются через интерфейс I²C, хотя некоторые используют SPI. Конфигурационный файл платы должен определять детали интерфейса/шины для барометра и используемые пины.
Полетный контроллер может иметь одну или две шины I²C ("устройства"). Конфигурационный файл автоматически устанавливает настройку baro_i2c_device для барометра.
На платах, где baro_i2c_device не определен, этому значению будет присвоен 0. Когда внешний барометр подключен вручную к интерфейсу I²C, пользователь должен вручную настроить параметр baro_i2c_device на шину 1 или 2, в зависимости от того, к какой шине подключен барометр.
Аппаратная поддержка барометра
Как упоминалось выше, в Betaflight 4.5 или выше драйверы для чипов барометров, используемых на плате, определены в конфигурационном файле. Драйверы для дополнительных или других чипов барометров должны быть добавлены вручную с помощью раздела Custom Defines вкладки Firmware Flasher Конфигуратора.
Каждый чип барометра имеет стандартный I²C "адрес". Некоторые барометры поддерживают альтернативные адреса, что иногда сбивает с толку автоматическое обнаружение.
По умолчанию настройка baro_i2c_address в Betaflight равна 0, и Betaflight будет искать поддерживаемые барометры по их стандартному адресу и подключаться к любому найденному барометру. Обратите внимание, что в версиях 4.5 и выше будут поддерживаться только те драйверы барометров, которые были встроены в прошивку.
Барометр | Стандартный I²C адрес (7 бит) | Примечания |
---|---|---|
BMP085 | 119 (0x77) | Тот же адрес, что и у BMP180 |
MS5611 | 119 (0x77) | Не распространен |
BMP280 | 118 (0x76) | Альтернативный - 119 (0x77), стандартный адрес BMP180 |
QMP6988 | 112 (0x70) | Не распространен |
DPS310 | 118 (0x76) | Альтернативный - 119 (0x77) (указан как стандартный в спецификации) |
SPL06 | 118 (0x76) | Клон BMP280, альтернативный - 119 (0x77) (может маскироваться под BMP180) |
BMP388 | 118 (0x76) | Тот же адрес, что у BMP280 и SPL06 |
2SMPB-02B | 112 (0x70) | Не распространен |
LPS22DF | 93 (0x5D) | Не распространен |
Если baro_i2c_address установлен на кастомное значение, Betaflight будет искать барометры, отвечающие только на указанный I²C адрес.
Команда интерфейса командной строки baro_hardware по умолчанию имеет значение AUTO, что означает, что Betaflight попытается автоматически определить правильный чип барометра. Хотя многие чипы имеют одинаковый I²C адрес, на одном I²C адресе в любой момент времени должен присутствовать только один барометр.
В некоторых случаях может потребоваться принудительно указать Betaflight использовать только драйвер для определенного чипа, например, когда вы точно знаете, какой чип используется. Например, set baro_hardware = DPS310 заставит Betaflight использовать драйвер для DPS310 (очевидно, этот драйвер должен быть включен в прошивку в версии 4.5 и выше).
Репозиторий Betaflight на GitHub содержит список всех поддерживаемых барометров и их драйверов, включая I²C адреса, по которым осуществляется поиск, и так далее.
Обратите внимание, что почти все чипы барометров имеют один и тот же I²C адрес. Если это не 118 (0x76), наиболее распространенной альтернативой является (редко) 119 (0x77).
Барометр не обнаружен
Если при настройке baro_i2c_address = 0 по умолчанию или при автоматическом обнаружении барометра поддерживаемый барометр не идентифицирован, возможные проблемы и решения включают:
Проблема | Решение |
---|---|
Барометр не включен на вкладке Configuration | Убедитесь, что переключатель для Baro установлен в положение 'on' |
Чип барометра питается только от LiPo | Проверьте при подаче питания на вход LiPo |
Значение baro_i2c_device (шины) неверно | Оно должно быть 1 или 2 и соответствовать физической шине, к которой припаян чип барометра |
Код драйвера для этого барометра не включен в прошивку | Дополнительные драйверы можно добавить с помощью раздела Custom Defines вкладки Firmware Flasher |
Адрес чипа барометра изменен (кастомный) | Попробуйте вручную настроить baro_i2c_address из списка выше |
На одном I²C адресе существует несколько драйверов и обнаружен неверный | Если вы точно знаете, какой барометр на вашей плате, установите baro_hardware на этот барометр |
Чип барометра неисправен или подключен неправильно | Проверьте подключение / замените чип |
Краткое описание команд интерфейса командной строки
Переменные интерфейса командной строки, связанные с барометром:
Переменная | Диапазон/Значения | Описание |
---|---|---|
baro_bustype | NONE, I2C, SPI | Задает тип шины, к которой подключено выбранное устройство барометра |
baro_i2c_device | 0 ~ Максимальный номер шины I²C для типа микроконтроллера (начиная с 1) | Задает номер шины I²C, к которой подключено устройство, когда baro_bustype = I2C. 0 означает "нет". Соответствует x в I2Cx |
baro_i2c_address | 0 ~ 119 (0x77) | Задает 7-битный I²C адрес устройства. 0 - специальное значение для "стандартного адреса драйвера". Значения 1 ~ 7 недопустимы |
baro_spi_device | 0 ~ Максимальный номер шины SPI для типа микроконтроллера (начиная с 1) | Задает номер шины SPI, к которой подключено устройство, когда baro_bustype = SPI. 0 означает "нет". Соответствует x в SPIx |
baro_hardware | NONE, AUTO, BMP280, MS5611, BMP085 | NONE = Поддержка барометра отключена. AUTO = Автоопределение. Остальные значения = явное указание устройства |
Если устройство подключено по SPI, вывод выбора микросхемы (Chip Select, CS) можно указать с помощью команды интерфейса командной строки resource
:
Имя ресурса | Описание |
---|---|
BARO_CS | Задает вывод CS для включения барометра на SPI |