Pulssileveyden modulointi (PWM) on tekniikka, joka muuttaa pulssin leveyttä pitäen aaltotaajuuden vakiona. PWM-tekniikkaa käytetään pääasiassa LED-valon kirkkauden, tasavirtamoottorin nopeuden, servomoottorin ohjaamiseen tai muissa tapauksissa, joissa on luotava analoginen signaali digitaalisesta lähteestä. Selitimme PWM: n yksityiskohtaisesti edellisessä artikkelissa.
Tässä opetusohjelmassa puhumme ESP32-kehityskortin PWM (pulssinleveyden modulointi) -tapista. Kaikkia ESP32-kehityskortin GPIO-nastoja (paitsi Power, GND, Tx, Rx ja EN) voidaan käyttää PWM-signaalin saamiseen. Kuten ESP32 PWM esimerkiksi, me rakentaa yksinkertainen piiri, joka muuttaa LED kirkkauden mukaan PWM-signaaleja.
Tarvittavat komponentit
- ESP32
- LED
- 330 Ω vastus
- 10k potti
- Leipälauta
PWM-sukupolvi
Ennen kuin selitämme PWM-sukupolven ESP32: lla, keskustellaan joitain PWM: ään liittyviä termejä.
TON (Päällä): Aika, jolloin signaali on korkea.
TOFF (Off Time): Aika, jonka signaali on matala.
Aika: Se on PWM-signaalin aika- ja sammutusajan summa.
TotalPeriod = T ON + T OFF
Duty Cycle: Prosentuaalinen aika, jolloin signaali oli korkea PWM-signaalin aikana.
Käyttöjakso = T ON / T yhteensä * 100
Esimerkiksi, jos pulssi, jonka kokonaisjakso on 10 ms, pysyy PÄÄLLÄ (korkea) 5 ms: n ajan. Sitten käyttöjakso on:
Käyttöjakso = 5/10 * 100 = 50% käyttöjakso
Piiri sisältää yhden LEDin, vastuksen ja 10K potentiometrin. LEDin negatiivinen nasta on kytketty ESP32: n GND: hen 330 Ω: n vastuksen kautta. Voit käyttää mitä tahansa vastuksen arvoa välillä 230 Ω ja 500 Ω. Liitä LED-positiivinen nasta GPIO 16: een ja Potin signaalitappi ESP32: n ADC1 (VP) -tappiin.
ESP32 PWM -koodin selitys
Koko koodi annetaan sivun lopussa.
Tämä koodi ei vaadi kirjastoa, joten aloita koodi määrittelemällä nasta, johon LED on kiinnitetty. Minun tapauksessani käytin LED-valoa GPIO 16: lla.
const int ledPin = 16; // 16 vastaa GPIO16: ta
Määritä sen jälkeen PWM-signaalin ominaisuudet seuraaville riveille. Asetin PWM-taajuudeksi 9000 ja resoluutioksi 10, voit muuttaa sen tuottamaan erilaisia PWM-signaaleja. ESP32-kortit tukevat PWM-tarkkuutta 1 bitistä 16 bittiin. Sinun on myös valittava PWM-kanava. ESP32: lla on yhteensä 16 (0-15) PWM-kanavaa.
const int taajuus = 9000; const int ledChannel = 0; const int -resoluutio = 10;
Määritä nyt void setup () -toiminnon sisällä LED PWM aiemmin asetetuilla ominaisuuksilla ledcSetup () -toiminnon avulla. Määritä seuraavalla rivillä GPIO-nasta, johon LED on kytketty. LedcAttachPin () funktiota käytetään määrittelemään GPIO tappi ja kanava, joka on tuottaa signaali. Minun tapauksessani käytin ledPin, joka on GPIO 16, ja ledChannel, joka vastaa kanavaa 0.
void setup () {Sarja.alku (9600); ledcSetup (ledChannel, taajuus, resoluutio); ledcAttachPin (ledPin, ledChannel); }
Vuonna mitätön silmukka, lue Analog tappi joissa potti kytketty ja tallentaa lukeman muuttujaan nimeltä 'hyötylähtöteholla' . LED-kirkkaus kasvaa tai pienenee potentiometrin pyörimisen mukaan. LedcWrite () on hyvin samanlainen kuin analogWrite ().
void loop () {dutyCycle = analogRead (A0); ledcWrite (ledChannel, dutyCycle); viive (15); }
ESP32 PWM -signaalien testaus
ESP32 PWM -signaalien testaamiseksi kytke LED ja potentiometri piirikaavion mukaisesti ja lataa koodi ESP32: eesi. Varmista, että sinulla on oikea kortti ja COM-portti valittu. Käännä nyt potentiometriä lisätäksesi tai vähentääksesi LED-valon kirkkautta.
Täydellinen työskentely näkyy alla olevassa videossa. Tarkista myös muut ESP32-pohjaiset projektit linkkiä seuraamalla.