Построение счётчиков электроэнергии.

реклама
Построение счётчиков электроэнергии.
Современные технологии предоставляют людям возможность использовать более
удобные, эргономичные, точные и энергоэффективные приборы. В связи с этим растут
требования потребителей. Функции, которые ещё недавно считалось экзотикой, сейчас
воспринимаются как естественное, отсутствие, которых вызывает недоумение. Примеров
множество… Виброзвонок в сотовом телефоне, промышленный измерительный прибор,
который можно включить в локальную сеть, пульт для дистанционного управления
бытовой техникой и т. д. Задача разработчика – создать электронный прибор, который
максимально удовлетворял бы современным требованиям потребителя. Речь пойдёт о
счётчиках электроэнергии.
Общий принцип.
На рис1.
электроэнергии.
представлена
блок-схема
простейшего
однофазного
счётчика
Индикатор
Канал измерения тока
Схема
питания
микроконтроллер
Канал измерения
напряжения
Энергонезависимая
память
Рис. 1 Типовая схема электросчётчика (однофазного).
Для измерения потребляемой электроэнергии необходимы 2 канала информации:
Текущее значение тока в сети и текущее значение напряжения. Далее по формуле,
dP = U * I * dt (1)
где dt – время обновления информации о текущем токе и напряжении, вычисляется
текущая потребляемая энергия за время dt. Для вычисления общей потреблённой энергии
необходимо постоянное суммирование величины dP с уже накопленной суммой.
Pобщ = P + dP (2)
где Pобщ – потреблённая энергия за весь период, P – потреблённая энергия до последнего
измерения, dP – результат последнего измерения
Данный подход к измерению электроэнергии является классическим и позволяет
учитывать абсолютно всё, вплоть до сдвига фаз тока и напряжения и даже генерацию
мощности потребителем.
Как построить счётчик электроэнергии на 8-битном контроллере.
Практика показывает, что построить высококлассный счётчик электроэнергии на
базе 8-ми разрядного контроллера, который замыкает на себе все аппаратные функции, в
том числе обработку потоков данных, как минимум, сложно. Если контроллер выполняет
не только функции отображения показаний, опрос органов управления, но и вычисления,
связанные с метрологией, то, как правило, его мощности оказывается недостаточно для
измерений высокого класса. Очевидным выходом из такой ситуации является применение
специализированных микросхем учёта электроэнергии. Как правило, таким микросхемам
прилагается схема подключения в описании, так что разработчикам остаётся её
видоизменить под свои потребности. Таким образом, метрологические задачи
коммерческого учёта электроэнергии в таком варианте реализации уже решены.
Например, микросхема STPM14. Задача контроллера при подключении внешнего
счётчика электроэнергии сводится к подсчёту импульсов, частота которых
пропорциональна потребляемой мощности, отображению данных на экран, опрос
клавиатуры и запись в энергонезависимую память. Схема такого счётчика будет
выглядеть, как показано на рис 2.
Индикатор
Схема
питания
Счётчик электроэнергии
микроконтроллер
Энергонезависимая
память
Рис. 2. Типовая блок-схема счётчика электроэнергии построенного на базе 8-ми
разрядного контроллера
Другой способ построения счётчика на 8-ми разрядном контроллере.
Можно воспользоваться вычислительными мощностями производительного 8-ми
разрядного контроллера. Вот как будет выглядеть блок-схема прибора (рис 3):
Индикатор
Детектор
среднеквадратичного
значения тока
Схема
питания
Детектор среднеквадратичного
значения
напряжения
микроконтроллер
Энергонезависимая
память
Детектор
сдвига фаз
тока и
напряжения
Рис. 3. Альтернативный вариант построения счётчика на базе 8-ми разрядного
контроллера
Микроконтроллер с помощью внутреннего АЦП производит измерение величины
детекторов
среднеквадратичных
значений
тока
и
напряжения.
Детектор
среднеквадратичного значения в простейшем случае может быть выполнен в виде RC –
цепочки и диодного моста (Рис. 4 показана схема простейшего детектора среднеквадратичного значения напряжения). Напряжение, накапливаемое на конденсаторе –
искомое среднеквадратичное значение. Здесь возникнет дилемма перед разработчиком. С
одной стороны для увеличения стабильности выходного с детектора напряжения хочется
увеличить постоянную времени RC цепочки (современная элементная база позволяет это
сделать в весьма широком диапазоне).
Ux
VD1
R1
R2
На вход АЦП
контроллера
C1
Рис. 4 Простейший детектор среднеквадратичного значения
С другой стороны, резкое изменение величин тока или напряжения, например в ситуациях
подключения/отключения мощных нагрузок будет негативно сказываться на точности
показаний счётчика. Показания будут запаздывать пропорционально постоянной времени
RC-цепочки. Выход в такой ситуации есть – делать малую постоянную времени RCцепочки,
а
функцию
дополнительного
усреднения
показаний
детектора
среднеквадратичного значения возложить на микроконтроллер. Т.е. микроконтроллер
должен чаще измерять напряжение ёмкости C1.
Детектор сдвига фаз может быть построенным на основе схемы-детектора
пересечения нуля. Измерение сдвига фаз необходимо учитывать при вычислении
потреблённой энергии. В противном случае потребитель будет платить за больший объём
энергии, чем было реально израсходовано. По значению фазового сдвига необходимо
определить поправочный коэффициент к расходуемой мощности. Данный коэффициент
проще всего брать из таблицы, которая размещается в памяти программ контроллера (8ми битный контроллер будет долго вычислять значение косинуса заданного угла).
Итак, работа программы контроллера будет заключаться в периодическом
измерении среднеквадратичного тока, напряжения и угла между их фазами. Далее будет
необходимо перемножить данные значения тока, напряжения и взятого из таблицы
поправочного коэффициента сдвига фаз. Полученный результат перевести на размерность
кВт*ч и сложить с уже накопленной суммой. Параллельно с этой задачей контроллер
должен будет опрашивать органы управления и отображать данные на индикаторе.
Очевидно, что при таком варианте построения схемы придётся взять не самый простой 8ми битный контроллер, возможно, так же придётся отказаться от языка Си и писать
программу на ассемблере. Более того, доказывать точность такого прибора, а значит
сертифицировать его, будет сложнее, чем предыдущий вариант. Достоинство данного
способа построения – низкая цена комплектующей элементной базы.
Построение счётчика электроэнергии на мощном контроллере
Задачи по обработке данных от каналов тока и напряжения можно возложить на
микроконтроллер. Интеграция каналов измерения в управляющий микроконтроллер –
один из путей оптимизации решения задачи. Мощный микроконтроллер без
компромиссов обработает потоки информации, более того, даст возможность
интегрировать дополнительные функции в счётчик, например, трансляцию показаний
через сеть (например, Ethernet), вести диагностику работы счётчика, управлять более
сложным дисплеем. Словом делать ту же работу, что и 8-ми разрядный контроллер, на
порядок лучше.
Разрядность управляющего контроллера. Если мы не хотим ухудшить
характеристики точности измерительных каналов тока и напряжения, мы должны
использовать в вычислениях как минимум 16-битные данные. Почему 16 бит – это
минимум? Если мы измеряем напряжение до 350В (311В – это амплитудное значение
действующего номинального напряжения сети 220В), то 8 бит предоставляет нам шаг
измерения 1.37В или 0.4% (это только погрешность связанная с дискретизацией значения,
а будут и другие погрешности). Если мы хотим измерять величину указанного диапазона
до десятых долей, придётся увеличить разрядность АЦП на 4 разряда. Итого имеем 12
разрядов. Соответственно, разрядность управляющего контроллера желательна не менее
16. Поскольку для вычисления мощности необходимо умножение тока на напряжение (а
предварительное деление для нормирования сигнала приводит к погрешностям см.
алгоритмы вычислений, далее формулы 4 и 5), надо быть готовым к работе с 32-битными
данными.
В настоящий момент наблюдается ценовая конкуренция 32 битных и 8-ми битных
контроллеров. Есть ли смысл закладывать в новое 16-битный контроллер в новое изделие?
Если все вычисления производить контроллером, то 32-битный на базе ядра ARMCortex - самое лучшее решение. Такой контроллер содержит полный набор инструкций,
необходимых для построения счётчика электроэнергии: есть аппаратное умножение и
деление, команды выполняются за 1 такт. Мировые производители сейчас активно
расширяют свои линейки контроллеров, построенных на базе ядра ARM Cortex. Логика
действий очевидна: ARM Cortex ядро – это естественное продолжение семейств
микроконтроллеров ARM7 и ARM9. На текущий момент можно выделить два основных
производителя: STMicroelectronics и Texas Instruments. Есть и другие, однако указные
выше производители олицетворяют двигатель прогресса в данном случае и делят рынок
ARM Cortex контроллеров между собой. Во-первых, TI – приобрёл фирму Stellaris –
разработчика данного продукта. Во-вторых, компании ST и TI установили стандарт
библиотечных функций. Теперь обращение к периферии на контроллерах ST и TI
выглядит одинаково с точки зрения программирования. Это дало лёгкую переносимость
кода. Теперь, чтобы сменить контроллер ST на TI или наоборот не нужно переписывать
программу контроллера. Достаточно взять тот же самый код программы, указать другой
тип контроллера, задать расположение библиотек для нового контроллера,
откомпилировать, и код – готов. Остальные производители, по всей видимости, будут
вынуждены поддержать (или отвергать) этот стандарт в будущем. В третьих, компания
STMicroelectronics предлагает широчайшую линейку пин-совместимых, недорогих
контроллеров на базе ядра ARM Cortex. В ближайшее время на рынок выйдут
контроллеры с интегрированным беспроводным интерфейсом и контроллеры ультра
низкого потребления. В свою очередь компания TI предлагает уникальные контроллеры с
интегрированным DSP ядром и Ethernet физического уровня.
Решение построения счётчика электроэнергии от TI
Компания Texas Instruments выпустила серию микроконтроллеров для построения
счётчиков электроэнергии. Например, контроллер MSP430FE42xx. Это готовое решение
задачи, потому что в состав микропотребляющего контроллера с 16-ти битной RISC
архитектурой входят: аппаратный однофазный измеритель расходуемой электроэнергии,
модуль управления сегментным LCD, интегрированный генератор опорного напряжения,
детектор снижения напряжения питания, минимальный, но достаточный набор памяти
(ОЗУ, флэш для хранения программ, флэш для хранения переменных). По большому счёту
счётчик уже собран. Схему счётчика, построенного на MSP430FE42xx можно взять на
сайте TI. Документ описывает несколько вариантов построения счётчика электроэнергии.
Различие вариантов по большому счёту заключается в подключении измерителя тока:
через шунт, токовый трансформатор, или и то и другое. Последнее подключение, когда
используется и шунт, и токовый трансформатор служит для определения попыток
воровства электроэнергии. В итоге поле деятельности для разработчика сводится до
минимума: описать алгоритм управления дисплеем, питанием, опросом измерителя
мощности, органов управления, и сохранением обработанного результата в память.
Решение, безусловно, найдёт своего потребителя. На взгляд автора, это одно из лучших
решений для построения бытового счётчика электроэнергии. Для промышленного
применения, где как правило, требуется учёт качества энергии данное решение не будет
самым лучшим. Контроллер семейства MSP430FE42xx не позволяет снимать показания по
отдельному каналу измерений (тока или напряжения). Т.е. мы можем судить о текущей
мощности, потребляемой нагрузкой, но не сможем определить каким напряжением или
током её питаем, какой сдвиг фаз тока и напряжения, оценивать гармонические
составляющие питающего напряжения. Для этого потребуется использовать внешний
измеритель качества питающего напряжения. Вообще, любая дополнительная опция по
измерению будет стоить дополнительного внешнего элемента. Это обратная сторона
медали законченного решения: контроллер решает узкие задачи.
Для решения задачи построения 3-х фазного счётчика TI предлагает использовать
контроллер семейства MSP430F471xx. Как видно из названия, контроллер не имеет
специального назначения для измерения электроэнергии. Однако, данное семейство
обладает полным набором периферии для измерения и коммерческого учёта расхода
электроэнергии. Контроллер имеет 4 канала для измерения тока и 3 канала для измерения
напряжения. Инженеры TI предоставили дизайн 3-фазного счётчика и программу для
контроллера. При этом, кроме коммерческого учёта расхода электроэнергии есть
возможность контроля качества питающей электроэнергии. Достаточно просто определять
пофазно амплитудные и действующие значения токов, напряжений, сдвиги фаз и т.д.
Решение построения счётчика электроэнергии от STMicroelectronics
Компания STMicroelectronics предлагает свой вариант решения задачи. Было
принято решение об отказе выпуска специализированного контроллера. Вместо этого
была выпущена линейка готовых счётчиков электроэнергии STPMxx. Принцип очень
простой: микросхема-счётчик + стандартный контроллер. Счётчик электроэнергии
STPM1xx выдаёт импульсы, частота которых пропорциональна расходуемой мощности.
Точность учёта электроэнергии, в тракте АЦП (токов и напряжений) – частота импульсов
составляет 0.1%, что отвечает самым современным стандартам. Микросхемы STPM13 и
STPM14 имеют два токовых входа, что даёт возможность детектирования попыток
воровства (так же как и в решении от TI). Внутри микросхемы находится источник
опорного напряжения для АЦП, при желании можно подключить внешний. Через SPI
интерфейс можно задать свойства счётчика электроэнергии (в том числе и произвести его
калибровку). Производитель так же предлагает готовую схему счётчика электроэнергии
на базе STPM1xx. Очевидно, что данное решение в чистом виде пригодно для бытовых
счётчиков.
Для построения 3-х фазного счётчика можно использовать 3 параллельно
включённых счётчика STPM1xx, по одному на каждую фазу. Для обработки трёх
параллельных потоков информации учёта электроэнергии достаточно самого простого 8ми битного контроллера. Необходимо, чтобы у него было 3 счётных входа. Компания
STMicroelectronics имеет серию контроллеров STM8, подходящую для таких применений.
Если нет желания применять микроконтроллер в 3-фазном счётчике имеется
готовое решение на базе микросхем STPMC1. Это микросхема сбора данных с нескольких
датчиков мощности STPMS1 и необходимыми выходами управления двигателем и
выходом частоты, пропорциональной расходуемой мощности.
Для промышленных счётчиков, где анализ входного питающего напряжения – одна
из дополнительных функций микросхема STPMS1 может быть использована в паре с
контроллером STM32F101xx, который производит детальный анализ входного питания
(например, произведёт вычисление гармонических составляющих питающего
напряжения).
Точность измерений, алгоритмы вычислений и требования к
контроллеру.
Когда идёт речь о точности измерений счётчика всегда надо помнить, что «кто-то
будет платить кому-то деньги на основании показаний этого прибора». Высокая точность
измерений снимет большинство вопросов при сертификации изделия.
Точность измерения готового изделия определяется: точностью АЦП в каналах
измерения тока, напряжения (не только битность, шумы АЦП, но и точность опорного
напряжения/тока) и частота измерений. Очевидно, что чем выше скорость обновления
информации – тем выше точность измерения.
Таким образом, на точность измерения влияют свойства каналов измерения и
микроконтроллера. Микроконтроллер должен успевать обрабатывать данные, приходящие
с каналов измерения. Если он это не успевает сделать – происходит искажение выходного
результата.
Выглядит это так: микроконтроллер производит считывание результатов измерения
канала тока и напряжения. Далее по указанным выше формулам (1) и (2) производит
вычисление текущей потреблённой энергии. Предполагалось, что цикл измерений и
обработки данных будет длиться не более чем 0.1 мс. Но после написания программы
оказалось, что цикл обработки данных занимает больше времени, поэтому весь цикл
измерений и обработки занял 0.11 мс. В результате показания прибора стали ниже на 10%
от реально потреблённой энергии. Для того чтобы этот эффект устранить необходимо
установить частоту измерений и, соответственно, значение величины dt в математике
контроллера адекватную его возможностям.
Требования к микроконтроллеру. Во-первых, микроконтроллер производит
масштабирование сигнала. Что это такое... У вас на входе измерителя напряжения имеется
делитель, уменьшающий напряжение до уровней единиц вольт, дальше идёт АЦП,
преобразующий единицы вольт в код, далее микроконтроллер, ассоциирующий
полученный код с входным напряжением. Например, код 1023 соответствует напряжению
350В, код 12 – напряжению 0В. Какое напряжение подано на вход, если контроллер
получил код 412? Контроллер должен произвести следующую операцию:
Uвх = 412 *(350-0)/(1023-12) = 412 * K = 142.6В (3)
Коэффициент, которым производится масштабирование можно вычислить 1 раз и,
далее, не применять операцию деления. Но отметим, требование к контроллеру – он
должен производить аппаратное умножение. Умножение можно организовать и
программно, но это негативно скажется на скорости обработки данных и, как следствие,
точности измерения (как вариант, придётся увеличить период измерения dt).
Микроконтроллер может снизить точность измерений АЦП своим алгоритмом
обработки данных. Помните, что не всегда перестановка операций умножения и деления
даст одинаковый результат. Дробная часть в определённом знаке будет отброшена АЛУ
контроллера после деления, и если произвести последующее умножение, то погрешность
может оказаться далеко не в последнем знаке результата вычислений. Для простоты
возьмём алгоритм контроллера, который предполагает вычисление только целой части
результата. Далее приведены 2 одинаковых, с точки зрения математики, вычисления:
51 = (51 / 2) * 2 = 25 * 2 = 50 (4)
51 = (51 * 2) / 2 = 102 / 2 = 51 (5)
Очевидно, что если контроллер отбрасывает (или даже округляет до ближайшего целого)
дробную часть (или дробную часть, начиная с какого-то разряда) при делении, то можно
получить дополнительную погрешность от алгоритма обработки (4). Чтобы избежать
появления такой погрешности, достаточно переставить операции умножения и деления
местами (5). Но такой подход требует расширения разрядности обрабатываемых данных.
Как говорилось выше, на текущий момент не стоит закладывать разрядность АЦП менее
12-ти бит в трактах измерения, в противном случае, вы выиграете копейки, но проиграете
в точности готового изделия, что в большинстве случаев не выгодно конечному
потребителю. Это значит, что при умножении 12 бит значения тока на 12 бит значение
напряжения получим результат 24 бит. С таким форматом данных лучше работать 32битным контроллером.
Для отображения текущей мощности потребляемой энергии необходимо
производить суммирование за определённый временной период (допустим 1 секунда) с
последующим делением на количество измерений произведённых за данное время. Для
повышения точности измерения необходимо синхронизовать период измерений с
периодом напряжения измеряемой сети. Иначе, вы получите дребезг в последних
разрядах итогового результата. Потребитель, глядя на показания такого прибора, увидит
картину аналогичную рис 5.
Вт
Рис.5 Дребезг показаний в последних разрядах при постоянной мощности.
Откуда берётся дребезг? Наглядный ответ продемонстрирован на рисунке 6.
1.
t
Период измерений
T
T
2.
t
S1
S2
Рис. 6. Появление шумовой составляющей при вычислении средней величины
периодического сигнала, в ситуации, кода период измерений не кратен периоду сигнала.
Результат измерений равен заштрихованной площади сигнала. Период измерений в
рассматриваемом случае никак не привязан к измеряемому сигналу. Очевидно,
заштрихованная площадь в случае 2 – больше, чем в случае 1 (S2 <> S1, т.к., если
оперировать рисунком 6.2, область S1 – находится в начале синусоиды, где она близка к
нулю, а S2 – на максимуме синусоиды, соответственно S2>S1). Итак, отличие периодов
измерения и напряжения измеряемой сети приводит к снижению точности измерений.
Значения младших разрядов результата измерений будут случайными. Величина этого
шума будет обратно пропорциональна периоду измерения (соответственно периоду
обновления информации данной величины на индикаторе).
Итак, быстрое измерение средней величины за период времени требует
достаточно высокой производительности контроллера. Если отображать среднюю
величину за большой промежуток времени (5-10 сек), то величина упомянутой шумовой
составляющей показаний будет незначительной.
Важность мониторинга питания микроконтроллера.
Что происходит в момент отключения электроэнергии? Данные измерения,
которые суммировал микроконтроллер после подачи напряжения – теряются. Есть два
пути сохранения данных. Первый, периодически записывать в энергонезависимую память
показания счётчика. Второй – следить за напряжением питания и производить запись при
его снижении ниже определённого уровня, когда контроллер ещё надёжно работает, а
схема сброса ещё не запустилась. После включения – необходимо восстановить данные
потреблённой энергии. При всей сложности до последнего времени предпочтение
отдавалось второму способу решения данной проблемы. Недостаток первого способа –
ограничение циклов перезаписи энергонезависимой памяти. При записи данных 1 раз в 30
мин (не часто, скажем прямо) гарантированных производителем 100.000 (типовое
значение для EEPROM памяти) циклов перезаписи хватит на 5.71 лет работы. Т.е. в
данном случае очевидно, что нужен больший ресурс для перезаписи. Однако ситуация
меняется. Во-первых, число гарантированных циклов перезаписи классической EEPROMпамяти растёт. Во-вторых появляются новые виды памяти. Сейчас перспективным
является применение энергонезависимой FRAM-памяти. У неё значительно увеличен
ресурс по циклам перезаписи. Есть так же оригинальные решения, например микросхемы
памяти Zeropower от STMicroelectronics. Это обычная RAM-память с встроенной литиевой
батареей в корпус микросхемы. Таким образом, способность сохранять данные в памяти
на время пропадания питания определяется сроком хранения заряда литиевой батареи.
При этом можно без ограничений частоты обновления записывать данные учёта
потреблённой энергии. Если во время записи произойдёт пропадание питающего
напряжения, микросхема памяти заблокирует запись. Оригинальное и законченное
решение данной задачи.
(не для печати: Оригинальное = кто ещё из производителей включает литиевую батарею
в корпус микросхемы? Законченное = с точки зрения разработчика – достаточно
обращаться к памяти, не задумываясь о ресурсах перезаписи и о том что будет с данными,
если пропадёт питание …. Вообще, проблемы «внезапного пропадания питания» - не
существует)
Качество питающего напряжения
Исчерпывающий ответ о качестве питающего напряжения даёт спектральный
анализ формы сигнала. В идеале это должна быть синусоида с частотой 50Гц, амплитудой
220 * √2 = 311В. В реальности, спектр питающего напряжения содержит гармонические
составляющие кратные основной частоте. Наличие гармонических составляющих в
спектре питающего напряжения приводит к некорректной работе оборудования, например
к вибрациям или разогреву двигателей переменного тока. При этом по самым простым
критериям, таким как действующее напряжение и его частота, вы можете не увидеть
причины, по которой оборудование будет работать меньше положенного срока. Какова
причина появления вибрации? Ниже приведён рисунок на котором произведено
суммирование двух синусоид (а). Результат суммирования показан ниже (7). Как видно,
может измениться форма сигнала, однако частота и действующее значение может
остаться на прежнем уровне. Если мы таким напряжением будем питать двигатель
переменного тока, то очевидно, что в определённые моменты притяжение статора к
ротору будет выше среднего, а в другие моменты – ниже среднего. Это приведёт к
периодическому разгону и торможению ротора на определённых участках траектории.
Как следствие, появится дополнительная вибрация и нагрев двигателя, что неминуемо
приведёт к снижению срока его службы. Таким образом, энергия, за которую вы платите
деньги, уходит в разрушение вашего оборудования.
(а)
t
(б)
t
Рис. 7. Изменение формы синусоиды при наличии второй гармоники.
Алгоритм спектрального анализа сигнала
Математики уже давно решили вопрос разложения периодического сигнала в
спектр. Мы же займёмся практической реализацией данного вопроса применительно к
сетевому напряжению. Далее мы попытаемся описать упрощённый алгоритм разложения
сигнала в спектр, попутно выдвигая требования к контроллеру, который будет
производить спектральный анализ.
Итак, само вычисление заданной гармонической составляющей довольно таки
простое:
A = ∑ F(i) * sin(i * N * ω) * Δt
(6)
Где i – номер измерении i
F(i) – значение анализируемой функции в момент i
N – номер гармоники
ω – частота первой гармоники
Δt – интервал времени измерений
Для использования данной формулы (которая не является общим случаем), необходимо
синхронизировать начало измерений/вычислений с моментом пересечения нуля
измеряемого сигнала, а так же частоту первой гармоники сигнала. Любое из указанных
выше несоответствий приведёт к дополнительной погрешности измерения спектра
сигнала. Накопленная в течении периода измеряемого сигнала сумма будет амплитудным
значением сигнала заданной гармонической составляющей. Если нам необходимо
вычислить несколько гармонических составляющих, то указанное выше вычисление надо
будет повторить для каждой гармоники сигнала.
Упрощение вычислений. Во-первых, разумнее всего разместить таблицу идеальной
синусоиды в памяти программ контроллера, таким образом, задача вычисления синуса
угла сведётся к вычислению адреса в данной таблице. Тем не менее, задача определения
адреса табличных данных не такая простая, как может показаться.
Измеренный сигнал
F(x)
Адрес ОЗУ
Sin(ω*x)
Адрес ПЗУ
Идеальная синусоида в ПЗУ
Рис.8. Нормировка измеренного сигнала по времени
Чтобы произвести корректное разложение сигнала в спектр по формуле (6),
необходимо чтобы период измеренного сигнала был кратен периоду идеальной
синусоиды. Для этого требуется нормирование сигнала F(x) (или sin(ω*x)) по времени, т.е.
период и фазы сигналов F(x) и sin(ω*x) в начале преобразований, участвующие в
умножении со сложением (6) должны быть одинаковые.
Во-вторых, можно включить значение Δt в нормирующий коэффициент величины
входного напряжения, которое производить после суммирования и, таким образом,
исключить лишнее умножение из формулы (6).
В-третьих, существует несколько подходов к решению проблемы, в числе которых
есть методы снижения требований к производительности контроллера. Можно
производить анализ спектра питающего напряжения «на лету», производя вычисления
коэффициентов интересующих гармоник. Достоинство такого метода – безусловно
оперативность вычислений. Можно вычислять таким образом каждый период. Недостаток
метода – его точность (или как альтернатива – высокие требования к производительности
контроллера). Можно воспользоваться не всеми возможностями встроенного АЦП в
контроллер. Допустим, АЦП производит преобразование со скоростью 1МГц. Тактовая
частота контроллера – 50МГц. Соответственно, вычисление только одной гармонической
составляющей, а это нормирование входного сигнала, выборка значения идеальной
синусоиды, умножение со сложением уже накопленной суммы, может занять больше
машинного времени. Более того, измеренный ранее период сигнала может не
соответствовать периоду текущего измеряемого, что приведёт к появлению погрешности.
Таким образом, данный подход требует увеличить мощность контроллера, например,
применять DSP с тактовой частотой не ниже 300МГц, и, как вариант, снизить частоту
преобразований АЦП.
Альтернативный метод – запись значений входного напряжения в оперативную
память контроллера. Далее будет производиться разложение в спектр сигнала, который
отражён непосредственно в ОЗУ. При таком подходе можно снизить требования к
быстродействию контроллера, вычислить точнее гораздо более широкий спектр
гармонических составляющих сигнала, точно определить период основной гармоники до
преобразования в спектр, но при этом придётся оказаться от анализа каждого периода.
Запись в память
вычисления
Рис.9. Алгоритм работы контроллера без использования DMA
Объём памяти ОЗУ повышает потребительские свойства измерителя спектра.
Теоретически, можно сделать параллельными процессы записи в память измерений и
вычисления спектра. В ситуации, когда обработка данных по времени меньше периода
сигнала достаточно увеличить объём памяти в 2 раза и производить вычисления спектра
по алгоритму указанному на рисунке 10.
Запись в буфер 1
Запись в буфер 1
Запись в буфер 2
вычисления
вычисления
Ожидание
Ожидание
Рис 10. Алгоритм работы контроллера с использованием DMA
Вычислив состав гармонических составляющих сигнала в буфере 1 контроллер ждёт
окончания записи сигнала в буфер2 (в это время он может заниматься другими задачами).
По окончанию записи в буфер 2 контроллер обрабатывает эти данные, в то же время
запись новых данных производится в буфер 1. Такое разделение задач возможно только
при наличии контроллера прямого доступа к памяти (DMA) у применяемого процессора.
При отсутствии DMA – работу по записи данных в ОЗУ будет производить ядро
контроллера и работать можно будет лишь по алгоритму рис.8.
Определим необходимый объём памяти, для хранения формы сигнала за его
период. Если АЦП снимает показания со скоростью 500кГц, данные не превышают размер
2 байта, то за 0.02 секунды (период 50Гц) цикла измерения будет получено 20кб данных.
Если учесть, что частота питающего напряжения может быть не равна 50 Гц, а, например,
быть меньше, то для записи периода сигнала потребуется ещё больше оперативной
памяти.
Заключение.
Итак, мы рассмотрели проблематику построения счётчика электроэнергии с
высоты птичьего полёта. Некоторые важные темы мы даже не упоминали, например
защита от перенапряжений и ЭМС. Несмотря на кажущуюся простоту такого изделия,
имеется множество подводных камней при построении «с нуля». Далеко не каждый
разработчик быстро справится с такой задачей. Время разработки – это ещё одно
неизвестное и ещё один риск в уравнении инвестора проекта. Если брать в расчёт оплату
времени разработки, то безусловно самым выгодным является применение готовых
решений от того или иного производителя. Решения разные, каждое со своими
достоинствами и недостатками, но абсолютно точно – рабочие, тиражируемые
миллионами.
Скачать