Тиристорное управление асинхронным двигателем

Симисторный регулятор мощности с микроконтроллерным управлением

Однажды для одного небольшого домашнего проекта мне потребовался регулятор мощности, пригодный для регулировки скорости вращения электромотора переменного тока. В качестве основы использовалась вот такая плата на базе микроконтроллера STM32F103RBT6. Плата была выбрана как имеющая честный RS232 интерфейс и имеющая при этом минимум дополнительных компонентов. На плате отсутствует слот под литиевую батарейку для питания часов, но приживить его — дело пятнадцати минут.
Итак, начнём с теории. Все знакомы с так называемой широтно-импульсной модуляцией, позволяющей управлять током в (или, что реже, напряжением на) нагрузке с максимальным КПД. Лишняя мощность в таком случае просто не будет потребляться, вместо того, чтобы рассеиваться в виде тепла, как при линейном регулировании, представляющем собой не более чем усложнённый вариант реостата. Однако, по ряду причин такое управление, будучи выполненным «в лоб», не всегда подходит для переменного тока. Одна из них — бо́льшая схемотехническая сложность, поскольку требуется диодный мост для питания силовой части на MOSFET или IGBT транзисторах. Этих недостатков лишено симисторное управление, представляющее собой модификацию ШИМ.
Симистор (TRIAC в англоязычной литературе) — это полупроводниковый прибор, модификация тиристора, предназначенный для работы в качестве ключа, то есть он может быть либо открыт, либо закрыт и не имеет линейного режима работы. Основное отличие от тиристора — двусторонняя проводимость в открытом состоянии и (с некоторыми оговорками) независимость от полярности тока (тиристоры и симисторы управляются током, как и биполярные транзисторы) через управляющий электрод. Это позволяет легко использовать симистор в цепях переменного тока. Вторая особенность, общая с тиристорами, — это свойство сохранять проводимость при исчезновении управляющего тока. Закрывается симистор при отключении тока между основными электродами, то есть, когда переменный ток переходит через ноль. Побочным эффектом этого является уменьшение помех при отключении. Таким образом, для открывания симистора нам достаточно подать на управляющий электрод открывающий импульс небольшой, порядка десятков микросекунд, длительности, а закроется он сам в конце полупериода переменного тока.
Симисторное управление учитывает вышеперечисленные свойства этого прибора и заключается в отпирании симистора на каждом полупериоде переменного тока с постоянной задержкой относительно точки перехода через ноль. Таким образом, от каждого полупериода отрезается «ломтик». Заштрихованная на рисунке часть — результат этой процедуры. Таким образом, на выходе вместо синусоиды мы будем иметь что-то, в известной степени напоминающее пилу:

Теперь наша задача — вовремя отпирать симистор. Эту задачу мы возложим на микроконтроллер. Приведённая ниже схема является результатом анализа имеющихся решений а также документации к оптронам. В частности, силовая часть взята из документации на симисторный оптрон производства Texas Instruments. Схема не лишена недостатков, один из которых — мощный проволочный резистор-печка, через который включён оптрон, детектирующий переход через ноль.

Как это работает? Рассмотрим рисунок.

