Ватт и КСВ-метр на Arduino с бонусом

Прочитав очередной пост Георгия UY2RA, про строительство КСВ-метра, решил тоже вложить в процесс свои “пять копеек”.  Вот он отладочный вариант прибора измеряющего мощность и КСВ.

Дело пошло дальше прототипа и работающий вариант уже установлен у одного из наших Павлодарских радиолюбителей.

А дальше много текста и моих мыслей, как можно реализовать столь не простую задачу, как измерение мощности и КСВ.

Все началось с того, что коллеге захотелось получить в одном корпусе измеритель выходной мощности, КСВ и антенный переключатель. Как обычно в голову пришел вариант с LCD экраном 16х02 и энкодером (кнопками). Но немного подумав решил от него отказаться, поскольку заходить-выходить в меню и ползать по нему для выбора нужной опции, при работе в эфире не всегда удобно. Все должно быть просто и желательно “в одно касание”. Вот тут я и вспомнил про лежащие у меня модули на TM1638.

Есть место под индикацию измеряемой мощности и КСВ. А кнопки замечательно подойдут для переключения антенн. В нашем случае получилась возможность управлять шестью антеннами.

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

Кнопками с 1 по 6 при нажатии переключается соответствующее антенное реле. Причем китайские синенькие реле служат “гальванической развязкой” для управления реле антенного коммутатора, установленного непосредственно в корпусе антенного коммутатора (например на балконе). Кнопка 7 позволяет отключить все антенны. О включенной антенне так же сигнализирует соответствующий горящий светодиод, над нажатой кнопкой, выше основного индикатора.

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

Вот и весь не хитрый функционал устройства. В практически реализованном варианте был использован ВОТ ТАКОЙ измеритель прямой и отраженной мощности. Так же между выходами измерителя и входами Arduino необходимо поставить потенциометры, чтобы была возможно регулировать уровень поступающего на вход Arduino напряжения.

А дальше начинается самое интересное. Как же нам правильно измерять мощности в нашем устройстве?

Первая задачка, которая нас ожидает на этом пути, это то, что наша Arduino измеряет напряжение. А мощность, как мы знаем из школьного курса физики находится по формуле:

Получается, что “шкала” нашего прибора совсем не линейная. Да еще накладываются особенности используемого измерителя мощности.

Замечательно. Будем рассчитывать отображаемую мощность исходя из квадратичной функции.

Где U – это измеренное нами напряжение на входе Arduino, а A,B и C – соответствующие коэффициенты, описывающие реально получившуюся у нас систему измерения.

В теории вроде все понятно, но как описать получившуюся систему на практике? С помощью измерительных приборов вряд ли кто сможет вычислить эти коэффициенты. Но нам этого и не нужно. Пусть сама измерительная система снимет с себя показания, а мы этим воспользуемся.

Первым этапом нам необходимо подключить наш измеритель к нагрузке с заведомо известным КСВ, желательно, если это будет стандартная радиолюбительская 50-омная нагрузка, с КСВ=1.

После этого нажимаем три раза с небольшим интервалом любую кнопку выбора антенны и наше устройство перейдет в “отладочный режим”. О переходе в “отладочный режим” сигнализирует мигающий светодиод включенной в данный момент антенны.

В этом режиме на индикаторе отображаются “сырые” данные, получаемые с аналоговых входов прямой и отраженной мощности.

Эти данные измеряются в режиме реального времени. Выйти из “отладочного режима” можно нажав 8-ю кнопку.

Сначала опишу последовательность настройки измерения подводимой мощности.

Первое, что нам необходимо, это выставив на трансивере максимальную мощность (например 100 ватт), с помощью потенциометра на входе микроконтроллера (я писал о нем выше) выставить измеряемые значения в районе 800-900 единиц (показания на левой части индикатора). Максимальное измеряемое значение может быть 1023, поэтому не будем лишний раз перегружать вход микроконтроллера, а оставим небольшой запас по измерению мощности выше нынешней. Так же желательно установить данный предел по возможности одинаково как на входе прямой, так и отраженной мощности.

