Перейти к содержанию
    

Цифровой компас HMC5843.

Добрый день.

Решил применить в приборе 3-х оcевой цифровой компас HMC5843 от Honeywell. http://www.honeywell.com/sites/servlet/com...85-D9D84941499D

Купили отладочную плату HMC5843-DEMO с установленным компасом HMC5843, акселерометром KXPS5-2050 (Оба на I2C интерфейсе), I2C в UART на мкр-ме SC18IM700, и UART в USB на мкр-ме CP2102. Плюс диск с софтом. Подключил, откалибровался и тут меня ждал шок. Показывает черти что... Т.к. на месте калибровки было много метала, что даже обычный компас в комнате показывал несколько Северов, взял платку и ушел с ней и ноутом в лес, где не должно быть помех.

Откалибровался, все равно измерения колбасит. Т.е. при одинаковом расположении платы, может показать Восток или Запад... Север достаточно четко берет, Юг почти никогда не показывает (максимум Юго-Запад, Юго-Восток). При этом измерения на неподвижно размещеной плате достаточно сильно дергаются (в пределах 45градусов).

Т.к. Железо и софт от Honeywell(врядли барахло продает) и должно работать, то остается, что я неправильно калибровку провожу (хотя я уже по разному крутил платку).

С электронными компасами дела не имл до этого.

 

Вопрос №1. Поиск по форуму показал что многие успешно применяют электронный компас, и несколько ссылок на HMC5843 на форуме я нашел, однако не нашел отзывов о качестве его работы. Подразумеваю, что оно соответствует заявленному, но уточню. Кто применял HMC5843 каков Ваш вывод о его работоспособности и соответсвию заявленных характеристик?

Вопрос №2. Как калибровать? В комплекте с платой шел софт, с возможностью калибровки как акселерометра (он работает нормально), так и компаса. Калибровка сводится в кручению платы в трех осях. Относительно вертикальной оси (Up) против часовой, относительно оси направления платы (Forward) по часовой, относительно бокового направления (Left) по часовой стрелке. После софт вычисляет поправки и прописывает их в компас. Этого достаточно?

Вопрос №3. Даже если я неправильно откалибровался и направление указанные не соответствуют истине, то повторяемость результатов измерения должна была быть? т.е. Стрелка виртуального компаса(в софте) должна показывать направление однозначно( может и неправильное, но стабильное), в нескольких измерениях и при одинаковом ориентировании платки.

HMC5843_Demo_Guide.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поразбирался с платой.

Нашел более толковое описание http://www.mikrocontroller.net/attachment/...ide5843revB.pdf. Вывод, глючит программа идущая в составе демо-платы. Вывод основан на следующим. Если посмотреть график, что строит программа HMC5843_Demo_Guide.pdf (стр.6, слева, поле Magnetometr). И сравнить с графиком какой принимать должны по оси Х и Y (стр.4 DesignGuide снизу), то они совпадают, т.е. направление компас показывает точно и повторяемость результатов есть (даже когда рядом много железа, правда и калибровался компас в этих условиях), при этом “виртуальный компас” в программе (стр.7 Demo_Guide сверху), который должен выдавать направление, так же глючит и не может указать направление (плата размещалась горизонтально). Так же форма сигнала от осей X и Y сильно искажается в зависимости от угла наклона микросхемы. В DesignGuide указано как учитывать углы наклона по осям направление\боковая ось. Соответственно

X’ = X cos φ + Y sin θ sin φ – Z cos θ sin φ

Y’ = Y cos θ + Z sin θ

Направление = arctan ( Y’ / X’ )

φ и θ данные об уровне наклона относительно направлений вперед и влево, берутся с помощью акселерометра. ((стр.13 DesignGuide ) X, Y, Z соответственно компас выдает. Арктангенс могу взять и таблицу значений тогда не придется строить по моему.

Не совсем понятен вопрос о цели калибровки. Она нужна для определения минимума\максимума функций или для учета влияния помех от магнитных материалов размещенных рядом с компасом? При одинаковом ориентировании на Север, (но в разных географических точках) размах функции будет изменяться? Данный момент для меня имеет принципиальное значение т.к. прибор каждый раз нельзя крутить по трем осям при включении (географически прибор можен находиться в разных точках).

 

Погрешность в измерении направления в 10 градусов меня вполне устроит...

 

Вопрос:

1) Можно ли обойтись без акселерометра (при этом не создавая огромной матрицы табличных значений)?

2) Действительно ли необходима калибровка, для определения максимума\минимума функций синуса\косинуса, т.е. кручение компаса по 3-ем осям? Или же калибровка необходимо что бы учесть влияние от магнитных материалов?

3) Правильно ли я понял работу компаса и главное как вычислять действующее направление?

DesignGuide5843revB.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну как разобрались с HMC5843, проблем с ним нет? я тож хочу его использовать. :rolleyes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Насколько я помню по более старому компасу (Hmr-3000 по-моему), калибровка была необходима для учета влияния конструкции, в которую встроен компас. Т.е. если девайс носимый, крутите его в предполагаемом корпусе в предполагаемом окружении, если стационарный на авто/судне, устанавливаете на борт и крутите борт (в горизонтальной плоскости, понятно)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Имею дело с HMR3300. Ведет себя нормально, тока надо следить чтобы он не попадал в сильное э\м поле и корпус был сделан из немагнитного материала.