На положительном полупериоде, когда ток через оптрон превышает некоторое пороговое значение, оптрон открывается и напряжение на входе микроконтроллера опускается практически до нуля (кривая «ZC» на рисунке). Когда же ток снова опускается ниже этого значения, на микроконтроллер снова поступает единица. Происходит это в моменты времени, отстоящие на dz от нуля тока. Это dz ощутимо, в моём случае составляет около 0.8 мс, и его необходимо учитывать. Это несложно: мы знаем период T и длительность импульса высокого уровня h, откуда dz = (h — T / 2) / 2. Таким образом, нам необходимо открывать симистор через dz + dP от переднего фронта сигнала с оптрона.
О фазовом сдвиге dP стоит поговорить отдельно. В случае c ШИМ постоянного тока среднее значение тока на выходе будет линейно зависеть от скважности управляющего сигнала. Но это лишь потому, что интеграл от константы даёт линейную зависимость. В нашем случае необходимо отталкиваться от значения интеграла синуса. Решение простого уравнения даёт нам искомую зависимость: для линейного изменения среднего значения тока необходимо менять фазовый сдвиг по закону арккосинуса, для чего достаточно ввести в управляющую программу LUT таблицу.
Всё, о чём я расскажу в дальнейшем, имеет прямое отношение к архитектуре микроконтроллеров серии STM32, в частности, к архитектуре их таймеров. Микроконтроллеры этой серии имеют разное число таймеров, в STM32F103RBT6 их семь, из которых четыре пригодны для захвата и генерации ШИМ. Таймеры можно каскадировать: для каждого таймера одно из внутренних событий (переполнение, сброс, изменение уровня на одном из входных или выходных каналов и т.д.; за подробностями отсылаю вас к документации) можно объявить выходным и направить его на другой таймер, назначив на него определённое действие: старт, стоп, сброс и т.д. Нам потребуются три таймера: один из них, работая в т.н. PWM input режиме, замеряет период входного сигнала и длительность импульса высокого уровня. По окончании измерения, после каждого периода генерируется прерывание. Одновременно с этим запускается связанный с этим событием таймер фазового сдвига, работающий в ждущем режиме. По событию переполнения этого таймера происходит принудительный сброс таймера, генерирующего выходной управляющий сигнал на симистор, таким образом, через каждый полный период переменного тока подстраивается фаза управляющего сигнала. Только первый таймер генерирует прерывание, и задача обработчика сводится к подстройке фазового сдвига (регистр ARR ждущего таймера) и периода ШИМ таймера (также регистр ARR) так, чтобы он всегда был равен половине периода переменного тока. Таким образом, всё управление происходит на аппаратном уровне и влияние программных задержек полностью исключается. Да, это можно было сделать и программно, но грех было не воспользоваться такой возможностью, как каскадируемые таймеры.
Выкладывать на обозрение код всего проекта я не вижу смысла, к тому же, он далёк от завершения. Приведу лишь фрагмент, содержащий описанный выше алгоритм. Он абсолютно независим от прочих частей и легко может быть портирован в другой проект на совместимом микроконтроллере.
И напоследок, видеоролик, показывающий устройство в действии:

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

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

Вот совокупность всех аспектов проблемы управления:

  • Прежде всего, слово «микроконтроллер» в заглавии статьи, говорит о том, что управлять нагрузкой необходимо не потенциометром, (таких решений предостаточно), а именно микроконтроллером.
  • Обязательное наличие гальванической развязки.
  • Плавное управление мощностью, а не старт-стопное.
  • Контроль перехода через ноль (Zero-Cross).
  • Некоторые особенности выбора сглаживающего фильтра RC snubber.
  • Программная реализация событий управления на примере Atmega16A.
  • Обзор аналогичных решений в Интернете.


Схема 1. Узел управления нагрузкой.


Схема 2. Датчик перехода через ноль (Zero-Cross).

Цепи:

  • VCC – 5 вольт, питание низковольтной части узла, полученное стабилизатором напряжения;
  • GND – общая точка низковольтной части;
  • DRV – выход микроконтроллера, для управления нагрузкой (PC6 для Atmega16A);
  • ZERO — вход TTL-сигнала (PD2/INT0 для Atmega16A) от события перехода через ноль сети 220;
  • L,N — фаза и нейтраль сети 220;

Элементы:

  • MOC3052 — оптотриак (симистор), обеспечивающий гальваническую развязку;
  • BT136 — триак (симистор), обеспечивающий управление мощной нагрузкой;
  • BC847 – транзистор, управляющий MOC3052;
  • R1,R2 – делитель, запирающий транзистор по умолчанию.
  • RS,CS — сглаживающий фильтр RC snubber, необходимый только для индуктивной нагрузки.
  • PC814 — оптрон датчика Zero-Cross;
  • RZ0,RZ1 — токозадающие резисторы, двухваттные;
  • SN74HC14D – триггер Шмидта, для повышения помехоустойчивости;
  • М — двигатель, схема включения типа «звезда»;
  • CF — фазосдвигающий конденсатор.


