Лучшее из возможного!

Размер шрифта:  Aa Aa Aa Aa Aa



Измеритель IMD PSK на Arduino

Arduino Nano - IMD PSK meter

IMD PSK meter

Самый популярный на сегодняшний день вид цифровой любительской радиосвязи – это PSK31 (Phase Shift Keying). При работе PSK очень важно, чтобы сигнал в эфире был чистым и не создавал помех по диапазону. Критерием качества сигнала PSK принято считать уровень интермодуляционных искажений - IMD (InterModulation Distortion).

Во всех программах для работы PSK имеется «водопад», который показывает все PSK сигналы в пределах полосы пропускания приемника. Однако, Вашего сигнала там нет. Как же увидеть свой сигнал, чтобы, при необходимости его подкорректировать? В этом может помочь Ваш корреспондент. Но более объективную и точную информацию можно получить, используя контрольный SDR приёмник. Однако это не всегда возможно, да и неудобно, т.к. при смене частоты или диапазона необходимо синхронно перестраивать контрольный приемник.

Существуют специальные устройства, разработанные для контроля качества сигнала PSK. Мне удалось найти описания трех таких устройств.

Во-первых, IMD meter от KK7UQ. Это полностью автономный прибор с LED индикатором. Удобен для оперативного контроля сигнала. Но это коммерческий проект, стоимость прибора 140$ плюс пересылка из USA… Правда, принципиальная схема не является секретом, но без прошивки контроллера она не представляет интереса. А прошивка, естественно, засекречена. Короче говоря, этот прибор не для бедного российского радиолюбителя.

Во-вторых, PSK IMD tester от RA3PCS. Автор выложил почти полную информацию о разработанном им приборе. «Почти», потому, что исходный текст программы все таки засекречен. Это тоже автономный прибор с графическим LCD индикатором. Прибор может быть и хороший, но в нем использован морально устаревший, а потому весьма дорогостоящий контроллер PIC18F452. Да и графический LCD индикатор – вещь дефицитная и тоже не дешевая. Схема относительно сложная, а вдруг еще и в программе есть какие-то глюки? В общем, на повторение этого прибора а не рискнул тратить время и средства.

Наконец, PSK meter от KF6VSG. Адрес странички автора - www.ssiserver.com/info/pskmeter/. К сожалению, на момент написания статьи она перестала открываться, поэтому я выкладываю сохраненную ее копию. Ссылка в конце этой странички. Этот PSK meter работает совместно с компьютером. Не считаю это большим недостатком, т.к. компьютер все равно нужен для работы цифровыми видами связи.

Разработан в 2002г., но до сих пор продается в виде набора деталей. Представляет из себя небольшой аппаратный модуль, который подключается к трансиверу или усилителю мощности параллельно антенне. Внутри модуля обычный амплитудный детектор и контроллер, который оцифровывает продетектированный ВЧ сигнал и передает результаты в компьютер через COM порт. Все расчеты и визуализацию выполняет программа, запущенная на компьютере.

Проект позиционируется как открытый, программа pskmeter.exe доступна для скачивания и распространения без ограничений. Прошивки контроллера аппаратного модуля нет, но алгоритм и исходный текст есть в презентации, размещенной на сайте автора. В общем, информации вполне достаточно для повторения. Приобретать же набор широко распространенных и недефицитных деталей за 40$ не имеет смысла. Однако слепо повторять древнюю разработку не в моем стиле. Сейчас все можно сделать проще, лучше и дешевле.

В качестве амплитудного детектора в приборе использован обычный диод с резистивным делителем на входе. Как показали эксперименты и схемотехническое моделирование, резистивный делитель на входе диодного детектора резко повышает его нелинейность. Объясняется это тем, что резистор входного делителя, включенный последовательно с диодом, увеличивает внутреннее сопротивление диода. А для достижения минимальных искажений внутреннее сопротивление детектора должно быть по крайней мере в 100 раз меньше сопротивления нагрузки.

Получается, что если последовательно с диодом включен резистор входного делителя номиналом 15 К, сопротивление нагрузки детектора должно быть не менее 1,5 М. Оптимальное же сопротивление источника сигнала для АЦП PIC контроллера согласно datasheet не должно превышать 10 К. Два взаимоисключающих условия...

Схема измерителя IMD

Отказаться от делителя на входе нельзя, т.к. ВЧ диодов с малой емкостью, способных работать на частотах до 30 МГц и с допустимым обратным напряжением более 100 В очевидно, не существует. Учитывая, что в схеме однополупериодного детектора допустимое обратное напряжение диода должно быть не менее двойной амплитуды сигнала, от делителя на входе можно отказаться только при мощности трансивера не более 20 Ватт на нагрузке 50 Ом. Последовательное включение нескольких диодов по понятным причинам тоже не выход из положения. В результате, измеренный таким прибором уровень IMD может оказаться весьма далекими от реального.

