Автор Тема: Антенный комутатор на Arduino  (Прочитано 1303 раз)

Оффлайн Груженый

  • Super Moderator
  • Новичок
  • *****
  • Сообщений: 24
  • Курт как Бейн
    • Просмотр профиля
Антенный комутатор на Arduino
« : Января 10, 2021, 20:08:48 »
Доброго времени суток! Требуется сделать блок управления антенным коммутатором, желательно на AVR, желательно фирмварь писать на ассемблере, но можно и на Си. Коммутатор должен обеспечивать переключение 8ми антенн как непосредственно с кнопок управления, так и с помощью программы, запущенной в ОС Windows.

Идей по реализации очень немного. Понятно, что связь с ПК реализуем по UART, кнопки и реле со светодиодами к портам, если не хватит портов МК - пользуем расширитель портов. Основной вопрос - как реализовать механизм передачи данных на прикладном уровне, то есть что будет передаваться между МК и ПК и как эти данные интерпретировать в программе с графическим интерфейсом.

Может есть у кого какие идеи, или где можно посмотреть что-то подобное (управление устройствами с ПК). Заранее благодарен.
Я не враг своему здоровью, культурно отдыхать умею!

Оффлайн RZ4AT

  • Administrator
  • Новичок
  • *****
  • Сообщений: 4
    • Просмотр профиля
Re: Антенный комутатор на Arduino
« Ответ #1 : Января 10, 2021, 20:16:15 »
Очень мало информации по ним. Нет точной инструкции как пошагово настроить прошивку. Изучить программирование не каждому по силе. 

Оффлайн Sam

  • Super Moderator
  • Новичок
  • *****
  • Сообщений: 23
    • Просмотр профиля
Re: Антенный комутатор на Arduino
« Ответ #2 : Января 10, 2021, 21:49:56 »
Доброго времени суток! Требуется сделать блок управления антенным коммутатором, желательно на AVR, желательно фирмварь писать на ассемблере, но можно и на Си. Коммутатор должен обеспечивать переключение 8ми антенн как непосредственно с кнопок управления, так и с помощью программы, запущенной в ОС Windows.
Мне кажется лучше плюнуть на все и управлять антеннами прям с LPT порта напрямую.  Ассемьлер тут лишний точно. Ардуино вполне справится, можно даже по радио все сделать, вопрос времени и интереса.
На компе писать на C# или бейсике, данные - текст просто. к примеру строка 1234 переключит первую антенну, 2345 - вторую. И прочее прочее.

Оффлайн Sam

  • Super Moderator
  • Новичок
  • *****
  • Сообщений: 23
    • Просмотр профиля
Re: Антенный комутатор на Arduino
« Ответ #3 : Января 11, 2021, 07:06:08 »
Чтобы начать проектировать антенный коммутатор, нужно определить тип переключаемых реле, напряжение катушек. Далее переключать лучше через полевики IRL540, они сделаны чтобы срабатывать от 5 вольт ардуины. Далее идет ардуина, общающаяся через com-порт с компом.

Оффлайн Sam

  • Super Moderator
  • Новичок
  • *****
  • Сообщений: 23
    • Просмотр профиля
Re: Антенный комутатор на Arduino
« Ответ #4 : Января 11, 2021, 07:07:20 »
Здесь будем придумывать схему и софт данного комутатора. 8)

Оффлайн Sam

  • Super Moderator
  • Новичок
  • *****
  • Сообщений: 23
    • Просмотр профиля
Re: Антенный комутатор на Arduino
« Ответ #5 : Января 11, 2021, 07:21:21 »
Управление реле через полевик IRL540N, еще добавить обратный диод шотки на сток-исток транзистора.
Резистор 10к нужен, чтоб исключить случайное срабатывание. 150 окюм - для ограничение тока на пине ардуино.
« Последнее редактирование: Января 11, 2021, 07:23:13 от Sam »

Оффлайн UA4AEU

  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Антенный комутатор на Arduino
« Ответ #6 : Января 11, 2021, 08:34:16 »
У ub3app есть похожий проект.
На 4 антенны.
Интерфейс для ПК на C# (Windows Forms).
Ардуино. Исходники есть на GitHub.
Можно доработать.
« Последнее редактирование: Января 11, 2021, 08:49:57 от UA4AEU »

Оффлайн Sam

  • Super Moderator
  • Новичок
  • *****
  • Сообщений: 23
    • Просмотр профиля
Re: Антенный комутатор на Arduino
« Ответ #7 : Января 11, 2021, 10:04:44 »
Далее определяем какие реле нам нужны. Размыкать нужно и центральную жилу, и экран и сажать неиспользуемые на корпус.

Оффлайн Груженый

  • Super Moderator
  • Новичок
  • *****
  • Сообщений: 24
  • Курт как Бейн
    • Просмотр профиля
Re: Антенный комутатор на Arduino
« Ответ #8 : Января 11, 2021, 12:09:04 »
Я конечно извиняюсь, но всю ВЧ-коммутацию уже давно придумали за нас. Есть и готовые решения, и наборы, и просто информация "вот тебе чертежи плат, схемы - делай сам". Проблема здесь в первую очередь в управлении с ПК.