Диаграмма фазового управления.

Оптрон PC814 обладает той особенностью, что содержит два внутренних светодиода, и реагирует на разнополярное напряжение при токе 10 мА. Поэтому характер импульсов сигнала ZERO именно такой, как показано на диаграмме. На токозадающих сопротивлениях RZ0 и RZ1 падает практически всё напряжение питающей сети, поэтому на их ваттности не надо экономить. Вместо двух последовательных сопротивлений можно использовать одно, соответствующего типа.

Сигнал ZERO попадает на микроконтроллер PD2/INT0 и вызывает аппаратное прерывание ниспадающим фронтом. Как будет показано далее, программа обработки прерывания запускает счетчик, время работы которого и будет определять фазовую задержку включения симистора относительно события перехода через ноль. Сигнал DRV формируется этой задержкой. На диаграмме показано, что передний фронт сигнала DRV смещается так, что энергетика на нагрузке уменьшается синхронно, через каждые 10 миллисекунд. Этого можно достичь только программным способом.

Если задача управления нагрузкой простая (включить/выключить) , то датчик Zero-Cross можно и не применять. Однако его использование уменьшает помехи при коммутации сильноточной нагрузки, да и режим, в котором пребывает силовой симистор более щадящий и он меньше нагревается. Используя данный подход в полном объеме, можно строить достаточно сложные воздействия на двигатель.

В представленной схемотехнике имеется один не большой «подводный камушек», о который можно споткнуться. При инициализации микроконтроллера может пройти достаточное время, это связано с конкретной задачей, когда его выходные сигналы находятся в третьем состоянии. В течении этого времени необходимо запереть транзистор BC847. Иначе возможен скачек напряжения, который пройдет на нагрузку.

Сглаживающий фильтр RC-snubber.

Необходимо иметь в виду, что при отключении и включении симистора из-за реактивного сопротивления обмоток может возникать короткий бросок и даже затухающие колебания на нагрузке. Для предотвращения этих бросков служит фильтр RS, CS. В литературе по триакам приводятся номиналы этих элементов: RS = 39 Ом, CS = 0.01 мкФ. При этом для мощности RS нет рекомендаций. Мой практический опыт говорит о том, что сопротивление RS горит так, что выгорает весь узел с симистором. При этом оборудование испытывалось, собственные колебания подавлены, работа стабильная, но иногда у заказчика происходит пробой узла. Причины этих возгораний носят случайный характер и систематизации не поддаются. Можно только предположить, что причиной может быть не сам узел симистор – двигатель, а наводимая на него через питающую сеть импульсная помеха от другого оборудования.

И так, для подавления собственных колебаний представленные номиналы вполне оправданы, и вообще-то не критичны. RS должно быть того же порядка, что и активное сопротивления двух обмоток (схема «звезда»). Собственные колебания могут быть от 1 до 10кГц. На этой частоте реактивное сопротивление CS от 16кОм до 1.6кОм, поэтому всё напряжение приложено к CS. Гораздо хуже, когда возникает внешняя импульсная помеха, её параметры не известны.

Поэтому мои рекомендации таковы:

RS эквивалентно активному сопротивлению обмоток, а мощность не менее двух ватт. CS большего номинала чем 0.01 мкФ, с напряжением 400V и более.

Вот здесь есть интересные материалы на эту тему:

http://radiokot.ru/forum/viewtopic.php?f=11&t=73446

Программная реализация управления.

Пример программы реализован в проекте AVR-studio Ver 4.18 build 716.

