Компас «Лазаря»: разбираемся с модулем QioTek RM3100-CAN
Продолжаем восстановление борта Лазарь. После бортовой электрики дошли до компаса. На луче стоит напечатанная на принтере коробочка с модулем QioTek RM3100-CAN и сенсором PNI RM3100.
RM3100 построен на магнитоиндуктивной технологии, это не эффект Холла. Разрешение 10 нанотесла, на порядок лучше типовых магнитометров. Но интересное тут поведение под нагрузкой. Сенсор почти не плывёт от полей моторов и силовых проводов. По замерам, которые удалось загуглить, он в 5-7 раз менее шумный, чем распространённый LIS3MDL, причём в том числе когда моторы стоят на полном газу. Для борта с батареей 12S на 75 ампер-часов и токами в сотни ампер это обязательно условие. Связь с полётником по DroneCAN на 1 Мбит/с, питание 5 В приходит прямо по шине, вес модуля 7 граммов.
Посмотрим Parameters List и сколько компасов работает на борту одновременно. В памяти полётника откалиброваны три компаса, а реально работает только один. COMPASS_ENABLE=0: встроенный компас Cube отключён полностью. COMPASS_USE2=0 и COMPASS_USE3=0 - ещё два компаса имеют сохранённые калибровки, но выключены. Приоритетный идентификатор COMPASS_PRIO1_ID расшифровывается как DroneCAN-узел номер 125, это и есть наш RM3100 на шине CAN1. А второй идентификатор указывает на компас класса IST8310 на шине I2C, тот самый, что обычно ставят на GPS-модули. При последнем включении он не обнаружился, хотя калибровки от него остались в параметрах. Возможно, борт когда-то летал с компасом на GPS-модуле или тестировался при сборке, потом его сняли и перешли на выносной RM3100 по CAN. Параметры помнят старое железо, и по ним можно читать историю переделок борта.
Что проверить при восстановлении Лазаря. Разъём GH1.25 на плате мелкий и хлипкий, обрыв одной жилы даёт плавающий курс, который выглядит как мистика. Стрелка на плате должна смотреть вперёд по ходу движения, при монтаже на луч не перепутайте направление. Питание модуль берёт по шине. Из параметров в первую очередь смотрим три. CAN_P1_DRIVER=1 и CAN_D1_PROTOCOL=1, без них шина просто молчит и компас не появится. Дальше COMPASS_PRIO1_ID, он должен указывать именно на узел компаса. Если на CAN висит несколько устройств, у каждого свой идентификатор узла, и конфликт номеров даст зависания телеметрии, в нашем дампе компас живёт на узле 125. COMPASS_ORIENT оставляем в нуле - у CAN-компаса ориентация задаётся в самом узле, а не в полётнике, это частая ошибка при переносе привычек с обычных магнитометров. COMPASS_ENABLE=0 здесь норма, встроенный компас отключен. И обратите внимание на COMPASS_MOT: в этом борту он нулевой, компенсацию моторами не настраивали, обошлись выносом сенсора на луч подальше от силовой разводки. Если ваш борт после сборки держит курс криво, а компас стоит близко к проводам, вот вам и ответ, где может быть проблемма.
Калибровка, когда всё собрано и проверено. Убираем от рабочего места металл, ключи, отвёртки, батарейку из кармана. Дальше стандартная процедура в Mission Planner: борт вращаем по всем осям через шесть положений, полётник сам соберёт офсеты и радиусы эллипса. После калибровки обязательная проверка на земле. Курс в HUD должен совпадать с фактическим направлением носа, крутим борт по кругу и смотрим, что расхождение не уходит дальше пары градусов. Если хочется выжать максимум на тяжёлом борту, есть CompassMot, но это отдельная процедура на железном столе, и перед ней обязательно снимаем пропеллеры, без вариантов. В конце сохраняем параметры, перезагружаем полётник и убеждаемся, что компас поднялся на своём узле и магнитное склонение пересчиталось само - COMPASS_AUTODEC здесь включён.
Благодаря помощи участника нашего сообщества удалось быстро подготовить 3D модель луча для установки компаса - скачать.
Полный дамп параметров борта, разбор электрики со схемой был в прошлом посте.
Post #137431
592




