Всем привет. Появилось время, я сделал макет своего магнитного указателя, и поженил его с 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.h> и указать при объявлении единичку после номеров пинов. Это приводит к инвертированию логики на данном сериал порте. Вот примерно так SoftwareSerial GarminSerial(2, 3, 1); // RX, TX ,Logic_Inv
4. При таком подключении прибор нормально принимает сигнал от ардуины с логикой 3.3В. А значит можно использовать платы типа PRO MICRO 3.3V.
5. Разные экраны/режимы работы картплоттера с разной скоростью отображают изменения показаний от магнитного указателя курса. Экран «окружающая среда» очень быстро реагирует на поворот датчика, т.е. практически не отстает от него. Экран «Данные» и «Карта» отображают изменения медленно, ступенчато. Причем вращение карты иногда идет быстрее , чем изменение показаний направления в цифрах. Вращение карты без рывков, скорость поворота приемлемая.
Выкладываю ссылку на архив со своим черновиком софта для ардуины и использованные библиотеки. Еще фотографии макета и короткое видео работы.
https://yadi.sk/d/eaYfuaEZ3JmSZF
https://youtu.be/KFqytMOUzq8
