Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Разное (электроника) > Измерение параметров электрической сети |
Автор: Курсант 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 | ||
Спасибо за ответ. На мой взгляд, опорный источник напряжения 2,5 В не нужен, а нужен делитель напряжения, к которому подключится один вывод трансформатора. Второй вывод на АЦП (с ограничивающими стабилитронами либо с диодами). Переход через нуль не хорошо. Если наложить на сеть помехи, то всё полетит в тартарары. Переходов будет слишком много. Нужна ЦПОС. Для ЦПОС нужна частота, но её бы не хотелось привлекать к этому делу, т.к. цифровые вольтметры частоту не спрашивают, они её измеряют. |
Автор: Guest45 7.1.2017, 18:14 | ||||||
Но АЦП микроконтроллеров обычно этого не могут, - только однополярный. Отсюда появляется вопрос: как тогда собираетесь обрабатывать отрицательную полуволну?
Помеха при любом методе будет вмешиваться в ваше измерение. Всё зависит от нужной точности и соотношения сигнал/помеха. В любом случае, чем больше точность хотим, тем больше времени должны затратить на измерение. Вы не указали, какой именно допустимый уровень помех Вы желаете преодолеть. В обычной промышленной сети помехи, сравнимые с величиной напряжения сети- это кратковременные выбросы, которые легко отфильтровываются медианным алгоритмом. Систематический шум невелик в сравнении с напряжением сети, так что его можно подавить усреднением отсчетов. Для этих "нормальных" условий простое накопление нулевых отсчетов может оказаться в конечном итоге выгоднее сложного алгоритма. Если же у Вас особые условия, когда, например, рядом мощный радиопередатчик от которого ВЧ-наводка превышает амплитуду сети - то тут отсчет по нулям конечно не прокатит. (Но и обычный вольтметр в таких условиях не замеряет тоже.) |
Автор: Guest45 7.1.2017, 18:30 |
Универсальный вариант - взять все снятые точки, вместе с помехами, и разложить их в спектр Фурье, и в нем замерить первую гармонику. (Или любую другую, какую хотите). Но это весьма громоздко. |
Автор: Romikgy 8.1.2017, 15:19 |
детектор перехода через ноль или более лучший вариант |
Автор: Курсант 9.1.2017, 18:37 | ||
Почти хорошее решение. Но не универсальное. Сильно загаженная сеть может обойти и этот детектор, и частота будет завышена. Вообще хорошо сработает операционный усилитель в режиме триггера Шмитта. Но тоже не универсально. Лучше всего, ИМХО, использовать ЦПОС. Т.е. разложить семплы с помощью ДПФ. Но как это сделать, не зная частоту - я не знаю. Нужен ведь период для этого, или я что-то путаю? |
Автор: Romikgy 10.1.2017, 09:38 |
частота в сети - 50 герц |
Автор: Курсант 10.1.2017, 20:50 | ||
Не, это нечестно Подгон под результат... Появилась тут идея... Через среднеквадратичное отклонение находить. Т.е. взять период, допустим, 100 мс, взять семплы, разложить их в кучу рядов фурье с разными частотами, вычислить среднеквадратичное отклонение первой гармоники от семпла для каждого ряда, и там, где два меньших среднеквадратичных отклонения - разложить эти же семплы уже в диапазоне от первой до второй частоты. И так до минимального среднеквадратичного отклонения. Хотя затрат на вычисления, думаю, будет катастрофически много. Осталось только с DSP разобраться... |
Автор: Romikgy 10.1.2017, 21:24 |
вы же сказали знаете разложение Фурье.... а теперь ответьте , какая точность при таком преобразовании? (для определения частоты в смысле) имхо вы пытаетесь по воробьям из пушки палить .... что надо найти ? частоту ? при каких шумах? исходные данные можно в студию... |
Автор: Курсант 10.1.2017, 22:21 | ||
Фурье - это одно, а DSP - совсем другое. На обычном МК делать ДПФ - как-то сомнительно... Из пушки по воробьям - может быть и да. У меня выход инвертора, нагруженного на импульсную нагрузку. Там "мех" такой и такие искажения, что иногда синусоиду с трудом удаётся опознать на осциллографе. Точность при таком определении частоты будет зависить от глубины поиска наименьшего искажения. Т.е. сначала находим 2 наиболее близкие к оригиналу 1-е гармоники (например, это частоты 30 и 30,5 Гц), потом разлагаем семплы ряды с частотами 1-й гармоники соответственно 30, 30.05, 30.1, 30.15, 30.2, ... , 30.5 Гц, ищем наиболее близкие к оригиналу 1-е гармоники, далее ищем между ними. Вопрос в практической реализации. Я не пробовал делать ДПФ на МК, мне кажется, для этих целей обычно DSP применяют. Хочется сразу всё правильно сделать. |
Автор: Курсант 11.1.2017, 11:01 | ||
Извините, я не совсем понимаю, о чём Вы говорите. Если Вы предлагаете некую методику оценки точности измерения - предложите её. Если Вы можете подсказать некоторые ограничения, связанные с преобразованием Фурье - просветите, я пока в этом слабо разбираюсь. Я не могу дать оценку точности способа измерения гипотетического алгоритма, для которого ещё не проведены испытания. Щас пилю на Билдере генератор зашумленной синусоиды с последующим распознаванием. Как будут результаты - сообщу. На мой взгляд, никаких предпосылок для серьёзной ошибки нет, т.к. среднеквадратичное отклонение - достаточно хороший способ выбора наиболее близкой частоты, а метод деления пополам также позволяет искать решения с большой точностью. Какого рода исходные данные от меня нужны? Типовая осциллограмма напряжения с помехами? Это же надо вставать, идти и снимать её - влом. Щас в Билдере сгенерю. Выложу приложением к сообщению. Тема стала похожа на холивар |
Автор: Romikgy 11.1.2017, 11:42 |
если у вас такой сигнал, как на картинке , которую вы выложили.. то помеха легкоустранимая , достаточно сделать фильтр , который обрежет все частоты выше основной . Создать по фильтру переходную функцию , и сделать свертку с вашим сигналом. PS переходную функцию можно получить , нарисовав функцию и применив обратное преобразование Фурье PPS а данные о которых я просил , допустим такие (пример) частота оцифровки - 10 кГц дискретность оцифровки - 12 бит макс уровень вх. сигнала - 220 вольт уровень помехи - 30 % что то типа такого ..... |
Автор: Курсант 11.1.2017, 12:10 | ||
Ок! Частота дискретизации - 32 кГц Разрядность - 10 бит Амплитуда напряжения - 1 кВ Уровень помех - не знаю... процентов на 60 я бы закладывался, а может и больше Ну вот к сожалению у меня с физикой процесса (ДПФ/ДПХ, функции-свёртки) проблемы... Т.е. математическая сторона не очень-то и сложная, но что она даёт, что за данные на выходе, какая аппаратная часть применяется - я не в курсе. Я вообще думал, что в ядре DSP есть команды, которые, получив указатель на блок данных, выдают спектральный состав сигнала. А оказывается вон оно как... Щас пытаюсь консультанта себе найти по этим вопросам, в т.ч. среди университетских работников, но пока тишина. Спасибо за ответы, что-то прояснилось... |
Автор: Romikgy 11.1.2017, 12:34 | ||
Импульсная характеристика при программировании используют такой тип
может есть ошибки в моем коде , писал почти с головы... суть в том что у DSP есть одна команда которая делает значение = число * число + число и делает это почти за такт процессора , так что обсчет таких вычислений делается очень быстро PS странно не нашел онлайн расчетов цифровых фильтров.... PPS и данные это хорошо , я так понимаю надо точно определять частоту 1 киловольтового сигнала оцифрованного с 32 кГц ? правильно? PPPS вот пример использования простого фильтра на атмеге http://chipenable.ru/index.php/programming-avr/item/162-prostoy-cifrovoy-filtr.html |
Автор: Курсант 11.1.2017, 13:07 | ||||
Требуется измерить характеристики произвольного напряжения. Амплитуда до 1000 В. Частота - до 500 Гц. Помехи почти непредсказуемые. Например, 220 В 50 Гц. Или 220 В 400 Гц. Или трёхфазное напряжение 50 Гц 380 В (нейтраль отсутствует) Или выход инвертора, например, 700 В 50 Гц. Фактически, нужен высококачественный измеритель напряжений, чтобы мерил точно и надёжно. Я почему такой замороченный - слишком часто меня подводили чужие "простые" алгоритмы, которые начинали сбоить в необычных условиях работы. Например, неправильно измеряли напряжения при несинусоидальной форме сигнала, искажали частоту при повышении уровня помех, был случай, когда при несимметричной нагрузке трёхфазной сети появлялась большая ошибка в измерениях. Поэтому я хочу заморочиться, но сделать средства измерений, которые будут работать даже в аномальных условиях. Для этого нужно уменьшать количество косвенных методов при оценке. Т.е. ловить переходы через нуль - не очень хороший метод для "распознавания" синусоиды. Лучше отыскать первую гармонику (и её частоту), производить интегрирование сигнала за 1 период, оценивать коэффициент несинусоидальности (насколько я помню, там тоже берётся среднеквадратическое отклонение). Ой, начало доходить... То, что Вы написали - это свёртка, только для дискретных сигналов (в отличие от свёртки Дюамеля, которая применяется в ТАУ). Т.е. в зависимости от подбора h(t) можно построить фильтр или вообще какое-нибудь интегрирующее или дифференцирующее звено... Но это немного не та идея, которую я хочу реализовать. Фильтр мне тоже кажется не очень надёжным решением. Я всё хочу поковырять ДПФ и анализировать первую гармонику, а дальше - интегрирование семпла за период. |
Автор: Romikgy 11.1.2017, 13:24 | ||
что мерил?
дело ваше.... тогда , имхо, берем набор отчетов, делаем прямое ДПФ ... зануляем все отчеты выше частоты которой нам не нужно, делаем обратное ДПФ и получаем сигнал для анализа ... хотя это тоже , что и свертка с переходной функцией.... |
Автор: Курсант 11.1.2017, 13:28 | ||||
Чтобы мерил напряжения точно и надёжно. Осталось только понять, откуда брать период сигнала... |
Автор: vol4ek 14.1.2017, 22:28 |
при несиметричной нагрузке в трехфазной сети без нейтрали происходит перекос фаз поэтому и показатели разные. предлагаю не лепить чудо из говна и палок, а добиться чистого синуса на входе. дросселя и конденсаторы вам в помощь, смотрите схемы фильтров нч. как кто то там написал выше, уберите все вч помехи. говорите импульсная нагрузка? все современные импульсные блоки питания, компьютерные и им подобные работают на частотах от 30 кГц и выше. Развязку от сети 220в предлагаю сделать на трансформаторе мощностью 2 - 3 ватта с нужным выходным напряжением. получим гальваническую развязку от сети и синус на выходе а не какой-нибудь там меандр или чтото еще. Оптроны конечно хорошо, но в случае его пробоя, сами понимаете что будет. Добавлено через 3 минуты и 38 секунд к тому же нч трансформаторы (обычные на железе) не работают на высоких частотах, уберет часть вч помех. |
Автор: Курсант 15.1.2017, 01:55 | ||
Спасибо за ответ. Однако моя задача не питать, не фильтровать и даже не потреблять. Моя задача контролировать. Измерять тоесть. И я ищу эффективные алгоритмы измерения действующих значений напряжения и коэффициента несинусоидальности. |
Автор: vol4ek 15.1.2017, 08:12 |
ну так вам нужно измерять низкую частоту. самый простой вч фильтр из двух элементов (дросслеля и конденсатора) уберет все помехи частотой от нескольких килогерц до свч диапазона. измерения будут точные и микрухи не будут от вч помех сбоить. попробуйте для начала самую простую схему. например сетевой фильтр как в нормальном удлиннителе. там довольно хорошая задумка. у дросселя две обмотки включенные в противофазе для более эффективного гашения помех |
Автор: Курсант 15.1.2017, 23:26 |
Мысль интересная, но повозиться с ДПФ меня больше прельщает... Тем более что фильтр - это хорошо для определения частоты, но для измерения параметров напряжения мне придётся ещё один канал измерений делать, куда отправлять неотфильтрованный сигнал... |
Автор: vol4ek 16.1.2017, 07:14 | ||
вот это да |
Автор: vol4ek 24.1.2017, 23:10 | ||||
до 310 амплитудное в сети 220 Добавлено через 4 минуты и 2 секунды
даже не знаю где такое найти можно. в промышленных сетях амплитуда помех не превышает пары вольт. че там, трехфазный генератор с ручным приводом или DC\AC преобразователь на полумосте? |