Форум Волгоградских радиолюбителей
Технические форумы => Arduino => Тема начата: Груженый от Января 10, 2021, 20:08:48
-
Доброго времени суток! Требуется сделать блок управления антенным коммутатором, желательно на AVR, желательно фирмварь писать на ассемблере, но можно и на Си. Коммутатор должен обеспечивать переключение 8ми антенн как непосредственно с кнопок управления, так и с помощью программы, запущенной в ОС Windows.
Идей по реализации очень немного. Понятно, что связь с ПК реализуем по UART, кнопки и реле со светодиодами к портам, если не хватит портов МК - пользуем расширитель портов. Основной вопрос - как реализовать механизм передачи данных на прикладном уровне, то есть что будет передаваться между МК и ПК и как эти данные интерпретировать в программе с графическим интерфейсом.
Может есть у кого какие идеи, или где можно посмотреть что-то подобное (управление устройствами с ПК). Заранее благодарен.
-
Очень мало информации по ним. Нет точной инструкции как пошагово настроить прошивку. Изучить программирование не каждому по силе.
-
Доброго времени суток! Требуется сделать блок управления антенным коммутатором, желательно на AVR, желательно фирмварь писать на ассемблере, но можно и на Си. Коммутатор должен обеспечивать переключение 8ми антенн как непосредственно с кнопок управления, так и с помощью программы, запущенной в ОС Windows.
Мне кажется лучше плюнуть на все и управлять антеннами прям с LPT порта напрямую. Ассемьлер тут лишний точно. Ардуино вполне справится, можно даже по радио все сделать, вопрос времени и интереса.
На компе писать на C# или бейсике, данные - текст просто. к примеру строка 1234 переключит первую антенну, 2345 - вторую. И прочее прочее.
-
Чтобы начать проектировать антенный коммутатор, нужно определить тип переключаемых реле, напряжение катушек. Далее переключать лучше через полевики IRL540, они сделаны чтобы срабатывать от 5 вольт ардуины. Далее идет ардуина, общающаяся через com-порт с компом.
-
Здесь будем придумывать схему и софт данного комутатора. 8)
-
Управление реле через полевик IRL540N, еще добавить обратный диод шотки на сток-исток транзистора.
Резистор 10к нужен, чтоб исключить случайное срабатывание. 150 окюм - для ограничение тока на пине ардуино.
-
У ub3app есть похожий проект.
На 4 антенны.
Интерфейс для ПК на C# (Windows Forms).
Ардуино. Исходники есть на GitHub.
Можно доработать.
-
Далее определяем какие реле нам нужны. Размыкать нужно и центральную жилу, и экран и сажать неиспользуемые на корпус.
-
Я конечно извиняюсь, но всю ВЧ-коммутацию уже давно придумали за нас. Есть и готовые решения, и наборы, и просто информация "вот тебе чертежи плат, схемы - делай сам". Проблема здесь в первую очередь в управлении с ПК.
Предлагаю осуществлять обмен данными в двухбайтном формате: первый байт - управление реле и чтение их статуса (если переключать вручную, чтоб программа на ПК знала об этом), второй байт - служебный, управление непосредственно контроллером, то есть блокировка клавиатуры например (будет актуально при удаленном управлении, а то в шеке мышка бежала, хвостиком махнула - антенна и переключилась), блокировка переключения при наличии ВЧ на входе (защита от дурака), и так далее и тому подобное. Уже два бита занял, еще шесть осталось.
-
То есть при подключении к компу чтоб внешние кнопки блокировались? Так просто на соседний пин через диод припаять.. и будет мониторить подключен ком-порт или нет. Блокировать то зачем?
-
COM-порт (и не обязательно он, может и USB-TTL конвертер) будет подключен в любом случае - рулить дистанционно ж надо. Блокировать надо для защиты от непосредственного переключения, когда оператора нет дома, а мышка может мимо пробежать, да хвостиком и махнуть.
В идеале еще бы от трансивера инфу получать, с разъема CAT, в зависимости от диапазона подключать ту или иную антенну (есть такая фишка Band Data). Но это уже опции. Тут хотя бы базовый функционал реализовать.
-
Для начала нужна блок-схема и алгоритм.
-
Прошло два месяца...
Основной функционал прошивки написан, остался небольшой вопрос с реализацией сохранения состояния переключателя (какая антенна была включена последней) после выключения питания.
Базовая схема выглядит так:
(https://unlis.ru/wp-content/uploads/2021/03/antenna_switch_attiny_2313_circuit_v1.2-1024x635.png)
Управляющая программа на C#, в принципе, написана, необходимо доработать напильником необработанные исключения (чтоб не молча падала, а говорила об ошибке)
Подробнее почитать тут: https://unlis.ru/?p=1944 (https://unlis.ru/?p=1944)
Прошел еще месяц...
По подсказкам знающих людей была добавлена прием/передача данных по USART с контрольными суммами CRC, реализован ответ от контроллера на команды от ПК, сделана попытка сохранять данные только при потере питания программно-аппаратным способом.
Схема чуть изменилась:
(https://unlis.ru/wp-content/uploads/2021/04/antenna_switch_attiny_2313_circuit_v1.3-1024x620.png)
Управляющую программу еще не переписывал, так как писать на C# в среде WinForms для меня оказалось сложнее, чем на C под AVR.
Подробнее почитать тут: https://unlis.ru/?p=1984 (https://unlis.ru/?p=1984)
В планах:
- Нормально проработать вопрос сохранения состояния переключателя в EEPROM
- Подумать (реализовать?) над механизмом защиты от включения двух реле одновременно (по USART можно послать такую команду)
- Придумать как питать реле напряжением 24 в без геморроя
- ...anything else
- Ну и, конечно же, собрать все в железе.
- ...выкинуть и поставить галетник ;D
-
Приехало обновление - версия прошивки 1.4
Схему чуть изменил:
(https://unlis.ru/wp-content/uploads/2021/03/antenna_switch_attiny_2313_circuit_v1.4-1024x612.png)
- В EEPROM теперь пишется каждый раз, когда происходит переключение антенны. Пишется по кольцу, предыдущее затирается FF, адресации нет, адрес ячейки с нужными данными определяется при старте программы путем перебора на значение != 0xFF, далее при работе программы инкрементится.
- Естественно, выкинут супервизор и остальная головная боль
- Применена микросхема драйвера для реле вместо транзисторных ключей
- Питание всей схемы осуществляется от встроенного БП (на схеме не показан)
- Черт с ней, с оптронной развязкой. В R-Quad нет, а че я - хуже что ли?
Но все равно что-то в коде мне не нравится....