Замер сетевого напряжения

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

▌Измерить толщину сиськи
Изначально в проекте было заложено вот такое решение:

На резистора гасится большая часть напряжения, стабилитрон стоит тут больше для подстраховки и в качестве обратного диода для противоположной полуволны. На деле он не особо нужен.

Ну, а дальше все просто. У оптопары H11L1M внутри стоит триггер Шмитта, т.е. есть некоторый гистерезис на включение и выключение. Включается он при токе через его светодиод примерно в 1мА, а выключается на токе 0.8мА.

Если посмотреть осциллограмму тока на светодиоде, сняв ее с резистора R35, то увидим такую картину для 220 вольт:


Разрешение 50мВ на деление, триггер стоит на 80мВ по спаду.

Включаться он должен на 100мВ, а выключаться на 80мВ, что будет 1мА и 0.8мА соответственно. Курсорами выделены моменты включения и выключения. Разница по времени, dx = 8.38ms

Если снизить напряжение до 110 вольт, то:

dx уменьшится до 6.94ms т.е. А что такое миллисекунда для микроконтроллера тикающего на мегагерцовых частотах? Да колоссальная величина! Замерить ее точно таймером в режие захвата не составляет проблем. Дальше сунуть в память таблицу соответствия и, казалось бы, все круто? Да, но не совсем…

Решение дешевое, простое. Но не слишком точное. А в ряде случаев его вообще не получится применить.

Вся проблема в том, что длительность у нас от амплитуды зависит косвенно. В идеальном мире оно бы проканало, но современные сети, особенно промышленные, сильно засраны разными импульсными потребителями.

Вроде всяких там, сварочников, инверторов, мощных приводов и прочего. Что искажает форму синуса. Делая его вообще каким-то непотребным. А если это не синус, а херня какая-то, то все эти наши красивые построения основанные на таймингах пролетают. Во-первых, точность падает катастрофически, а она изначально была так себе. Во-вторых, калибровать придется каждый раз под новую сеть, раз и навсегда таблицы в память не забить. Ну и форма синуса зависит вовсе не от вас, а от ООО «Сварщик каннибал» расположенную в соседнем цехе.

Так что 220 вольт от 110 вы еще отличите, а вот о точности хотя бы до 5 вольт можно позабыть. Но в некоторых случаях большего и не требуется.

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

Первая мысль была поставить на горячей стороне преобразователь напряжения в частоту, просунув его через ту же оптопару. Но его надо было чем то питать на горячей стороне. Ставить конденсаторный источник вообще не хотелось. Можно было бы, конечно, сунуть мелкий модуль 220AC-5DC на обратноходовике, вроде TSP-05. Есть на Али, стоит недорого.

Надо на этот модуль обзор не полениться сделать. Классная штука для питания всякой маломощной шняги от 220 вольт. Но получалось бы довольно громоздко. Считай питальник, потом ПНЧ, оптика…

▌Трансформатор
Второй мыслью был обычный трансформатор. Купить самый маленький силовой транс какой можно найти и на вторичке измерять напряжение. Спросил у Элемента, что у них есть такого рода — подобрали ТПК-2.

В принципе пригодно, но нашлось решение лучше.

Китаезы продают отличную штуку. Измерительный трансформатор ZMPT107.

Крошечная фитюлька размером с бульонный кубик. Держит до 3кВ на пробой, соотношение витков 1:1, но это трансформатор тока 2мА:2мА. То есть мы подаем ему на вход ток и снимаем ток. Ток на входе задается просто резистором последовательно, а для получения напряжения на выходе тоже применяется резистор, параллельно.

Т.е. схема примерно выглядит так:

R1 подбирается таким, чтобы ток через обмотку не превысил 2мА, максимум он держит 10мА, но после 2мА теряется линейность и на выходе будет невесть что. Напряжение у нас 220-250 вольт, берем по верхней планке. Но это действующее, а нам нужно амплитудное. Т.е. умножаем 250 на корень из 2, чтобы получить амплитудное. 250*1.41 = 353,5 вольта. Получаем, что первое сопротивление должно быть 180 кОм.

Напряжение микроконтроллера у меня 5 вольт, поэтому резистор R2 нужен такой, чтобы на 2мА на нем было примерно 4.5 вольта, пол вольта оставляем еще в запас. Это будет примерно 2.2кОм.

Все, на выходе амплитуда теперь в районе 5 вольт, но вот засада. Она переменная. А нам нужны измерения 0…5 вольт. Что делать? Выпрямлять.

▌Дайте мне диод!

Можно поставить диод, он срежет отрицательную полуволну. Но тут есть одна тонкость. Если просто в лоб поставить диод перед нагрузочным резистором:

