Автор Тема: Двойной прецизионный милливольтметр на микроконтроллере  (Прочитано 9401 раз)

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

Оффлайн GM

  • Старожил
  • ****
  • Сообщений: 201
  • Репутация: +45/-9
  • QRA: KO85SK
Коллеги, предлагаю вашему вниманию прототип прецизионного цифрового милливольтметра.

Основан милливольтметр на микроконтроллере STM32F103, он измеряет напряжение в полосе 0-500 кГц, используя встроенные 12-битные АЦП1 и АЦП2. Частота выборок составляет 1000 кГц.

Оба выходных напряжения 0-2100 мВ представляют собой эффективное значение (true rms), измеренное на обоих входах одновременно. Кроме того, микроконтроллер измеряет не только постоянную составляющую входного напряжения, но и эффективное значение переменной составляющей по каждому входу.

Количество выборок составляет порядка одного миллиона (2^20), поэтому показания являются очень точными. Возможное изменение показаний производится примерно раз в секунду.

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

Далее, милливольтметр можно использовать
- для измерения выходных напряжения и тока блока питания,
- измерения выходного напряжения и пульсаций выходного напряжения,
- измерения двух напряжений,
- измерения входной и/или выходной мощности БП.
- калибровки обычных вольтметров в полосе 0-500 кГц.

Схема прототипа и прошивка в приложении.


Делать надо сразу хорошо, а плохо - само получится.

Оффлайн R2GKH Виталий

  • Ветеран
  • *****
  • Сообщений: 4318
  • Репутация: +579/-355
  • the Truth is out There...
    • Мысли вслух :)
  • QRA: KO92GP
Уважаемый, а вы в реале это испытывали?
У STM32, впрочем, как и у многих других микроконтроллеров, входы встроенных АЦП имеют весьма недурную емкость.

Еще тут баловался с СТМ-ками, по АЦП нужно непосредственно на ножки цеплять 1нФ минимум, иначе нестабильность оцифровки на плюс/минус 3...5 ед. изм. От 4096 остается 1024. Так что с "прецизионностью" поаккуратнее.

Лет 10 назад делал "ВЧ мультиметр" с AD8307 на входе. 50,75,200,600 Ом на входе. Показания в дБ и мВ.
Мы стояли на плоскости,
                  С переменным углом отражения...

Оффлайн R3KBF Петр

  • Ветеран
  • *****
  • Сообщений: 1269
  • Репутация: +469/-15
  • Воронеж
  • QRA: KO91PO
Виталий! Какой "входы встроенных АЦП имеют весьма недурную емкость"? Какой 1нФ? Это костыль! По памяти  - в старых PIC16 зарядный конденсатор АЦП 5 пФ. Какой "от 4096 остается 1024"? Скорость оцифровки STM 1MSPS и выше с "недурными емкостями на входе"? Как Вы себе это представляете? Для АЦП не надо на входе фильтров в виде конденсаторов. Для этого есть программист, его голова, алгоритмы обработки, правильное питание, правильная опора, правильная PCB и еще раз голова. АЦП надо еще уметь приготовить правильно. Мне кажется в Вашей консерватории надо что-то сильно править.

Оффлайн R2GKH Виталий

  • Ветеран
  • *****
  • Сообщений: 4318
  • Репутация: +579/-355
  • the Truth is out There...
    • Мысли вслух :)
  • QRA: KO92GP
Ну, если 5пФ не емкость, то я уже промолчу.
 
Мы стояли на плоскости,
                  С переменным углом отражения...

Оффлайн R3KBF Петр

  • Ветеран
  • *****
  • Сообщений: 1269
  • Репутация: +469/-15
  • Воронеж
  • QRA: KO91PO
Ну, если 5пФ не емкость, то я уже промолчу.
А Вы к нему еще 1000 пФ предлагаете навесить.
Уточняю для PIC18F57Q43 из DS  - емкость входа 5пФ, удерживающая емкость 28пФ.
« Последнее редактирование: 25 Апрель 2021, 14:00:19 от R3KBF Петр »

Оффлайн R2GKH Виталий

  • Ветеран
  • *****
  • Сообщений: 4318
  • Репутация: +579/-355
  • the Truth is out There...
    • Мысли вслух :)
  • QRA: KO92GP
