В марте 2011 года на сайте Орловского эфира Александр RA3ED публиковал статью «Коммутатор антенн для FT-817». Кратко говоря, коммутатор представляет собой декодер выбранного диапазона на трансивере Yaesu FT-817 совместно с реле, коммутирующие диапазонные антенны. Декодер диапазонов построен в данном случае на компараторах, хотя, как писал RA3ED, можно применить некоторые микросхемы АЦП. Но данные микросхемы достать было в то время сложно. Как известно, информация о выбранном диапазоне с трансивера Yaesu FT-817 поступает с вывода BAND DATA разъёма ACC в аналоговом виде – кодируется определённым уровнем напряжения. Данные значения напряжения приведены в таблице руководства пользователя на трансивер.
Как видно, значения напряжений от диапазона к диапазону увеличиваются с равномерным шагом 0.33 В (видимо, 1/3, если не округлять) от 0.33 до 4.00 В.
С тех пор прошло более 10 лет, и на смену пришло новое поколение трансиверов. Один из популярных на сегодняшний день трансиверов – SDR трансивер Xiegu G90. У данного аппарата на задней панели имеется такой же разъём ACC с таким же выводом BAND DATA информации о диапазоне. Один из радиолюбителей попросил меня изготовить декодер диапазона для данного трансивера, чтобы в дальнейшем его применять для коммутации фильтров в усилителе мощности (не только антенны можно коммутировать). Я решил изготовить устройство на микроконтроллере, имея под руками МК Atmega8.
Уровни напряжения BAND DATA на трансивере Xiegu G90 отличаются от Yaesu FT-817. Они приведены в таблице ниже.
Декодер диапазонов на МК можно сделать более компактным и гибко настраиваемым под любой трансивер, чем на компараторах или АЦП, придав ему тот или иной интерфейс. Но в данной статье речь пойдёт об упрощённом декодере с минимальной прошивкой – без интерфейса, заточенной конкретно под трансивер Xiegu G90. При этом код прошивки я заготовлю для двух приведённых в статье трансиверов.
Судя по таблицам, Yaesu FT-817 имеет 12 диапазонов (из них КВ – 9), а Xiegu G90 – 10. На декодере я буду реализовывать 8 выходных каналов, так как для коммутации реле будет применён 8-канальный транзисторный ключ – микросхема ULN2803. Восемь каналов на практике вполне достаточно (в декодере от RA3ED их было всего 6). Учитывая то, что каналов меньше, чем диапазонов, необходимо какие-либо диапазоны пропустить или объединить с соседними. Тем более что не все диапазоны могут быть востребованы. В Yaesu FT-817, на мой взгляд, к примеру, диапазон 30М можно объединить с 40М, а 10М – с 12М. Диапазоны УКВ я не рассматриваю. Итого получилось 7 каналов (ещё 1 – в резерве). Для трансивера Xiegu G90 меня попросили сделать соответствие более конкретно: пропустить диапазон 60М и объединить диапазоны 30М и 40М, тем самым, задействовав все 8 каналов.
Алгоритм работы декодера достаточно простой. На вход АЦП МК поступает сигнал BAND DATA с трансивера и оцифровывается несколько раз в секунду. Программа распознаёт уровень напряжения, его допустимый интервал, и привязывает его к номеру диапазона. Затем, согласно правилам привязки номера диапазона и выходного канала, МК формирует на определённом выходе сигнал логической «1». Соответствия логических выходов МК и каналов я выбирал на этапе разработки печатной платы, исходя из удобства монтажа. Тем более что запас по выходам МК Atmega8 достаточно большой. Некоторые читатели могут заметить, что МК Atmega8 применять слишком избыточно в таком простом проекте. Была идея использовать простейший Atiny13 совместно с дешифратором на 8 выходов SN74LS138N, но под рукой таких микросхем у меня не оказалось, тем более что после дешифратора, по-моему, ещё пришлось бы ставить инверторы, и устройство бы усложнилось.
Схема устройства приведена на рисунке. Последнее время при конструировании тех или иных устройств я не рисую схемы как таковые, а сразу рисую печатную плату, руководствуясь даташитами на компоненты и самой идеей. Но для статьи мне пришлось потратить время, чтобы нарисовать и постараться красиво оформить данную схему.
Выводы МК IC1 нарисованы произвольно и только те, которые задействованы. Это, несмотря на то, что корпус микросхемы на рисунке, как и в реальности, квадратный. Разъёмы питания, подключения к трансиверу, прошивки и выходов на реле – типа «штырьки» (DS). Цепь питания МК 5В реализована на линейном регуляторе VR1 7805 («кренка»). На отдельном таком же линейном регуляторе, но в корпусе TO-92, сделана цепь питания аналоговой части МК. Хотя, в данной задаче такие сложности излишни. И вообще, забегая вперёд, мне попался МК Atmega8 китайского производства, у которого выводы VCC и AVCC соединены внутри чипа (сопротивлением в несколько Ом). Поэтому в данной конкретной конструкции я не применял элементы VR2, C4 и L1. Ещё в прошивке реализована дополнительная функция – проверка каналов при замыкании вывода 1 МК на корпус. Выходы микросхемы IC2 ключей реле идут как на выходной разъём, так и на контрольные светодиоды D1-D8. Сигнал с трансивера подаётся через цепь R1C6 на вход АЦП МК ADC1 (данный номер аналогового входа выбран исходя из удобства монтажа).
Есть одно замечание по использованию вывода 10 IC2 и подключению реле. Как видно на серой блочной схеме внутри IC2, данный вывод представляет собой общий катод встроенных в IC2 защитных диодов, необходимых для встречного включения параллельно катушкам реле. Выходы 11-18 микросхемы, в свою очередь выдают «минус», так как внутри микросхемы n-p-n транзисторные ключи. Он берётся с вывода 9, который также служит общим выводом входов 1-8. Если применяются реле на 12В, то их общий «плюс» можно взять от питания всей схемы. А если реле, например, на 15В или 24В, то на общий провод реле подаётся свой плюс от соответствующего источника питания. Этот же плюс подаётся на вывод 10 IC2, если есть необходимость использовать защитные диоды, встроенные в микросхему. Но если защитные диоды применяются внешние, независимо от типа реле по напряжению, то 10-ый вывод остаётся незадействованным.
Печатная плата, нарисованная в Sprint-Layout, получилась размерами 26 на 43 мм. Микросхемы IC1 и IC2 – в SMD корпусе. Вывод 10 IC2 перемычкой подключен к +12В, так как в данной конкретной конструкции будут применяться реле на 12В, будут запитаны от того же источника, что и схема, и будут применяться защитные диоды внутри IC2.
Плату можно изготовить методом ЛУТ.
Теперь по поводу программной части устройства. Прошивки я делаю в среде разработки CodeVisionAVR с применением формирователя начального кода CodeWizardAVR. Напишу кратко без лишних подробностей начальную конфигурацию проекта. АЦП в МК запускается по переполнению 8-битного таймера (Timer0), работающий с коэффициентом деления 1024 от тактовой частоты МК. Частота МК – 4 МГц. Тактирование – от встроенного генератора. Его для данной задачи вполне достаточно. Тем самым частота АЦП получилась 4000000/1024/256=15.2 Гц, что также вполне нормально.
Расчёты параметров и генерацию некоторых фрагментов программного кода я произвёл в Excel.
Определение выходных каналов и правила соответствия с диапазонами:
Расчёты допустимых интервалов АЦП для Yaesu FT-817:
Расчёты допустимых интервалов АЦП для Xiegu G90:
По поводу расчёта допустимых интервалов для АЦП. Исходя из табличных значений напряжений в столбце «C» вычисляются минимальные (левые) и максимальные (правые) значения границ допустимых интервалов. Результаты вычислений – в столбцах «D» и «E» соответственно. В данном случае, учитывая равномерный шаг напряжений, вычисления простые. Границы интервалов также распределены равномерно и отстоят на тот же шаг, но смещены на полшага относительно исходных значений. Наглядно это продемонстрировано на рисунке ниже (на примере пяти значений).
Таким образом, номерам диапазонов соответствуют номера интервалов, серединами которых являются табличные значения напряжений. Если на АЦП поступит уровень напряжения, не попадающий ни в один интервал, то номер диапазона будет условно равен нулю.
В столбцах «F» и «G» пересчитываются соответственно минимальные и максимальные значения границ интервалов из Вольтов в целочисленные значения 10-битного АЦП исходя из линейной зависимости: d=U/5*1024. По этим значениям с помощью формул Excel формируется часть программного кода на языке Си в столбце «H». Это набор условий, где идёт определение номера диапазона (переменная nb).
На этом с Excel пока что всё. Далее в основном программном коде следует активация нужного выходного канала и деактивация ненужных в зависимости от вычисленного номера диапазона и согласно заранее определённым правилам (оператор switch-case). Данный оператор совместно с набором условий помещён в файл, соответствующий модели трансивера. Таких файлов в данном примере два. В зависимости от выбранного трансивера один из этих файлов с помощью команды «include» присоединяется к основному файлу проекта в том месте, где запрограммирована обработка АЦП. Затем проект компилируется в файл прошивки.
Пожалуй, на этом всё. К статье я прилагаю ссылки на файл печатной платы и файл прошивки (для трансивера Xiegu G90 с описанной выше конфигурацией выходных каналов). Фьюз-биты МК выставлены по умолчанию с изменением CKSEL=0011.
И ещё одна особенность на этапе программирования МК. Когда я собирал устройство, мне попался МК, у которого значения фьюз-битов CKSEL были выставлены не по умолчанию, а под кварц, и без кварца (выводы 7 и 8) он не прошивался. Пришлось для изменения фьюз-битов подпаивать кварц, не забыв при этом освободить от IC2 вывод 8. Так что, с китайскими микроконтроллерами может быть множество нюансов и неожиданностей.
|