Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разное (электроника) > Измерение параметров электрической сети


Автор: Курсант 16.10.2015, 14:38
Доброго времени суток!

Появилась идея произвести измерение параметров электрической сети с помощью многоканального АЦП микроконтроллера. До этого для этих целей использовались преобразователи напряжение - частота, выход которых заводился на вход таймера, который считал импульсы. Также с помощью компаратора сигнал сравнивался с нулём, и таким образом получался меандр, т.е. можно было понять, какие фазы у напряжений и токов. Теперь появилась мысль вместо преобразователей напряжение - частота использовать АЦП. Но алгоритм обработки получается гораздо сложнее - нужно будет получить всё сэмплы (мгновенные значения напряжений и токов) и некоторым образом обработать их.

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

Автор: Guest45 28.10.2015, 21:28
А я вот вижу хардварных проблем больше, чем софтовых.

Во-первых, если Вы хотите использовать АЦП, то у Вас МК окажется гальванически связан с сетью. Это не очень хорошо, хотя проблема преодолима: понадобится развязать оптронами все остальные цифровые цепи МК и сделать ему отдельное питание.

Во-вторых, диапазон АЦП будет скорее всего от 0 до +5 вольт, а в сети 220, да еще при том переменное.
Это значит, что его придется не только делить, но и сместить на середину шкалы. Значит понадобится высокоточный опорный источник на +2.5 вольта.

Так что, если прикинуть весь получающийся огород в общей сумме, то может быть действительно проще и эффективнее использовать преобразователь напряжение-частота?

Но работа с АЦП имеет и преимущество: значительно более высокую скорость измерения. Это хорошо для контроля быстрых сигналов.

А касательно перехода через 0, так это просто: делаем интерполяцию по нескольким соседним точкам, и где линия пересекает 0 - это и есть наиболее близкое к действительности место.

Период можно отловить разными способами.
Наименее точный, но наиболее быстрый - измерить время между соседними нулями и умножить на 2, полагая, что полупериоды равны.

Более точно - измерить время через один нуль, то есть целого периода.

Наиболее точный способ - измерить количество переходов через 0 на калиброванном отрезке времени и посчитать обратную величину.
Это самый медленный способ. Точность его тем выше, чем длинее измерительный интервал.

При работе с АЦП время проще всего измерять количеством снятых АЦП точек, которые снимаются с постоянной частотой.


Автор: leocat3 30.9.2016, 16:30
Guest45,
> А касательно перехода через 0, так это просто: делаем интерполяцию по нескольким соседним точкам, и где линия пересекает 0 - это и есть наиболее близкое к действительности место.

Дело за малым: определить это самое, значение ноля в единицах АЦП...

Автор: Курсант 3.1.2017, 17:24
Цитата(Guest45 @ 28.10.2015,  21:28)
А я вот вижу хардварных проблем больше, чем софтовых.

Во-первых, если Вы хотите использовать АЦП, то у Вас МК окажется гальванически связан с сетью. Это не очень хорошо, хотя проблема преодолима: понадобится развязать оптронами все остальные цифровые цепи МК и сделать ему отдельное питание.

Во-вторых, диапазон АЦП будет скорее всего от 0 до +5 вольт, а в сети 220, да еще при том переменное.
Это значит, что его придется не только делить, но и сместить на середину шкалы. Значит понадобится высокоточный опорный источник на +2.5 вольта.

Так что, если прикинуть весь получающийся огород в общей сумме, то может быть действительно проще и эффективнее использовать преобразователь напряжение-частота?

Но работа с АЦП имеет и преимущество: значительно более высокую скорость измерения. Это хорошо для контроля быстрых сигналов.

А касательно перехода через 0, так это просто: делаем интерполяцию по нескольким соседним точкам, и где линия пересекает 0 - это и есть наиболее близкое к действительности место.

Период можно отловить разными способами.
Наименее точный, но наиболее быстрый - измерить время между соседними нулями и умножить на 2, полагая, что полупериоды равны.

