Как я делал линейно-интерактивный ИБП (Часть 2)
Во второй части нашего цикла продолжим разговор про измерение переменного напряжения, а также про измерение выходного тока нагрузки. Всех заинтересованных прошу под кат.
Часть 1
Часть 2
Измерение действующего значения переменного напряжения или тока
Про измерение действующего значения уже многократно писалось в различных источниках. Мне лично больше всего понравились следующие:
Бюджетный вариант измерения TrueRMS
Метод измерения действующего значения напряжения с применением МК
Кратко и чётко все формулы расписаны
Расчет среднего и среднеквадратичного значений тока/напряжения
Если кратко, то суть всех подобных сложных расчётов состоит в том, что в самой питающей сети напряжение может быть отлично от идеально синусоидальной формы, кроме того, в случае ИБП с модифицированной синусоидой на выходе при работе от инвертора форма сигнала на выходе тоже будет лишь отдалённо напоминать синус. Поэтому если упростить измерение и считать средневыпрямленное значение, то результаты будут очень сильно отличаться от реальных.
Вот пример того, что бывает на входе ИБП и на выходе (взято отсюда):
Алгоритм расчёта действующего напряжения в моём случае какой-либо уникальностью не обладает. С частотой в 1121 Гц (для оцифровки напряжения с частотой как 50, так и 60 Гц) вызывается прерывание по таймеру, запускается АЦП и выполняются измерения по трём каналам (входное напряжение, выходное напряжение, выходной ток). После накопления 90 измерений выполняется их обсчёт и вычисляются действующие значения.
Сумма квадратов величин вычисляется прямо в прерывании, а в основном цикле программы уже при использовании арифметики с плавающей точкой вычисляются усреднённые (ещё по 20 точкам) действующие значения.
Все операции выполняются на 8-битном микроконтроллере PIC18F26K22. Кто-то может сразу задать вопрос: почему не STM32, мол он мощнее, дешевле и т.п. Отвечу сразу. STM32 контроллер хороший, но у нас как-то не прижился, хотя и использовался в некоторых проектах.
Большинство наших задач не требуют громадных вычислительных ресурсов, поэтому 8-битников тут более, чем достаточно. Кроме того, для PIC18 имеется громадное число наработок и собственное сервисное ПО, а это очень важно, т.к. значительно ускоряет новые разработки, позволяя не отвлекаться на изучение неизвестной периферии. А это всегда отнимает больше всего времени.
Также у PIC18 много своих плюсов. Это и встроенный калиброванный генератор, минимальная внешняя обвязка, диапазон напряжений питания от 2,5 до 5В, хорошая встроенная периферия, мощные выходы с током до 25 мА и т.п. Работает МК на частоте до 64 МГц.
Измерение выходного тока
Измерение тока, потребляемого нагрузкой, осуществляется интегральным датчиком ACS712ELCTR-30A-T (на 30А) фирмы Allegro. Датчик выдаёт аналоговый сигнал, пропорциональный протекающему току с учётом знака. Если ток положительный, то сигнал будет более 2 В, если отрицательный — то менее 2 В. Выдаваемый датчиком сигнал оцифровывается МК и используется для контроля нагрузки. Сейчас фирма-производитель указывает на сайте и в тех. документации, что эти датчики нежелательно применять в новых разработках, и вместо них советует более современную модель из серии ACS723. Но пока что купить модели ACS712 в России у поставщиков намного проще, да и дешевле.
Датчик крайне удобен тем, что позволяет осуществить прямое подключение к АЦП МК, при этом требует всего одного источника питания 5В, а также обеспечивает гальваническую развязку (по сути датчик является бесконтактным, работающим на эффекте Холла). Последний пункт важен, т.к. измерение тока крайне желательно проводить в фазном проводе, чтобы вся нейтраль ИБП была так называемой «сквозной», т.е. по сути представляющей собой один единый проводник. Данный же датчик можно легко использовать в разрыве любого проводника, что упрощает всю схему измерения.
Однако, с этим датчиком связан один интересный момент. По документации он может выдерживать один импульс тока в 100А продолжительностью в 100 мс. Далее могут произойти необратимые разрушения микросхемы. Естественно, в ИБП во входной цепи устанавливается автоматический выключатель. Но время его срабатывания как раз соизмеримо с длительностью данного импульса. Вот пример время-токовой характеристики автомата типа С:
Чтобы иметь некоторый запас прочности в случае короткого замыкания на печатной плате ИБП был изготовлен дополнительный шунт согласно рекомендациям самой фирмы-производителя датчика (ссылка).
Суть тут довольно проста. Сопротивление внутреннего шунта датчика ACS712 составляет 1,2 мОм. Предлагается на печатной плате в виде проводника нужной формы сделать второй такой же шунт, таким образом увеличив предельное значение тока в два раза (до 200А), что позволит сработать автоматическому выключателю намного быстрее.
Размеры такого токового шунта на печатной плате показаны ниже:
Вот так это выглядит вживую:
Хочу отметить, что данный датчик предназначен только для измерения тока потребления нагрузки, чтобы оценить нагруженность ИБП и автоматически отключать его при превышении заданного предела. Например, ИБП на 600 Вт может выдавать максимум 3А. В случае, если нагрузка начнёт потреблять 4А или больше в течение некоторого времени (например, около 2 сек), то мы её просто обесточиваем. От жёсткого КЗ в режиме работы от сети защищает автоматический выключатель. А вот в режиме работы о инвертора защита организована электронная, но с использованием других датчиков. Об этом пойдёт речь чуть позже при рассмотрении работы самого инвертора.