Магнитный компас для картплоттера своими руками

Arduino.ru

Магнитный указатель курса (с компенсацией наклона) для картплоттера

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

Появилось время, я сделал макет своего магнитного указателя, и поженил его с Garmin Echomap chirp 73SV.

Макет сделан на Arduino UNO , будет работать и на других платах. На куске полистирола приклеил магнитометр HMC5983 и MPU 6050 для измерения гиро и ускорения. Магнитометр на точном поворотном устройстве отцентровал (офсет X ,Y). Получилось достаточно точно. На 360 градусов поворота поворотного устройства, разница показаний магнитометра и поворотки была не более 1 градуса, при том, что на моей широте магнитные линии падают под углом около 60 градусов. Затем в софте добавил MPU6050 для компенсации наклона, и это очень хорошо работает до наклона 45 градусов. Что я увидел? Все работает. Есть особенности.

1.Пробовал разные скорости (4800 и 38400) и разный интервал передачи данных ( от 1 до 10 ГЦ) в картплоттер. При любых комбинациях часть NMEA предложений на странице диагностика связи прибор пропускает часть сообщений как сообщения с неверной контрольной суммой, хотя с этим все в порядке. Пока не понял причину. Возможно это нормально, т.е. так устроен софт прибора.

2. Пробовал разные фильтры использовать (и калмана тоже библиотечного ардуиновского). Не нравиться, и не проходит тест на стресс. Начинаю свой указатель быстро крутить/вертеть/стучать/кидать и происходит глюк или переполнение фильтра. Поэтому использовал программный фильтр, который использую при аналоговых измерениях. Он меня устраивает.

3. У Garmin для подключения NMEA 0183 нет диф.пары. У него RX/TX(-) соединяется с минусом питания. Синий провод передает данные из картплоттера, коричневый — принимать данные. Но сигнал логики на RX нужно инвертировать. Это легко делается использованием библиотеки и указать при объявлении единичку после номеров пинов. Это приводит к инвертированию логики на данном сериал порте. Вот примерно так SoftwareSerial GarminSerial(2, 3, 1); // RX, TX ,Logic_Inv

4. При таком подключении прибор нормально принимает сигнал от ардуины с логикой 3.3В. А значит можно использовать платы типа PRO MICRO 3.3V.

5. Разные экраны/режимы работы картплоттера с разной скоростью отображают изменения показаний от магнитного указателя курса. Экран «окружающая среда» очень быстро реагирует на поворот датчика, т.е. практически не отстает от него. Экран «Данные» и «Карта» отображают изменения медленно, ступенчато. Причем вращение карты иногда идет быстрее , чем изменение показаний направления в цифрах. Вращение карты без рывков, скорость поворота приемлемая.

Источник

Магнитный компас для картплоттера (Просматривают: 5)

Rezak

Не понимаю практического смысла в особой точности компаса — лодку крутит ветер и течение, погрешность самого gps 3-5 m в идеальных условиях. Перемещение в лодке от места установки gps — еще несколько метров в зависимости от ее размера. Угол в 10 градусов даст сектор разброса заброса на расстоянии 20 метров в 3м. А уж схематичное отображение лодки на экране эхолота вообще молчу. Чем мне поможет точное знание направления?
Я в дополнение к курсовому на виду держу обычный магнитный — только для того, чтобы угол на точку проще представить, когда нет ориентира на берегу.

Я три сезона с компасом. Собран на базе lis3mdl, хоть и комбы, но в итоге от гироскопа и акселерометра отказался в виду полной бессмыленности. И код фильтра тоже переписал на простой медианный. Единственное — ардуинку запитал не напрямую с аккума, а через внешний регулятор — сразу стабильность показаний улучшилась.
Живет на борту лодки в пластиковой банке из под крема, держится на силиконовой липучке.
Сделал только для себя, ни за какие никому делать не буду.

KingIII

Rezak

Случайно — приятель отсыпал, т.к. прислали не 5, а 50 шт , а я как раз в тот момент эскпериментировал с датчиками и кодом.

Я про практику. Про гироскроп — в движении есть курс gps, да и разница в моем случае максимум 10 градусов. В статике еще меньше, даже на волне. Для ориентирования более чем достаточно. Вы же на картинку в навигаторе смотрите, там там точности вообще никакой — не оптический прицел. найти коряжку в 20 метрах — хватает, а когда ловишь на эхолот смотреть некогда, не зачем и возможности нет.

Читайте также:  Курятник шалаш своими руками

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

Источник

Магнитный компас для картплоттера (Просматривают: 5)

KingIII

Подключение внешнего GPS + компаса по протоколу НМЕА0183 к эхолоту Elite 7TI. По следам NIKO77.

