Кратко: Существует два типа AC-диммеров: TRIAC (leading edge — для ламп накаливания, галогена, нагревателей) и MOSFET AC-диммер (trailing edge — специально для LED-ламп). Если LED-лампа мерцает или плохо диммируется, проблема обычно в типе диммера, а не в лампе. MOSFET AC-диммер решает это на аппаратном уровне. Если необходимо использовать TRIAC — нужна лампа с маркировкой «TRIAC dimmable» от Philips, Osram или Ikea.
Проблема
Пользователи подключают LED-лампу к AC-диммеру на Arduino или ESP32 — и вместо плавного управления яркостью получают проблемы: лампа игнорирует команды, резко отключается ниже 50%, мерцает или жужжит.
Первый порыв — отлаживать код или купить «лучшую» лампу. Но настоящая причина обычно другая: TRIAC AC-диммер физически не предназначен для LED-ламп. Он разработан для резистивных нагрузок — нитей накаливания и нагревательных элементов. Для LED существует принципиально иной тип: MOSFET AC-диммер.
Типичные симптомы с форумов:
- «LED не тускнеет до конца и не разгорается до яркости» (Arduino Forum, 2024)
- «работает до 70%, потом снижает яркость, начинает жужжать, каждые несколько секунд вспыхивает на полную мощность» (Arduino Forum, 2026)
- «Лампа выключена в нижней части синусоиды и включена в верхней. Промежуточных значений яркости нет» (Arduino Forum, 2019)
- «TRIAC-платы отлично управляют лампами накаливания. Но LED ведут себя по-другому» (Arduino Forum, 2024)
Два типа AC-диммеров: TRIAC против MOSFET
Оба типа используют фазовую отсечку (фазовое управление): они срезают часть синусоиды AC для снижения среднего напряжения. Разница в том, какую часть срезают и как это влияет на LED-лампы.
| Параметр | TRIAC AC-диммер | MOSFET AC-диммер |
|---|---|---|
| Метод управления | Leading edge (прямая фазовая отсечка) | Trailing edge (обратная фазовая отсечка) |
| Разработан для | Лампы накаливания, галоген, нагреватели | LED-лампы, электронные нагрузки |
| Форма напряжения | Резкий скачок в начале полупериода | Плавный фронт нарастания с нуля |
| С Philips/Osram LED «dimmable» | ✅ Работает | ✅ Работает отлично |
| С дешёвым «dimmable» LED | ⚠️ Мерцание < 40% | ✅ Стабильно |
| С non-dimmable LED | ❌ Не работает | ❌ Не работает |
| Ток удержания (проблема малой нагрузки) | ✅ Да — проблема | ❌ Нет |
| Диапазон диммирования LED | 20–95% | 5–95% |
Почему MOSFET лучше для LED: MOSFET открывается в самом начале полупериода — напряжение нарастает плавно по синусоиде. Драйвер LED видит привычный фронт нарастания без резких скачков. Результат: стабильная работа с любой диммируемой LED-лампой, значительно меньше мерцания.
Причина проблемы
Background theory: AC Dimmer: Zero-Cross and TRIAC — How It Works.
Проблема TRIAC с LED: TRIAC открывается с задержкой после перехода через ноль. В момент открытия напряжение резко скачет от нуля до десятков или сотен вольт — крутой leading edge. Многие драйверы LED воспринимают этот скачок как помеху или скачок питания, срабатывают защитные схемы, работа становится нестабильной.
LED-лампа — не простая резистивная нагрузка. Внутри каждой LED-лампы есть драйвер (импульсный источник питания), выпрямляющий AC и преобразующий его в стабильный постоянный ток для светодиодов. Как этот драйвер реагирует на синусоиду, срезанную TRIAC:
- Non-dimmable LED — воспринимают падение напряжения как «потерю питания» и активируют защиту. Лампа работает только на полной мощности или вовсе не запускается.
- Дешёвые «dimmable» LED — диммируются, но без фильтрации пульсирующего тока. Мерцание на 100/120 Гц видно невооружённым глазом.
- Качественные TRIAC-совместимые LED (Philips, Osram, Ikea TRÅDFRI) — специально разработаны для фазовой отсечки TRIAC. Работают, но диапазон ограничен: 20–95%. Ниже этого ток удержания вызывает нестабильность.
Проблема тока удержания: каждый TRIAC требует минимального тока для поддержания открытого состояния. Одна LED-лампа 5–9 Вт потребляет слишком мало — TRIAC случайно выключается, пропуская полупериоды. Результат: случайные вспышки и жужжание при малой яркости. У MOSFET-диммеров тока удержания нет.
MOSFET решает обе проблемы аппаратно: нет резкого скачка, нет тока удержания.
Решения
🟢 Аппаратное решение 1: MOSFET AC-диммер ✅ Лучший выбор для LED
Хотите использовать LED-лампы без ограничений? MOSFET AC-диммер создан именно для этого.
MOSFET AC-диммер использует управление trailing edge: транзистор MOSFET открывается в начале полупериода и закрывается в расчётный момент. Напряжение нарастает плавно — драйвер LED работает корректно, мерцание минимально даже при 5–10% яркости.
Когда выбрать MOSFET AC-диммер:
Совместим с любой LED-лампой с маркировкой «dimmable» — включая дешёвые безымянные лампы, которые нестабильно работают с TRIAC.
Код идентичен коду для TRIAC-диммера — те же прерывания перехода через ноль, тот же API библиотеки. Разница внутри аппаратного модуля:
// MOSFET AC-диммер — trailing edge
// Тот же код, что и для TRIAC; разница — внутри аппаратного модуля
// Библиотека: rbdimmerESP32 (для ESP32)
#include "rbdimmerESP32.h"
#define ZC_PIN 18
#define DIM_PIN 19
rbdimmer dimmer;
void setup() {
dimmer.begin(ZC_PIN, DIM_PIN, 50); // сеть 50 Гц
dimmer.setPower(50); // яркость 50%
}
void loop() {}Диапазон: 5–95% яркости с любой диммируемой LED-лампой.
🟢 Аппаратное решение 2: DimmerLink (без ISR, для любой платформы)
Не хотите работать с прерываниями? DimmerLink управляет диммером по I2C или UART — работает как с TRIAC, так и с MOSFET-модулями.
Любой ESP32 handles zero-cross synchronization and phase control internally. You simply send a command «set brightness to 50%» — everything else happens inside.
Когда выбрать DimmerLink:
Подключение (I2C):
DimmerLink VCC → 3.3V
DimmerLink GND → GND
DimmerLink SDA → SDA (ESP32: GPIO21, Arduino: A4)
DimmerLink SCL → SCL (ESP32: GPIO22, Arduino: A5)// DimmerLink по I2C — без ISR, без перехода через ноль в коде
// Документация: https://www.rbdimmer.com/docs/dimmerlink-I2CCommunication
#include <Wire.h>
#define DIMMER_ADDR 0x50
#define REG_LEVEL 0x10
void setLevel(uint8_t level) {
Wire.beginTransmission(DIMMER_ADDR);
Wire.write(REG_LEVEL);
Wire.write(level);
Wire.endTransmission();
}
void setup() {
Wire.begin();
setLevel(50); // яркость 50%
}
void loop() {}🟡 Вынуждены использовать TRIAC: выбор правильной лампы
Не можете заменить диммер? Выберите лампу, специально рассчитанную на TRIAC.
Не все LED-лампы одинаково реагируют на фазовую отсечку TRIAC. Некоторые производители специально проектируют отдельные линейки для совместимости с фазовой отсечкой.
Ищите на упаковке:
- «TRIAC dimmable» или «phase-cut compatible»
- «leading edge compatible»
- Символ диммера с буквой «L» (leading edge)
Проверенные бренды для TRIAC:
| Бренд | Серия | Диапазон с TRIAC |
|---|---|---|
| Philips | SceneSwitch, WarmGlow, Master LED | 20–100% |
| Osram | CLASSIC, SUPERSTAR | 20–100% |
| Ikea TRÅDFRI | Диммируемый диапазон | 20–100% |
| GE / Cree | LED+ Dimmable | 25–100% |
Ограничения TRIAC + LED: даже с качественными лампами диапазон 0–20% нестабилен из-за тока удержания. При нагрузке менее 15 Вт могут появляться случайные вспышки — добавьте балластный резистор (100–150 Ом / 20 Вт) параллельно или увеличьте количество ламп. С MOSFET-диммером этой проблемы не существует.
🔵 Продвинутый уровень: программное решение с TRIAC
Используете TRIAC-диммер с качественными LED-лампами?
Вариант A: ESP32 с rbdimmerESP32 ✅ Рекомендуется
When: dual-core ESP32 + Philips/Osram/Ikea lamps Library: ESP32 двухъядерный
// Платформа: двухъядерный ESP32
// Библиотека: rbdimmerESP32
// Для LED: используйте диапазон 20–95% (ниже 20% нестабильно с TRIAC)
#include "rbdimmerESP32.h"
#define ZC_PIN 18
#define DIM_PIN 19
rbdimmer dimmer;
void setup() {
dimmer.begin(ZC_PIN, DIM_PIN, 50);
dimmer.setPower(30); // начать с 30%, не 0%
}
void loop() {
// Плавное нарастание от 20% до 95%
for (int i = 20; i <= 95; i++) {
dimmer.setPower(i);
delay(30);
}
for (int i = 95; i >= 20; i--) {
dimmer.setPower(i);
delay(30);
}
}Вариант Б: Arduino AVR (Uno, Mega, Nano)
For AVR boards only — do not use on ESP32! Library: Arduino Uno/Mega (legacy)
// Платформа: Arduino Uno / Mega / Nano (только AVR)
// ВНИМАНИЕ: для ESP32 используйте rbdimmerESP32, а не эту библиотеку
#include <RBDdimmer.h>
#define ZC_PIN 2 // переход через ноль — только пины 2 или 3 на Uno/Nano
#define DIM_PIN 11
dimmerLamp dimmer(DIM_PIN, ZC_PIN);
void setup() {
dimmer.begin(NORMAL_MODE, ON);
dimmer.setPower(50);
}
void loop() {}⚠️ Типичные ошибки с форумов
Реальные ошибки из 4 форумных тредов (2019–2026).
-
Попытка диммировать non-dimmable LED через TRIAC: лампа без маркировки «dimmable» не предназначена для фазовой отсечки. Ни TRIAC, ни MOSFET не помогут. Нужна другая лампа.
-
«Дешёвый dimmable» LED + TRIAC = мерцание ниже 40%: лампа технически совместима, но дешёвый драйвер не фильтрует пульсации TRIAC. Решение: MOSFET AC-диммер (без ограничений) или переход на Philips/Osram.
-
Слишком малая нагрузка: TRIAC требует минимального тока удержания. Одна лампа 5–7 Вт вызывает случайные вспышки. При суммарной нагрузке менее 15 Вт добавьте балластный резистор (100–150 Ом / 20 Вт) параллельно. С MOSFET такой проблемы нет.
-
LED с активным PFC-драйвером (лампы для умного дома): несовместимы с фазовой отсечкой TRIAC. Риск повреждения. MOSFET-диммер тоже не гарантирует совместимость с лампами с активным PFC.
Краткий чек-лист
Перед публикацией на форуме проверьте:
Таблица совместимости
| Тип нагрузки | TRIAC AC-диммер | MOSFET AC-диммер | Примечания |
|---|---|---|---|
| Лампа накаливания 40–150 Вт | ✅ | ✅ | Идеально для TRIAC |
| Галоген 230В | ✅ | ✅ | Идеально для TRIAC |
| Нагреватель / резистивный элемент | ✅ | ⚠️ | Предпочтителен TRIAC |
| Philips/Osram «TRIAC dimmable» LED | ✅ | ✅ | MOSFET даёт более широкий диапазон |
| Дешёвый «dimmable» LED (no-name) | ⚠️ | ✅ | TRIAC: мерцание < 40% |
| «Dimmable» LED, тип не указан | ⚠️ | ✅ | MOSFET надёжнее |
| Non-dimmable LED | ❌ | ❌ | Ни один тип не работает |
| LED с активным PFC-драйвером (умный дом) | ❌ | ❌ | Несовместимо |
| Галоген 12В с трансформатором | ⚠️ | ⚠️ | Зависит от трансформатора |
Похожие темы
- LED Flickering with AC Dimmer: TRIAC or MOSFET — Causes and Fixes
- Trailing Edge vs Leading Edge: Which Dimmer Method to Choose
Остались вопросы?
Post on rbdimmer.com forum or open a GitHub Issue.