То на обратной полуволне получается, что мы будем обрывать трансформатор тока, а что получается при обрыве источника тока? Правильно — бешеное напряжение. Ведь он будет изо всех сил пытаться продавить свои 2мА через ОГРОМНОЕ обратное сопротивление диода. В результате на диоде D1 высадится такое напряжение, что и пробить недолго. В таком включении ставить только мост или обратный диод D2, чтобы у тока всегда были пути на обратной полуволне.

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

Чтобы система работала, нужен еще один резистор. Дело в том, что у АЦП входное сопротивление ну очень большое, сравнимое с обратным включением диода, так что диод работать не будет, ему надо чтобы ток шел. Поэтому ставим второй резюк на 100кОм и с него уже снимаем наш сигнал.

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

Смотрите внимательней, синий это исходный синус с транса, а желтый это положительная полуволна с диода. От нулевой точки синус идет как и положено синусу, а вот диодная полуволна нарастает с заметной такой экспоненциальной кривизной и не доходит на величину падения на диоде (0.7 вольт примерно для 1N4148, что стоит у меня).

Экспонента берется из ВАХ диода

Мне, в моем проекте, это не сильно критично. НУ будет там возле нуля какая то кривуля, не важно.

▌Ваш диод говно, вы за кого меня принимаете? Дайте мне идеальный диод!
Но если бы было критично, то я бы сгородил идеальный диод. Делается он из диода и операционника. Схем много разных, первая что пришла в голову была такой.

Работает она просто.

Усилитель с отрицательной обратной связью, так что считаем что его входы закорочены между собой (виртуальное КЗ).

На положительной полуволне ток Iin=Uвх/R3 со входа как бы течет в землю через резистор R3. Но поскольку на самом деле никакого КЗ там нет, более того через входы ОУ ничего не втекает и не вытекает (ну почти, там ничтожный мизер в реале). То ток текущий через R3 равный Iin будет совершенно равен Iout который из выхода ОУ течет через R3 в землю. Образуя падение напряжения Uвых прямо пропорционально этому току через резистор. Т.е. Uвых = Iin*R3 = Uвх Без каких либо искажений.

На отрицательной полуволне ОУ попытается через обратную связь просадить свой инверсный выход ниже нуля, чтобы сравнять его с прямым. Но диод забитый туда не даст ему это сделать. Через R3 не потечет ток, а нет тока нет и напряжения. На выходе 0.

Вот такая вот незатейливая схема. Работает на двуполярном и однополярном питании.

Единственное, что для однополярного питания нужно брать усилок во-первых, строго однополярного питания (Single-supply) при этом способный принимать отрицательные значения на входах (Input Common-Mode Voltage Range), а во-вторых, с rail-2-rail выходом, иначе посрезает верхушки.

Т.е. ширпотреб вроде LM358 не прокатит, а что то вроде AD823 в самый раз. Для двуполярного питания же подойдет любой ширпотреб, ну может rail-2-rail будет не лишним, но опять же от напряжения питания зависит и требуемых уровней. Если не нужен полный размах от плюса до минуса питания, то ставим любое говно за три копейки и не паримся.

▌Нет! Засуньте вы этот диод знаете куда…

Второй вариант включения, немного получше, нет диода:

Тут включается напрямую в операционник. Соотношение резисторов точно такое же как и в первом варианте. Трансформатор закорачивается на виртуальную землю, а ток который там течет течет через резистор ОС. Но так как у нас питание однополярное, то нижняя полуволна просто зарывается в грунт. Требования к операционнику те же самые, что и в прошлой схеме. Rail-2-Rail и Single Supply.

▌Эй эй, зачем столько негатива? Будь на позитиве, бро!
Ну и третий вариант включения. Тут даже операционник не нужен, мы не выпрямляем и не срезаем нижнюю полуволну, а добавляем к ней постоянную составляющую. Закинув наш транс на середину делителя напряжения. Резистор на вторичке надо подобрать так, чтобы амплитуда не вылезала за напряжение питания и не проваливалась ниже его.

Результат выглядит примерно так:

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

▌А что Титов Китай?
Ну и для всяких ардуинщиков, не умеющих паять, есть готовый модуль.

Там же не али можно взять. Стоит не дорого, на нем схема с поднятием нуля на LM358 и можно еще амплитуду подкрутить переменником. Схемотехника там примерно следующая:

Но это не точно.

Вот что он выдает у меня в мастерской с сети:

Когда сети нет, то на выходе постоянка в 2.5 вольта. А появление сети дает вот такую синусоиду с центром 2.5 и размахом от 1 до 4 вольт. Подстроечником можно менять амплитуду сигнала, но это вот максимум. Выше уже начинаются искажения — срезает вершину.

И библотечка дуриковсякая для него на гитхабе.

Вот такие вот относительно простые варианты замерить сеть и не потерять гальваническую развязку.

30 thoughts on “Замер сетевого напряжения”

  1. то есть транс нужен обязательно. а если на аналоговый компаратор этот сигнал подать, то не нужен zero cross detector?
    (для тиристорного управления нагрузкой переменного тока)

    1. Ну, в принципе можно без него обойтись, только учти, что транс сдвигает фазу, градусов на 30 вроде бы. Надо в ДШ это посмотреть. Так что то, что ты увидишь после транса сильно будет запаздывать с тем, что в реале. Так что я бы зекрокрос оставил на горячей стороне. Вроде бы есть про это отдельные микрухи с опторазвязкой.

      1. Когда то нарыл в сети простой Zero Cross Detector. Жил он на сайте dextrel.net/diyzerocrosser.htm (сейчас там 404)…

        Достаточно интересный. Открывает транзистор оптопары при переходе через 0, на короткое время.

  2. Прямая проекция размаха сетевого напряжения на диапазон АЦП.
    Для атмег диапазон АЦП — 1024 отсчета.
    Т.е. 254 вольта при идеальном подборе резисторов укладываются в 1024 отсчета. Что дает точность 0,25 вольта. В идеале. В реале младшие 2 бита достаточно шумят. И их надо отбрасывать или усреднять несколько показаний. А усреднять на синусоиде — не всегда удобно.
    Либо возиться с усреднением по нескольким полупериодам.
    Иначе получим точность 1 вольт/отсчет.
    А хотелось бы более точно измерить. Что бы, например, диапазон 170-250 вольт растянуть на 1024 отсчета АЦП. 80 вольт — не 250…
    Вот и вопрос — как отбросить лишние 170 вольт ?

    1. Я бы растянул синусоиду, отнял постоянное смещение, чтобы оставить только верхушки, нормировал их под ацп и измерял.

  3. Вы же сами написали что трансформатор выдает ток, т.е. надо поставить сперва диод (лучше мост, чтобы видеть обе полуволны), а потом уже нагрузочное сопротивление, так будет точнее.
    В свое время собирал простой генератор на КТ117 — он напрямую запитан от сети 220В, в его нагрузку оптопару и измеряем частоту — она имеет зависимость от напряжения. Поскольку частота генератора намного выше частоты сети, удавалось довольно точно производить замеры по всей синусоиде.
    Был еще вариант последовательного включения стабилитрона на 180В, диода (от обратного напряжения) оптрона и гасящего резистора — чтобы отрезать лишние вольты.

    1. Не проще. Это не работает, получается только небольшая подсадка напряжения на отрицательной полуволне. т.к. диод пробивает (обычно обратимо) и он продавливает в обратку. У нас ведь источник тока. Ток на пробое меньше, но его хватает, чтобы накидать напряжение на резистор. Выглядит это так:

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

      С мостом да, с мостом все работать будет нормально. Выпрямит обе полуволны. Но мост это 4 диода и как бы не сильно надо.

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

      1. В схеме с одним диодом можно зашунтировать ТТ другим диодом в обратном влючении еще до резистора ИМХО.

            1. Не думаю, что там что то критичное будет. По крайней мере эксперимент показал, что искажения формы синуса нет.

  4. Привет, DI HALT!
    А такой вариант, как измерение тока на шунте, напряжение на делителе не рассматривал? Сплошь и рядом применяется в приборах учета ЭЭ, в простонародье — электросчетчики. Да, МК в таком случае будет «под напряжением». Развязка — допустим на ADUM1250, ADUM1251 интерфейс — UART.
    Я как то для себя рисовал схему на STM32F100/103.

      1. Зато можно определять направление тока, тип нагрузки ( активная/реактивная ), смещение нуля, …

    1. Штука прикольная, но для нее один фиг придется городить обвзяку питания, ставить адумку для передачи данных за кордон. Как бы перебор для задачи.

      1. Да, без обвязки ни как. Конденсаторное питание + опторазвязка. Зато можно кроме напряжения ещё и ток измеряет (или мощность).
        Есть ещё HLW8032, тоже самое, только по uart данные отдаёт.

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

    1. Да можно так. Если взять дифоптопару, то можно его через ОУ линеаризовать и вообще хорошо будет. Только вот питать на высокой стороне придется ОУ, а мне это не хочется.

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

            1. Ага. Особенно печально то, что оно от времени и температуры плывет. Т.е. показометр сделать то можно, но его можно сделать и на срезе волны, как в первой схеме. А мне надо точней.

              1. То есть даже в требование «точность 5В» уложиться не удастся?
                Хотя да, деградация в даташите весьма печальная — 50% за 5 лет.

Добавить комментарий

Ваш e-mail не будет опубликован.

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.