Технические форумы > Arduino
Антенный комутатор на Arduino
Груженый:
COM-порт (и не обязательно он, может и USB-TTL конвертер) будет подключен в любом случае - рулить дистанционно ж надо. Блокировать надо для защиты от непосредственного переключения, когда оператора нет дома, а мышка может мимо пробежать, да хвостиком и махнуть.
В идеале еще бы от трансивера инфу получать, с разъема CAT, в зависимости от диапазона подключать ту или иную антенну (есть такая фишка Band Data). Но это уже опции. Тут хотя бы базовый функционал реализовать.
Sam:
Для начала нужна блок-схема и алгоритм.
Груженый:
Прошло два месяца...
Основной функционал прошивки написан, остался небольшой вопрос с реализацией сохранения состояния переключателя (какая антенна была включена последней) после выключения питания.
Базовая схема выглядит так:
Управляющая программа на C#, в принципе, написана, необходимо доработать напильником необработанные исключения (чтоб не молча падала, а говорила об ошибке)
Подробнее почитать тут: https://unlis.ru/?p=1944
Прошел еще месяц...
По подсказкам знающих людей была добавлена прием/передача данных по USART с контрольными суммами CRC, реализован ответ от контроллера на команды от ПК, сделана попытка сохранять данные только при потере питания программно-аппаратным способом.
Схема чуть изменилась:
Управляющую программу еще не переписывал, так как писать на C# в среде WinForms для меня оказалось сложнее, чем на C под AVR.
Подробнее почитать тут: https://unlis.ru/?p=1984
В планах:
* Нормально проработать вопрос сохранения состояния переключателя в EEPROM
* Подумать (реализовать?) над механизмом защиты от включения двух реле одновременно (по USART можно послать такую команду)
* Придумать как питать реле напряжением 24 в без геморроя
* ...anything else
* Ну и, конечно же, собрать все в железе.
* ...выкинуть и поставить галетник ;D
Груженый:
Приехало обновление - версия прошивки 1.4
Схему чуть изменил:
* В EEPROM теперь пишется каждый раз, когда происходит переключение антенны. Пишется по кольцу, предыдущее затирается FF, адресации нет, адрес ячейки с нужными данными определяется при старте программы путем перебора на значение != 0xFF, далее при работе программы инкрементится.
* Естественно, выкинут супервизор и остальная головная боль
* Применена микросхема драйвера для реле вместо транзисторных ключей
* Питание всей схемы осуществляется от встроенного БП (на схеме не показан)
* Черт с ней, с оптронной развязкой. В R-Quad нет, а че я - хуже что ли?
Но все равно что-то в коде мне не нравится....
Навигация
Перейти к полной версии