Изменено пользователем swagger

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Имею дело с HMR3300. Ведет себя нормально, тока надо следить чтобы он не попадал в сильное э\м поле и корпус был сделан из немагнитного материала.

Добрый день, прочитал, что вы используете сабж, у меня есть вопрос по калибровке можете помочь?

Суть в следующем при повороте устройства в трех плоскостях мы получаем набор коэффициентов:

Xoff

Yoff

Zoff

Xsf

Ysf

Zsf

 

причем каждого коэффициента получается две штуки, отсюда возникает вопрос каким образом их сводить вместе?

Т.е. в идеале мне нужны только по одному коэффициенту чтобы можно было провести коррекцию исходных данных от магнитометра по формулам:

X= Xraw*Xsf+Xoff

Y= Yraw*Ysf+Yoff

Z= Zraw*Zsf+Zoff

,где Xraw,Yraw,Zraw - сырые данные от магнитометра.

 

Поделитесь каким образом вы поступаете?

Данные об углах наклона у меня есть (на плате стоит акселерометр).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Изменено пользователем swagger

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Доброе время суток.

Отталкиваясь от начала. Отладочная плата от Honeywell так толком и не заработала. Решили свою сделать:). Сделали и сейчас времени немного появилось им заняться.

Сделали платку с компасом HMC5843 и акселерометром LIS331DL.

Оба по I2C читаются. И компас север и юг нормально понимает(в горизонтальном положении и понимаю их только я), а вот запад и восток путает... Начал приводить данные к нормальному состоянию.

Т.к. нужны данные об угле тангажа и крена, начал с интерпретирования данных с акселерометра.

Расчётный угол тангажа на сколько я понял равен arctg(x/z), а крена arctg(y/z).

Данные в дополнительном кодес акселерометра лежащего на поверхности стола (рядом комп, более железа нет).

плата лежит горизонтально.

Data X=7

Data Y=f9

Data Z=15

 

плата стоит вертикально

Data X=15

Data Y=f9

Data Z=7

 

плата стоит на левой грани (под углом 90градусов к столу)

Data X=7

Data Y=eb

Data Z=7

 

и вот вопрос как мне получить угол тангажа и а крена?

Через arctg(x/z), arctg(y/z)?

нужно ли как нибудь нормировать данные с акселерометра прежде чем брать арктангес?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Калибровать надо. КОмпас должен знать когда максимум а когда минимум, чтобы растянуть получаемые с датчиков значения на шкалу 360*.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да получается что до компаса мне еще данные с акселерометра нужно как то интерпретировать...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да получается что до компаса мне еще данные с акселерометра нужно как то интерпретировать...

Вроде в HMC6343 эта проблема уже решена.

хотя с направлениями тоже врет иногда безбожно :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Меня тоже очень интерессует вопрос, какие проблемы будут если использовать сей компас без акселерометра. Судя по формулам это дась ошибку в направлении до знака, тоесть возможно что фактически будет показано направление противоположное настоящему...

Кто имеет опыт пожалуйста поделитесь. У меня задача сделать обратную связь для PTZ камеры, компас на борде есть а акселерометра нет...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Меня тоже очень интерессует вопрос, какие проблемы будут если использовать сей компас без акселерометра. Судя по формулам это дась ошибку в направлении до знака, тоесть возможно что фактически будет показано направление противоположное настоящему...

C чегобы это? Если Вы откалибруете матнитометр в плоскости, в которой будет крутится платформа, то все будет нормально. Достаточно двухосевого датчика. (если ни одна из осей не направлена вертикально).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В данный момент пытаюсь откалибровать HMC5843. В качестве первой итерации повращал датчик в плоскости горизонта и посчитал масштабный коэффициент и смещение, вроде бы получил более-менее результат приемлимый. Но погрешность у него все равно примерно 2-3 градуса и масштабным коэффициентом не выправился эллипс из-за мягкого железа. Но как только даю небольшой крен-тангаж - курс начинает врать. Это я так понимаю из-за некалиброванной вертикальной оси. Пока еще не успел все документы прочитать, приведенные на форуме. Хочу сказать спасибо за руководства по разработке, я их почему-то найти не мог в инете.. По Хонивеловской демо- программе при калибровке вроде бы плата должна вращаться в трех плоскостях, только потом производится расчет, но получается, как уже было сказано выше, по паре коэффициентов и по паре смещений для каждой плоскости, как их выбирать пока не понял.

По таким формулам я калибровался в горизонте. Я их нашел в какой-то документашке от Хонивела:

Скорректированное значение с датчика Xcorr = Xscale*Xmeas + Xoffset;

Xscale = 1 or (Ymax - Ymin)/(Xmax-Xmin) что больше;

Xoffset = [(Xmax-Xmin)/2 - Xmax]*Xscale;

Вот еще вспомнил - есть у меня gps-навигатор Гармин, у него компас встроенный тоже калибруется последовательными вращениями по каждой оси. При этой процедуре после каждого вращения прибор говорит, что калибровка удалась (или нет) и, если удалась, позволяет перейти к вращению по другой оси. Получается что расчет коэффициентов производится последовательно, а у Хонивела в программе - сначала все вращения, а потом расчет.. Может есть какие-то конкретные руководства с формулами как калибровать 3-х осевые магнитометры?

Изменено пользователем Andrew-S

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...