Поэтому я решил заменить диодный амплитудный детектор микросхемой среднеквадратичного детектора AD8361 от Analog Devices. Эта микросхема питается от однополярного источника 2,5...5,5 В и может работать на частотах до 2,4 ГГц. Потребляемый от источника питания ток зависит от уровня входного сигнала и находится в пределах 1...10 МА. Выходной сигнал линейно пропорционален среднеквадратичному уровню входного сигнала. При изменении уровня входного сигнала от 0 до 0,7 В, выходное напряжение такого детектора изменяется от 0 до +5 В при напряжении питания 5 В.

Принципиальная схема прибора показана на рисунке. Она очень простая. Входной сигнал через делитель R1...R4 и разделительные конденсаторы C1, C4 подается на вход AD8361. Диоды VD1...VD4 защищают микросхему от перегрузки. Конденсатор C5 определяет постоянную времени НЧ фильтра на выходе детектора. Тумблеры SW1, SW2 позволяют подобрать оптимальный уровень сигнала на входе детектора при уровнях мощности передатчика в пределах 5...200 Ватт.

Плата измерителя IMD PSK

В авторском варианте продетектированный сигнал подается на вход АЦП контроллера PIC16F876. Задача контроллера очень простая – произвести 64 измерения с интервалом 1 мс (или 0,5 мс для PSK63) и передать оцифрованные значения по интерфейсу RS-232 в компьютер. Учитывая, что COM порты практически исчезли из стандартной конфигурации компьютеров, лучше использовать конвертер USB-COM.

Я решил заменить PIC платой Arduino. Так гораздо проще и дешевле. В данном случае наиболее оптимальный выбор – Arduino-Nano. На этой миниатюрной плате смонтирован контроллер ATmega328 со всей необходимой обвязкой и конвертер USB-COM. И все это доступно по цене менее 4$! Сигнал с выхода AD8361 подается на вывод порта PC1(ADC1) ATmega328.

AD8361 можно приобрести по цене немногим более 1$, правда купить придется не менее 10 штук. Тем не менее, стоимость всех комплектующих получается существенно меньше стоимости авторского набора деталей для схемы на PIC16F876.

Измерительный модуль смонтирован на плате из одностороннего фольгированного стеклотекстолита размером 50х65 мм. Ее чертеж показан на рисунке, вид со стороны печатных проводников. Элементы R1...R4 и C1 монтируются навесным монтажом на выводах тумблеров и входного гнезда. Резистор R1 составлен из двух МЛТ-2 или аналогичных номиналом 7,5 КОм, включенных последовательно. Диоды VD1...VD4 высокочастотные кремниевые с емкостью не более 4 ПФ. C3...C5 и R5 SMD типоразмера 1206. Входное гнездо типа BNC или СР-50. Плата размещается в корпусе, спаянном из фольгированного гетинакса. Вместо Arduino-Nano можно использовать Arduino-Uno, но это увеличит габариты конструкции.

Модуль подключается к выходу усилителя мощности параллельно антенне с помощью тройника. Входное сопротивление модуля около 15 К, поэтому на согласование с антенной он не оказывает существенного влияния.

При указанных на схеме номиналах резисторов входного делителя можно контролировать сигнал при уровнях мощности 5...200 Ватт на нагрузке 50 Ом. При необходимости контролировать другие уровни сигнала необходимо изменить номинал резистора R1. При расчете делителя имейте в виду, что по переменному току параллельно R2...R4 подключено входное сопротивление AD8361. На частотах ниже 100 МГц оно равно 225 Ом.

Монтаж IMD PSK

Программа для ATmega328 написана на Си в среде CodeVisionAVR v2.05.0. Совсем не обязательно программировать Arduino в фирменной среде. В контроллер можно загрузить любой HEX файл без программатора с помощью программы XLoader, используя смонтированный на плате конвертер USB-COM.

Но вначале нужно установить драйвер виртуального COM порта. На платах Arduino в настоящее время устанавливаются по крайней мере три варианта конвертеров USB-COM - на FT232RL, ATmega16U2 и на CH340G.

Для первых двух драйвер входит в состав программного обеспечения Arduino, которое можно скачать с официального сайта https://www.arduino.cc/. Скачанный архив, например, arduino-1.0.5-r2-windows.zip нужно распаковать в любое удобное место на диске. Затем, после подключения платы к компьютеру и ее обнаружения системой (речь идет о Windows XP или Windows 7), нужно выбрать установку драйвера из указанного места и указать путь к папке с драйвером «arduino-1.0.5-r2 -->drivers».

Драйвер для CH340G найти несколько сложнее. Лучше всего скачать его с сайта производителя: http://www.wch.cn/. Сайт, к сожалению, на китайском языке. На всякий случай я выкладываю проверенный на Windows XP и Windows 7 драйвер для CH340G, ссылка в конце странички.

Установка простая – запускаем исполняемый файл CH341SER.EXE и в появившемся окне нажимаем кнопку «Install» (рис.1). После сообщения об успешной установке (рис.2) подключаем плату Arduino к USB порту компьютера. В диспетчере устройств должен появиться новый виртуальный COM порт, запомните его номер.

