- Kinakailangan ang Mga Bahagi
- Pagbuo ng PWM
- Paliwanag sa Code para sa ESP32 PWM
- Sinusubukan ang Mga Sinyales ng ESP32 PWM
Ang Pulse Width Modulation (PWM) ay isang pamamaraan na nag-iiba-iba ang lapad ng isang pulso habang pinapanatili ang dalas ng dalas ng daloy. Ang pamamaraan ng PWM na pangunahing ginagamit upang makontrol ang liwanag ng LED, bilis ng DC motor, pagkontrol sa isang servo motor, o sa ibang mga kaso, kung saan kailangang makabuo ng isang analog signal gamit ang isang digital na mapagkukunan. Ipinaliwanag namin ang PWM nang detalyado sa nakaraang artikulo.
Sa tutorial na ito, pag-uusapan natin ang tungkol sa PWM (modulate ng lapad ng pulso) na mga pin ng board ng pag-unlad ng ESP32. Ang lahat ng mga GPIO pin ng ESP32 development board (Maliban sa Power, GND, Tx, Rx, at EN) ay maaaring magamit upang makuha ang signal ng PWM. Bilang isang halimbawa ng ESP32 PWM, magtatayo kami ng isang simpleng circuit na binabago ang liwanag ng LED alinsunod sa mga signal ng PWM.
Kinakailangan ang Mga Bahagi
- ESP32
- LED
- 330 Ω Resistor
- 10k Palayok
- Breadboard
Pagbuo ng PWM
Bago ipaliwanag ang henerasyon ng PWM sa ESP32, talakayin natin ang ilang mga term na nauugnay sa PWM.
TON (Sa Oras): Ang tagal ng oras kung kailan mataas ang signal.
TOFF (Off Time): Ang tagal ng oras kung mababa ang signal.
Panahon: Ito ang kabuuan ng oras at oras ng pag-off ng signal ng PWM.
TotalPeriod = T ON + T OFF
Duty Cycle: Ang porsyento ng oras kung kailan mataas ang signal sa panahon ng signal ng PWM.
Duty Cycle = T ON / T Kabuuan * 100
Halimbawa, kung ang isang pulso na may kabuuang panahon na 10ms ay mananatiling ON (mataas) para sa 5ms. Pagkatapos, ang ikot ng tungkulin ay:
Duty Cycle = 5/10 * 100 = 50% Duty Cycle
Naglalaman ang circuit ng isang solong LED, isang resistor, at isang 10K potentiometer. Ang negatibong pin ng LED ay konektado sa GND ng ESP32 sa pamamagitan ng isang resistor na 330. Maaari mong gamitin ang anumang halaga ng risistor sa pagitan ng 230 Ω at 500 Ω. Ikonekta ang LED positibong pin sa GPIO 16 at signal pin ng Pot sa ADC1 (VP) pin ng ESP32.
Paliwanag sa Code para sa ESP32 PWM
Ang kumpletong code ay ibinibigay sa dulo ng pahina.
Ang code na ito ay hindi nangangailangan ng anumang library, kaya simulan ang iyong code sa pamamagitan ng pagtukoy sa pin, naka-attach ang LED. Sa aking kaso, ginamit ko ang GPIO 16 upang ikonekta ang LED.
Const int ledPin = 16; // 16 ay tumutugma sa GPIO16
Pagkatapos nito, itakda ang mga katangian ng signal ng PWM sa mga susunod na linya. Itinakda ko ang dalas ng PWM sa 9000, at ang resolusyon sa 10, maaari mo itong baguhin upang makabuo ng iba't ibang mga signal ng PWM. Sinusuportahan ng mga board ng ESP32 ang resolusyon ng PWM mula sa 1 hanggang 16 na piraso. Kailangan mo ring pumili ng isang PWM channel. Ang ESP32 ay may kabuuang 16 (0 hanggang 15) na mga channel ng PWM.
const int freq = 9000; Const int ledChannel = 0; Const int resolusyon = 10;
Ngayon sa loob ng walang bisa na pag- andar () na pag- andar, i-configure ang LED PWM sa mga katangian na itinakda mo nang mas maaga sa pamamagitan ng paggamit ng ledcSetup () na pagpapaandar. Sa susunod na linya, tukuyin ang GPIO pin kung saan nakakonekta ang LED. Ang pagpapaandar na ledcAttachPin () ay ginagamit upang tukuyin ang GPIO pin at ang channel na bumubuo ng signal. Sa aking kaso, ginamit ko ang ledPin na GPIO 16 at ledChannel na tumutugma sa channel 0.
void setup () {Serial.begin (9600); ledcSetup (ledChannel, freq, resolusyon); ledcAttachPin (ledPin, ledChannel); }
Sa void loop, basahin ang Analog pin kung saan ang Pot ay konektado at iimbak ang pagbabasa sa isang variable na tinatawag na 'dutyCycle' . Ang LED brightness ay tataas o babaan ayon sa pag-ikot ng potentiometer. Ang ledcWrite () ay halos kapareho ng analogWrite ().
void loop () {dutyCycle = analogRead (A0); ledcWrite (ledChannel, dutyCycle); pagkaantala (15); }
Sinusubukan ang Mga Sinyales ng ESP32 PWM
Upang subukan ang mga signal ng ESP32 PWM, ikonekta ang LED at potentiometer ayon sa circuit diagram, at i-upload ang code sa iyong ESP32. Tiyaking napili mo ang tamang board at COM port. Paikutin ngayon ang potensyomiter upang madagdagan o mabawasan ang liwanag ng LED.
Ang kumpletong pagtatrabaho ay ipinapakita sa video na ibinigay sa ibaba. Gayundin, suriin ang iba pang mga proyekto batay sa ESP32 sa pamamagitan ng pagsunod sa link.