А Вы к нему еще 1000 пФ предлагаете навесить.

Черт побери, а всего то одно слово упустил, хоть и подразумевал. На "Ножки ПИТАНИЯ".
И у СТМ...103 еще желательно, на VddA подавать от отдельного источника питание +3,3. через дросселек.
А у топикстартера ничего подобного нет в схеме.   
Мы стояли на плоскости,
                  С переменным углом отражения...

Оффлайн GM

  • Старожил
  • ****
  • Сообщений: 201
  • Репутация: +45/-9
  • QRA: KO85SK
Уважаемый, а вы в реале это испытывали? У STM32, впрочем, как и у многих других микроконтроллеров, входы встроенных АЦП имеют весьма недурную емкость
Измерил емкость на ножках, оказалось емкость лежит в районе 0.12-0.19 пФ. На частоте 500 кГц импеданс такого конденсатора превышает 1.7 МОм. По ТО емкость схемы выборки-хранения - максимум 8 пФ. Конденсатор на ноге питания указал, или это не то?

Конечно были испытания, куда ж без них. Показания милливольтметра стоят, как у волка на морозе ... хвост, что для постоянного напряжения, что для переменного. Ну сами посудите - накопление и обработка одного миллиона выборок. По теории улучшение отношения сигнал/шум = SQRT( N) = 1024 или 20lg(1024)=60 дБ. К тому же присутствует округление результата, т.е. погрешность секундного цикла измерения составляет 0.4 мВ.

Что касается представленной схемы, то тут вы правы. Схема не совсем точная. Дело в том, что свои тесты я проводил на отладочной плате олимекс, схема представлена в приложении. Там нет ограничивающих стабилитронов, например, нет отдельного питания, что я собирался сделать, нет еепромки, что я собираюсь поставить. Много чего нет, есть главное - работа милливольтметра в полосе 0-500 кГц с хорошей точностью.
« Последнее редактирование: 25 Апрель 2021, 21:29:06 от GM »
Делать надо сразу хорошо, а плохо - само получится.

Оффлайн R2GKH Виталий

  • Ветеран
  • *****
  • Сообщений: 4318
  • Репутация: +579/-355
  • the Truth is out There...
    • Мысли вслух :)
  • QRA: KO92GP
Стабилитроны по входу - "фтопку"!
Лучше повторители на быстродействующих ОУ. На них же реализовать смещение ниже нуля. Вдруг захочется чисто переменку измерять?

Конденсаторы надо вешать между кажой парой Vss и Vdd. у stm32f103 их пять пар, если не ошибаюсь. И отдельно VddA, эту ножку вообще желательно запитать от отдельного источника (1117-3.3) +3,3V.

А в какой среде разработки пишете? 

Мы стояли на плоскости,
                  С переменным углом отражения...

Оффлайн RK1AS Дмитрий

  • Старожил
  • ****
  • Сообщений: 231
  • Репутация: +142/-7
  • Дмитрий
  • QRA: KP40ue
Лучше повторители на быстродействующих ОУ. На них же реализовать смещение ниже нуля. Вдруг захочется чисто переменку измерять?
А также возложить на них задачу предварительной фильтрации (активный антиалайсинговый фильтр) - с частотой среза в районе 350-400кГц. И с таким наклоном, чтобы АЧХ фильтра пересекла точку Fs/2 = 500кГц на уровне 20...30 дБ.   
Дмитрий, RK1AS (ex. RZ1AWR)
KP40ue

Оффлайн R2GKH Виталий

  • Ветеран
  • *****
  • Сообщений: 4318
  • Репутация: +579/-355
  • the Truth is out There...
    • Мысли вслух :)
  • QRA: KO92GP
А также возложить на них задачу предварительной фильтрации

Неоправданно усложнит и удорожает "конструкцию выходного дня".
Тут больше хотелось бы прочесть про алгоритм, заложенный топикстартером в конкретной конструкции.
SUMM(X1+...Xn)/n? 
Мы стояли на плоскости,
                  С переменным углом отражения...

Оффлайн GM

  • Старожил
  • ****
  • Сообщений: 201
  • Репутация: +45/-9
  • QRA: KO85SK
А в какой среде разработки пишете?
Кейл.

Делать надо сразу хорошо, а плохо - само получится.