Теперь скачиваем с сайта http://russemotto.com/xloader/ и устанавливаем XLoader. Работа с программой проста и интуитивно понятна. Нужно выбрать тип платы - Nano(ATmega328) и номер виртуального COM порта, который присвоен плате. Скорость обмена 57600 установится сама, менять ее не нужно. Затем указываем путь к HEX файлу прошивки PSK_nano.hex. О FUSE битах можно не беспокоиться, они уже выставлены и возможности испортить их нет. После этого нажимаем кнопку «Upload» и ждем 2-3 секунды до окончания загрузки (рис.3).

После завершения загрузки прошивки в контроллер закрываем XLoader и запускаем программу pskmeter.exe, последнюю версию которой можно скачать с сайта KF6VSG: http://www.ssiserver.com/info/pskmeter/. Почему-то на момент написания статьи этот сайт был недоступен, так что адрес даю в текстовом виде. Возможно, сайт переехал, автор прекратил его поддержку или еще какие-то проблемы. Поэтому программу я на всякий случай выкладываю, ссылка в конце странички.


Устанавливаем драйвер USB-COM на CH340G

Драйвер CH340G успешно установлен

Загружаем прошивку в Arduino-Nano

Первый запуск pskmeter.exe

Контекстное меню pskmeter

Аппаратный модуль PSK meter найден!

Информация о версии Software и Hardware

Уровень сигнала велик, недопустимые искажения

Оптимальный сигнал

Уровень сигнала мал

Плата Arduino-Nano должна быть предварительно подключена к USB порту компьютера. После запуска программы должно появиться окно, показанное на рис.4. Чтобы программа нашла плату, нажимаем правую кнопку мыши и в контекстном меню выбираем номер COM порта (рис.5), который присвоен устройству. Теперь окно программы будет выглядеть, как на рис.6.

Чтобы окончательно убедиться, что все работает, из контекстного меню выбираем пункт «About». Если появилась информация о версии Firmware, как на рис.7, можно подключать PSK meter к усилителю мощности. Как я уже писал, он подключается к выходу усилителя параллельно антенне с помощью тройника BNC.

Цифровой интерфейс уже подключен к трансиверу, а на компьютере запущена ваша любимая программа для работы PSK. Включаем в программе режим передачи, окно передаваемого текста пустое, никакие клавиши на клавиатуре не нажимаем. Например, в программе UR5EQF log для этого нужно нажать экранную кнопку «TX».

Окно программы pskmeter примет вид, примерно как на рис.8. Регулируя уровень сигнала на выходе звуковой карты наблюдаем за изменением формы сигнала.

Обратите внимание на информацию в правом нижнем углу: «PEAK: 2.8V». Это уровень сигнала на входе АЦП контроллера. Он должен находиться в пределах 1...4 В, оптимально 2...3,5 В. Его значение можно подобрать, изменяя с помощью тумблеров SW1, SW2 уровень сигнала на входе AD8361. При этом уровень сигнала со звуковой карты должен быть заведомо выше оптимального (SPLATTER!).

После этого уменьшаем уровень сигнала со звуковой карты до появления надписи «SIGNAL OK» (рис.9). Это и будет оптимальный уровень без перекачки. Если сигнал будет очень мал, надпись сменится на «UNDERDRIVING» (рис.10). Уровень IMD также индицируется в окне программы. Таким образом можно ориентироваться не только по уровню IMD, но и визуально следить за отклонением формы сигнала от идеальной синусоиды на выходе усилителя мощности. «LEVEL: 49%» - это установка уровня выхода звуковой карты.

Если в контекстном меню выбран пункт «Always on Top», окно pskmeter будет всегда на виду. Но даже когда оно закрыто другими окнами, на панели задач в правом нижнем углу экрана компьютера появляется маленький квадратик, меняющий цвет при изменении уровня сигнала.

В контекстном меню есть еще несколько пунктов. Например, можно включить «Automatic Level Control». В этом случае программа будет стараться сама подстроить уровень сигнала. Но, по моему мнению, она устанавливает слишком низкий уровень мощности. Так что лучше делать это вручную, ориентируясь в первую очередь по форме сигнала.

Прибор может контролировать уровень сигнала не только PSK31, но и PSK63. Для этого следует поставить галочку «PSK63». Можно также выбрать звуковую карту, если для работы в эфире используется не та, которая определена в системе как карта по умолчанию. При выборе любого пункта контекстного меню выводится его подробное описание, так что, при желании можно поэкспериментировать.

Рекомендую также ознакомиться с авторской документацией на PSK meter, там можно найти ответы на многие возникающие вопросы. Для удобства я также выкладываю всю информацию по этому прибору, какую смог найти. Ссылки ниже.

2015г.


ZIP Плата модуля IMD PSK meter в Sprint Layout и схема в sPlan
ZIP Прошивка ATmega328 для Arduino-Nano
ZIP Проект для ATmega328 на Си в среде CodeVisionAVR v2.05.0.
ZIP Программа pskmeter.exe
ZIP Документация и копия странички KF6VSG
ZIP Драйвер USB-COM на CH340G для Windows
ZIP Программа XLoader для программирования HEX файла в Arduino