Сравнительный анализ некоторых методов фазовой синхронизации

№ 4’2009
PDF версия
Одна из широко распространенных задач, решаемых встраиваемыми системами, — это контроль сетевого напряжения. В качестве примера можно привести устройства плавного пуска и регулирования выходной мощности асинхронных двигателей. Промежуточной задачей при этом является определение текущей фазы сетевого напряжения питания, «привязка по фазе». Обычно для этого в процессе работы приложения в микроконтроллере формируется генератор виртуальной синусоиды. (Не путать с тактовым генератором микроконтроллера!) Его частота равна частоте сетевого напряжения (50 Гц), а фаза подстраивается под фазу входного напряжения. Тогда в любой момент мы можем с высокой степенью точности предсказать, какова фаза входного напряжения.

Владимир Хлуденьков

инхронизация по фазе производится после определения сдвига фаз Δφ = φ — φ0 изменением либо фазы, либо частоты внутреннего генератора, в этом случае сдвиг фаз плавно уменьшается до нуля. Как правило, вычисление сдвига фаз и синхронизация проводятся каждый период. Рассмотрим методы определения текущего отклонения фазы (рассинхронизации). Для этого используют следующие основные методы.

В первом с помощью реле определяется значение входного напряжения по отношению к некоторому уровню напряжения. Чаще всего это изменение полярности напряжения или переход уровня сетевого напряжения через некий уровень (Uпороговое).

Принцип действия приведен на рис. 1а, а схема одного из вариантов устройства — на рис. 1б.

Гасящий резистор R (обычно его номинал при входном напряжении 220 В выбирается порядка 1 МОм) предназначен для ограничения входного тока, входное напряжение ограничивают два встроенных диода — VD1 и VD2. В качестве датчика может использоваться компаратор либо просто порт, настроенный на ввод. При амплитуде входного напряжения Ua = 220√2 = 308 В различия практически нет.

Для того чтобы минимизировать время проверки, используется прерывание от компаратора. Время срабатывания компаратора принимается за начало полупериодов, соответственно, период между двумя срабатываниями — длительность одного полупериода. Видно, что положительный и отрицательный полупериоды в этом случае имеют различные длительности. Для синусоидального сигнала неточность порядка φ’ > = arcsin(5/220√2) 11, что достаточно для большинства приложений.

Неоспоримым достоинством приведенного метода служит простота. Главным недостатком является низкая надежность измерения относительно помех в сети, возможны ложные срабатывания, что показано на рис. 2. Поэтому в программе, реализующей этот метод, необходимо применять фильтрацию от помех, отводить «окно» времени, в которое разрешается срабатывание компаратора.

Второй метод предполагает применение аналого-цифрового преобразователя (АЦП). Сдвиг фаз Δφ определяется посредством использования известных из институтского курса высшей математики Фурье-анализа и тесно примыкающего к нему корреляционного анализа [2]. Для этого определим два интеграла:

где (Uвх (t)) — среднее значение напряжения входного сигнала.

Они суть свертки по параметру Δφ. Первый из них является четной функцией по Δφ и имеет максимальное
значение при Δφ = 0. Второй — нечетной и при Δφ = 0 он тоже равен нулю. Зная значения Isin(Δφ) и Icos(Δφ),
из (1) можно определить значение сдвига фаз Δφ:

Попутно избавляемся от постоянных множителей. Определение, в каком именно из двух полупериодов лежит угол Δφ, производится по знакам Isin и Icos.

Иными словами, мы оцениваем, на что «более похож» входной сигнал: на синусоиду или косинусоиду и насколько (рис. 3).

Для реализации приведенного метода требуются следующие основные операции:

  1. Вычисление текущей фазы ф внутреннего генератора. Наиболее часто фаза определяется перемножением внутреннего времени МК на частоту опорного генератора.
  2. Вычисление значений sin(φ) и cos(φ).
  3. Вычисление произведений sin(φ)·Uвx(t) и cos(φ)·Uвx(t).
  4. Суммирование вычисленных произведений (интегрирование).

Во многих микроконтроллерах, к примеру, в цифровых сигнальных процессорах (DSP), для подобного рода вычислений существуют специальные операции типа сложения с накоплением (multiplication and accumulation).

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

Рассмотрим реализацию приведенного алгоритма с точки зрения программирования. Выберем микроконтроллер AVR ATtiny13 производства компании Atmel — недорогой и обладающий достаточными функциональными возможностями для нашей задачи [1].

Семейство ATtiny по сравнению с другими семействами имеет скромные способности. Например, в нем отсутствует аппаратный умножитель. Поэтому операции типа «умножение с накоплением» можно реализовать лишь программно. Это потребует большого объема программной памяти и временный затрат.

Приведем конкретные данные. Пусть микроконтроллер ATtiny13 работает на частоте 8 МГц, для архитектуры AVR это составляет 8 млн операций в секунду. Контролируются три фазы. Количество выборок для каждого периода примем равным 256, дискретность угла фазы в этом случае немногим более
одного градуса. Тогда общее количество выборок в секунду составит S = 256×50×3 = 38 400. Значит, на одну выборку приходится не более
8 000 000/38 400 = 208 операций. Один цикл перемножения двух чисел типа unsigned char занимает порядка сорока операций. Если одно из перемножаемых чисел имеет тип unsigned int, то количество операций возрастает до нескольких сотен. Таких операций умножения требуется три: вычисление текущей фазы виртуального генератора синусоиды, перемножение текущего значения напряжения на синус предполагаемого фазового угла, перемножение текущего значения напряжения на косинус предполагаемого фазового угла. Если считать, что на рассматриваемую задачу можно потратить половину ресурсов микроконтроллера, то количество необходимых операций превышает вычислительные способности микроконтроллера. Для решения этой проблемы выберем в качестве базовых функций разложения вместо синуса и косинуса их дискретные аналоги — функции Уолша [3], что приведено на рис. 4.

Тогда вместо умножения на sin(x) и cos(x) имеем умножение на + 1 и -1, что равносильно простому сложению (вычитанию):

где WAL(1, t), WAL(2, t) — функции Уолша номер один и номер два.

Из (3) мы также можем сразу определить угол фазовой рассинхронизации.

Данный метод применен в устройстве защитного отключения трехфазной цепи, которое разработано в ЗАО «Протон-Импульс». В частности, точность определения фазы входного напряжения достигает 3°. Параллельно с задачей оценки фазы устройство контролирует уровень входного напряжения и обеспечивает ряд дополнительных функций.

Тем, кто знаком только с программированием под Windows, возможно, приведенная здесь информация покажется неактуальной. Действительно, при вычислительной мощности процессора несколько миллиардов операций в секунду выигрыш в миллион операций покажется несущественным. Тем не менее стоимость микроконтроллера ATtiny13 в десятки раз меньше, чем стоимость, к примеру, PXA255.

Литература

  1. Евстифеев А. В. Микроконтроллеры AVR семейств Tiny и Mega фирмы Atmel. М.: Додэка-XXI, 2007.
  2. Пискунов Н. С. Дифференциальное и интегральное исчисления. Учебник для втузов. В 2 т. М.: Интеграл-Пресс, 2001.
  3. Айчифер Э., Джервис Б. Цифровая обработка сигналов: практический подход. 2-е изд.
    М.: Вильямс, 2004.

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

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