Как подключить к Arduino эхолот Humminbird?

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем Bif+, 12 фев 2019.

  1. parovoZZ

    parovoZZ Гуру

    можно.
     
  2. sslobodyan

    sslobodyan Гик

    Если ваш эхолот выдает RS-232, то данная схема уже правильно проинвертирует сигнал (там +12 это 0, а -12 это 1). А если на выходе эхолота TTL-USART, то его наверняка можно подавать прямо на ногу ардуины (лучше через резистор в 1 килоом). Кракозябры на экране - несоответствие скорости (четности).
     
  3. Bif+

    Bif+ Нерд

    С humminbird matrix 47 3d сигнал 5v надо инвертировать. 100% будут кракозябры! Проверено на практике!
     
  4. Bif+

    Bif+ Нерд

    Добрый день, уважаемое сообщество форума!
    Хочу поделиться с Вами некоторыми итогами по работе над автопилотом по глубине и компасу для троллинга на катере.
    Как я уже упоминал ранее в постах, я приобрел «чудо Советского машиностроения» - Ветерок 8.
    https://ibb.co/hB1T7XZ
    https://ibb.co/FKVC3LS
    Мотор живучий, но не имеет заднего хода, а только включается редуктор на ход вперед и отключается специальным рычажком с регулируемым усилием, что хорошо для установки на переключение редуктора китайским 20 кг серводвигателем.
    https://ibb.co/MBtBtPH
    Кстати, о надежности китайских «прибамбасов», у первой сервы от вибрации и плохой пропайки отвалился проводок и замкнул на металлический корпус оной. Результат – вся электроника сервы выгорела, издавая резкий химический запах. Пришлось заменить, проверив качество пайки и изолировать корпус от Ветерка.
    https://ibb.co/88pjSbD
    Установил: электростартер, заменив венец на маховике;
    https://ibb.co/x3hCWck
    https://ibb.co/Wc5tqN7
    кнопки СТАРТ и СТОП на двигатель и на пульте;
    на управление оборотами такая же 20 кг китайская серва с управлением с пульта;
    на обмотку подсветки повесил диодный мост и стабилизатор напряжения на LT 1084 для подзарядки АКБ или хотя бы частичной подпитки всей электросистемы, хотя в бортовой сети и использую АКБ 74Ah;
    https://ibb.co/Wxr5br3
    заменил родные катушки зажигания на Хонда Дио, что освободило место для установки серводвигателя для переключения редуктора.
    https://ibb.co/j51QDZ5
    https://ibb.co/HPZCLGR
    https://ibb.co/71XFqV7
    Изготовил мотр-редуктор для управления докаткой (Ветерок-8) из редуктора старой (одна из ошибок) дрели и «дворника» от Нивы с конечными выключателями, спрятав все это в «скворечник».
    https://ibb.co/fkx80mZ
    От конечников при их срабатывании сигнал поступает на соответствующие каждому конечнику светодиоды на пульте управления.
    https://ibb.co/MsSHhvN
    https://ibb.co/jTG7gLb
    https://ibb.co/KsbxQRJ
    https://ibb.co/JHLcPTr
    Из подручных материалов изготовил пульт управления, использовав П-образный профиль для гипсокартона и оцинкованный лист. Для того, чтобы во время пуска электорстартера, посадка напряжения не влияла на работу эхолота и пульта управления, запитал их от бортового АКБ через цепочку диод 10А- лампу Н1 55вт- С=1фарада, что сохраняет работоспособность электроники в течении 10-15 сек.
    https://ibb.co/JpCb6pM
    https://ibb.co/sjbzRQ0
    https://ibb.co/w7dBXny
    https://ibb.co/0yrJ1GH
    https://ibb.co/Tw740yf
    https://ibb.co/t40nMcw
    Система для тех целей, которые были первично описаны выше, пригодна, работает, но не надо думать, что это действительно автопилот, это скорее помощник рыбака в удержании глубины и курса. Если сравнивать работу автопилота по глубине и по компасу, то на компасе "автопилотирование" производится более плавно из-за более чувствительной реакции исполнительного механизма вслед за отклонением от курса, т.е. чем больше отклонение, тем на больший угол поворачивается исполнительный механизм. По глубине же в окончании скетча были заложены только предельные отклонения механизма, что «не есть хорошо!». Пришлось повозиться с настройкой угла поворота двигателя. Надо было изменять алгоритм работы конечного каскада, вводя промежуточные положения для более плавной работы всей системы. Докатка навешена на транец справой стороны катера, что тоже влияет на управление - налево поворачивал гораздо резвее, чем направо, поэтому задаются соответственно разные углы поворота мотор-редуктору. 80% всего затраченного времени ушло на механическую часть, слесарно-сварочные работы и отладку конечного каскада, с начала в гараже, затем на воде . Были допущены некоторые ошибки, которые пришлось исправлять в ходе испытаний. В частности увеличив длину рычага на мотор-редукторе и максимально уменьшив длину рычага румпеля получил хороший угол поворота докатки, но и большой люфт всей рычажной системы. Вроде бы не большой люфт в мотор-редукторе из-за старых шестеренок в результате оказался губительным для всего автопилота. Пришлось переделывать, но до конца не смог избавиться от люфта. Нужен актуатор! И ещё, мала скорость поворота от крайнего левого положения до крайнего правого. Может кто скинет ссылочку на актуатор с ходом 30-40см и временем выдвижения 3-4сек., если вообще есть такие. При использовании этого автопилота надо знать дно в районе рыбалки. При пересечении русла впадающей речки, автопилот теряется и может уйти не туда, куда нужно. В этом случае переключаюсь на автопилот по компасу. Он собран на Nano. Об этом я тоже ранее писал, но при качке компас работает не стабильно. Надо его с MPU6050 соединить. Если кто-то может помочь, буду очень признателен.
    Код (C++):
    /*Пример скетча для управления  катером через компас
       подробнее -  https://lihoy-lj.livejournal.com/831.html


    */

    //только с серво, без всего лишнего

    #include <Servo.h>      
    #include <Wire.h>            // библиотека I2C (стандартная)
    #include <MechaQMC5883.h>    //  библиотека компаса https://yadi.sk/d/RF0VF6tA3Xvfjb  

    #define    B 10

    byte angle = 97;              // устанавливаем начальный угол сервы, при котором перо руля будет параллельно движению
    int vector = 0;             // устанавливаем начальный курс для старта, если поставить 0 платформа не тронется до нажатия кнопки D2
    MechaQMC5883 qmc;             // The CompassLib object
    Servo servo1;
    /* блок функций управления моторами*/
    void motor_off()             //---Выключить моторы
    { }

    void setup() {
      Serial.begin(4800);
      Wire.begin();

      pinMode(B, OUTPUT);
      pinMode(12, INPUT);     // назначаем пин кнопки D12(было D2)
     
      pinMode(13, OUTPUT);   // подключаем встроенный светодиод
      servo1.attach(B);      // назначаем пин D10 сервоприводу
      qmc.init(); // инициируем компас
      qmc.setMode(Mode_Continuous, ODR_10Hz, RNG_8G, OSR_512); // устанавливаем параметры работы компаса
    }

    void loop() {

      /* блок работы компаса*/
      int x, y, z;
      qmc.read(&x, &y, &z);
      float heading = atan2(y, x);
      float declinationAngle = 6.7;// значение магнитного склонения, искать в справочнике для своей местности
      heading += declinationAngle;
      if (heading < 0)
        heading += 2 * PI;
      if (heading > 2 * PI)
        heading -= 2 * PI;
      int azimuth = heading * 180 / M_PI;

      /* блок работы кнопки: при нажатии запоминает текущий курс*/
      if (vector == 0) {       // ждем нажатия кнопки (задаем курс)
        motor_off();
      }
      if (digitalRead(12) == HIGH) { // было (2)
        vector = azimuth;
        digitalWrite(13, HIGH);
      }
      else {
        digitalWrite(13, LOW);
      }
      /*создание переменной для управления моторами */
      int g = azimuth - vector; // измеряем величину и направление отклонения от курса
      while (g >= 180)
        g -= 360;
      while (g < -180)
        g += 360;
      int s = fabs (g) * 2 ;         // переменная угла поворота сервы  от G
      s = constrain(s, 1, 30); // ограничиваем значения S диапазоном поворота руля (49* определен экспериментально)

      /* блок управления моторами*/

      if (g == 0) {
        servo1.write(angle);         //---Полный вперед
      }
      if (g < 0) {
        servo1.write(angle + s);    //---Установка влево
      }
      if (g > 0) {
        servo1.write(angle - s);    //---Установка вправо
      }

      // блок диагностики работы программы

      Serial.print("AZ: ");
      Serial.print(azimuth);
      Serial.print("   ");

      Serial.print("vect: ");
      Serial.print(vector);
      Serial.print("    ");

      Serial.print("G: ");
      Serial.print(g);
      Serial.print("    ");

      Serial.print("S: ");
      Serial.print(s);
      Serial.print("   ");

      Serial.print("angle: ");
      Serial.print(servo1.read());
      Serial.print("   ");

      Serial.println();
      delay (800); // задержка цикла
    }
    Еще столкнулся с таким результатом испытаний, как зависимость амплитуды синусоиды при движении от ширины задаваемой глубины и она резко возрастает при разности заданных глубин более 1 метра. А если трансюдер стоит на корме, а не на носу катера, то вообще "кранты". На крайних испытаниях автопилота вышел из строя главный двигатель катера – пробило прокладку головки цилиндра, но даже это не испортило рыбалку. Весь день использовал докатку Ветерок как на троллинге, так и возвращение к месту спуска на воду. Работа по автопилоту продолжается…
    Люблю рыбалку летом...
    https://ibb.co/Gd7h1Jk
    https://ibb.co/Bf2Ltft
    https://ibb.co/qD4MztD
     
  5. vvr

    vvr Инженерище

    улов знатный))))
     
  6. Bif+

    Bif+ Нерд

    Рост 150 см, вес 32 кг. Раньше были и под 60 кг.
     
  7. NoViChok+

    NoViChok+ Нерд

    Это чё за конь? Я таких отродясь не видел.
     
  8. Bif+

    Bif+ Нерд

    Конь - это жерех, или "шелеспер", а здесь сом.