Предлагаю осуществлять обмен данными в двухбайтном формате: первый байт - управление реле и чтение их статуса (если переключать вручную, чтоб программа на ПК знала об этом), второй байт - служебный, управление непосредственно контроллером, то есть блокировка клавиатуры например (будет актуально при удаленном управлении, а то в шеке мышка бежала, хвостиком махнула - антенна и переключилась), блокировка переключения при наличии ВЧ на входе (защита от дурака), и так далее и тому подобное. Уже два бита занял, еще шесть осталось.
Я не враг своему здоровью, культурно отдыхать умею!

Оффлайн Sam

  • Super Moderator
  • Новичок
  • *****
  • Сообщений: 23
    • Просмотр профиля
Re: Антенный комутатор на Arduino
« Ответ #9 : Января 11, 2021, 14:20:57 »
То есть при подключении к компу чтоб внешние кнопки блокировались? Так просто на соседний пин через диод припаять.. и будет мониторить подключен ком-порт или нет. Блокировать то зачем?

Оффлайн Груженый

  • Super Moderator
  • Новичок
  • *****
  • Сообщений: 24
  • Курт как Бейн
    • Просмотр профиля
Re: Антенный комутатор на Arduino
« Ответ #10 : Января 11, 2021, 15:10:39 »
COM-порт (и не обязательно он, может и USB-TTL конвертер) будет подключен в любом случае - рулить дистанционно ж надо. Блокировать надо для защиты от непосредственного переключения, когда оператора нет дома, а мышка может мимо пробежать, да хвостиком и махнуть.

В идеале еще бы от трансивера инфу получать, с разъема CAT, в зависимости от диапазона подключать ту или иную антенну (есть такая фишка Band Data). Но это уже опции. Тут хотя бы базовый функционал реализовать.
Я не враг своему здоровью, культурно отдыхать умею!

Оффлайн Sam

  • Super Moderator
  • Новичок
  • *****
  • Сообщений: 23
    • Просмотр профиля
Re: Антенный комутатор на Arduino
« Ответ #11 : Января 12, 2021, 10:13:21 »
Для начала нужна блок-схема и алгоритм.

Оффлайн Груженый

  • Super Moderator
  • Новичок
  • *****
  • Сообщений: 24
  • Курт как Бейн
    • Просмотр профиля
Re: Антенный комутатор на Arduino
« Ответ #12 : Апреля 13, 2021, 23:28:39 »
Прошло два месяца...
Основной функционал прошивки написан, остался небольшой вопрос с реализацией сохранения состояния переключателя (какая антенна была включена последней) после выключения питания.
Базовая схема выглядит так:


Управляющая программа на C#, в принципе, написана, необходимо доработать напильником необработанные исключения (чтоб не молча падала, а говорила об ошибке)
Подробнее почитать тут: https://unlis.ru/?p=1944



Прошел еще месяц...
По подсказкам знающих людей была добавлена прием/передача данных по USART с контрольными суммами CRC, реализован ответ от контроллера на команды от ПК, сделана попытка сохранять данные только при потере питания программно-аппаратным способом.
Схема чуть изменилась:


Управляющую программу еще не переписывал, так как писать на C# в среде WinForms для меня оказалось сложнее, чем на C под AVR.
Подробнее почитать тут: https://unlis.ru/?p=1984



В планах:
  • Нормально проработать вопрос сохранения состояния переключателя в EEPROM
  • Подумать (реализовать?) над механизмом защиты от включения двух реле одновременно (по USART можно послать такую команду)
  • Придумать как питать реле напряжением 24 в без геморроя
  • ...anything else
  • Ну и, конечно же, собрать все в железе.
  • ...выкинуть и поставить галетник ;D
« Последнее редактирование: Апреля 14, 2021, 00:09:31 от Груженый »
Я не враг своему здоровью, культурно отдыхать умею!

Оффлайн Груженый

  • Super Moderator
  • Новичок
  • *****
  • Сообщений: 24
  • Курт как Бейн
    • Просмотр профиля
Re: Антенный комутатор на Arduino
« Ответ #13 : Апреля 27, 2021, 23:09:49 »
Приехало обновление - версия прошивки 1.4

Схему чуть изменил:



  • В EEPROM теперь пишется каждый раз, когда происходит переключение антенны. Пишется по кольцу, предыдущее затирается FF, адресации нет, адрес ячейки с нужными данными определяется при старте программы путем перебора на значение != 0xFF, далее при работе программы инкрементится.
  • Естественно, выкинут супервизор и остальная головная боль
  • Применена микросхема драйвера для реле вместо транзисторных ключей
  • Питание всей схемы осуществляется от встроенного БП (на схеме не показан)
  • Черт с ней, с оптронной развязкой. В R-Quad нет, а че я - хуже что ли?

Но все равно что-то в коде мне не нравится....
« Последнее редактирование: Апреля 27, 2021, 23:17:10 от Груженый »
Я не враг своему здоровью, культурно отдыхать умею!