Напишу вкратце, что получилось. Подробнее с картинками позже.
Компоненты:
1. Arduino Nano 3.0 — микроконтроллер на безе ATMEGA328P
2. Ublox NEO M8N — GPS+компас
3. LM2596S DC-DC 1.5В-35В — регулируемый преобразователь питания.
4. RS485 Board (3.3V) — плата интерфейса для подключения к RS422 эхолота.
5. GY-282 HMC5983 — отдельная плата компаса.

Все устройства запитываются напряжением 3.3В. GPS Ublox-а сразу имеет выход НМЕА0183, что удобно, по сути нужно просто считывать НМЕА посылки и транслировать их на выход Ардуино без какой либо обработки. Это примитивнейшая программа, кто мало-мальски знаком с программированием сделают без проблем.
Компас подключается по интерфейсу I2C. У меня компас в Ублоксе не заработал, купил отдельную плату компаса (п.5), с ней проблем не возникло. В нашем случае данные компаса нужно приводить к посылкам НМЕА. Примеры в интернете есть.

Что касается моего вопроса по поводу настроек эхолота что бы он увидел внешние данные. Спасибо всем, кто объяснил как должно было быть!

И сам убедился, в том, что если на входе эхолота на входах Rx+ и Rx- есть правильные НМЕА посылки, то в списке устройств появляется устройство NMEA0183 Port 1 (естественно при правильных уровнях сигналов), можно посмотреть какие данные устройство получает (список параметров).

У меня был косяк в том, что на преобразователь RS485 Board (3.3V) по ошибке подали напряжение 2В (не туда запаялись на Ардуинке), уровень сигнала был недостаточным, по этому эхо не видел данные. После правильного подключения эхолот сразу все увидел. Проверил на скоростях передачи данных 9600, 19200 и 38400.

На данный момент эхолот видит внешние спутники, всего 12шт. Как я понял это максимум для него или отображает лишь 12, хотя всего Ублокс ловит дома порядка 16-18 спутников. Родной GPS ловит 9 спутников. На родном GPS скачки по 20-30-40 метров в стороны, на внешнем точность позиционирования намного выше.
Данные компаса тоже видит, но пока всё по отдельности (GPS и компас). Нужно замекшировать в Ардуине данные спутников и данные компаса и выдавать в эхолот.

Еще такой момент, при выборе источника GPS данных предлагается выбор на все данные, т.е. нельзя сделать так, что данные GPS берутся с внутреннего источника, а данные компаса с внешнего источника. По этому просто компас по НМЕА0183 не прикрутить. Т.е. прикрутить-то можно, но будет либо родной GPS без компаса, либо внешний компас, но без GPS. Пока всё.

Источник

Магнитный компас для картплоттера (Просматривают: 5)

KingIII

Вложения

Niko77

Наконец-то пришел домой раньше 2-х ночи и сил хватило добраться до компьютера, а тут столько интересного!
Если завтра сдадим объект, то день отсыпаюсь и берусь за продолжение банкета с компасом, там по большому счету на пару дней довести до удобоваримого вида меню настроек осталось. Как говорится — держите кулачки

Внешний GPS + магнитный компас для Lowrance Elite 7TI. Подключение по протоколу НМЕА0183.
Начало тут http://www.rusfishing.ru/forum/showpost.php?p=9042994&postcount=196

Компас постепенно приобретает законченный вид, как внешне (запаял более-менее культурно, хотя паяльщик из меня не очень, да и мелкое блин всё), так и внутренне (программно).

Pith\Roll — это да. Скорее акселерометр/гироскоп нужен для ROT (rate of turn — угловая скорость поворота), чтобы рассчитывать упреждение для автопилота и т.п.

Всем хорошего дня!

Niko77

Ночь, птички поют. Только холодно

Чудо опять свершилось. Компас v1.0 еще сырой, но уже полностью работоспособный и, надеюсь, удобный для использования.

XLoader.zip.doc — убрать .doc и распаковать. Или сразу распаковать 7zip.

Xloader- загрузчик.
Niko77_compass_v1.0.hex — прошивка.
Краткая_инструкция_пользователя_NMEA_компаса_без_гиростабилизации_от_Niko77.pdf — инструкция.

Сил нет расписывать — позже обязательно подробно всё распишу, по идее всё есть в инструкции.
Кратко:
— поддержка HMC5883L и HMC5983, в том числе на шилдах MPU6050;
— настройка и калибровка с компьютера через USB порт;
— пока без калибровки «на воде» и без гиростабилизации.

Читайте также:  Кровать 140х200 сделать своими руками

