Автор Тема: Ваттметр на Arduino  (Прочитано 8029 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн RX9A

  • Ветеран
  • *****
  • Сообщений: 507
  • Репутация: +136/-2
  • QRA: MO05qe
Ваттметр на Arduino
« : 22 Январь 2022, 16:49:20 »
Здравствуйте. Хочу поделиться конструкцией ваттметра на arduino nano.
В инете мне попадались конструкции на AVR и PIC но в них был реализован алгоритм жесткой привязки
кода АЦП к заранее прописаным показаниям из таблицы. И невозможность калибровки.
Поскольку каждый датчик имеет индивидуальные характеристики.
В данном устройстве производится расчет по калибровочным данным получеными в процессе калибровки.
Отображается мощность не только в дБм но и в Ваттах  и Средне эффективное в вольтах для 50 Ом Vrms.
В конструкции можно использовать как линейную детекторную головку на диоде или AD8361 ,
так и логрифмические детекторы AD8307 , AD8309 , AD8310, AD8313, AD8317, AD8318
Использовались как платы с Али. Так и самодельные.
  //Линейные детекторы имеют одну точку калибровки +10дБм
А логрифмические две , с разницей между уровнями 10 , 20 , 30 или 40 Дб. На выбор.
Выбор детектора и разницы уровня калибровки выставляется переризанием перемычек на плате.
Для каждого детектора устанавливается свой верхний предел по данным из даташита.
Если перед детектором установлен аттенюатор то имеется возможность оперативно корректировать показания
с учетом его, с шагом 5 Дб от 0 до 50 Дб.
Поскольку провереные мной детекторы имели сильную частотную нелинейность то я предусмотрел возможность
калибровки на разных частотах. Всего имеется 16 частотных точек. (хотя возможно в памяти EEPROM этой ардуино
разместить 250 точек).

Оффлайн RX9A

  • Ветеран
  • *****
  • Сообщений: 507
  • Репутация: +136/-2
  • QRA: MO05qe
Re: Ваттметр на Arduino
« Ответ #1 : 22 Январь 2022, 16:50:55 »
Кнопка BAND переключает частотные точки. Названия точек можно поменять в скетче.
Кнопка ATT переключает  Дб на которые производится корекция при подключении внешнего аттенюатора.
Кнопка MODE переключает вид отображения.
В верхней строке всегда отображается мощность в дБм и ваттах.
А в нижней частота и аттенюатор ,  Средне эффективное в вольтах и аттенюатор или
линейная шкала как в мультиметрах (удобно при настройке).

Оффлайн RX9A

  • Ветеран
  • *****
  • Сообщений: 507
  • Репутация: +136/-2
  • QRA: MO05qe
Re: Ваттметр на Arduino
« Ответ #2 : 22 Январь 2022, 16:52:07 »
При нажатой кнопке MODE и включении питания ваттметр перейдет в режим калибровки.
Высветится надпись.
   "  Entering the  "
"  CALIBRATION   "
После появится код ацп и частота на которой поизводится калибровка.
после нажатия кнопки MODE будет предложено подать на прибор нужный верхний уровень в дБм
Нажимаем MODE ждем калибровки.
Дальше будет предложено подать на прибор нужный нижний уровень в дБм (калибруем без внешнего аттенюатора)
Нажимаем MODE ждем калибровки.
После будет произведен переход к следующей частоте. И так пока не откалибруете все 16 частотных точек .
Если же вам не нужно калибовать дальше то просто выключите питание.
Все калибровки , величина внешнего аттенюатора , частотная точка и режим отображения на LCD
сохраняются в EEPROM .

Оффлайн RX9A

  • Ветеран
  • *****
  • Сообщений: 507
  • Репутация: +136/-2
  • QRA: MO05qe
Re: Ваттметр на Arduino
« Ответ #3 : 22 Январь 2022, 16:53:22 »
Предварительная настройка уровней детектора .
Если используется линейный детектро AD8361 или  детекторная головка на диоде то
Входим в калибровку и по показаниям кода АЦП
устанавливаем резистором R6 1020...1023 на максимально предпологаемом уровне сигнала.

Для логрифмических детекторов AD8307 , AD8309 , AD8310, AD8313
Входим в калибровку и по показаниям кода АЦП
устанавливаем резистором R4  код АЦП  0...3 при закороченом входе детектора
и резистором R6 1020...1023 при уровне  на 5Дб ниже максимально допустимого уровня

Для логрифмических детекторов AD8317 , AD8318 которые имеют инвертированную характеристику.
устанавливаем резистором R4 код АЦП  0...3 при  приуровне  на 5Дб ниже максимально допустимого (для 8317 +5дБМ для 8318 +7дбм)
и резистором R6 1020...1023 при закороченом входе детектора .
На любой удобной для вас частоте.


Так же хорошо показал себя диодный детектор по схеме Hewlett-Packard найденый в инете. (схема в файле SPL7)
Который имеет больший динамический диаппазон (до 25-27 дБм) чем AD8361 а возможность прибора калибровать по частоте
сводит на минимум недостаток частотной нелинейности хотя она и так невелика.


Перемычка      jp1   jp2   jp3           1=есть  0=нет
Diod      1   1   1   
AD8361      0   1   1
AD8307      1   0   1
AD8309      0   0   1
AD8310      1   1   0
AD8313      0   1   0
AD8317      1   0   0
AD8318      0   0   0


Перемычка      jp4   jp5          1=есть  0=нет
40Дб      1   1
30Дб      0   1
20ДБ      1   0
10Дб      0   0



Всем Удачи 73, RX9A Сергей.

Ссылки на источники.
https://diankurniawan.wordpress.com/2011/06/24/digital-rf-power-meter-ad8307-atmega8/
https://www.rlocman.ru/shem/schematics.html?di=55369

Оффлайн RX9A

  • Ветеран
  • *****
  • Сообщений: 507
  • Репутация: +136/-2
  • QRA: MO05qe
Re: Ваттметр на Arduino
« Ответ #4 : 22 Январь 2022, 16:54:02 »
На стадии макетирования находится четырех строчный индикатор.
На который можно будет подключить сразу до семи детекторов.
У Ардуино семь аналоговых входов.
Но пока это только в мыслях.

Оффлайн rz3qs

  • Постоялец
  • ***
  • Сообщений: 76
  • Репутация: +18/-9
  • Подпись находиться в стадии разработки
  • QRA: KO91SS
Re: Ваттметр на Arduino
« Ответ #5 : 22 Январь 2022, 18:23:01 »
В инете мне попадались конструкции на AVR и PIC но в них был реализован алгоритм жесткой привязки
кода АЦП к заранее прописаным показаниям из таблицы. И невозможность калибровки.

У меня сделан такой измеритель, полностью автономный. И аттенюатор этого автора. Работают замечательно.
Может что-то полезное будет для Вас.

https://dl6gl.de/hf-powermeter.html





Оффлайн RX9A

  • Ветеран
  • *****
  • Сообщений: 507
  • Репутация: +136/-2
  • QRA: MO05qe
Re: Ваттметр на Arduino
« Ответ #6 : 22 Январь 2022, 18:52:42 »
Да я видел эту разработку. И тоже хотел использовать внешний АЦП с большей разрядностью.
Но я позиционирую мою поделку как точный показометр а не измерительный прибор.
На этапе макетирования выяснилось  что нелинейность по динамике даже на одной частоте у АДешек
мягко говоря не очень это только на картинке все ровно. И по хорошему на одной частоте нужно калибровать
допустим через каждые 5Дб . Тогда это будет похоже на измерительный прибор.
Не у каждого есть хороший (Повереный) генератор с правильным аттенюатором.
Из плюсов моей конструкции : Нет мелких паек , однослойная печатка , супер простота программирования.

Оффлайн UA3RAW Андрей

  • Ветеран
  • *****
  • Сообщений: 1534
  • Репутация: +279/-36
  • <-- CU -->
  • QRA: LO02rr
Re: Ваттметр на Arduino
« Ответ #7 : 23 Январь 2022, 11:02:44 »
Недавно тоже занимался изготовлением измерителя на AD8317.
Выбирал между двумя вариантами, PA0RWE и  этим.
Попробовал оба варианта. В итоге остановился на PA0REW, c двумя точками калибровки, по уровню -10dBm и - 40dBm на каждом поддиапазоне.
Сергей, посмотрев вашу схему, сразу обратил внимание на то, что вы  используете в качестве опорного напряжения для АЦП внутреннюю опору меги. В обоих ссылках, которые я привел выше,  используется прецизионный источник опорного напряжения на 2.048 В. Это или LM4040C20, или MCP 1501-20.
Я купил в Чипдипе LM4040C20. Так что настоятельно рекомендую обратить внимание на это момент.  :)
Вот еще одна ссылка на измеритель с OLED дисплеем.

