Гениальнейшая афера века – ШИМ

Замечали ли вы, что при более низкой яркости экрана ваши глаза будто бы быстрее устают, а голова начинает болеть, может быть вы даже видели какие-то мерцания боковым зрением? Что ж, возможно это связано не только с тем, что на низкую яркость экрана вы перешли из-за просмотра мемов в 2 часа ночи.

Буквально сегодня я забрал с Ozon начинающий наборчик Arduino и начал погружаться в мир микроконтроллеров по книжке Джереми Блума. Когда я потыкал в светодиод и перешёл к "изменению его яркости" для меня раскрылась неожиданная правда, от которой лично я испытал сильное удивление, но перед этим нужно немножко погрузиться в базу.

Грубо говоря, во всех устройствах существуют 2 вида сигналов:

  • Аналоговый сигнал — как плавный поворот ручки громкости. Может принимать любые промежуточные значения.

  • Цифровой сигнал — как нажатие кнопок "+" и "-" на пульте. Работает с фиксированными значениями (0 или 1, вкл/выкл).

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

Но физики и информатики парни умные, поэтому они придумали ШИМ (Широтно-Импульсная Модуляция) – технологию, которая имитирует аналоговый сигнал при помощи "скважности". Чтобы не душнить терминами, объясню на примере светодиода:

Допустим, наш светодиод при постоянном питании 5В горит на полную яркость. Мы не можем просто снизить напряжение до 2.5В, чтобы сделать его тусклее, потому что светодиод имеет определённый порог напряжения, ниже которого он просто не зажжётся. Даже если он загорится, управлять его яркостью через напряжение неэффективно и опасно. Вместо этого мы подаём на него короткие импульсы полного напряжения 5В. Таким образом, мы контролируем не "напряжение", а "среднюю мощность", которую светодиод получает за единицу времени. Если светодиод горит половину времени и выключен вторую половину, то в среднем за секунду он получит в два раза меньше энергии и будет светиться вполовину тусклее. Это отношение времени, когда сигнал включен, к общему времени периода импульса и является скважностью.

Хорошая иллюстрация (условные 2.5В на второй строке)
Хорошая иллюстрация (условные 2.5В на второй строке)

За счёт высокой частоты (в хороших устройствах это обычно от 1000 Гц и выше) человеческий глаз неспособен заметить отдельных мерцаний, и нам кажется, что свечение стало тусклее. Если при частоте до 1000 Гц наша нервная система ещё может чувствовать дискомфорт от фантомного мерцания, то на более высоких частотах (на современных смартфонах может доходить почти до 5000 Гц) даже она перестаёт это ощущать. Проблема низкочастотного мерцания в основном характерна для OLED-экранов, которые на низкой яркости часто используют ШИМ-регулировку с частотой около 200-500 Гц.

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

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

P.S. Мб по мере изучения Arduino буду сюда другие фишки микроконтроллеров вкидывать.

24
18 комментариев