Проверено на Ардуино Nano v3 с подключенными: MPU6050 с HMC5883L на борту, а также на отдельных HMC5883L и HMC5983;

Цепляем плату с компасом:
GND Ардуины на GND компаса
A4 Ардуины на SDA компаса
А5 Ардуины на SCL компаса
Питание 3.3 и 5 в не попутать только, а то шилды всякие бывают, есть на 3.3, есть на 5.

Заливаем прошивку в ардуину, подключаем к терминалу на 9600 и наслаждаемся. Русского в меню нет из соображений кроссплатформенности.
Замечания и предложения в студию.

Источник

Цифровой компас на основе Arduino и магнитометра HMC5883L

Мозг помогает человеку достаточно хорошо ориентироваться в окружающем пространстве. К сожалению, у роботов человеческого мозга нет, поэтому им нужно каким-либо другим образом «чувствовать» свое направление движения чтобы они могли автономно передвигаться по новой для них местности. Для преодоления этой проблемы роботы используют множество разнообразных датчиков, однако чаще всего для этой цели используется магнитометр, который может информировать робота в каком направлении он передвигается (или развернут лицом). Это помогает роботу не только чувствовать направление движения, но и давать ему команды для поворота на заранее определенный угол или в определенном направлении.

В этой статье мы рассмотрим как работает магнитометр и как его подключить к плате Arduino. На основе магнитометра и платы Arduino мы спроектируем цифровой компас, на котором горящий светодиод будет указывать направление на север. Схему компаса мы распаяли на печатной плате, изготовленной в компании PCBGOGO.

Необходимые компоненты

  1. Плата Arduino Pro mini (купить на AliExpress).
  2. Магнитометр (Magnetometer sensor) HMC5883L (купить на AliExpress).
  3. Светодиоды – 8 шт. (купить на AliExpress).
  4. Резисторы 470 Ом – 8 шт. (купить на AliExpress).
  5. Разъем типа Barrel Jack.
  6. Изготовленная печатная плата.
  7. FTDI программатор.
  8. Компьютер/ноутбук.

Что такое магнитометр и как он работает

Надеемся, что слово магнитометр не ассоциируется у вас с мутантом по имени «Магнето» из популярной киноэпопеи «Люди Х» – но он там был реально крут, не правда ли? ))

На самом деле магнитометр представляет собой устройство, которое может ощущать («чувствовать») магнитные полюса Земли и указывать направление к ним. Все мы знаем что Земля представляет собой огромный сферический магнит с северным и южным полюсами. Естественно, этот огромный магнит создает магнитное поле. Магнитометр улавливает (ощущает) это магнитное поле и на основании направления этого магнитного поля он может определять направление (в котором мы смотрим или развернуты лицом).

Как работает датчик (магнитометр) HMC5883L

Датчик (магнитометр) HMC5883L содержит в своем составе микросхему HMC5883L от компании Honeywell. Эта микросхема содержит внутри себя 3 магниторезистивных материала, которые упорядочены (ориентированы) по осям x, y и z. Количество тока, протекающего через эти материалы, чувствительно к магнитному полю Земли. То есть, измеряя изменения в токе, протекающем через эти материалы, мы можем обнаруживать изменения в магнитном поле Земли. В дальнейшем эти изменения можно передать любому микроконтроллеру (например, плате Arduino) по протоколу I2C.

Поскольку показания данного датчика основаны на величине магнитного поля, то на них в значительной степени будут влиять расположенные рядом металлические предметы. Поэтому иногда данные датчики используются в детекторах металла. Но если вы будете использовать магнитометр в составе компаса следите чтобы рядом с ним не было крупных металлических предметов, иначе показания компаса будут неправильными – надеюсь, все помнят фильм про пятнадцатилетнего капитана и как его обманули с показаниями компаса.

Разница между HMC5883L и QMC5883L

Некоторые поставщики радиодеталей продают датчики QMC5883L (они изготавливаются той же самой компанией Honeywell) вместо HMC5883L поскольку QMC5883L стоят дешевле. Печальная новость здесь состоит в том, что работа этих двух датчиков немного отличается и один и тот же программный код не будет работать с обоими этими датчиками. Поэтому и адрес в протоколе I2C у них будет различный. Код программы, приведенный в нашей статье, будет работать только с QMC5883L – он более дешевый и его проще достать.

Чтобы узнать какая модель датчика у вас, HMC5883L или QMC5883L, посмотрите поближе что на нем написано. Если на нем написано что то вроде L883, то это HMC58836L, а если написано что то вроде DA5883, то это QMC5883L. Внешний вид обоих этих модулей показан на следующем рисунке.

Работа схемы

Схема цифрового компаса на основе платы Arduino и магнитометра HMC5883L представлена на следующем рисунке.