Замечательно. Мы “растянули” наш диапазон измеряемой величины на достаточную ширину шкалы. Теперь нужно как-то эту шкалу отградуировать.

Для этого в “отладочном режиме” делаем несколько замеров входного напряжения для мощностей в 0, 5, 10, 20, 30, 50, 75, 100 ватт (значения могут быть произвольными в измеряемом диапазоне, чем их меньше, тем выше получится погрешность вычислений). Не забывая при этом записывать показания нашего прибора.

После этого, открываем MS Excel. И заносим наши данные вот в такую табличку.

Выделяем получившуюся таблицу с данными и вставляем точечную диаграмму, через ленту команд “Вставка”.

На получившемся графике жмем правой кнопкой мышки и добавляем линию тренда.

Настраиваем нужные нам параметры – “Полиномиальная 2-й степени”, “Показывать уравнение на диаграмме” и “достоверность аппроксимации”.

В результате вы получите примерно вот такой график.

На нем виден график образовавшийся снятыми нами с устройства данными (голубенький) и тонкой черной линией обозначен график функции, которую нам вычислил Excel для наших данных. На картинке вы видите в формуле коэффициенты до 6 знаков после запятой. Это связано с тем, что измеряемые нами данные лежат в пределах от 0 до 1000, а 1000 в квадрате даст нам 1 000 000. А мы же хотим измерять единицы ватт, поэтому и коэффициенты по количеству значащих цифр должны соответствовать входным данным. Чтобы получить такое отображение, то нажав правой кнопкой на формуле, выберите пункт “Формат подписи линии тренда” и в появившемся окне укажите нужную вам точность.

Если вы решите использовать коэффициенты с меньшим количеством значащих цифр (особенно первый), то показания прибора могут вас неприятно удивить своей погрешностью, нелинейностью и хаотичностью.

Полученные коэффициенты теперь необходимо прописать в скетч нашего измерителя.

В результате мы измерили и получили математическое описание сделанной нами системы измерения подручными средствами. Причем мы сразу учли все недостатки и нелинейности нашей как измерительной, так и детектирующей системы, заменив тем самым сложные электронные преобразования математикой, не заморачиваясь на подбор значений элементов схемы и режимов их работы..

Теперь необходимо таким же образом откалибровать измерение отраженной мощности. Для этого просто разверните измерительный мост и сделайте все по вышеприведенному алгоритму.

После чего скетч с рассчитанными коэффициентами компилируется и загружается в Arduino. Наш измеритель готов к работе!

Скетч для моего варианта измерителя можно взять ТУТ.

Для тех, кто совсем не дружит с MS Excel, можно скачать готовый шаблон с графиком ОТСЮДА.

P.S.: Да! В скетче не учтена нелинейность системы измерения, связанная с частотой измеряемого сигнала. К сожалению Arduino в данном включении не в состоянии определить частоту измеряемого сигнала. Но при желании, можно сделать наиболее точный вариант, в котором вместо переключения антенн, будет переключаться частотный диапазон и для него будут использоваться свои наборы коэффициентов функции, вычисленных вами вышеописанным способом.

P.P.S.: Судя по всему классические радиолюбители привыкли видеть электрическую схему устройства для повторения, а у меня все подключения описаны только в тексте скетча для Arduino, куда заглядывают в последнюю очередь. Поэтому для облегчения повторения конструкции, прилагаю более привычную схему подключений модулей, с теми контактами, которые описаны в прилагаемом скетче.

На схеме отображено 4 реле для управления антеннами, на самом деле, можно использовать до 6 таких реле. Контакты для их подключения можно установить в тексте скетча.

Скетч этого проекта, как и других, можно скачать с моего GITHUB.