Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Точность измерений на STM32
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
DrZLO
Народ поделитесь мнениями!

Работаю с процессором STM32F103C8C4, основная задача устройство измерение действующего значения сетевого напряжения. Перед входом АЦП стоит аналоговая схема, которая поднимает «синусоидальный» сигнал сети, снятый с делителя, ровно на середину рабочего диапазона АЦП (беру с ИОН REF196). В итоге на вход АЦП поступает сигнал с постоянной составляющей 1,65 В и размахом синусоиды от 0,15 В до 3,15 В, частой 50 Гц. Для питания АЦП использую внешний ИОН, все резистивные делители и ОУ во входном каскаде относятся к классу прецизионных.

В массив размерностью 1000 значений, с периодом 100 мкс записываются данные из регистра ADC1->DR (ADC_sample[index_adc]= (ADC1->DR)). После заполнения массива на него накладывается оконная функция и вычисляется действующие значение методом прямой дискретизации. Измеренное значение RMS калибрую для 0 В и максимального измеряемого значения.

Для оценки точности использую AC Power Meter GPM-8212 (класс точность 0,1%. Для поверки беру 10 точек, в результате измерения переменного сигнала наблюдаю нелинейность, максимальное отклонение в середине диапазона составляет 3,5%. А хотелось бы убраться в 0,5%, т.е в 5-раз хуже чем AC Meter.

Провожу аналогичный эксперимент только по измерению постоянного напряжения с прецизионного источника. Калибруясь заново провожу поверку по 10 точкам, в результате класс точности на всём диапазоне не превышает 0,25%.

Теперь собственно сам вопрос.
С аналоговой электроникой по серьёзному работаю недавно. Хотелось бы получить совет, каким образом можно повысить точность при измерение переменного сигнала? В чём может быть загвоздка в моём случаи? И как можно поробовать её решить?
scifi
Цитата(DrZLO @ Oct 10 2011, 16:20) *
С аналоговой электроникой по серьёзному работаю недавно. Хотелось бы получить совет, каким образом можно повысить точность при измерение переменного сигнала? В чём может быть загвоздка в моём случаи?

Для начала надо проверить, что вход АЦП подключен к достаточно низкоомному источнику сигнала, чтобы входная ёмкость успевала заряжаться за время выборки. Кстати, время выборки АЦП регулируется.
Altemir
И второе - а частоты дискретизации достаточно для получения обозначенной точности?
DrZLO
Цитата(Altemir @ Oct 10 2011, 16:52) *
И второе - а частоты дискретизации достаточно для получения обозначенной точности?


В программе АЦП настроена с максимальным временем преобразования ( ADC1->SMPR2 = 0x001C0000; // set sample time channel-6 (111: 239.5 cycles)). Измеряемый входного сигнал с периодом 0,02 с оцифровывается с периодом дискретизации 0,000100 с (1 : 200). Значения массива накапливаются 5 периодов измеряемого сигнала.
stells
Цитата(DrZLO @ Oct 10 2011, 16:20) *
ровно на середину

а ровно ли?
Altemir
DrZLO
Тогда надо проверить импеданс источника сигнала для АЦП, его АЧХ, а также, как вариант, найти ошибку в коде при округлении/вычислении результата sm.gif Да, по опыту - после фильтра может требоваться умножение результата на коэффициент, но вот такой нелинейности не было, хоть и калибровался по двум - в начале (офсет) и в конце диапазона (масштабный коэффициент). Надо искать причину. Если будет совсем гореть, то крайний случай - корректирующую функцию вводить.
scifi
Цитата(DrZLO @ Oct 10 2011, 16:56) *
В программе АЦП настроена с максимальным временем преобразования ( ADC1->SMPR2 = 0x001C0000; // set sample time channel-6 (111: 239.5 cycles)).

А про выходное сопротивление источника сигнала - ни слова.
Также можно неправильно настроить тактовую частоту АЦП. Ну и ещё в куче других мест можно ошибиться.
DrZLO
Цитата(scifi @ Oct 10 2011, 16:35) *
Для начала надо проверить, что вход АЦП подключен к достаточно низкоомному источнику сигнала, чтобы входная ёмкость успевала заряжаться за время выборки. Кстати, время выборки АЦП регулируется.


Вход АЦП подключён через RC-фильтр к выходу операционного усилителя, следовательно выходное сопротивление достаточно маленькое.

Цитата(stells @ Oct 10 2011, 16:59) *
а ровно ли?


точно на середину (1,65 В), заводится с внешнего ИОН через делитель, на прецезионных резисторах. Могу привести схему...
stells
Цитата(DrZLO @ Oct 10 2011, 17:17) *
точно на середину (1,65 В), заводится с внешнего ИОН через делитель, на прецезионных резисторах. Могу привести схему...

так ИОНы разные у АЦП и аналоговой схемы? наверное надо к одному привязываться
ViKo
Цитата(DrZLO @ Oct 10 2011, 16:17) *
Могу привести схему...

Приведите.
DrZLO
Цитата(ViKo @ Oct 10 2011, 18:15) *
Приведите.

Нажмите для просмотра прикрепленного файла

Цитата(stells @ Oct 10 2011, 17:20) *
так ИОНы разные у АЦП и аналоговой схемы? наверное надо к одному привязываться


ИОН один и тот же используется для питания АЦП и поднятия сигнала (на схеме это VDDA)
scifi
При наличии высокочастотного шума в сети первый ОУ может упираться по скорости нарастания сигнала на выходе. На всякий случай нужно влепить ёмкость на входе.
Не показаны номиналы R10, C2. Интересно всё-таки.
DrZLO
Цитата(Altemir @ Oct 10 2011, 16:52) *
И второе - а частоты дискретизации достаточно для получения обозначенной точности?


А есть ли какая нибудь методика для расчёта точности оцифровки от частоты дискретизации, а то я пока иду эксперементальным путём fman.gif
scifi
Цитата(DrZLO @ Oct 11 2011, 10:45) *
А есть ли какая нибудь методика для расчёта точности оцифровки от частоты дискретизации, а то я пока иду эксперементальным путём

Теоретически при наличии фильтра высоких частот перед АЦП достаточно 2-х точек (или чуть больше) на период (для максимальной частоты в сигнале). Если я правильно помню.
stells
а развязка по постоянке входного сигнала есть?
DrZLO
Цитата(stells @ Oct 11 2011, 11:09) *
а развязка по постоянке входного сигнала есть?


входной сигнал сетевого напряжения развязан,
ОУ, ИОН, STM32 питаются от гальванически развязаного БП
stells
Цитата(DrZLO @ Oct 11 2011, 11:15) *
входной сигнал сетевого напряжения развязан

т.е. перед разъемом Х1 трансформатор? он просто развязывающий или еще и силовой?
DrZLO
Цитата(stells @ Oct 11 2011, 11:26) *
т.е. перед разъемом Х1 трансформатор? он просто развязывающий или еще и силовой?


да, перед x1 цепь такая: сеть (220В) - латр - повышающий транс. В итоге на x1 подаётся напряжение 0-400 В
stells
я все к чему: нет ли у Вас перекоса в измерительной части
DrZLO
Цитата(stells @ Oct 11 2011, 11:50) *
я все к чему: нет ли у Вас перекоса в измерительной части

а в чём может быть сей перекос?
stells
Цитата(DrZLO @ Oct 11 2011, 11:53) *
а в чём может быть сей перекос?

ну, например, ЛАТР или повышающий транс нагружены еще чем-то с однополупериодным выпрямителем
dac
а схему то моделировали? а то есть определенные сомнения...
попробуйте убрать конденсатор 1500пФ в ОС ОУ и RC фильтр перед МК
ViKo
Так осциллографом посмотреть выходы первого и второго ОУ.
А заодно и VDDA.
Turnaev Sergey
DrZLO

У вас АЦП проца используется примерно на 25% от своей битности, пересчитайте нормально входной делитель под ваши 1,41*220В+10%, чтобы сигнал на входе АЦП был во всём диапазоне, соответствующем опоре.

Остальное по схеме на первый взгляд нормально, не считая того что лучше всего там использовать дифференциальное включение, потому как по земле у вас может идти дополнительная помеха.

Проверяйте так-же метод измерения, частота сети не ровно 50Гц, поэтому если вы не мерите частоту, то может гнать и метод вычисления действующего значения.
777777
Цитата(scifi @ Oct 11 2011, 10:55) *
Теоретически при наличии фильтра высоких частот перед АЦП достаточно 2-х точек (или чуть больше) на период (для максимальной частоты в сигнале). Если я правильно помню.

Это назывется "слышал звон, да не знаю где он". А если одну точку измерить в момент t=0, а второй в 2*PI?

Нужно не меньше четырех значений, что с ними делать дальше - написано здесь. При идеальном синусе этого достаточно, при неидеальном нужно больше. 20 отсчетов на период - вполне достаточная точность, но я бы выбрал количество кратное четырем. А вообще, я не уверен, что с помощью встроенного АЦП можно добиться хорошей точности. 12 бит - это лишь разрешающая способность, а не точность. У этого корпуса хоть отдельный вход для опроного напряжения?
DrZLO
В общем проблема решилась в тот же день, просто тока щас вспомнил что я эту тему запостилsm.gif

Фича в том, что АЦП однополярное и в реале работает не от 0 В ~0 LSB, а от 70 - 80 мВ ~ 60 LSB. Ошибка была в математике, а именно в величине постоянной составляющей приподнятого сигнала. Сейчас оценил точность, с калибровкой мой девайс укладывается в погрешность 0,3.
Altemir
Цитата(DrZLO @ Oct 19 2011, 15:36) *
и в реале работает не от 0 В ~0 LSB, а от 70 - 80 мВ ~ 60 LSB.


и мой второй ответ в начале темы:
Цитата
и калибровался по двум - в начале (офсет) и в конце диапазона (масштабный коэффициент)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.