Метод измерения действующего значения напряжения с применением МК

        В данном посте речь пойдет об одном из вариантов измерения действующего значения напряжения и частоты сети на 8-ми битном микроконтроллере PIC18. При желании, можно метод перенести на любой другой МК, вплоть до всеми любимых ARDUINO (если они поддерживают реализацию прерываний по таймеру с частотой 5-10 кГц).
        Также, рассматриваемый метод позволяет измерять частоту сетевого напряжения без использования внешних дополнительных средств, таких как компараторы. Но, при этом приходится жертвовать либо временными ресурсами МК, либо точностью измерения частоты.
        Почему важно измерять действующее значение, а не какое либо другое, например, средневыпрямленное? Большинство “китайских” электронных вольтметров измеряют сетевое напряжение по средневыпрямленному значению. Методика измерения следующая: за период сетевого напряжения делается выборка из N значений амплитуды напряжения, результаты суммируются (без знака), делятся на N (усредняются), после чего полученный результат умножается на коэффициент

        Указанный коэффициент определяет зависимость действующего значения синусоидального (!) сигнала от средневыпрямленного.
        Такая методика измерения проста, не требует много ресурсов микроконтроллера (как временных, так и ресурсов памяти). Основным недостатком такой методики измерения является большая ошибка измерения на несинусоидальных сигналах.
        Как все знают, изменение сигнала сетевого напряжения подчиняется синусоидальному закону (вследствие применения синхронных генераторов на электростанции), с частотой изменения сигнала 50 Гц (60 Гц). Однако, на практике вследствие влияния сторонних факторов (в основном подключение к сети мощных нелинейных нагрузок), а также применения инверторов с квазисинусоидальным выходным напряжением (см. рисунок), синусоида напряжения либо значительно искажается, либо заменятся прямоугольными импульсами. В таких случаях указанный выше метод измерения даст очень большую погрешность (например, в квазисинусоидальных инверторах выходное напряжение, измеренное “китайским» вольтметром может быть равно 180-200В, в то время как действующее напряжение будет равно 220В ).


        Например, напряжение у меня дома

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

        Или после дискретизации получим

        Т.е. нам нужно делать выборку ряда значений за период сетевого напряжения, просуммировать значения квадратов точек выборки, поделить на количество точек за период (при определении количества точек выборки не забываем про теорему Котельникова-Шеннона), и взять квадратный корень из полученного результата.
        Вроде бы ничего сложного, если бы не но:
          1)  Каждый период точки выборки набираются заново, что увеличивает погрешность измерения;
          2)  В реальной сети, около нуля напряжения, могут встречаться как “нулевые полки”, так и повторные переходы через ноль напряжения, что значительно внесет погрешность в измерение.
        С первым пунктом будем бороться измерением измерением суммы квадратов точек выборки за каждый полупериод, после чего суммируя n-ую сумму квадратов с (n+1)-й и откидывая (n-1)-ую.
        Со вторым пунктом будем бороться введением зон нечувствительности по напряжению (введем границы напряжения перехода через ноль с положительной и отрицательной сторон) обычно 5-10 В в обе стороны, а также зон нечувствительности по частоте (ограничим допустимую частоту сигнала напряжения).

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

        Частота напряжения вычисляется по формуле:

    где Fд — частота дискретизации (для удобства и увеличения точности измерения частоты выбрана равной 10 кГц (период выборки — 100 мкс)).
        Теперь рассмотрим структурную схему измерительной части (в реальной схеме следует добавить фильтрующие и защитные элементы).

    Внимание! В данном методе измерения не реализована гальваническая развязка микроконтроллера от сети.     Гальваноразвязка реализуется на стороне цифрового интерфейса передачи данных от микроконтроллера.
        На входе установлен дифференциальный операционный усилитель с делителем напряжения, опертым на половину опорного напряжения (2,048 В). Поскольку, для уменьшения размеров лучше применять маломощные резисторы, устанавливаем их минимум 3 шт. равными по сопротивлению — чтобы увеличить суммарное пробивное напряжения резисторов. При этом нужно подсчитать мощность потерь при максимальном входном напряжении (P=U^2/R) — чтобы не превышала допустимой мощности резисторов. Плечи дифференциального усилителя тоже делаем равными. Тогда, напряжение в точке 1 рассчитывается по формуле:

    А напряжение в точке 1 будет иметь вид:

        Также, половина опорного напряжения подается на один из каналов АЦП. Это позволяет в постоянном режиме (например, один раз за период) определять положение уровня нуля измеряемого напряжения.
    Т.е. мы обошлись операционным усилителем с однополярным питанием, и наш входной сигнал в точке 1 изменяется от 0 до Uоп. Такой способ дает достаточно точные результаты, по сравнению, например, с выпрямлением напряжения с помощью диодов.
        Расчет делителя и коэффициента АЦП сводится к следующему:

    где A и В — замеры АЦП (за вычетом измеренного значения нуля сигнала — AN1) для текущего и предыдущего полупериодов; N1, N2 — число замеров для текущего и предыдущего полупериодов; Nadс — разрядность АЦП; U'оп — опорное напряжение за вычетом зон нелинейности (нечувствительности) операционного усилителя (обычно 0,6 В).
        Расчет делителя удобно проводить считая сигнал постоянным, приведенным к амплитуде синусоидального, а не синусоидальным. Тогда действующее значение сигнала равно амплитудному и равно значению каждого замера.
    Например, нужно рассчитать делитель для измерения максимального значения 420В переменного тока:

    Сопротивление Ra выбирается в диапазоне от 500 кОм до 1500 кОм. По выбранному сопротивлению Ra рассчитывается Rb.
        В итоге, алгоритм расчета действующего значения напряжения и частоты примет вид:

    При этом часть затратных расчетов (деление, извлечение корня) можно перенести из прерывания в основную программу.

        При расчете действующих значений на 8-ми битном МК целесообразно пользоваться целочисленными методами (с использованием масштабных коэффициентов) не прибегая к расчетам с плавающей запятой, а также упрощать по возможности арифметические операции (деление, изъятие квадратного корня и проч.). Это значительно экономит ресурсы МК.
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 10

      –1
      Много лет назад делал стабилизатор напряжения для нагревателя, который используется в выдувании ПЭТ-бутылок из преформы.
      В качестве нагревателя используется несколько мощных ламп накаливания.
      Оператор устанавливает мощность излучения лампы, основываясь на результате — качестве полученной бутылки.
      Одной из задач была необходимость компенсировать мощность при изменении напряжения в сети.
      Была составлена таблица — как необходимо изменить время включения ключа, управляющего лампой при изменении напряжения на 1 вольт. По сути — подсчет интегралов.
      Так вот ближе к теме. Брал сетевое напряжение через однополупериодный выпрямитель, сглаживал на достаточно большой емкости (точно уже не помню, но порядка 47...100 мкФ) и подавал на вход АЦП. При большой инертности ламп и небольшой скорости конвейера, измерения напряжения можно делать достаточно редко — раз в полсекунды.
        0
        ну да, можно конечно и аппаратный интегратор собрать, тем более если интересно усредненное напряжение за длительный промежуток времени
        0
        А есть опыт измерения переменного напряжения, питая МК от него-же? Есть необходимость мерять десяток линий 220В и парочку 55В, сливая данные в ардуину по оптике. По цепям гуляют большие токи и при наличии длинных соединителей МК стабильно вывешивается.
          0
          есть готовое изделие с питанием от обмотки питания ШИМ импульсника (неизолированной от сети). Да и с любым питальником (даже на разделительном конденсаторе) проблем не будет при правильной схемотехнике. Единственное ограничение для блоков питания на конденсаторе — невозможность работы при квазисинусоиде.

          А помехи длинных проводов входа при схеме, описанной в статье, МК не подвесят из-за дифф. усилителя и конденсаторов фильтрации. (или я не так понял фразу про длинные соединители).
          Да и я вообще я только один раз получил сбой МК — когда он (на макетке, соединенной проводами) управлял реле, замыкающей на 10 Ом конденсатор 20 мкФ, заряженный до 4 кВ.

          В любом случае конструктор типа ардуино не подойдет для такой задачи из-за низкой помехоустойчивости. Это все таки конструктор и применять его на реальном объекте для измерения напряжения при проходящих рядом 100-… Ампер я бы не стал.

          На счет оптики не предложу, но по RS485 у меня есть модули измерения 3-фазки с протоколом ModBus RTU (ну и Ethernet контроллер для них с SNMP имеется)
            0
            Вот как раз «Ethernet контроллер для них с SNMP» я на дуне и сгородил, а когда попробовал мерять напругу проводом 1.5 метра от дуни — получил 2-3 зависания в сутки. Там несколько линий по 30-50А 220В, а линия 55В так вообще 300А, да ещё и шумит дико. Без навешенных длинных проводов дуня от этих самых 55В питается через DC-to-DC конвертер и в ус не дует. Вот и думаю навешать на неё всю периферию по оптике, ну или по меди, но через опторазвязку. Нужно по каждой линии мерять действующее напряжение и силу тока через датчик Холла, плюс температуру контактов. Беспроблемно пока только температура меряется. Это так, проект выходного дня, но на реальном объекте. Скилы прокачиваю :)
              0
              Еще раз — при правильной схемотехнике глючить ничего не будет. Мои устройства в непосредственной близости от 48В 600А работали + впритык латр на 10 кВа ставил (в режиме включение-выключение).

              А у ардуино помехозащиты никакой.
          0
          То есть у вас цикл интегрирования привязан к частоте измеряемого напряжения. Что будет, если например в сигнале присутствует вторая, третья итд гармоника, достаточная по величине, чтобы сбить гистерезисный детектор нуля? Сигнал может быть сильно несимметричным, прыгать, иметь бороду вблизи нуля, иметь плавающую постоянную составляющую (например из-за биений входящих в синхронизм разных источников в сети) итд. Все это приведет к ошибке детекции момента перехода через ноль, а следовательно, к ошибке интегрирования, которую сложно оценить сверху для всех возможных ситуаций, в отличие от ошибки, вносимой выпрямителем.
          Я бы все же разворачивал сигнал в униполярынй диодным мостом, дальше делитель, и уже потом программный интегратор. При этом постоянную времени интегрирования брал гораздо больше периода измеряемого сигнала — все равно зачем вам 50 значений напряжения в секунду? Никаких столь же быстрых действий на основе этой информации вы все равно не предпримете — ни глазом, ни автоматикой
            0
            постоянная составляющая не имеет значения — период останется прежним, напряжение просто не будет симметрично относительно половины опоры. Гармоники отметаются, как было написано ограничением частоты пропускания. Борода вблизи нуля убирается, как было написано, введением окна вблизи нуля напряжения.

            Ну и мы говорим о сетевом напряжении — сеть все-таки довольно низкоомная чтобы там все прыгало и скакало как угодно. Да есть полки вблизи нуля и высокие гармоники, но это все легко отметается.

            В диодный мост вносит сильную нелинейность. И во всем диапазоне измерения получаем полную лажу (если конечно не устраивает погрешность измерения >1%). проверено! Это только Новатек-электро делает так свои девайсы.

            По поводу быстрых действий — примеры: стабилизаторы напряжения, АВР, переключатели резервного питания, off-line ИБП, реле сетевой защиты… и т.д и т.п. Везде принять решение надо не более чем за период напряжения.
              +1
              Введение в алгоритм константных допущений на размеры временного и потенциального окон чувствительности сильно ограничивают применение даже для контроля осветительной сети.
              — Что, если вы питаетесь от автономного генератора, частота которого из-за изменения нагрузки просела ниже, скажем, 45 или выше 55 Гц? Как ваш алгоритм, встроенный, например, в тот же АВР, определит перехлест фаз на входе в линейный трансформатор, в результате которого трансформатор выходит из линейного режима на пиках сложения амплитуд, и на низковольтных (0.4кВ) выходах форма напряжения становится просто неописуемой?
              — Где гарантия, что какой-нибудь мощный тиристорный регулятор не создаст однажды такую полку вблизи нуля, с которой при зашивке порогов вы не встречались — из-за например, старой проводки, или большого расстояния от трансформатора до потребителя?

              Это я к тому, что заранее закладываться на какие-то статистические допущения очень опасно. Алгоритм в ответственном применении может вообще не сработать, даже если имеет дело с обработкой казалось бы однотипного сигнала.

              Далее, насчет быстрых действий — тут есть явное противоречие. Устройства, для которых критично именно действующее значение напряжения, как правило, достаточно инерционные — нагреватели, двигатели итд. Постоянная их времени имеет порядок сотен миллисекунд или даже единиц секунд.

              И наоборот, все, что низкоинерционно — критично как раз к пиковым значениям — сюда в основном попадают БП разной электроники — для них будет слабым утешением действующее в течение периода 220 при коротких пиках до киловольта.

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

              Насчет нелинейности диодного моста — его надо питать сетевым напряжением, и делитель ставить уже после него. Тогда нелинейности практически не будет. Если сделать наоборот — выпрямлять значения после делителя — естественно, столкнемся с нелинейностью.

              В любом случае — посчитайте, какую теоретическую погрешность дает метод временного-потенциального окна при указанных вами константах. Я думаю, будет больше либо сравнимо с тем же 1%

              И еще — повысить точность и устойчивость вашего метода синхронных измерений можно предсказанием точки перехода через 0 экстраполяцией по N предыдущих значений, корректируя теоретическую точку взвешиванием, если нашелся истинный переход, или просто беря ее, если истинный переход по какой-то причине пропущен. Прибор таким образом сам подстроится к частоте сигнала (эдакое подобие синхронного детектора), и будет статистически нечувствителен к помехам вблизи 0.
            0
            1) Как раз таки алгоритм позволяет ограничивать частоты от 20 до 100Гц без проблем;
            2) Никто и никогда по амплитудному значению не определяет перенапряжение — только в микросекундной технике, которую я не встречал
            Определять напряжение переключение по амплитуде в стабилизаторах, ИБП — глупость полнейшая. Взять холя бы несинусоидальный сигнал — у него амплитуда будет или больше или меньше синусоидального, в зависимости от ширины импульса. При этом все компоненты электроники, питающаяся от сетевого напряжения, рассчитана на действующие значения, с указанием предельных мгновенных (тех же амплитудных), да еще с количеством повторов перенапряжений. И измеряют именно действующие значения. С током еще больше — при коэффициенте амплитуды тока нагрузки (на нелинейных VDC нагрузках) контроль амплитуды вообще бессмысленен, она по определению больше номинальной амплитуды будет, при том что устройства при этом будут себя вполне хорошо чувствовать.
            Кроме того, если сигнал исказился и стал «шире», амплитудное значение осталось прежнее, а действующее может и на 30% больше нормы стать… и что? Пых нагрузка?

            Все то что инерционно и не нужно часто иметь напряжение — про это в статье тоже есть. Достаточно набирать выборки не смотря на частоту сети и переходы через 0 в течение хотя бы 1 секунды, а дальше рассчитывать по приведенным формулам. При этом частоту выборки можно значительно уменьшить вплоть до периода в 1 мс, а точность получится не хуже 1%.

            Насчет моста- не нужно считать меня ....., который будет после делителя ставить на напряжении 4,096 В диоды, на которых падает 0,7 В.
            Но, применение моста даст погрешность как минимум 0,7 В, которую сложно учесть, поскольку оно плавает. Кроме того, дифф усилитель отметает все помехи от МК, и позволяет ставить на входе Мегаомные сопротивления, что уменьшает потери и увеличивает электробезопасность.(на диодном мосте даже резисторы 500 кОм не поставить). И еще — все АЦП очень не любят высокоомных нагрузок. В документации на АЦП указывается максимальное сопротивление источника сигнала. Операционник и тут улучшает ситуацию.

            По последнему пункту согласен — применяются методы синхронного таймера — это значительно увеличивает надежность. Но это только еще одно дополнение к методу.

            Only users with full accounts can post comments. Log in, please.