Более точно - измерить время через один нуль, то есть целого периода.

Наиболее точный способ - измерить количество переходов через 0 на калиброванном отрезке времени и посчитать обратную величину.
Это самый медленный способ. Точность его тем выше, чем длинее измерительный интервал.

При работе с АЦП время проще всего измерять количеством снятых АЦП точек, которые снимаются с постоянной частотой.

Спасибо за ответ. На мой взгляд, опорный источник напряжения 2,5 В не нужен, а нужен делитель напряжения, к которому подключится один вывод трансформатора. Второй вывод на АЦП (с ограничивающими стабилитронами либо с диодами).
Переход через нуль не хорошо. Если наложить на сеть помехи, то всё полетит в тартарары. Переходов будет слишком много. Нужна ЦПОС. Для ЦПОС нужна частота, но её бы не хотелось привлекать к этому делу, т.к. цифровые вольтметры частоту не спрашивают, они её измеряют.

Автор: Guest45 7.1.2017, 18:14
Цитата(Курсант @ 3.1.2017,  17:24)
На мой взгляд, опорный источник напряжения 2,5 В не нужен, а нужен делитель напряжения, к которому подключится один вывод трансформатора. Второй вывод на АЦП (с ограничивающими стабилитронами либо с диодами). 
 Это было бы так, если бы АЦП могло обрабатывать двуполярный входной сигнал.
Но АЦП микроконтроллеров обычно этого не могут, - только однополярный. Отсюда появляется вопрос: как тогда собираетесь обрабатывать отрицательную полуволну?

Цитата(Курсант @ 3.1.2017,  17:24)
Переход через нуль не хорошо. Если наложить на сеть помехи, то всё полетит в тартарары. Переходов будет слишком много. 
 Я вообще-то написал "делаем интерполяцию по нескольким соседним точкам".  Это значит, провести не ломаную, а одну прямую, усредняющую разброс снятых в области нуля точек. Она будет пересекать ноль в одном месте.

Цитата(Курсант @ 3.1.2017,  17:24)
 Нужна ЦПОС. Для ЦПОС нужна частота, но её бы не хотелось привлекать к этому делу, т.к. цифровые вольтметры частоту не спрашивают, они её измеряют.

Помеха при любом методе будет вмешиваться в ваше измерение. Всё зависит от нужной точности и соотношения сигнал/помеха. В любом случае, чем больше точность хотим, тем больше времени должны затратить на измерение.
Вы не указали, какой именно допустимый уровень помех Вы желаете преодолеть.
В обычной промышленной сети помехи, сравнимые с величиной напряжения сети- это кратковременные выбросы, которые легко отфильтровываются медианным алгоритмом.  Систематический шум невелик в сравнении с напряжением сети, так что его можно подавить усреднением отсчетов.
Для этих "нормальных" условий простое накопление нулевых отсчетов может оказаться в конечном итоге выгоднее сложного алгоритма.
Если же у Вас особые условия, когда, например, рядом мощный радиопередатчик от которого ВЧ-наводка превышает амплитуду сети - то тут отсчет по нулям конечно не прокатит. (Но и обычный вольтметр в таких условиях не замеряет тоже.)


Автор: Guest45 7.1.2017, 18:30
Универсальный вариант - взять все снятые точки, вместе с помехами, и разложить их в спектр Фурье, и в нем замерить первую гармонику. (Или любую другую, какую хотите).
Но это весьма громоздко.

Автор: Romikgy 8.1.2017, 15:19
детектор перехода через ноль
user posted image
или более лучший вариант
user posted image

Автор: Курсант 9.1.2017, 18:37
Цитата(Romikgy @ 8.1.2017,  15:19)
детектор перехода через ноль
user posted image
или более лучший вариант
user posted image

