Дата публикации

Автор статьи: Редакция Clex.kz

41

ШИМ-сигнал простыми словами: как работает PWM, где применяется и как управлять мощностью

ШИМ, или PWM, позволяет управлять яркостью светодиодов, скоростью двигателей, нагревателями, вентиляторами и силовыми ключами без плавного изменения напряжения. В статье разбираем принцип работы ШИМ-сигнала, частоту, скважность, заполнение, применение с Arduino и ESP32, фильтрацию, MOSFET-ключи.

Что такое ШИМ

ШИМ - это широтно-импульсная модуляция. В английской документации чаще встречается название PWM - Pulse Width Modulation.

Смысл ШИМ простой: сигнал быстро включается и выключается, а устройство получает не постоянное напряжение, а серию импульсов. Если импульсы идут достаточно быстро, нагрузка воспринимает это как изменение средней мощности.

Например, светодиод при ШИМ не светит "наполовину" в каждый момент времени. Он быстро включается и выключается. Но глаз не успевает заметить мигание, поэтому кажется, что яркость стала ниже.

ШИМ используют в разных задачах:

  • регулировка яркости светодиодов;
  • управление скоростью DC-моторов;
  • управление вентиляторами;
  • регулировка нагревателей;
  • сервоприводы;
  • импульсные блоки питания;
  • управление MOSFET-ключами;
  • формирование аналогового уровня через фильтр.

Главная идея ШИМ - управлять не напряжением напрямую, а временем включения нагрузки.

Заполнение импульса

Главный параметр ШИМ - коэффициент заполнения. Он показывает, какую часть периода сигнал находится во включенном состоянии.

Если заполнение 0%, сигнал всегда выключен. Если 100%, сигнал всегда включен. Если 50%, половину времени сигнал включен, половину выключен.

При питании 12 В средняя мощность на нагрузке будет зависеть от заполнения. При 25% нагрузка получает примерно четверть мощности, при 50% - половину, при 75% - три четверти.

ЗаполнениеПоведение сигналаПримерный эффект
0%Всегда выключенНагрузка не работает
25%Включен четверть времениНизкая мощность
50%Включен половину времениСредняя мощность
75%Включен большую часть времениВысокая мощность
100%Всегда включенПолная мощность

Для светодиодов это выглядит как изменение яркости. Для мотора - как изменение скорости или момента. Для нагревателя - как изменение средней тепловой мощности.

Частота ШИМ

Частота ШИМ показывает, сколько раз в секунду повторяется цикл включения и выключения. Она измеряется в герцах.

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

Для разных задач подходят разные частоты.

ЗадачаТипичная частота
Светодиодная индикация500 Гц-5 кГц
Подсветка без заметного мерцания1 кГц-20 кГц
DC-мотор1 кГц-20 кГц
Нагреватель1 Гц-100 Гц
Силовой преобразовательДесятки или сотни кГц

Для нагревателя не нужна высокая частота, потому что температура меняется медленно. Для светодиодов и моторов частоту обычно выбирают выше, чтобы убрать видимое мерцание и слышимый писк.

ШИМ и среднее напряжение

Часто говорят, что ШИМ меняет среднее напряжение. Это удобное объяснение, но его нужно понимать аккуратно.

Если сигнал переключается между 0 В и 5 В с заполнением 50%, среднее значение будет около 2.5 В. Но физически на выходе нет постоянных 2.5 В. Там есть быстрые импульсы от 0 В до 5 В.

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

Если нужно получить более гладкое напряжение, после ШИМ ставят RC-фильтр. Он сглаживает импульсы и превращает их в более плавный аналоговый уровень.

⚠️ШИМ - это не настоящий аналоговый выход. Без фильтра на выходе остаются импульсы, даже если мультиметр показывает среднее значение.

ШИМ на Arduino

В Arduino для ШИМ обычно используют функцию analogWrite. Несмотря на название, она не выдает настоящее аналоговое напряжение. Она включает ШИМ на поддерживаемом пине.

Значение обычно задается от 0 до 255. Ноль означает 0%, 255 - почти 100%, 128 - примерно 50%.

Пример плавного изменения яркости светодиода:

const int ledPin = 9; void setup() { pinMode(ledPin, OUTPUT); } void loop() { for (int value = 0; value <= 255; value++) { analogWrite(ledPin, value); delay(10); } for (int value = 255; value >= 0; value--) { analogWrite(ledPin, value); delay(10); } }

Важно использовать пин, который поддерживает ШИМ. На Arduino Uno такие пины обычно отмечены символом тильды.

ШИМ на ESP32

У ESP32 ШИМ реализован через аппаратный модуль LEDC. Он позволяет задавать канал, частоту и разрешение. Это гибче, чем простой analogWrite на Arduino Uno.

Пример управления яркостью светодиода на ESP32:

const int ledPin = 18; const int pwmChannel = 0; const int pwmFreq = 5000; const int pwmResolution = 8; void setup() { ledcSetup(pwmChannel, pwmFreq, pwmResolution); ledcAttachPin(ledPin, pwmChannel); } void loop() { for (int value = 0; value <= 255; value++) { ledcWrite(pwmChannel, value); delay(10); } for (int value = 255; value >= 0; value--) { ledcWrite(pwmChannel, value); delay(10); } }

В некоторых версиях Arduino core для ESP32 API может отличаться. Но общий принцип остается тем же: выбирается частота, разрешение и значение заполнения.

