реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> компас на LSM303
Alex_1811
сообщение Aug 31 2011, 13:08
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 178
Регистрация: 31-10-06
Из: Яблунець
Пользователь №: 21 821



Народ, кто нибудь делал компас на магнитометре LSM303?
Данные я с нее вычитал, а как рассчитать направление не знаю.
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Aug 31 2011, 16:50
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



QUOTE (Alex_1811 @ Aug 31 2011, 17:08) *
Народ, кто нибудь делал компас на магнитометре LSM303?
Данные я с нее вычитал, а как рассчитать направление не знаю.

А по google-ить , например так программа для компаса на LSM303


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
demaven
сообщение Sep 7 2011, 09:52
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 108
Регистрация: 10-05-05
Из: Киргизия Бишкек
Пользователь №: 4 886



Для вычисления азимутального магнитного угла необходимо сначала вычислить так называемый зенитный угол - угол между плоскостью ХОУ (или любой другой) этой микросхемы и вектором напряженности гравитационного поля земли (во какие умные слова еще помню), а затем вспомнить Клетеника, написать несколько формул и заставить контроллер посчитать по этим формулам. Вспомнить этот раздел аналитической геометрии оказалось несложно, читать еще не разучился
Go to the top of the page
 
+Quote Post
Alex_1811
сообщение Sep 7 2011, 09:59
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 178
Регистрация: 31-10-06
Из: Яблунець
Пользователь №: 21 821



Применил такую формулу:
NAVI.Roll = atan2(ACCEL.Y, ACCEL.Z);
NAVI.Pitch = asin(ACCEL.X / sqrt(ACCEL.X*ACCEL.X + ACCEL.Y*ACCEL.Y + ACCEL.Z*ACCEL.Z));

Xh = MAGNET.Y * cos(NAVI.Pitch) + MAGNET.X * sin(NAVI.Roll) * sin(NAVI.Pitch) - MAGNET.Z * cos(NAVI.Roll) * sin(NAVI.Pitch);
Yh = MAGNET.X * cos(NAVI.Roll) + MAGNET.Z * sin(NAVI.Roll);
NAVI.Heading = atan2(-Yh, Xh);

Азимут и тангаж считается верно, а направление нет.


Go to the top of the page
 
+Quote Post
demaven
сообщение Sep 10 2011, 02:49
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 108
Регистрация: 10-05-05
Из: Киргизия Бишкек
Пользователь №: 4 886



Не все понятно с терминологией, азимут есть угол между проекцией вектора магнитного поля земли на плоскость горизонта и направлением на северный магнитный полюс, угол измеряется от 0 до 359 с копейками градусов. Если есть азимут то причем тут направление? Если есть направление то вычислить азимут не проблема

обычный магнитный компас должен устанавливаться почти горизонтально, стрелка на острие иглы сама встанет в плоскость горизонта ("попендикулярно" вектору гравитации), электронный компас "умеет измерять" в любом положении.
Go to the top of the page
 
+Quote Post
Alex_1811
сообщение Dec 31 2011, 19:07
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 178
Регистрация: 31-10-06
Из: Яблунець
Пользователь №: 21 821



Цитата(demaven @ Sep 10 2011, 06:49) *
Не все понятно с терминологией

Ошибся. Крен и тангаж верно.
Go to the top of the page
 
+Quote Post
demaven
сообщение Jan 10 2012, 10:53
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 108
Регистрация: 10-05-05
Из: Киргизия Бишкек
Пользователь №: 4 886



крен и тангаж - это термины из авиации, ну их нафик. Будем по-простому. Необходимо найти угол между проекцией вектора магнитного поля на плоскость горизонта и направлением на север. Для этого необходимо знать уравнение плоскости горизонта в координатах LSM303. Исходим из того, что плоскость горизонта нормальна вектору гравитации, ну а дальше, учитывая что система координат магнитного компаса и акселерометра совпадает, все довольно просто. Делал это год назад, пришлось долго вспоминать аналитическую геометрию в пространстве, от туда все и вылазит. в задачнике Клетеника есть примеры задач, от которых нужно плясать
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th June 2025 - 03:25
Рейтинг@Mail.ru


Страница сгенерированна за 0.01401 секунд с 7
ELECTRONIX ©2004-2016