Основные особенности:

  • Частота процессора 8 МГц внутренняя без кварца.
  • Регистр счетчика TCCR2 настроен на внутреннее прерывание с периодом 20 мкс.
  • Программа обработки этого прерывания SIGNAL(SIG_OUTPUT_COMPARE2) вызывает процедуру drv_act().
  • Процедура drv_act() в зависимости от флага drv_faza0 запускает счетчик задержки относительно момента перехода через ноль.
  • Процедура обработки прерывания SIGNAL (SIG_INTERRUPT0) от датчика Zero-Cross управляет флагом drv_faza0.
  • Весь период полуволны в 10 мс разбивается на 500 значений задержки.
  • В массиве pwm_array заранее формируется набор задержек. Перебор индекса массива происходит в программе обработки прерывания SIGNAL (SIG_INTERRUPT0).

Более подробно см. проект.

Библиотека компонентов для PCAD 2004

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

Управление двигателем с помощью манипуляций полуволнами.

  • Двигатель: асинхронный , 3 фазы, 250 Ватт, 220 В, 2730 об/мин, тип АИР56В2N3.
  • Фазосдвигающий конденсатор CF = 10мкФ х 400 В.
  • Активное сопротивление каждой обмотки Ra = 39 Ом.
  • RS = 46 Ом, CS = 0.22 мкФ.
  • Двигатель не нагружен, холостой ход.
  • Напряжения снимались через резистивный делитель относительно нейтрали N.

На диаграммах 1,2,3 зелёный график – напряжение на нагрузке (LOAD), жёлтый график – точка между сопротивлением RZ1 и PC814, она показывает реальные моменты перехода через ноль.

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


Диаграмма 1. Начало вращения, постепенный набор оборотов.


Диаграмма 2. Обороты, близкие к максимальным, вырождение участков закрытого симистора.


Диаграмма 2. Обороты максимальные, симистор открыт.

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

Однако же заставить работать двигатель на оборотах, кратных максимальным можно. Получить достаточно плавную регулировку, правда, не получится. Самое же проблематичное это получить вращение двигателя при оборотах в диапазоне 0.75MAX < RPM < MAX. В этом диапазоне скоростей как раз и происходит чаще всего срыв симистора.


Диаграмма 4. Устойчивая работа на оборотах RPM < 0.5MAX. Выделение полуволн.


Диаграмма 5. Дальнейшее уменьшение оборотов.

Диаграмма 6. Устойчивая работа, выделение целых волн.

Как видно на диаграммах 4,5,6 работа двигателя была устойчивой при скорости вращения меньше половины максимальной. Необходимо отметить, что момент на валу так же был не малый, остановить вал рукой было сложно. Проблемой такого управления была повышенная низкочастотная вибрация, и нагрев двигателя. На диаграмме 6 угроза потери управления уже наметилась характерной модуляцией участков закрытого симистора.

Выводы:

  • Если нагрузка омическая, то проблем не возникает.
  • За простоту надо платить. Асинхронные двигатели управляются частотными преобразователями.
  • Срыв симистора для меня не понятен.
  • Лучше всего данная схема с симистором работает для управления вентиляторами, так как нагрузка инерционная и рывки в режиме манипуляции полуволнами не так сказываются.
  • Можно предположить, что управление MOSFET-ом лишено недостатков симистора при той же относительной простоте схемы. Но автор не имеет практического опыта в этом вопросе.
  • По пезультатам обсуждения данной темы на форумах, некоторые авторы предлагают использовать не симистор для управления двигателем, а два встречно включенных тиристора. При таком подходе срыва не происходит, как они утверждают.

Интернет-обзор на данную тему:

  • Управление MOSFET-ом
  • PIC ,фазоимпульсное управление силовым симистором без гальванической развязки.
  • Похожая статья.
  • Zero-Cross по прерыванию, ШИМ аппаратный по таймеру в режиме СТС, метод брезенхэма.
  • Вопросы о RC-snubber.
  • Метод измерения индуктивности
  • Тиристоры и Триаки (симисторы) — Десять Золотых Правил

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

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