|
Точность измерений на STM32 |
|
|
|
Oct 10 2011, 12:20
|
Группа: Участник
Сообщений: 11
Регистрация: 31-08-11
Пользователь №: 66 946

|
Народ поделитесь мнениями!
Работаю с процессором 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%.
Теперь собственно сам вопрос. С аналоговой электроникой по серьёзному работаю недавно. Хотелось бы получить совет, каким образом можно повысить точность при измерение переменного сигнала? В чём может быть загвоздка в моём случаи? И как можно поробовать её решить?
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 26)
|
Oct 10 2011, 12:56
|
Группа: Участник
Сообщений: 11
Регистрация: 31-08-11
Пользователь №: 66 946

|
Цитата(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 периодов измеряемого сигнала.
Сообщение отредактировал DrZLO - Oct 10 2011, 12:57
|
|
|
|
|
Oct 10 2011, 13:03
|
Местный
  
Группа: Свой
Сообщений: 249
Регистрация: 2-05-06
Из: Россия, Поволжье
Пользователь №: 16 686

|
DrZLOТогда надо проверить импеданс источника сигнала для АЦП, его АЧХ, а также, как вариант, найти ошибку в коде при округлении/вычислении результата  Да, по опыту - после фильтра может требоваться умножение результата на коэффициент, но вот такой нелинейности не было, хоть и калибровался по двум - в начале (офсет) и в конце диапазона (масштабный коэффициент). Надо искать причину. Если будет совсем гореть, то крайний случай - корректирующую функцию вводить.
|
|
|
|
|
Oct 10 2011, 13:17
|
Группа: Участник
Сообщений: 11
Регистрация: 31-08-11
Пользователь №: 66 946

|
Цитата(scifi @ Oct 10 2011, 16:35)  Для начала надо проверить, что вход АЦП подключен к достаточно низкоомному источнику сигнала, чтобы входная ёмкость успевала заряжаться за время выборки. Кстати, время выборки АЦП регулируется. Вход АЦП подключён через RC-фильтр к выходу операционного усилителя, следовательно выходное сопротивление достаточно маленькое. Цитата(stells @ Oct 10 2011, 16:59)  а ровно ли? точно на середину (1,65 В), заводится с внешнего ИОН через делитель, на прецезионных резисторах. Могу привести схему...
|
|
|
|
|
Oct 11 2011, 06:40
|
Группа: Участник
Сообщений: 11
Регистрация: 31-08-11
Пользователь №: 66 946

|
Цитата(ViKo @ Oct 10 2011, 18:15)  Приведите.
Цитата(stells @ Oct 10 2011, 17:20)  так ИОНы разные у АЦП и аналоговой схемы? наверное надо к одному привязываться ИОН один и тот же используется для питания АЦП и поднятия сигнала (на схеме это VDDA)
|
|
|
|
|
Oct 11 2011, 06:45
|
Группа: Участник
Сообщений: 11
Регистрация: 31-08-11
Пользователь №: 66 946

|
Цитата(Altemir @ Oct 10 2011, 16:52)  И второе - а частоты дискретизации достаточно для получения обозначенной точности? А есть ли какая нибудь методика для расчёта точности оцифровки от частоты дискретизации, а то я пока иду эксперементальным путём
|
|
|
|
|
Oct 11 2011, 07:15
|
Группа: Участник
Сообщений: 11
Регистрация: 31-08-11
Пользователь №: 66 946

|
Цитата(stells @ Oct 11 2011, 11:09)  а развязка по постоянке входного сигнала есть? входной сигнал сетевого напряжения развязан, ОУ, ИОН, STM32 питаются от гальванически развязаного БП
|
|
|
|
|
Oct 11 2011, 07:46
|
Группа: Участник
Сообщений: 11
Регистрация: 31-08-11
Пользователь №: 66 946

|
Цитата(stells @ Oct 11 2011, 11:26)  т.е. перед разъемом Х1 трансформатор? он просто развязывающий или еще и силовой? да, перед x1 цепь такая: сеть (220В) - латр - повышающий транс. В итоге на x1 подаётся напряжение 0-400 В
|
|
|
|
|
Oct 11 2011, 07:53
|
Группа: Участник
Сообщений: 11
Регистрация: 31-08-11
Пользователь №: 66 946

|
Цитата(stells @ Oct 11 2011, 11:50)  я все к чему: нет ли у Вас перекоса в измерительной части а в чём может быть сей перекос?
|
|
|
|
|
Oct 11 2011, 10:39
|

Знающий
   
Группа: Свой
Сообщений: 562
Регистрация: 25-07-06
Из: Зеленоград, Новосибирск
Пользователь №: 19 088

|
DrZLO
У вас АЦП проца используется примерно на 25% от своей битности, пересчитайте нормально входной делитель под ваши 1,41*220В+10%, чтобы сигнал на входе АЦП был во всём диапазоне, соответствующем опоре.
Остальное по схеме на первый взгляд нормально, не считая того что лучше всего там использовать дифференциальное включение, потому как по земле у вас может идти дополнительная помеха.
Проверяйте так-же метод измерения, частота сети не ровно 50Гц, поэтому если вы не мерите частоту, то может гнать и метод вычисления действующего значения.
--------------------
"Отсутствие вашей судимости - это не ваша заслуга, а наша недоработка." Ф.Дзержинский.
|
|
|
|
|
Oct 11 2011, 15:04
|

Профессионал
    
Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357

|
Цитата(scifi @ Oct 11 2011, 10:55)  Теоретически при наличии фильтра высоких частот перед АЦП достаточно 2-х точек (или чуть больше) на период (для максимальной частоты в сигнале). Если я правильно помню. Это назывется "слышал звон, да не знаю где он". А если одну точку измерить в момент t=0, а второй в 2*PI? Нужно не меньше четырех значений, что с ними делать дальше - написано здесь. При идеальном синусе этого достаточно, при неидеальном нужно больше. 20 отсчетов на период - вполне достаточная точность, но я бы выбрал количество кратное четырем. А вообще, я не уверен, что с помощью встроенного АЦП можно добиться хорошей точности. 12 бит - это лишь разрешающая способность, а не точность. У этого корпуса хоть отдельный вход для опроного напряжения?
|
|
|
|
|
Oct 19 2011, 11:36
|
Группа: Участник
Сообщений: 11
Регистрация: 31-08-11
Пользователь №: 66 946

|
В общем проблема решилась в тот же день, просто тока щас вспомнил что я эту тему запостил  Фича в том, что АЦП однополярное и в реале работает не от 0 В ~0 LSB, а от 70 - 80 мВ ~ 60 LSB. Ошибка была в математике, а именно в величине постоянной составляющей приподнятого сигнала. Сейчас оценил точность, с калибровкой мой девайс укладывается в погрешность 0,3.
|
|
|
|
|
Oct 19 2011, 13:04
|
Местный
  
Группа: Свой
Сообщений: 249
Регистрация: 2-05-06
Из: Россия, Поволжье
Пользователь №: 16 686

|
Цитата(DrZLO @ Oct 19 2011, 15:36)  и в реале работает не от 0 В ~0 LSB, а от 70 - 80 мВ ~ 60 LSB. и мой второй ответ в начале темы: Цитата и калибровался по двум - в начале (офсет) и в конце диапазона (масштабный коэффициент)
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|