« Последнее редактирование: 23 Январь 2022, 11:16:31 от UA3RAW Андрей »
73!
Андрей, UA3RAW.

Оффлайн LZ2WSG

  • Пользователь
  • **
  • Сообщений: 43
  • Репутация: +16/-0
  • QRA: KN34PC
Re: Ваттметр на Arduino
« Ответ #8 : 23 Январь 2022, 11:47:06 »
... используете в качестве опорного напряжения для АЦП внутреннюю опору меги.
Зачем к внутренним эталонным напряжением ATmega? analogReference() в коде не объявлено -> DEFAULT: the default analog reference of 5V (pin AREF св. с +5V), т.е. изменение напр. от температуры зависит от внешнего стабилизатора. Берем обычный 7805: 0°C to 125°C = –1.1 mV/°C. Берем в качестве примера dT = 50 градуса. 5000 mV изменится с 55mv, или 1,1%. И для нашего измерения КСВ: если у нас есть реальной КСВ = 3,35, то прибор (при dT = 50 градуса) будет показывать 3,38685 или 3,38 (с отсечения незначащих чисел) :). Имеет ли это значение?. :) Точность, думаю, крайне достаточна и без вн. източник оп. напряж.
Веселин, LZ2WSG

Оффлайн RX9A

  • Ветеран
  • *****
  • Сообщений: 507
  • Репутация: +136/-2
  • QRA: MO05qe
