Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Промышленные технологии

ШИМ (PWM) в Arduino: полное руководство по программированию и функциям

ШИМ (PWM) в Arduino: программирование и ключевые функции

Что такое ШИМ (PWM)?

PWM (Pulse Width Modulation) — широтно-импульсная модуляция. Метод преобразования постоянного напряжения в последовательность импульсов переменной ширины. Отношение длительности импульса («вкл.») к общему периоду T называется коэффициентом заполнения (Duty Cycle). Также известен как PDM (Pulse Duration Modulation). Для мощного ШИМ требуются ключевые транзисторы/MOSFETы, для высоких нагрузок — сложные драйверы.

Зачем нужен ШИМ?

Главное применение — управление мощностью изменением коэффициента заполнения. Можно ли ограничить ток резистором? Да, но мощность рассеивается в виде тепла — крайне низкий КПД. При больших мощностях резисторы станут громоздкими и дорогими. ШИМ же обеспечивает высокий КПД (ключевой режим транзистора). Вторичное применение — передача информации, зашитой в коэффициент заполнения (например, управление сервоприводами).

Применение ШИМ:

  1. Управление сервоприводами (угол поворота зависит от скважности)
  2. RGB-светодиоды — смешение цветов изменением яркости каналов
  3. DC-DC преобразователи — эффективное ограничение мощности
  4. Регулировка скорости двигателей постоянного тока
  5. Генерация синусоидальных сигналов (управление амплитудой)

Влияние частоты ШИМ

ШИМ — это импульсы. Если частота слишком низка, двигатель будет дергаться: между импульсами он замедляется, плавности нет. Частота должна подбираться с учетом механической постоянной времени управляемого устройства (инерции ротора, индуктивности обмотки). Для двигателей обычно 20–50 кГц, для светодиодов — выше 1 кГц (чтобы не было мерцания).

ШИМ в Arduino: аппаратная поддержка

На Arduino UNO аппаратный ШИМ доступен на 6 пинах: 3, 5, 6, 9, 10, 11 (помечены тильдой ~). Никаких сложных функций писать не нужно — используйте analogWrite(pin, value).

Важно: digitalWrite выдает только HIGH/LOW (0 или 5В). analogWrite генерирует ШИМ, эмулируя аналоговый сигнал. Значение value — 0–255 (8 бит), где 0 = 0% (всегда 0В), 255 = 100% (всегда 5В), 127 ≈ 50%.

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

int ledPin = 3;      // ШИМ-пин
int brightness = 0;  // начальная яркость
int fadeAmount = 5;  // шаг изменения

void setup() {
  pinMode(ledPin, OUTPUT);
}

void loop() {
  analogWrite(ledPin, brightness);
  brightness += fadeAmount;
  if (brightness <= 0 || brightness >= 255) {
    fadeAmount = -fadeAmount; // меняем направление
  }
  delay(30); // скорость изменения
}

Ключевые моменты:

Связанные материалы:

Промышленные технологии

  1. Arduino-датчики: типы, применения и реальные проекты
  2. Четыре проверенных паттерна пользовательских функций в C
  3. Manufacturing Day: эволюция, влияние и витрина индустрии
  4. Создание анимации и игр на LCD 16×2 с Arduino UNO
  5. Управление Arduino Uno из Python 3: команды через последовательный порт и демонстрация с LED
  6. Сборка компактного FM-радио на Arduino Nano и RDA5807M
  7. Сборка ноутбука на Raspberry Pi 3 и Arduino: пошаговое руководство
  8. EAM против CMMS: ключевые различия и основные функции
  9. Умное производство: Определение, преимущества и внедрение
  10. IoT в производстве: ключевые концепции, применение и реальные примеры