Популярно про ШИМ, DC Dimming, OLED Saver, Anti-Flicker Mode
Что такое ШИМ?
ШИМ = Широтно-Импульсная Модуляция. Она же PWM
(Pulse-width modulation). Метод управления током/напряжением в нагрузке
путем попеременного циклического включения и выключения. Пример на
пальцах: светодиод с номинальным световым потоком 100 люменов при токе 1
А циклически включаем на 1 мс, затем на 2 мс выключаем. Наше зрение
усредняет все эти включения и выключения, в итоге видим то, что
равносильно потоку 100*1/(1+2)= 30 люменов. Регулируя соотношение
длительности включенного и выключенного состояний получаем регулировку
яркости. При этом частота переключений остается постоянной, это и есть
частота ШИМ.
Преимущество такого подхода: самая высокая
энергоэффективность (силовой ключ находится либо в полностью открытом,
либо в полностью закрытом состоянии, следовательно потери энергии
сведены к минимуму), отсутствие искажений цветопередачи.
Недостаток: мерцание в случае светодиодов.
1-е
решение недостатка: хороший (многоступенчатый) LC фильтр, но он
относительно громоздкий как для смартфона, используется в телевизорах и
мониторах
2-е решение недостатка: повышение частоты до единиц кГц.
3-е решение недостатка: Anti-Flicker Mode.
Что такое коэффициент пульсаций?
Отношение
разности макс.яркости и мин.яркости к средней яркости. Может быть от 0
до 200%. В случае ШИМ и полного отсутствия фильтра мин.яркость равна
нулю и получаем коэф.пульсаций равный 200%. Малейший простейший фильтр и
повышенная частота не позволяет упасть до нуля свечению светодиода,
поэтому коэф.пульсаций обычно ощутимо ниже 200%.
Вреден ли ШИМ?
Санитарные
нормы (СНиП) нормируют коэф.пульсаций искусственного освещения на
уровне не выше 20%. Здравый смысл подсказывает, что если есть такие
санитарные нормы, то мерцание, вызванное ШИМ, вредно для здоровья.
Что такое DC Dimming?
Direct
Current Dimming (дословно: затемнение постоянным током). Метод
регулировки яркости, основанный на линейной регулировке тока через
светодиод (подсветка LCD матрицы или каждый в отдельности OLED пиксель).
Пример на пальцах с тем же светодиодом: если его питать
стабилизированным постоянным током и при этом менять его значение от 0
до 1 А получим плавную регулировку его светового потока от 0 до 100
люменов (без учета нелинейной зависимости потока от тока).
В
старых-добрых LCD матрицах и их новейших вариациях DC Dimming -
технология линейной регулировки тока подсветки, никак кроме
гамма-коррекции не связана с драйвером непосредственно пикселей.
В
OLED панелях все сложнее... Либо драйвер (ЦАП) яркости задает напряжение
питания драйвера непосредственно пикселей дисплея (строго говоря
является источником опорного напряжения ЦАП пикселей), либо в драйвере
используется ЦАП повышенной разрядности - результат тот же.
Преимущество такого метода: отсутствие мерцания/пульсаций.
Недостаток:
более сложная аппаратная реализация, потери энергии на линейном
стабилизаторе тока (например, при яркости 50% на регуляторе теряется
ровно столько же, сколько уходит на свечение дисплея).
Как работает OLED Saver / Anti-Flicker Mode?
Забегая наперед скажу, что по сути OLED Saver и Anti-Flicker Mode от Xiaomi - одно и то же. Измерения подтверждают это.
Для
начала разберемся, что (как) мы видим. Каждый пиксель изображения -
сумма составляющих красного (R, Red), зеленого (G, Green) и синего (B,
Blue) цвета. В 24-битном изображении каждая из R, G, B компонентов
кодируется 8-ю битами. То есть для каждого из цветом имеем 256 уровней,
от 0 до 255 (назовем ее L - Level). Все цветовые компоненты по 0 - имеем
черный цвет, все по 255 - белый. Теперь добавим сюда яркость (назовем
ее B - Brightness) дисплея, от 0% до 100% (от 0 до 1 в разах). В итоге
на дисплее мы увидим произведение B*L. Как же все-таки работает OLED
Saver? И вот тут начинается магия! OLED Saver обрабатывает изображение:
пересчитывает уровень каждого пикселя, новый уровень равен.... тому же
B*L. Но при этом физически яркость дисплея необходимо выставить на
максимум, чтоб обеспечить полный размах регулировки "виртуальной"
яркости.
Пример на пальцах: изображение, в котором синие пиксели "гуляют" от 0 до 255, а яркость 10%.
При
обычном ШИМе на дисплей выводится 0...255, дисплей мерцает (яркость
меняется от 0 до 100%, мерцания наш мозг усредняет так что мы видим
яркость в 10 раз меньше - 10% - наш мозг видит от 0 до 25,5 (255/10).
С
включенным OLED Saver на дисплей выводится не 0...255, а 0...25,
яркость постоянно 100% - наш мозг видит от 0 до 25 (заметьте,
округлено).
Преимущество OLED Saver / Anti-Flicker Mode: отсутствие мерцания (или оно сведено к минимуму)
Недостаток: искажение цветопередачи и сужение динамического диапазона.
Почему при использовании OLED Saver / Anti-Flicker Mode искажается цветопередача?
При
отключенном OLED Saver / Anti-Flicker Mode драйвер пикселей работает с
полным размахом - уровни от 0 до 255, а при включении этот диапазон
сужается и сдвигает в сторону меньших значений. Например, для яркости
10% уровни становятся от 0 до 25. Плюс результат вычислений новых
уровней приходится округлять. Плюс на низких значениях сказывается
нелинейность свечения светодиодов.
А не одно и то же эти ваши DC Dimming / OLED Saver / Anti-Flicker Mode?
Нет!
Настоящий DC Dimming - это аппаратное решение. OLED Saver /
Anti-Flicker - программный "костыль" с вытекающими недостатками.
Но
чем же OLED Saver / Anti-Flicker - не DC Dimming, если интенсивность
каждого пикселя регулируется линейным драйвером? (тот драйвер, который
транзистор, а не тот компьютерный, который "прокладка" между
операционной системой и устройством)
Да, если не одно "НО".
При
полноценном (изначально предусмотренном) DC Dimming на OLED дисплеях
драйвер (ЦАП) яркости задает напряжение питания драйвера непосредственно
пикселей дисплея (строго говоря является источником опорного напряжения
ЦАП пикселей). То есть по отношению к отдельно взятому пикселю
последовательно соединены два ЦАП - драйвер пикселя и dc dimming
драйвер. Общая разрядность равна сумме разрядностей двух ЦАП.
А в случае OLED Saver / Anti Flicker - ЦАП всего один - это ЦАП драйвера пикселя, размах его выхода урезан заданной яркостью.