Модулација ширине импулса (ПВМ) је техника која мења ширину импулса задржавајући константну фреквенцију таласа. ПВМ техника која се углавном користи за контролу осветљености ЛЕД, брзине једносмерног мотора, управљање серво мотором, или у другим случајевима, где је потребно генерисати аналогни сигнал помоћу дигиталног извора. ПВМ смо детаљно објаснили у претходном чланку.
У овом упутству ћемо говорити о ПВМ (модулација ширине импулса) пиновима ЕСП32 развојне плоче. Сви ГПИО пинови ЕСП32 развојне плоче (осим напајања, ГНД, Тк, Рк и ЕН) могу се користити за добијање ПВМ сигнала. Као пример за ЕСП32 ПВМ, направићемо једноставан склоп који мења осветљеност ЛЕД-а у складу са ПВМ-сигналима.
Компоненте потребне
- ЕСП32
- ЛЕД
- Отпорник 330 Ω
- 10к Пот
- Бреадбоард
ПВМ генерација
Пре објашњавања генерације ПВМ-а на ЕСП32, разговарајмо о неким терминима повезаним са ПВМ-ом.
ТОН (Укључено): Време када је сигнал висок.
ТОФФ (искључено време): Време када је сигнал низак.
Период: То је збир времена и времена искључења ПВМ сигнала.
ТоталПериод = Т УКЉ + Т ИСКЉУЧЕНО
Радни циклус: Проценат времена када је сигнал био висок током периода ПВМ сигнала.
Радни циклус = Т ОН / Т Укупно * 100
На пример, ако импулс са укупним периодом од 10 мс остане УКЉУЧЕН (висок) током 5 мс. Тада ће радни циклус бити:
Радни циклус = 5/10 * 100 = 50% радни циклус
Коло садржи једну ЛЕД диоду, отпорник и 10К потенциометар. Негативни пин ЛЕД-а повезан је на ГНД ЕСП32 кроз отпорник од 330 Ω. Можете користити било коју вредност отпорника између 230 Ω и 500 Ω. Повежите ЛЕД позитивни пин на ГПИО 16 и сигнални пин Пот-а на АДЦ1 (ВП) пин ЕСП32.
Објашњење кода за ЕСП32 ПВМ
Комплетна шифра дата је на крају странице.
За овај код није потребна библиотека, па покрените код дефинисањем пина на који је прикачена ЛЕД. У мом случају сам користио ГПИО 16 за повезивање ЛЕД диоде.
цонст инт ледПин = 16; // 16 одговара ГПИО16
Након тога, у следећим редовима подесите својства ПВМ сигнала. Подесио сам ПВМ фреквенцију на 9000, а резолуцију на 10, можете је променити тако да генерише различите ПВМ сигнале. ЕСП32 плоче подржавају ПВМ резолуцију од 1 бита до 16 бита. Такође треба да изаберете ПВМ канал. ЕСП32 има укупно 16 (0 до 15) ПВМ канала.
цонст инт фрек = 9000; цонст инт ледЦханнел = 0; цонст инт резолуција = 10;
Сада унутар функције воид сетуп () , конфигуришите ЛЕД ПВМ са својствима која сте раније поставили помоћу функције ледцСетуп () . У следећем реду дефинишите ГПИО пин на који је ЛЕД повезана. Функција ледцАттацхПин () користи се за дефинисање ГПИО пина и канала који генерише сигнал. У мом случају сам користио ледПин који је ГПИО 16 и ледЦханнел који одговара каналу 0.
воид сетуп () {Сериал.бегин (9600); ледцСетуп (ледЦханнел, фрекв, резолуција); ледцАттацхПин (ледПин, ледЦханнел); }
У празној петљи прочитајте аналогни пин на месту где је повезан лонац и сачувајте очитавање у променљивој која се назива „дутиЦицле“ . Осветљеност ЛЕД-а ће се повећавати или смањивати у зависности од ротације потенциометра. ЛедцВрите () је веома сличан аналогВрите ().
воид лооп () {дутиЦицле = аналогРеад (А0); ледцВрите (ледЦханнел, дутиЦицле); кашњење (15); }
Тестирање ЕСП32 ПВМ сигнала
Да бисте тестирали ЕСП32 ПВМ сигнале, повежите ЛЕД и потенциометар према шеми кола и отпремите код на свој ЕСП32. Обавезно одаберите десну плочу и ЦОМ порт. Сада окрените потенциометар да бисте повећали или смањили осветљеност ЛЕД диода.
Комплетан рад приказан је у видеу датом у наставку. Такође, проверите и друге пројекте засноване на ЕСП32 пратећи везу.