Почти хорошее решение. Но не универсальное. Сильно загаженная сеть может обойти и этот детектор, и частота будет завышена.
Вообще хорошо сработает операционный усилитель в режиме триггера Шмитта. Но тоже не универсально.
Лучше всего, ИМХО, использовать ЦПОС. Т.е. разложить семплы с помощью ДПФ. Но как это сделать, не зная частоту - я не знаю. Нужен ведь период для этого, или я что-то путаю?

Автор: Romikgy 10.1.2017, 09:38
частота в сети - 50 герц 

Автор: Курсант 10.1.2017, 20:50
Цитата(Romikgy @ 10.1.2017,  09:38)
частота в сети - 50 герц

Не, это нечестно smile Подгон под результат...
Появилась тут идея... Через среднеквадратичное отклонение находить. Т.е. взять период, допустим, 100 мс, взять семплы, разложить их в кучу рядов фурье с разными частотами, вычислить среднеквадратичное отклонение первой гармоники от семпла для каждого ряда, и там, где два меньших среднеквадратичных отклонения - разложить эти же семплы уже в диапазоне от первой до второй частоты. И так до минимального среднеквадратичного отклонения.
Хотя затрат на вычисления, думаю, будет катастрофически много.
Осталось только с DSP разобраться...

Автор: Romikgy 10.1.2017, 21:24
вы же сказали знаете разложение Фурье.... а теперь ответьте , какая точность при таком преобразовании? (для определения частоты в смысле) 
имхо вы пытаетесь по воробьям из пушки палить .... что надо найти ? частоту ? при каких шумах? исходные данные можно в студию...

Автор: Курсант 10.1.2017, 22:21
Цитата(Romikgy @ 10.1.2017,  21:24)
вы же сказали знаете разложение Фурье.... а теперь ответьте , какая точность при таком преобразовании? (для определения частоты в смысле) 
имхо вы пытаетесь по воробьям из пушки палить .... что надо найти ? частоту ? при каких шумах? исходные данные можно в студию...

Фурье - это одно, а DSP - совсем другое. На обычном МК делать ДПФ - как-то сомнительно...
Из пушки по воробьям  - может быть и да. У меня выход инвертора, нагруженного на импульсную нагрузку. Там "мех" такой и такие искажения, что иногда синусоиду с трудом удаётся опознать на осциллографе.
Точность при таком определении частоты будет зависить от глубины поиска наименьшего искажения. Т.е. сначала находим 2 наиболее близкие к оригиналу 1-е гармоники (например, это частоты 30 и 30,5 Гц), потом разлагаем семплы ряды с частотами 1-й гармоники соответственно 30, 30.05, 30.1, 30.15, 30.2, ... , 30.5 Гц, ищем наиболее близкие к оригиналу 1-е гармоники, далее ищем между ними.
Вопрос в практической реализации. Я не пробовал делать ДПФ на МК, мне кажется, для этих целей обычно DSP применяют. Хочется сразу всё правильно сделать.

Автор: Romikgy 11.1.2017, 09:58
Цитата(Курсант @  10.1.2017,  21:21 Найти цитируемый пост)
Там "мех" такой и такие искажения, что иногда синусоиду с трудом удаётся опознать на осциллографе.

в таких помехах и Фурье не поможет! я бы попробовал корреляцию использовать ... но мне кажется , что надо со схемотехникой делать ... убирать такие помехи!

Цитата(Курсант @  10.1.2017,  21:21 Найти цитируемый пост)
Фурье - это одно, а DSP - совсем другое.

дсп это мк с быстрым вычислением мат операций 

Цитата(Курсант @  10.1.2017,  21:21 Найти цитируемый пост)
На обычном МК делать ДПФ - как-то сомнительно...

что для вас обычный мк? от TI уже давно есть мк со встроенным дсп .. стм32 некоторые ветки не хуже чем полноценный дсп....
Цитата(Курсант @  10.1.2017,  21:21 Найти цитируемый пост)
 Я не пробовал делать ДПФ на МК