Разрешение ШИМ

Разрешение ШИМ показывает, на сколько уровней можно разделить заполнение. Например, 8 бит дают 256 уровней от 0 до 255. 10 бит дают 1024 уровня, 12 бит - 4096 уровней.

Чем выше разрешение, тем плавнее можно менять яркость или мощность. Но есть компромисс: при высокой частоте максимальное доступное разрешение может уменьшаться, особенно на микроконтроллерах с ограниченным таймером.

Для светодиодной яркости 8 бит часто достаточно. Для более плавной подсветки лучше 10-12 бит. Для управления мощной нагрузкой иногда важнее стабильная частота и правильный драйвер, чем большое разрешение.

РазрешениеКоличество уровней
8 бит256
10 бит1024
12 бит4096
16 бит65536

Управление светодиодами через ШИМ

Самое простое применение ШИМ - регулировка яркости светодиода. Микроконтроллер быстро включает и выключает светодиод, а глаз воспринимает это как изменение яркости.

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

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

Для подсветки лучше выбирать частоту выше видимого мерцания. В простых проектах часто используют несколько килогерц.

Управление DC-мотором через ШИМ

DC-мотором удобно управлять через ШИМ. При большем заполнении двигатель получает больше средней мощности и вращается быстрее. При меньшем заполнении - медленнее.

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

Если двигатель должен вращаться только в одну сторону, достаточно MOSFET-ключа. Если нужно менять направление вращения, нужен H-мост или готовый драйвер двигателя.

⚠️DC-мотор, реле, соленоид и другая индуктивная нагрузка могут создавать выбросы напряжения. Без защиты можно повредить MOSFET, драйвер или микроконтроллер.

MOSFET-ключ и ШИМ

Для управления мощной нагрузкой ШИМ часто подают на затвор MOSFET. Микроконтроллер задает сигнал, а MOSFET быстро включает и выключает питание нагрузки.

Так можно управлять светодиодными лентами, вентиляторами, моторами, нагревателями и другими устройствами. Но MOSFET нужно выбирать правильно.

Важные параметры:

  • допустимый ток;
  • допустимое напряжение;
  • сопротивление открытого канала Rds(on);
  • логический уровень управления затвором;
  • заряд затвора;
  • корпус и охлаждение.

Если MOSFET не полностью открывается от 3.3 В или 5 В, он будет греться. Для ESP32 особенно важно выбирать logic-level MOSFET, который нормально открывается от 3.3 В.

RC-фильтр для получения аналогового уровня

ШИМ можно сгладить с помощью RC-фильтра. Такой фильтр состоит из резистора и конденсатора. Он уменьшает пульсации и превращает импульсы в более плавное напряжение.

Это подходит для простых задач: задать опорный уровень, управлять аналоговым входом, получить медленно меняющийся сигнал. Но такой способ не заменяет полноценный ЦАП в точных измерительных схемах.

После RC-фильтра сигнал меняется не мгновенно. Чем сильнее сглаживание, тем медленнее реакция. Поэтому фильтр выбирают по задаче: где-то важна плавность, где-то скорость изменения.

Для аудио, точных измерений и стабильных аналоговых сигналов лучше использовать настоящий DAC или специализированную микросхему.

ШИМ для сервоприводов

Сервоприводы тоже управляются импульсами, но это не совсем тот же ШИМ, что регулировка яркости светодиода. У обычного RC-сервопривода важна длительность импульса, а не процент заполнения в привычном смысле.

Обычно сервопривод получает импульсы примерно раз в 20 мс. Длительность импульса около 1 мс соответствует одному краю, около 1.5 мс - середине, около 2 мс - другому краю.

Поэтому для сервоприводов лучше использовать специальные библиотеки или аппаратные PWM-каналы с подходящей частотой и длительностью импульса.

⚠️Не стоит путать управление сервоприводом и обычное управление мощностью через ШИМ. У сервопривода важна длительность управляющего импульса, а не просто средняя мощность на нагрузке.

Ошибки при работе с ШИМ

Ошибки с ШИМ часто появляются из-за неправильной частоты, слабого ключа, отсутствия защиты или неправильного понимания среднего напряжения.

ОшибкаЧто происходит
Слишком низкая частотаСветодиоды мерцают, мотор дергается
Слишком высокая частотаРастут потери на ключе и нагрев
Мотор подключен напрямую к GPIOМожно повредить микроконтроллер
MOSFET не logic-levelКлюч плохо открывается и греется
Нет защиты индуктивной нагрузкиВыбросы напряжения повреждают схему
ШИМ принят за настоящий аналоговый выходАналоговая схема работает нестабильно
Нет общего GNDСигнал управления не воспринимается корректно

Перед запуском силовой нагрузки лучше проверить ШИМ на светодиоде или осциллографе, затем подключать драйвер и только потом нагрузку.

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

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

Простой подход такой:

  1. Определить тип нагрузки.
  2. Понять, нужен ли силовой ключ или драйвер.
  3. Выбрать безопасную частоту.
  4. Проверить, хватает ли разрешения.
  5. Добавить защиту, если нагрузка индуктивная.
  6. Проверить нагрев MOSFET, драйвера и проводов.
  7. При необходимости посмотреть сигнал осциллографом.

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

ШИМ-сигнал простыми словами: как работает PWM, где применяется и как управлять мощностью

Чтобы оставить комментарий, авторизируйтесь

Комментарии (0)