1. Уважаемый Гость! При написании вопросов в раздел форума [ArduCopter] Вопросы, проблемы и решения обязательно придерживаться шаблона сообщения, оговоренного в правилах раздела! Если сообщение не будет оформлено должным образом, то и ответ на вопрос будет с наименьшим приоритетом. Старайтесь дать максимально полную информацию по вашей проблеме, чтобы можно было более детально рассматривать вопрос!
    Скрыть объявление
  2. Уважаемый Гость! Хотите получить 200р за регистрацию? Хотите получать кэшбэк с покупок в online-магазинах? Сервис "LetyShops" дает такую возможность!
    Скрыть объявление
  3. Друзья! Для нашего ресурса необходим дополнительный объем пространства в облаке Dropbox. Подробнее.
    Скрыть объявление

RSSI антенна трекер

Тема в разделе "GCS (Ground Control Station), наземная станция", создана пользователем 5yoda5, 5 июн 2016.

  1. 5yoda5

    5yoda5 Master Команда форума

    Регистрация:
    29 янв 2015
    Сообщения:
    7.117
    Город:
    Реж
    Имя:
    Тимур
    Последнее редактирование: 7 июл 2016
  2. romT

    romT Студент

    Регистрация:
    5 июн 2016
    Сообщения:
    27
    Город:
    MSK_KLG
    Имя:
    Роман
    Собственно может кому будет интересно:
    https://123d.circuits.io/circuits/2269663-servorssi
    смысл прост - сервы устанавливают направление антенны видеолинка (или же RC) в зависимости от уровня RSSI с приемника. подсмотрел несколько идей у немца и станции слежения за солнечными батареями, немного переделал и адаптировал под одну антенны, работает. по ссылке эмулятор(уровень RSSI просто регулируется переменным резистором чтобы на посмотреть), тут код под LCD5110
    https://cloud.mail.ru/public/6j2b/nCdNMr4SP
     
  3. raefa

    raefa Главнокомандующий Команда форума

    Регистрация:
    3 янв 2015
    Сообщения:
    4.325
    Город:
    Zhigulevsk
    Имя:
    Александр
    Роман, спасибо за информацию.
    Т.е. если RSSI стал хуже, то серва начинает крутиться и "искать" более сильный сигнал и дальше останавливается? Надо бы побольше описательной части, а то пока не понятно, как оно работает.
     
  4. 5yoda5

    5yoda5 Master Команда форума

    Регистрация:
    29 янв 2015
    Сообщения:
    7.117
    Город:
    Реж
    Имя:
    Тимур
    Мне интересно. Меня посещали некоторые мысли относительно наземной станции.

    Давайте больше инфы.
    На страничке по первой ссылке вижу эмуляцию ардуинки и двух серв. Но непонятно:
    1. Сколько приемников (РССИ) анализируется для принятия решения? Один?
    2. Как, на основании значения одного лишь резистора крутится серва X или серва Y - какова логика программы?
     
  5. romT

    romT Студент

    Регистрация:
    5 июн 2016
    Сообщения:
    27
    Город:
    MSK_KLG
    Имя:
    Роман
    там эмуляция и код под один ресивер, я сейчас на отдыхе, прилечу более подробно опишу сфоткаю. если надо откомпилирую готовые прошивки для разных конфигураций. алгоритм в двух словах такой - запук - квлибровка - текущий уровень сигнала 100%, если уровень уровень падает менне 85% начинают работать сервы, если падает уовень дальше - решение сменить напрвление далее движение до максимальный уровень и перекалибровка, все это в цикле и быстро, результат - антенна всегда находится в положении максимального уровня сигнала.
     
  6. 5yoda5

    5yoda5 Master Команда форума

    Регистрация:
    29 янв 2015
    Сообщения:
    7.117
    Город:
    Реж
    Имя:
    Тимур
    Не-не, в двух словах не выйдет! ;)
    Если автор проекта вы, давайте обсудим поподробнее алгоритм.
    Как именно начинают двигаться сервы, по какому закону, что является критериями, когда принимается решение о другом направлении. Алгоритм управления поподробнее хотелось бы узнать, так как именно в нем и весь смысл.
    Ещё есть вопрос, проводились ли натурные испытания, если да - то как именно.
    И у меня есть ещё один хитрый и не побоюсь этого слова убийственный вопрос, который я приберегу напоследок.

    Ждем вашего возвращения с отдыха, предупреждаю - будет дискуссия, так как эта тема мне очень интересна. Я сам думал (к сожалению, только думал) о нечто подобном, так что мне есть о чем поговорить.
     
  7. LampGraph

    LampGraph Кандидат наук

    Регистрация:
    16 ноя 2015
    Сообщения:
    1.229
    Город:
    Абакан
    Имя:
    Вячеслав
    В голове нарисовалась картинка:
    1. Монтировка. 2 сервы, одна наклоняет антенну по питчу, вторая крутит по яву.
    2. Алгоритм, по сути то о чем говорит Роман:
    Условия:
    а) По яву крутиться нужно сильнее, т.к. во-первых 360 градусов против 180 по питчу, во-вторых обычно летаем в плоскости. И даже когда Тимур полетит вверх - всеравно больше для точности будет важен яв.
    б) В алгоритм добавим пид регулятор. По сути не обязательно, но желательно.

    Алгоритм:
    При старте ловим rssi и начинаем вертеть яв до тех пор пока уровень не начнет уменьшаться, как стал падать - возвращаемся пока опять не станет уменьшаться. Нашли максимум по яву, начинаем таким же макаром крутить питч. Для того что бы не было дрыганья и дерганья, задаем порог (например 85% как предложил Роман) и вводим пид регулятор.

    Главное не увлекаться сильно, а то изобретем велосипед и придем к антенна-трекеру на APM
     
  8. 5yoda5

    5yoda5 Master Команда форума

    Регистрация:
    29 янв 2015
    Сообщения:
    7.117
    Город:
    Реж
    Имя:
    Тимур
    Это как раз понятно.
    Тэксь, пошла работа :thumbsup: (Матроскин - "заработало!")
    1. Крутим по яву в две стороны (ищем уменьшения РССИ), потом становимся в найденную середину. Наверное так?
    2. То же самое по питчу. (то есть тоже становимся в найденную середину)
    3. Далее, порог сработки. Безусловно, РССИ будет меняться, причем постоянно. Какой порог запускает программу поиска нового вектора (пункты 1 и 2)? И от чего этот порог считается? От абсолютного максимума (уровень РССИ при старте системы) или от текущего "плавающего" значения (то есть с момента последней корректировки). И изменение на сколько процентов побуждает систему к поиску?

    (и потом, убийственный вопрос ещё так и не задели ;) ) :speechless:

    Да, думаем дальше. В наземке от АРМ меня просто выбешивает, что приходится ставить точно такой же комплект на землю, как в небе. (то есть ПК, компас, ЖПС)
    Нерационально.
    Поэтому данную тему нужно развить. Справится Ардуино Нано с двумя сервами. (плюс убийственный вопрос ;), пока никто не догадается - я буду ставить этот смайл, как напоминание - ":speechless:")
    :sneaky:


    .......
    Кстати, а как позиционировать его? ОС на энкодерах (две оси)?
     
  9. LampGraph

    LampGraph Кандидат наук

    Регистрация:
    16 ноя 2015
    Сообщения:
    1.229
    Город:
    Абакан
    Имя:
    Вячеслав
    Что бы была остановка в середине - за это как раз и отвечает пид регулятор и порог срабатывания.
    Определим на практике. Его можно повешать на энкодер или на потенциометр. Считаться будет от последнего найденного максимума. От старта делать нельзя, т.к. он будет уменьшаться с расстоянием.
    С этим справится даже тини 13. Я почти допилил на ней сервотестер, но забил и сделал на меге8. На меге и будем делать монтировку. ну или на любой ардуине, кому что нравится.
    Плюс серв в том что позиционирование регулируется длинной импульса. По сути задача сводится к следующему:
    Находим длину импульса при котором rssi максимальный.

    До убийственного вопроса пока не догадался.
     
  10. 5yoda5

    5yoda5 Master Команда форума

    Регистрация:
    29 янв 2015
    Сообщения:
    7.117
    Город:
    Реж
    Имя:
    Тимур
    А нужен ли ПИД-регулятор? Может достаточно линейного регулирования плюс условия? Проще надо быть, проще! :) На самом деле - сколько нам максимум нужна угловая скорость? Самый запущенный вариант - это когда самолет нарезает круги вокруг пилота или просто пролетает над пилотом.
    Сколько градусов в минуту (или другая размерность) нам надо?
    Я думаю - достаточно по относительному изменению сигнала. Скажем, если сигнал стал хуже на ....... (допустим 15 процентов) относительно сигнала предыдущего регулирования - то запускаем подпрограмму сканирования.
    Но нужно учесть вариант, когда лучшее значение не было найдено, пошарились-пошарились и приняли за новый порог - текущее значение РССИ. Как и увеличение - если есть улучшение - то его автоматом присваиваем за новое значение по РССИ.
    Да, справится. Нам нужно-то всего лишь один аналоговый вход (плюс :speechless:) и два цифровых выхода.
    Но нужно учитывать массовость - должна быть простота повторения. У меня была мысль использовать сгоревшие регули..... Но это будет много пайки. Куда проще сказать "берем Ардуино Нано" (или старый полетный контроллер АИО :) ), подтыкаем этот провод сюда, а эти два - вот сюда.
    Фиксируем как тезис. НО. Вот вопрос - у нас сервы получается простые? С углом вращения ~ 180 градусов? Как тогда быть с мертвыми зонами?
    Если по питчу это ещё годится, то как быть по яву? (дурик-рандомайзер в голове крикнул "и по роллу - меняем поляризацию на ходу" :D но я шикнул на него "молчи дурак" :roflmao: шизофрения прямо какая-то :laugh: )
    Наверное по яву надо использовать серву без ограничения угла. Но всё равно задача сводится к подбору ШИМ. Только с одной корректировкой - у нас будет по яву три возможных ШИМа "стой", "по часовой", "против часовой".
    Хорошо, не буду мучать. Озвучиваю главный вопрос: как у нас будет отличаться полезный сигнал от шума? В каком случаем РССИ наивысший - в случае устойчивого сигнала или в случае каких-то помех?o_O:sneaky::whistling:
     
  11. LampGraph

    LampGraph Кандидат наук

    Регистрация:
    16 ноя 2015
    Сообщения:
    1.229
    Город:
    Абакан
    Имя:
    Вячеслав
    Ошибка у нас будет, потому как в тот момент когда достигнем максимума, в этой точке максимума уже не будет. Сглаживание тоже нужно, потому как всякие помехи и прочее - сигнал не постоянен. Ну и мертвая зона - все вместе и наберется на пид регулятор. На начальных этапах можно им и пренебречь, но нужно стремиться к прекрасному.
    Тут слабое звено - скорость сервы, но ее хватит т.к. чем дальше модель - тем медленней меняется угол. Разрешение даже важнее, но и оно не принципиально. Точность до секунд не к чему.
    Это я и имел ввиду. На случай если лучшее не найдено: т.е. в некотором диапазоне значение максимально найденное и не изменяется - тогда антенну поворачиваем посередине.
    Сделаем под разные авр-ки. Частоту шим завяжем на частоту контроллера, дефами сконфигурируем ноги. Настройка под нужный контроллер будет сводиться к раскомментированию нужной строчки.
    Насколько я знаю (на практике не сталкивался), сервы на 360 градусов тоже управляются шириной импульса. В двух словах так: 1000мс - 0 градусов, 1500мс 180градусов, 2000мс - 360 градусов.
    ПИД
     
  12. 5yoda5

    5yoda5 Master Команда форума

    Регистрация:
    29 янв 2015
    Сообщения:
    7.117
    Город:
    Реж
    Имя:
    Тимур
    Моё понимание, для чего пригодился бы ПИД-регулятор применимо к этой задаче - так это для того, чтобы АТ (антенна трекер) крутила головой то БЫСТРО, то медленно (зато точно). Конечно, это шикарно, заложить фактор углового ускорения (во как загнул), но на начальном этапе можно обойтись простым линейным регулированием и несколькими условиями.
    Когда модель далеко - это как раз-таки проще в плане того, что антенну надо медленнее ворочать, у любой антенны есть ДН, там единственное важно - чтобы при снижении РССИ (модель улетает) не сорвало крышу и не начал бы АТ искать "более лучшей жизни".
    А вот когда модель близко.... тут по идее может выручить опять же ДН антенны. Второй-третий лепесток ДН при близком нахождении модели опять же не даст пропасть изображению из-за тормознутого АТ.
    Нет, а если модель летает кругами вокруг АТ? АТ следит за ней, серва 360 градусов, подходим к 0 градусов и ........ АТ прокручивает по кругу в другую сторону (на позицию 360 градусов), чтобы "поймать" модель снова? Так не пойдет.
    Серва должна уметь крутить не то что на 360 градусов - а она должна быть без ограничителей!
    Вы меня не поняли. Я имел ввиду не простое пропадание сигнала, а всякие переотражения.
    Или вообще другой случай, когда "как-будто сигнал" на близкой частоте, но не то.... Чтобы АТ в случае видеолинка на 900 показывал именно на модель а не на вышку сотовой связи неподалеку.
    Как отличим полезный сигнал (истинное положение модели) от наведенного шума? Были ли эксперименты с РССИ видеолинка?
     
  13. LampGraph

    LampGraph Кандидат наук

    Регистрация:
    16 ноя 2015
    Сообщения:
    1.229
    Город:
    Абакан
    Имя:
    Вячеслав
    ок. Нам нужна серва непрерывного вращения на 360 градусов. Ставим ее вверхногами и всю электронику вешаем на поворотную платформу. Это избавит нас от проблемы закручивающихся проводов.
    Нет. Нужно изучить этот вопрос. Желательно с практикой. Как вывести RSSI с видеоприемника?
    --- Сообщения объединены, 10 июн 2016 ---
    Переотражения не сильно страшны, если я правильно понимаю, тут проблема лишь в том, что когда они пропадут - сигнал окажется с другой стороны и придется далеко вертеться.
    А вот
    Это очень просто: включаем сначала АТ, делаем круг и запоминаем матрицу источников сигнала которые сильнее чем минимальный полезный нам (при котором картинка пропадает). матрицу двумерную, положение яв, положение питч. Потом включаем передатчик и АТ уже знает который сигнал полезный.
    Еще:
    Если сигнал пропадает - далеко улетел - ограничиваем поиск некоторым углом. Нет смысла искать сзади, если улетели далеко вперед.
    --- Сообщения объединены, 10 июн 2016 ---
    Antenna Tracker FPV DIGITAL no GPS - "AntTrac"
    на rcgroups
    --- Сообщения объединены, 10 июн 2016 ---
    Вопрос снят
     
  14. 5yoda5

    5yoda5 Master Команда форума

    Регистрация:
    29 янв 2015
    Сообщения:
    7.117
    Город:
    Реж
    Имя:
    Тимур
    Нужно ковырять отдельно взятый приемник. Я не уверен, что на всех приемниках есть РССИ.
    У меня есть два видеоприемника, один на 900 МГц, другой 5,8 ГГц. И у того и у другого "внутри" есть РССИ. То есть имеется некий пин, который отвечает за силу сигнала. Самолично с тестером щупался только с приемником на 900 МГц, когда пытался подстраивать антенну. Там был какой-то "перевернутый" РССИ, то есть чем ниже вольтаж, тем лучше антенна. Я подбирал длину диполя экспериментально, кусая по маленьким кусочкам (ох и намаялся я тогда!)
    Но у меня был постоянно включен передатчик, и подобных испытаний я не проводил.
    То есть получается, запоминаем позиции "плохих" сигналов, чтобы не гоняться за ними? О как.
    Это я так понимаю, приемник на 5,8 ГГц, самый распространенный. Там РССИ должен быть обычным, а не как у меня было.
    Сейчас схожу почитаю.
     
  15. LampGraph

    LampGraph Кандидат наук

    Регистрация:
    16 ноя 2015
    Сообщения:
    1.229
    Город:
    Абакан
    Имя:
    Вячеслав
    Они используют 3 приемника, 1 размещают по центру для видеосигнала и 2 по краям только для определения rssi. Нам этот метод не подходит - громоздко и дорого.
    [​IMG]
    --- Сообщения объединены, 10 июн 2016 ---
    Запилим конфигуратор под каждый тип приемников.
     
  16. 5yoda5

    5yoda5 Master Команда форума

    Регистрация:
    29 янв 2015
    Сообщения:
    7.117
    Город:
    Реж
    Имя:
    Тимур
    Эту фигню я видел давно. Мне тоже не понравилось.
    Не так давно я видел похожее, но уже с двумя приемниками. Там товарищ поработал побольше с кодом, но мне тоже кажется что это неоптимально. Где же это было.....
    Нашел! ВОТ.
    Но это тоже неэффективно. Что касается темы на РЦгрупсе - оттуда можно дёрнуть куски кода, какие-нибудь методики.
     
  17. 5yoda5

    5yoda5 Master Команда форума

    Регистрация:
    29 янв 2015
    Сообщения:
    7.117
    Город:
    Реж
    Имя:
    Тимур
  18. 5yoda5

    5yoda5 Master Команда форума

    Регистрация:
    29 янв 2015
    Сообщения:
    7.117
    Город:
    Реж
    Имя:
    Тимур
    Начинаем с простого.
    Ляпаем сервотестер на Ардуинке.
    Схема подключения и как это в натуре
    IMG_20160616_154958.jpg IMG_20160616_154127.jpg
    Код:
    #include <Servo.h>
    
    Servo servo;
    
    int angl_old=0; //переменная для хранения текущего положения угла сервы
    int angl_new=0; //переменная для считывания с потенциометра
    int feel=20; //переменная чувствительности чем меньше, тем плавнее ход, но возможно дрожание сервы. Чем выше, тем более "дискретное" поведение.
    
    void setup()
    
    {
    
    servo.attach(10); //привязываем серву к порту 10
    servo.write(90); //ставим вал в середину
    
    }
    
    void loop()
    
    {
    angl_new= analogRead(0) / 5.69; // считываем напряжение с потенциометра на А0, будет получено число от 0 до 1023, делим его на 5.69, получится число в диапазоне 0-179 (дробная часть будет отброшена)
    if (angl_new > angl_old + feel or angl_new < angl_old - feel) //если измененное значение превысит диапазон feel
      {
        angl_old = angl_new ; //запоминаем новое значение
        servo.write(angl_new); //ставим вал под новый угол
      };
    }

    Старался комментов поболее пихать, чтобы было понятно. Плохое комментирование - мой бич. Пока используем библиотеку servo.h, возможно в дальнейшем нужно будет самим заряжать таймеры (рулить напрямую), пока пусть будет так. Эта программка-сервотестер сделана с настройкой чувствительности (переменная feel), в дальнейшем возможно эта переменная будет вычисляемой.
    Сервотестер - работает.

    Следующий шаг - повесить что-нибудь на серву и попытаться реализовать алгоритм слежения по одной оси. Наверное заменю переменный резистор фоторезистором, его засуну в трубочку (для более точного позиционирования) и прицеплю это на качалку сервы. Пущай головой крутит за фонариком :)
    А после этого можно будет и алгоритмы отрабатывать....
     
    Последнее редактирование: 16 июн 2016
  19. Игорюшка Владимирович

    Игорюшка Владимирович Кандидат наук

    Регистрация:
    8 апр 2015
    Сообщения:
    1.174
    Город:
    г Орёл
    Имя:
    Игорь
    Говорят, надо "определяться не по несущей", а по силе видеосигнала в нём :eek:. Уж не вспомню гдет читал - тогда чЮжие не будут мешать.
    --- Сообщения объединены, 21 июн 2016 ---
    Забываю про лимит времени на редактирование ... :mad:
    Обхактнутая серва крутилась по часовой после 1500мкс и влево до 1500 - чем больше, тем быстрее.
    Если поставить вторую антеннку, можно крутить ДО выравнивания сигналов.
    Серва не будет конвульсить в поиске, а только выполнять "правильную" работу.:rolleyes:
    Хороший АААТТ лишней антеннкой не испортишь ! (К.Прутков) :)
     
  20. LampGraph

    LampGraph Кандидат наук

    Регистрация:
    16 ноя 2015
    Сообщения:
    1.229
    Город:
    Абакан
    Имя:
    Вячеслав
    Как определить?