так попробуйте)
Цитата(Курсант @  10.1.2017,  21:21 Найти цитируемый пост)
исходные данные можно в студию...

!!!
Цитата(Курсант @  10.1.2017,  21:21 Найти цитируемый пост)
какая точность при таком преобразовании? (для определения частоты в смысле) 

так и не ответил((

Автор: Курсант 11.1.2017, 11:01
Цитата(Romikgy @ 11.1.2017,  09:58)
какая точность при таком преобразовании? (для определения частоты в смысле)
так и не ответил((

Извините, я не совсем понимаю, о чём Вы говорите. Если Вы предлагаете некую методику оценки точности измерения - предложите её. Если Вы можете подсказать некоторые ограничения, связанные с преобразованием Фурье - просветите, я пока в этом слабо разбираюсь. Я не могу дать оценку точности способа измерения гипотетического алгоритма, для которого ещё не проведены испытания. Щас пилю на Билдере генератор зашумленной синусоиды с последующим распознаванием. Как будут результаты - сообщу. На мой взгляд, никаких предпосылок для серьёзной ошибки нет, т.к. среднеквадратичное отклонение - достаточно хороший способ выбора наиболее близкой частоты, а метод деления пополам также позволяет искать решения с большой точностью.

Какого рода исходные данные от меня нужны? Типовая осциллограмма напряжения с помехами? Это же надо вставать, идти и снимать её - влом. Щас в Билдере сгенерю. Выложу приложением к сообщению.

Тема стала похожа на холивар smile

Автор: Romikgy 11.1.2017, 11:42
если у вас такой сигнал, как на картинке , которую вы выложили.. то помеха легкоустранимая , достаточно сделать фильтр , который обрежет все частоты выше основной . Создать по фильтру переходную функцию , и сделать свертку с вашим сигналом.

PS переходную функцию можно получить , нарисовав функцию и применив обратное преобразование Фурье
PPS а данные о которых я просил , допустим такие (пример)
частота оцифровки - 10 кГц
дискретность оцифровки - 12 бит
макс уровень вх. сигнала - 220 вольт
уровень помехи - 30 %
что то типа такого ..... 

Автор: Курсант 11.1.2017, 12:10
Цитата(Romikgy @ 11.1.2017,  11:42)
если у вас такой сигнал, как на картинке , которую вы выложили.. то помеха легкоустранимая , достаточно сделать фильтр , который обрежет все частоты выше основной . Создать по фильтру переходную функцию , и сделать свертку с вашим сигналом.

PS переходную функцию можно получить , нарисовав функцию и применив обратное преобразование Фурье
PPS а данные о которых я просил , допустим такие (пример)
частота оцифровки - 10 кГц
дискретность оцифровки - 12 бит
макс уровень вх. сигнала - 220 вольт
уровень помехи - 30 %
что то типа такого .....

Ок!
Частота дискретизации - 32 кГц
Разрядность - 10 бит
Амплитуда напряжения - 1 кВ
Уровень помех - не знаю... процентов на 60 я бы закладывался, а может и больше

Ну вот к сожалению у меня с физикой процесса (ДПФ/ДПХ, функции-свёртки) проблемы... Т.е. математическая сторона не очень-то и сложная, но что она даёт, что за данные на выходе, какая аппаратная часть применяется - я не в курсе. Я вообще думал, что в ядре DSP есть команды, которые, получив указатель на блок данных, выдают спектральный состав сигнала. А оказывается вон оно как...

Щас пытаюсь консультанта себе найти по этим вопросам, в т.ч. среди университетских работников, но пока тишина.

Спасибо за ответы, что-то прояснилось...

Автор: Romikgy 11.1.2017, 12:34
Импульсная характеристика
user posted image
при программировании используют такой тип
Код

sum=0;
for (i=0;i<okno;i++)
{
sum=sum+indata[i]*peredat[okno-i];
}
outdata[k]=sum;

может есть ошибки в моем коде , писал почти с головы... суть в том что у DSP есть одна команда которая делает 
значение = число * число + число 
и делает это почти за такт процессора , так что обсчет таких вычислений делается очень быстро 
PS странно не нашел онлайн расчетов цифровых фильтров....
PPS и данные это хорошо , я так понимаю надо точно определять частоту 1 киловольтового сигнала оцифрованного с 32 кГц ? правильно?
PPPS вот пример использования простого фильтра на атмеге 
http://chipenable.ru/index.php/programming-avr/item/162-prostoy-cifrovoy-filtr.html

Автор: Курсант 11.1.2017, 13:07
Цитата(Romikgy @ 11.1.2017,  12:34)
Импульсная характеристика
user posted image
при программировании используют такой тип
Код

sum=0;
for (i=0;i<okno;i++)
{
sum=sum+indata[i]*peredat[okno-i];
}
outdata[k]=sum;

может есть ошибки в моем коде , писал почти с головы... суть в том что у DSP есть одна команда которая делает 
значение = число * число + число 
и делает это почти за такт процессора , так что обсчет таких вычислений делается очень быстро 
PS странно не нашел онлайн расчетов цифровых фильтров....
PPS и данные это хорошо , я так понимаю надо точно определять частоту 1 киловольтового сигнала оцифрованного с 32 кГц ? правильно?
PPPS вот пример использования простого фильтра на атмеге 
http://chipenable.ru/index.php/programming-avr/item/162-prostoy-cifrovoy-filtr.html

Требуется измерить характеристики произвольного напряжения. Амплитуда до 1000 В. Частота - до 500 Гц. Помехи почти непредсказуемые.
Например, 220 В 50 Гц.
Или 220 В 400 Гц.
Или трёхфазное напряжение 50 Гц 380 В (нейтраль отсутствует)
Или выход инвертора, например, 700 В 50 Гц.
Фактически, нужен высококачественный измеритель напряжений, чтобы мерил точно и надёжно.

Я почему такой замороченный - слишком часто меня подводили чужие "простые" алгоритмы, которые начинали сбоить в необычных условиях работы. Например, неправильно измеряли напряжения при несинусоидальной форме сигнала, искажали частоту при повышении уровня помех, был случай, когда при несимметричной нагрузке трёхфазной сети появлялась большая ошибка в измерениях. Поэтому я хочу заморочиться, но сделать средства измерений, которые будут работать даже в аномальных условиях. Для этого нужно уменьшать количество косвенных методов при оценке. Т.е. ловить переходы через нуль - не очень хороший метод для "распознавания" синусоиды. Лучше отыскать первую гармонику (и её частоту), производить интегрирование сигнала за 1 период, оценивать коэффициент несинусоидальности (насколько я помню, там тоже берётся среднеквадратическое отклонение).

Ой, начало доходить... То, что Вы написали - это свёртка, только для дискретных сигналов (в отличие от свёртки Дюамеля, которая применяется в ТАУ). Т.е. в зависимости от подбора h(t) можно построить фильтр или вообще какое-нибудь интегрирующее или дифференцирующее звено... Но это немного не та идея, которую я хочу реализовать. Фильтр мне тоже кажется не очень надёжным решением. Я всё хочу поковырять ДПФ и анализировать первую гармонику, а дальше - интегрирование семпла за период.

Автор: Romikgy 11.1.2017, 13:24
Цитата(Курсант @  11.1.2017,  12:07 Найти цитируемый пост)
 чтобы мерил точно и надёжно

что мерил? 
Цитата(Курсант @  11.1.2017,  12:07 Найти цитируемый пост)
 Я всё хочу поковырять ДПФ и анализировать первую гармонику, а дальше - интегрирование семпла за период.

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

Автор: Курсант 11.1.2017, 13:28
Цитата(Romikgy @ 11.1.2017,  13:24)
Цитата(Курсант @  11.1.2017,  12:07 Найти цитируемый пост)
 чтобы мерил точно и надёжно

что мерил? 
Цитата(Курсант @  11.1.2017,  12:07 Найти цитируемый пост)
 Я всё хочу поковырять ДПФ и анализировать первую гармонику, а дальше - интегрирование семпла за период.

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

Чтобы мерил напряжения точно и надёжно.

Осталось только понять, откуда брать период сигнала...

Автор: vol4ek 14.1.2017, 22:28
при несиметричной нагрузке в трехфазной сети без нейтрали происходит перекос фаз поэтому и показатели разные. предлагаю не лепить чудо из говна и палок, а добиться чистого синуса на входе. дросселя и конденсаторы вам в помощь, смотрите схемы фильтров нч. как кто то там написал выше, уберите все вч помехи. говорите импульсная нагрузка? все современные импульсные блоки питания, компьютерные и им подобные работают на частотах от 30 кГц и выше. Развязку от сети 220в предлагаю сделать на трансформаторе мощностью 2 - 3 ватта с нужным выходным напряжением. получим гальваническую развязку от сети и синус на выходе а не какой-нибудь там меандр или чтото еще. Оптроны конечно хорошо, но в случае его пробоя, сами понимаете что будет.

Добавлено через 3 минуты и 38 секунд
к тому же нч трансформаторы (обычные на железе) не работают на высоких частотах, уберет часть вч помех.

Автор: Курсант 15.1.2017, 01:55
Цитата(vol4ek @ 14.1.2017,  22:28)
при несиметричной нагрузке в трехфазной сети без нейтрали происходит перекос фаз поэтому и показатели разные. предлагаю не лепить чудо из говна и палок, а добиться чистого синуса на входе. дросселя и конденсаторы вам в помощь, смотрите схемы фильтров нч. как кто то там написал выше, уберите все вч помехи. говорите импульсная нагрузка? все современные импульсные блоки питания, компьютерные и им подобные работают на частотах от 30 кГц и выше. Развязку от сети 220в предлагаю сделать на трансформаторе мощностью 2 - 3 ватта с нужным выходным напряжением. получим гальваническую развязку от сети и синус на выходе а не какой-нибудь там меандр или чтото еще. Оптроны конечно хорошо, но в случае его пробоя, сами понимаете что будет.

Добавлено @ 22:32
к тому же нч трансформаторы (обычные на железе) не работают на высоких частотах, уберет часть вч помех.

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

Автор: vol4ek 15.1.2017, 08:12
ну так вам нужно измерять низкую частоту. самый простой вч фильтр из двух элементов (дросслеля и конденсатора) уберет все помехи частотой от нескольких килогерц до свч диапазона. измерения будут точные и микрухи не будут от вч помех сбоить. попробуйте для начала самую простую схему. например сетевой фильтр как в нормальном удлиннителе. там довольно хорошая задумка. у дросселя две обмотки включенные в противофазе для более эффективного гашения помех

Автор: Курсант 15.1.2017, 23:26
Мысль интересная, но повозиться с ДПФ меня больше прельщает... Тем более что фильтр - это хорошо для определения частоты, но для измерения параметров напряжения мне придётся ещё один канал измерений делать, куда отправлять неотфильтрованный сигнал...

Автор: vol4ek 16.1.2017, 07:14
Цитата(Курсант @ 15.1.2017,  23:26)
это хорошо для определения частоты, но для измерения параметров напряжения мне придётся ещё один канал измерений делать, куда отправлять неотфильтрованный сигнал...

вот это да

Автор: vol4ek 24.1.2017, 23:10
Цитата(Romikgy @ 11.1.2017,  11:42)
макс уровень вх. сигнала - 220 вольт

до 310 амплитудное в сети 220

Добавлено через 4 минуты и 2 секунды
Цитата(Курсант @ 11.1.2017,  12:10)
Амплитуда напряжения - 1 кВ
Уровень помех - не знаю... процентов на 60 я бы закладывался, а может и больше

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)