Re: Ваттметр на Arduino
« Ответ #9 : 23 Январь 2022, 12:50:42 »
Да Андрей Здравствуйте. Я сначала применял внешнюю опору. Но проведя лабораторную работу по точности детекторов пришел к выводу
что при калибровке по двум точкам на диапазон погрешность в пару отчетов АЦП роли не играет от слова совсем.
В Челябинске есть Научно Исследовательский Институт Измерительной Техники  НИИИТ где я когда-то  работал в отделе метрологии.
И по знакомству проверил свой генератор сигналов  MG3660A . Так моя AD8317 при промере через 5дб врала то в плюс то в минус до 0,3дб
и это на одной частоте . Отсюда вывод: Полумерами не обойтись . Если делать правильный измерительный прибор то АЦП24 разряда ,хорошая опора,
и интерполяция между точками калибровки как по уровню сигнала так и по частоте.

Онлайн RW3XL Игорь

  • Очный чемпионат
  • Ветеран
  • *****
  • Сообщений: 3896
  • Репутация: +912/-47
  • QRA: KO84dm
Re: Ваттметр на Arduino
« Ответ #10 : 23 Январь 2022, 13:04:33 »
Спасибо за новую разработку!
Мне нравится, что диодный детектор можно использовать. Диоды у меня есть есть, а AD8317 - нет.
И еще, по дизайну замечание, зачем буквы Dbm отстоят от значения на два знакоместа?
aka RK3X & RC3XC

Оффлайн Mildi

  • Ветеран
  • *****
  • Сообщений: 1859
  • Репутация: +150/-366
  • Три дня расстрела и каждый день до смерти.
  • QRA: KP67lx
Re: Ваттметр на Arduino
« Ответ #11 : 23 Январь 2022, 13:05:19 »
Тут скорее более важна калибровка по частоте, по уровням разброс не так велик как по частоте, тем более тут влияет и КСВ детектора и АЧХ входных цепей.
73! Василий (ex\RA1OGS/1)

Оффлайн RX9A

  • Ветеран
  • *****
  • Сообщений: 507
  • Репутация: +136/-2
  • QRA: MO05qe
Re: Ваттметр на Arduino
« Ответ #12 : 23 Январь 2022, 13:21:47 »
Например -50,5Dbm отобразить . можно переписать чтобы надпись Dbm двигалась.

« Последнее редактирование: 23 Январь 2022, 13:26:14 от RX9A »

ua3xcr

  • Гость
Re: Ваттметр на Arduino
« Ответ #13 : 23 Январь 2022, 13:23:07 »
остановился на PA0REW
Андрей, эта штука начинает работать сразу.
Намного отличаются показания прибора после сброса и после калибровки?

Оффлайн RX9A

  • Ветеран
  • *****
  • Сообщений: 507
  • Репутация: +136/-2
  • QRA: MO05qe
Re: Ваттметр на Arduino
« Ответ #14 : 23 Январь 2022, 13:45:23 »
Исправил опечатку Dbm=dBm новый скетч.
Все модули которые я проверял с АЛИ . Фирменные микросхемы должны быть лучше по характеристикам.
« Последнее редактирование: 23 Январь 2022, 13:48:39 от RX9A »