Оффлайн GM

  • Старожил
  • ****
  • Сообщений: 201
  • Репутация: +45/-9
  • QRA: KO85SK
Тут больше хотелось бы прочесть про алгоритм, заложенный топикстартером в конкретной конструкции. SUMM(X1+...Xn)/n?
И это тоже. В основном сумма квадратов x(i)/n и их комбинации, повторенная два раза, поскольку два ацп. В общем, алгоритм True RMS.

Вся процедура делается в течение одной микросекунды. fCLC=56 МГц, так что на всё про всё - 56 МЦ. Плюс счетчик цикла и опрос готовности ацп. В расчетах используются 64-битные и 32-битные числа.

[Отвлекусь. Посмотрел на цены мультиметров с True RMS: Fluke233 полоса 45 Гц-1 кГц - 38500 руб.,  Fluke27 полоса 40 Гц-30 кГц - 46500 руб. #ничегосебеповорот].
Делать надо сразу хорошо, а плохо - само получится.

Оффлайн SERBUZ

  • Старожил
  • ****
  • Сообщений: 384
  • Репутация: +93/-19
  • Подпись находиться в стадии разработки
  • QRA: LO62DQ
[Отвлекусь. Посмотрел на цены мультиметров с True RMS: Fluke233 полоса 45 Гц-1 кГц - 38500 руб.,  Fluke27 полоса 40 Гц-30 кГц - 46500 руб. #ничегосебеповорот].

Какой смысл вести о миллионных выборках, сравнении с ценами мультиметров за 10-ки тысяч рублей
Количество выборок составляет порядка одного миллиона (2^20), поэтому показания являются очень точными.
Количеством выборок вы уменьшите влияние шума, немного повысите "разрядность" измерений..    Но!!!  никоим образом не устраните нелинейность измерений, тем более вы ее и так плохонькую еще сильнее ухудшили включением на вход заведомо нелинейных элементов-  стабилитронов на входе.
Нет  выигрыша реального от  миллионных выборок, вполне достаточно и сотни-тысячи, да и для любительских целей и смысла нет.

« Последнее редактирование: 26 Апрель 2021, 21:54:35 от SERBUZ »

Оффлайн GM

  • Старожил
  • ****
  • Сообщений: 201
  • Репутация: +45/-9
  • QRA: KO85SK
Подал на вход одного ацп сигнал 100 кГц от генератора через делитель 1 кОм-1 кОм. Всё замечательно, выход=const. Но во время работы схемы выборки-хранения на сигнале появляются импульсы (синяя линия на фото).

Подключил ко входу ацп инструментальный усилитель AD8221. Импульсы пропали (желтая линия).

Схема подключения ИУ - во вложении.

Теперь можно с помощью входного делителя расширить диапазон измерений, поскольку входное сопротивление ИУ 100 ГОм||2пФ. Погрешность соответственно увеличится.

А ещё в этом ИУ можно менять коэффициент усиления от 1 до 1000 одним резистором, подключенным к выводам 2-3. Как бы исхитриться регулировать Ку от МК? Есть у кого какие-нибудь идеи? Может быть, с помощью цифрового потенциометра?
« Последнее редактирование: 26 Апрель 2021, 22:22:08 от GM »
Делать надо сразу хорошо, а плохо - само получится.

Оффлайн R2GKH Виталий

  • Ветеран
  • *****
  • Сообщений: 4318
  • Репутация: +579/-355
  • the Truth is out There...
    • Мысли вслух :)
  • QRA: KO92GP
Подал на вход одного ацп сигнал 100 кГц от генератора через делитель 1 кОм-1 кОм. Всё замечательно, выход=const. Но во время работы схемы выборки-хранения на сигнале появляются импульсы (синяя линия на фото).

Этого я и боялся... Вроде и сопротивление входа высокое, и емкость мизерная, а вот поди же ты. Ладно, если ОУ победил эту напасть - уже хорошо.

Думаю, что прежде чем менять КУ операционника, нужно подумать о преобразовании биполярного сигнала. Что-бы измерять не от 0 до 3 В, а от -2 до 2 к примеру...

P.S. Кстати, думаю, неплохо было бы представиться... А то ни имени, ни позывного... 
Мы стояли на плоскости,
                  С переменным углом отражения...