Модуляція ширини імпульсу (ШІМ) - це техніка, яка варіює ширину імпульсу, зберігаючи постійну частоту хвилі. ШІМ-техніка в основному використовується для управління яскравістю світлодіода, швидкості двигуна постійного струму, управління сервомотором або в інших випадках, коли доводиться генерувати аналоговий сигнал за допомогою цифрового джерела. Ми детально пояснили ШІМ у попередній статті.
У цьому підручнику ми поговоримо про ШІМ (модуляція ширини імпульсу) висновки плати розробки ESP32. Для отримання сигналу ШІМ можуть бути використані всі штифти GPIO плати розробки ESP32 (крім Power, GND, Tx, Rx та EN). Як приклад ШІМ ESP32, ми побудуємо просту схему, яка змінює яскравість світлодіода відповідно до ШІМ-сигналів.
Потрібні компоненти
- ESP32
- СВІТЛОДІОДНИЙ
- Резистор 330 Ом
- 10к горщик
- Макет
Генерація ШІМ
Перш ніж пояснювати генерацію ШІМ на ESP32, давайте обговоримо деякі терміни, пов'язані з ШІМ.
TON (On Time): Тривалість часу, коли сигнал високий.
TOFF (Час вимкнення): Тривалість часу, коли сигнал низький.
Період: Це сума часу та часу вимкнення ШІМ-сигналу.
TotalPeriod = T ON + T OFF
Робочий цикл: Відсоток часу, коли сигнал був високим протягом періоду ШІМ-сигналу.
Робочий цикл = T ON / T Разом * 100
Наприклад, якщо імпульс із загальним періодом 10 мс залишається увімкненим (високим) протягом 5 мс. Тоді робочий цикл буде таким:
Робочий цикл = 5/10 * 100 = 50% робочого циклу
Схема містить один світлодіод, резистор і потенціометр 10K. Негативний висновок світлодіода підключений до GND ESP32 через резистор 330 Ом. Ви можете використовувати будь-яке значення резистора від 230 Ом до 500 Ом. Підключіть позитивний штифт світлодіода до GPIO 16, а сигнальний штифт Pot до контакту ADC1 (VP) ESP32.
Пояснення коду для ШІМ ESP32
Повний код наведено в кінці сторінки.
Цей код не вимагає жодної бібліотеки, тому почніть свій код, визначивши штифт, до якого прикріплений світлодіод. У моєму випадку я використовував GPIO 16 для підключення світлодіода.
const int ledPin = 16; // 16 відповідає GPIO16
Після цього встановіть властивості сигналу ШІМ у наступних рядках. Я встановив частоту ШІМ на 9000, а роздільну здатність - 10, ви можете змінити її, щоб генерувати різні ШІМ-сигнали. Плати ESP32 підтримують роздільну здатність ШІМ від 1 біта до 16 біт. Також потрібно вибрати канал ШІМ. ESP32 має в цілому 16 (від 0 до 15) ШІМ-каналів.
const int freq = 9000; const int ledChannel = 0; const int дозвіл = 10;
Тепер усередині функції void setup () , налаштуйте світлодіодну ШІМ із властивостями, які ви встановили раніше за допомогою функції ledcSetup () . У наступному рядку визначте штифт GPIO, куди підключений світлодіод. Функція ledcAttachPin () використовується для визначення виводу GPIO та каналу, який генерує сигнал. У моєму випадку я використовував ledPin, який є GPIO 16, і ledChannel, який відповідає каналу 0.
void setup () {Serial.begin (9600); ledcSetup (ledChannel, частота, роздільна здатність); ledcAttachPin (ledPin, ledChannel); }
У циклі void прочитайте аналоговий штифт, де підключений бак, і збережіть зчитування у змінній, що називається 'dutyCycle' . Яскравість світлодіода буде збільшуватися або зменшуватися відповідно до обертання потенціометра. LedcWrite () дуже схожий на analogWrite ().
void loop () {dutyCycle = analogRead (A0); ledcWrite (ledChannel, dutyCycle); затримка (15); }
Тестування ШІМ-сигналів ESP32
Щоб перевірити ШІМ-сигнали ESP32, підключіть світлодіод та потенціометр відповідно до електричної схеми та завантажте код на свій ESP32. Переконайтеся, що вибрано правильну плату та COM-порт. Тепер поверніть потенціометр, щоб збільшити або зменшити яскравість світлодіода.
Повна робота показана у відео, поданому нижче. Також перевірте інші проекти на основі ESP32, перейшовши за посиланням.