Все эти компасы показывают правильно, когда находятся строго горизонтально
Я только недавно возился с электронным 3D компасом, оформленным в виде законченного устройства. Конкретнее - китайский BEWIS LEC315 (исполнение с RS485 интерфейсом).
У него есть режим калибровки, в котором его надо по заданной схеме прокрутить после выдачи команды вокруг осей, и он типа как запоминает все искажения магнитного поля и потом делает автокоррекцию на наклон и на влияние объекта. НО - пришедший экземпляр отказался отвечать на команды режима ручной калибровки из даташита, взятого с сайта производителя. Это из всех методов описанных в даташите был единственный приемлемый на практике для датчика, смонтированного на антенне. После знакомства в скайпе с техподдержкой и долгих разборок, выяснилось, что даташит сильно устарел (брал с их сайта месяц назад, перед тем как заказать на али) и мне прислали новый даташит. Совершенно по другому оформлемый и из которого исчезли все методы калибровки кроме двух, требующих вращения по осям - видимо для всяких дронов, смонтированных на калибровочных стендах. Что теперь делать с ним - не очень понимаю. Если только заводскую калибровку оставить, или закалибровать датчик отдельно и молиться чтобы антенна не сильно влияла...
Покрутил его с заводской калибровкой, предполагая что он стоит на буме антенны с приводом по азимуту и элевации - градусов до 20 по элевации еще похоже азимут кажет, а потом начинает нести его в сторону... При этом у него есть внутри и акселерометр, и угол элевации он всегда чует правильно (точнее оба угла наклона - pitch и roll в их терминах).