Читайте также:  Корова своими руками самому

Как видите, схема достаточно проста. Нам просто необходимо подключить датчик HMC5883L к плате Arduino и соединить 8 светодиодов с контактами платы Arduino Pro mini.

Магнитометр HMC5883L имеет 5 контактов. Его контакт DRDY (Data Ready) мы не будем использовать поскольку в нашем проекте датчик будет работать в непрерывном режиме. Контакты Vcc и ground (земля) датчика используются для питания модуля от платы Arduino. Контакты SCL и SDA используются для связи по протоколу I2C и подключены к контактам A4 и A5 (которые также являются контактами для связи по протоколу I2C) платы Arduino Pro mini. Поскольку контакты датчика имеют внутренние подтягивающие резисторы, то нет необходимости добавлять в схему внешние подтягивающие резисторы.

Для индикации направления в проекте мы используем 8 светодиодов, подключенных к контактам платы Arduino с помощью ограничивающих ток резисторов сопротивлением 470 Ом. Схема запитывается от батарейки 9V через переходник типа barrel Jack – на фотографиях хорошо видно что он из себя представляет. Эти 9V попадают на контакт Vin платы Arduino, затем с помощью встроенного регулятора платы Arduino это напряжение понижается до 5V, которое и используется для питания нашей схемы.

Изготовление печатной платы для цифрового компаса

Основная идея проекта состоит в том, чтобы расположить 8 светодиодов по периметру круга на плате. Каждый из этих светодиодов будет обозначать свое направление. Соответственно, будет 8 направлений – Север, Северо-Восток, Восток, Юго-Восток, Юг, Юго-Запад, Запад и Северо-Запад. На перфорированной плате красиво расположить эти светодиоды достаточно затруднительно, поэтому мы использовали печатную плату. Файлы разработанной для этого проекта печатной платы можно скачать по следующей ссылке — Gerber файл для проекта цифрового компаса.

Когда дизайн печатной платы готов можно приступать к ее изготовлению. Для этого необходимо выполнить следующую последовательность шагов.

Шаг 1. Перейдите по адресу https://www.pcbgogo.com/?code=t, зарегистрируйтесь там если это ваше первое посещение. Затем на вкладке PCB Prototype введите размеры вашей печатной платы, число ее слоев и какое количество печатных плат вам необходимо. Мы использовали размер печатной платы 80mm×80mm.

Шаг 2. Нажмите на кнопку Quote Now (рассчитать цену сейчас). После этого вас перебросит на страницу, где вам будет необходимо ввести дополнительные параметры печатной платы: материал, цвет и т.д. Обычно значения, выставленные на этой странице по умолчанию, работают превосходно. Единственное, на что вам обязательно необходимо обратить внимание – это на цену и на время изготовления. Для наших плат стоимость составила $5 и время изготовления 2-3 дня. Также вы можете выбрать удобный для себя вид доставки.

Шаг 3. Загрузите в сервис свои Gerber файлы и оплатите заказ. После загрузки сервис PCBGOGO проверяет ваши Gerber файлы на корректность.

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

Сборка печатной платы

Нам платы пришли в отличном состоянии, их внешний вид вы можете посмотреть на следующих рисунках.

Нам понадобилось около 10 минут чтобы припаять к плате необходимые компоненты, после этого мы получили следующий вид нашей платы:

Объяснение программы для Arduino

Основная цель работы программы – считать данные с магнитометра QMC5883L и преобразовать их в градусы (от 0 до 360). А когда мы будем знать градусы мы легко сможем определить светодиод, который нужно зажечь чтобы указать нужное направление. Мы в нашем проекте будем указывать направление на север – вы можете изменить это по своему желанию, внеся изменения в код программы. То есть горящий светодиод у нас будет указывать направление на север.

Полный код программы приведен в конце статьи, здесь же мы рассмотрим его основные фрагменты.

Мы используем микросхему магнитометра QMC5883L, для взаимодействия с ней нам необходимо знать I2C адрес ее регистров, который можно найти в даташите. Но к счастью, как говорится «все уже сделано за нас» и на Github можно скачать готовую библиотеку для работы с QMC5883L. По этой ссылке вы скачаете ZIP файл, который затем можно добавить в вашу Arduino IDE открыв там пункт меню Sketch -> Include Library -> Add .ZIP library.

После добавления библиотеки мы можем приступать к написанию программы. Первым делом нам в программе необходимо подключить используемые библиотеки – библиотека wire используется для осуществления связи по протоколу I2C, а MechaQMC5883 – для работы с магнитометром (ее мы только что добавили в Arduino IDE).

Источник

Оцените статью
Своими руками