Все знают, насколько ардуинщики гордятся миганием лампочками
Так как мигать светодиодами не интересно, речь пойдет про управление лампой накаливания на 220 вольт, включая управление её яркостью. Впрочем, материал относится и к некоторым другим типам нагрузки. Эта тема достаточно избита, но информация об особенностях, которые необходимо учесть, разрозненна по статьям и темам на форумах. Я постарался собрать её воедино и описать различия между схемами и обосновать выбор нужных компонентов.
Выбор управляемой нагрузки
Существует много различных типов ламп. Не все из них поддаются регулировке яркости. И, в зависимости от типа лампы, требуются разные способы управления. Про типы ламп есть хорошая статья. Я же буду рассматриваться только лампы, работающие от переменного тока. Для таких ламп существует три основных способа управления яркостью (диммирование по переднему фронту, по заднему фронту и синус-диммирование).
Иллюстрация в формате SVG, может не отображжаться в старых браузерах и, особенно, в IE
Отличаются они тем, какая часть периода переменного тока пропускается через лампу. О применимости этих методов можно прочитать тут. В этой статье речь пойдет только о RL диммере, так как это самая простая и распространенная схема. Она подходит для управления яркостью ламп накаливания (включая галогенные), в том числе подключенных через ферромагнитный (не электронный) трансформатор. Эта же схема может применяться для управления мощностью нагревательных элементов и электромоторов, а также для включения/выключения других электроприборов (без управления мощностью).
Выбор элементной базы
Различных вариантов схем управления нагрузкой в интернете много. Отличаются они по следующим параметрам:Первые два пункта определяются элементной базой. Очень часто для управления нагрузкой используют реле, как проверенный многолетним опытом элемент. Но, если вы хотите управлять яркостью лампы, её необходимо включать и выключать 100 раз в секунду. Реле не рассчитаны на такую нагрузку и быстро выйдут из строя, даже если смогут переключаться так часто. Если в схеме используется MOSFET, то его можно открывать и закрывать в любой момент. Нам нем можно построить и RL, и RC, и синус димер. Но так как он проводит ток только в одну сторону, понадобится два транзистора на канал. Кроме того, высоковольтные MOSFET относительно дороги. Самым простым и дешевым способом является использование симистора. Он проводит ток в обоих направлениях и сам закрывается, когда через него прекращает течь ток. Про то, как он работает можно прочитать в статье DiHalt'а. Далее я буду полагаться на то, что вы это знаете.
Фазовая модуляция
Чтобы управлять яркостью лампы нам нужно подавать импульсы тока на затвор симистора в моменты, когда ток через симистор достигает определенной величины. В схемах без микроконтроллера для этого применяется настраиваемый делитель напряжения и динистор. Когда напряжение на симисторе превышает порог, при котором открывается динистор, ток проходит на затвор симистора и открывает его.
Если же управление ведется с микроконтроллера, то возможны два варианта:
- Подавать импульсы равно в тот момент времени, когда нужно. Для этого придётся завести на микроконтроллер сигнал с детектора перехода напряжения через ноль
- К затвору симистора подключить компаратор, на который завести сигнал с делителя напряжения и с аналогового выхода микроконтроллера
Первый способ хорош тем, что позволяет легко организовать гальваническую развязку высоковольтной части и микроконтроллера. О её важности будет сказано позже. Но любители arduino будут огорчены: чтобы лапа горела ровно, не вспыхивая и не погасая, импульсы нужно подавать вовремя. Для этого управлять выводом нужно из прерывания таймера, а моменты перехода напряжения через ноль фиксировать с помощью «input capture». Это «недокументированные» функции. Проблема решается отказом от библиотек arduino и внимательным чтением datashit'а на процессоры avr. Это не так сложно, как кажется.
Второй способ управления симистором крайне прост в программном плане, но из-за отсутствия гальванической развязки я бы не стал его применять.
Гальваническая развязка
Самый простой способ управлять симистором — это подключить к затвору ножку микроконтроллера. Есть даже специальная серия симисторов BTA-600SW управляемых малыми токами.Но тогда контроллер и вся низковольтная часть не будет защищена от помех, гуляющих по бытовой сети. Некоторое из них могут быть достаточно мощными, чтобы сжечь микроконтроллер, другие будут вызывать сбои. Кроме того, сразу возникают проблемы со связью микроконтроллера с компьютером или другими микроконтроллерами: нужно будет делать развязку в линии связи или использовать дифференциальные линии, ведь, чтобы управлять симистором прямо с ноги микроконтроллера, нулевой потенциал для него должен совпадать с потенциалом нуля в бытовой сети. У компьютера или другого такого же микроконтроллера, подключенного в другой точке сети, нулевой потенциал почти наверняка будет другим. Результат будет плачевным.
Простой способ обеспечить гальваническую развязку: использовать драйвер симистора MOC30XX. Эти микросхемы отличаются:
- Расчетным напряжением. Если для сетей 110 вольт, есть для 220
- Наличием детектора нуля
- Током, открывающим драйвер
Драйвер с детектором нуля (MOC306X) переключается только в начале периода. Это обеспечивает отсутствие помех в электросети от симистора. Поэтому, если нет необходимости управлять выделяемой мощностью или управляемый прибор обладает большой инерционностью (например это нагревательный элемент в электроплитке), драйвер с детектором нуля будет оптимальным выбором. Но, если вы хотите управлять яркостью лампы освещения, необходимо использовать драйвер без детектора нуля (MOC305X) и самостоятельно открывать его в нужные моменты.
Ток, необходимый для открытия важен, если вы хотите управлять несколькими нагрузками одновременно. У MOC3051 он 15 мА, у MOC3052 10мА. При этом микроконтроллеры stm могут пропускать через себя до 80-120 мА, а avr до 200 мА. Точные цифры нужно смотреть в соответствующих datashit'ах.
Устойчивость к помехам/возможность коммутации индуктивной нагрузки
В электросети могут быть помехи, вызывающие самопроизвольное открытие симистора или его повреждение. Источником помех может служить:
- Нагрузка, управляемая симистором (обмотка мотора)
- Фильтр (snubber), расположенный рядом с симистором и призванный его защищать
- Внешняя помеха (грозовой разряд)
Помеха может быть как по напряжению, так и по току, причем более критичны скорости изменения соответствующих значений, чем их амплитуды. В datashit'ах соответствующие значения указаны как:
V — максимальное напряжение, при котором может работать симистор. Максимальное пиковое напряжение не намного больше.
I — Максимальный ток, который может пропускать через себя симистор. Максимальный пиковый ток как правило значительно больше.
dV/dt — Максимальная скорость изменения напряжения на закрытом симисторе. При превышении этого значения он самопроизвольно откроется.
dI/dt — Максимальная скорость изменения тока при открытии симистора. При превышении этого значения он сгорит из-за того, что не успеет полностью открыться.
(dV/dt)c — Максимальная скорость изменения напряжения в момент закрытия симистора. Значительно меньше dV/dt. При превышении симистор продолжит проводить ток.
(dI/dt)c — Максимальная скорость изменения тока в момент закрытия симистора. Значительно меньше dI/dt. При превышении симистор продолжит проводить ток.
Подробно о природе этих ограничений и о том, как сделать фильтр, защищающий от превышения этих величин описано в Application Note AN-3008. К немо можно только добавить, что существуют 3Q симисторы, у которых значения dV/dt и dI/dt выше, чем у обычных за счет невозможности работать в 4ом квадранте (что обычно не требуется).
Выбор симистора
Максимальный ток коммутации
Максимальный ток коммутации ограничивается двумя параметрами: максимальным током, который может пропустить симистор и количеством тепла, которое вы можете от него отвести. С первым параметром все просто, он указан в datashit'е. Но если посмотреть внимательно, то при токе в 16 ампер на BTA16-600BW выделяется около 20 ватт. Такую грелку уже не получится засунуть в коробку выключателя без вентиляции.
Минимальный ток коммутации
Симистор сохраняет проводимость до тех пор, пока через него идёт ток. Минимально необходимый ток указан в datashit'е под именем latching current. Соответственно, слишком мощный симистор не сможет включать маломощную лампочку так как будет выключаться, как только с затвора пропадёт управляющий сигнал. Но так, как этот сигнал мы самостоятельно формируем микроконтроллером, то можно удерживать управляющий сигнал почти до самого конца полупериода, тем самым убрав ограничение на минимальную нагрузку. Однако, если не успеть снять сигнал, симистор не закроется и лампа не погаснет. При плохо подобранных константах лампы, работающие на не полной яркости периодически вспыхивают.
Изоляция
Симисторы в корпусе SOT-220 могут быть изолированными или не изолированными. Я сначала сделал ошибку и купил BT137, в результате радиаторы охлаждения оказались под напряжением, что в моем случае нежелательно. Симисторы с маркировкой BTA изолированы, с маркировкой BTB нет.
Защита от перегрузки
Не стоит полагаться на автоматические выключатели. Посмотрите на спецификацию, при перегрузке в 1.4 раза автомат обязан выключиться не ранее, чем через час. А быстрое размыкание происходит только при перегрузке в 5 раз (для автоматов типа C). Это сделано для того, чтобы автомат не отключался при включении приборов, требующих при старте значительно больше энергии, чем при постоянной работе. Примером такого прибора является холодильник.
Симистор нужно защитить отдельным предохранителем, либо контролировать ток через него и отключать его при перегрузке, давая остыть.
Защита от короткого замыкания
При перегорании лампы накаливания может образовываться искровой разряд, имеющий очень низкое сопротивление. В результате цепь фактически замыкается накоротко, что приводит к выгоранию симистора.
Симистор может выгорать из-за двух причин:
- Превышение dI/dt. Симистор не успевает открыться полностью, ток идет не через весь кристалл, образуются локальные горячие области, выжигающие кристалл.
- Превышение интеграла Джоуля I^2t. Задает количество теплоты, накопление которой в кристалле приведет к разрушению кристалла.
dI/dt ограничивается индуктивностью проводки и внутренней ёмкостью симистора. Так как dI/dt достаточно велика (50 А/с для BTA16), может хватить индуктивности подводящей проводки, если она достаточно длинная. Можно подстраховаться и добавить небольшую индуктивность в виде нескольких витков провода вокруг сердечника.
С превышением интеграла Джоуля можно бороться либо уменьшая время прохождения тока через симистор, либо ограничивая ток. Так как симистор не закроется, пока ток не перейдет через ноль, не вводя дополнительных размыкателей нельзя сделать время прохождения тока менее одного полупериода. В качестве такого размыкателя можно использовать:
- Быстродействующий плавкий предохранитель. Обычный предохранитель не подойдет так как симистор сгорит до того, как он сработает. Но стоят такие предохранители дороже новых симисторов.
- Геркон/реле. Если удастся найти такое, чтобы выдерживало кратковременные большие токи.
Можно пойти по другому пути. BTA16-600 может выдержать ток в 160 амер в течении одного периода. Если сопротивление замыкаемой цепи будет порядка 1.5 Ом, то полупериод он выдержит. Сопротивление проводки даст 0.5 Ом. Остается добавить в цепь сопротивление в 1 Ом. Схема станет менее эффективной и появится еще одна грелка, выделяющая при штатной работе до 16 Вт тепла (0.45 Вт при работе 100 ваттной лампы), зато симистор не сгорит, если успеть его вовремя выключить и позаботиться о хорошем охлаждении, чтобы оставался запас на нагрев во время КЗ.
Из этого сопротивления можно извлечь дополнительную выгоду: измеряя падение напряжения на нем, можно узнавать ток, протекающий через симистор. Полученное значение можно использовать для того, чтобы определять короткое замыкание или перегрузку и отключать симистор.
Заключение
Я не претендую на абсолютную верность всего написанного. Статья писалась для того, чтобы упорядочить знания, прочитанные на просторах интернета и проверить, не забыл ли я чего. В частности раздел, касающийся защиты от перегрузок я еще не опробовал на практике. Если я где-то не прав, мне было бы интересно узнать об ошибках.
В статье нет ни одной схемы: знакомые с темой и так знают их наизусть, а новичку придётся заглянуть в datashit к MOC3052 или в AN-3008 и, возможно, он заодно узнает что-то еще и не будет бездумно реализовывать готовую схему.
Автор: kibergus