цифровая электроника
вычислительная техника
встраиваемые системы

 

ESP32 и ШИМ: особенности широтно-импульсной модуляции ESP32

Автор: Mike(admin) от 17-06-2020, 10:55

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


ESP32 и ШИМ: особенности широтно-импульсной модуляции

В этом материале мы поговорим о ШИМ-выводе ESP32. Все выводы GPIO платы разработки ESP32 (кроме питания, GND, Tx, Rx и EN) могут использоваться для получения сигнала ШИМ. В качестве примера ШИМ ESP32 мы создадим простую схему, которая изменяет яркость светодиода в соответствии с сигналами ШИМ.


Прежде чем объяснить генерацию ШИМ на ESP32, давайте обсудим некоторые термины, связанные с ШИМ. Здесь есть несколько сокращений и определений. Ton (время включения) – это продолжительность времени, когда сигнал высокий. Toff (время выключения) – это продолжительность времени, когда сигнал низкий. Период – это сумма времени включения и выключения сигнала ШИМ. Рабочий цикл (скважность) – это процент времени, когда сигнал был высоким в течение периода сигнала ШИМ (определяется как Ton/Tполн * 100).


Например, если импульс с общим периодом 10 мс остается высоким в течение 5 мс, тогда скважность будет равна 5/10 * 100 = 50%.


ШИМ

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


Перейдем теперь непосредственно к генерации ШИМ в ESP32. В Arduino и ESP8266 мы используем функцию analogWrite() для «записи» значения ШИМ от 0 до 254 на вывод со светодиодом. Но ESP32 не поддерживает функцию analogWrite(). Поэтому вместо analogWrite() мы будем использовать другую функцию, а именно функцию ledcWrite(). LedcWrite() очень похожа на analogWrite(). Ей также требуется два параметра: канал ШИМ, в который мы хотим «записать» значение ШИМ-сигнала, и значение ШИМ-сигнала, которое мы хотим записать в выбранный канал. ESP32 имеет 16 каналов ШИМ, и вы можете использовать любой вывод GPIO для генерации выхода ШИМ. ESP32 предоставляет три функции для назначения канала ШИМ на вывод и для настройки разрешения, частоты и коэффициента заполнения сигналов ШИМ. Эти функции следующие:



ledcAttachPin(gpio, канал)
ledcSetup(канал, частота, разрешение)
ledcWrite(канал, скважность)

Схема подключения ESP32 для нашего проекта следующая:


ESP32 и ШИМ: особенности широтно-импульсной модуляции ESP32

Схема содержит один светодиод, резистор и потенциометр на 10 КОм. Отрицательный вывод светодиода подключен к заземлению ESP32 через резистор 330 Ом. Вы можете использовать любое значение сопротивления от 230 Ом до 500 Ом. Подключите положительный вывод светодиода к GPIO 16, а сигнальный вывод потенциометра к выводу ADC1 ESP32.


Код довольно прост и краток.



const int ledPin = 16;  // 16 соответствует GPIO16
uint16_t dutyCycle;
// настройка свойств ШИМ
const int freq = 15000;
const int ledChannel = 0;
const int resolution = 13;
void setup(){
  Serial.begin(9600);
  // настроим функции ШИМ для светода
  ledcSetup(ledChannel, freq, resolution);
  // подключим канал к GPIO, который нужно контролировать
  ledcAttachPin(ledPin, ledChannel);
}
void loop(){
   dutyCycle =  analogRead(A0); 
   Serial.print(dutyCycle);
   // изменим яркость светодиодов с помощью ШИМ
   ledcWrite(ledChannel, dutyCycle);
   delay(15);
  }

Чтобы проверить работу ШИМ ESP32, подключите светодиод и потенциометр согласно электрической схеме и загрузите код в ESP32. Убедитесь, что вы выбрали правильную плату и COM-порт. Теперь поверните потенциометр, чтобы увеличить или уменьшить яркость светодиода.


ESP32 и ШИМ: особенности широтно-импульсной модуляции ESP32



© digitrode.ru


Теги: ESP32, ШИМ




Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий