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



Ошибка компаса

Started by Axelcool, 17 августа 2016 - 11:29

# Somni

Somni
  • 202 сообщений

Posted 02 декабря 2016 - 02:46

Я поискал в Интернете и нашёл материалы, на основе которых построил теорию о параметре mod компаса. Lsb/gauss – чувствительность компаса, которая задаётся группой битов CRB7|CRB6|CRB5 в байте настроечного регистра B (CRB). Подробнее здесь http://avrproject.ru/publ/kak_podkljuchit/rabota_s_magnitometrom_hmc5883l/2-1-0-150

Lsb это те 3 бита, которыми контроллер компаса задаёт чувствительность gauss от Lsb (Lsb -> gauss). Получается, что mod компаса задаёт аппаратная часть квадрокоптера в зависимости от магнитной индукции магнитного поля Земли + электромагнитных помех + магнитных помех (векторная сумма с проекцией на орту). Контроллер компаса меняет значения задающих битов CRB7|CRB6|CRB5 таким образом, что чувствительность компаса изменяется от минимальной к необходимой.

Ассоциативный пример, имеется вольтметр с регулируемым диапазоном измерения: 500V-1000V; 200V-500V; 100V-200V; 50V-100V; 10V-50V; 1V-10V. Нам нужно замерить напряжение на определённом элементе электрической цепи. Не известно в какие рамки входит напряжение. Выставляем диапазон наибольших значений напряжения 500V-1000V на вольтметре и подключаемся к электронной цепи в нужное место. Стрелка вольтметра не шевелится, тогда понижаем диапазон измеряемых напряжений вольтметра на одну ступень до 200V-500V смотрим на стрелку – она не шевелится. И так понижаем диапазон на 1 ступень, пока стрелка вольтметра не отклонится и не покажет напряжение. Например, как выставили диапазон 50V-100V стрелка сдвинулась с нуля и показала 5. Значит напряжение 75V между заданными точками цепи.

Вернёмся к компасу квадрокоптера, здесь диапазоны напряжений – это режим работы компаса mod, а вместо человека, который следит за стрелкой и понижает диапазоны по одной ступени служит контроллер компаса. Изначально контроллер выставляет минимальную чувствительность компаса путём присвоения битам CRB7|CRB6|CRB5 следующих значений 111, что соответствует минимально возможной чувствительности компаса 230. После этого контроллер ожидает от компаса информацию о значении индукции поля. Контрллеру приходит информация, что при чувствительности 280 индукция не обнаруживается или имеет бесконечно малое значение. Тогда контроллер компаса чуть повышает чувствительность датчика компаса на 1 ступень 110 -> 330. Компас переключил режим mod 330 померил индукцию окружающего поля, опять ничего не нашёл, прислал значения X Y Z по нулям. И так далее, контроллер повышает чувствительность датчика компаса, пока с датчика не придут значения индукции окружающего компас магнитного поля не равные нулю. Например, контроллер подал в регистр B 001 -> mod 1090 и получил следующие значения X -100 Y129 Z54. Контроллер перестаёт менять режим и передаёт снятые показания дальше на обработку в главную плату коптера. А пользователь через приложение увидел значение mod и сделал вывод, о индукции магнитного поля Земли. Величина индукции поля Земли такова, что её компас ловит в благоприятном диапазоне режимов mod от 1400 до 1600. Если отображаются в приложении значения mod меньше, то значит, что есть дополнительный источник электромагнитного/магнитного поля сонаправленный с полем Земли, если больше – то противонаправлены вектора магнитной индукции от источника помехи и от магнитного поля Земли в точке съёма показаний компасом (гашения поля Земли в конечной точке съёма). То есть контроллер увеличивает множитель (mod), чтобы компас разглядел результирующий вектор магнитного поля: от источника помех + от Земли.

Это мои догадки о параметре mod. Верны ли? Согласны ли Вы с такой трактовкой mod?


  • 0




Яндекс.Метрика

Сайт работает на хостинге FASTVPS