Bangos pločio moduliacija

Bangos pločio moduliavimas arba (PWM) yra įprastas metodas, naudojamas keisti impulsų plotį impulsų bangoje. PWM turi daug pritaikymų, tokių kaip servo ir greičio valdiklių valdymas, efektyvios variklių ir šviesos diodų galios ribojimas.

Bangos pločio moduliacija iš esmės yra kvadratinė banga, kurios aukštis tam tikrais laiko intervalais skiriasi. PWM signalo pavyzdys parodytas paveikslėlyje žemiau.

PWM Bangos ilgio moduliacija

Voltage – įtampa pasiekiama bangos metu.

Duration Time – laiko intervalas nuo vienos bangos pradžios iki kitos bandos pradžios.

Time – laikas, kai bangos sukelta įtampa didžiausia.

Duty Cycle – tai procentinė išraiška atitinkanti bangos intervalo ir laiko tarp bangų santykį.

analogWrite() funkcija

Funkcija analogWrite() įrašo analoginę reikšmę (PWM bangą) į pin’ą. Jis gali būti naudojamas skirtingo ryškumo šviesos diodams valdyti arba priversti variklį dirbti skirtingomis apsukomis. Iškvietus funkciją analogWrite(), kaištis generuos pastovaus pločio bangas iki kito analoginio signalo priskyrimo pin’ui. Daugumos kontaktų PWM signalo dažnis yra maždaug 490 Hz. Tačiau Arduino Uno ir panašiose plokštėse 5 ir 6 kaiščių dažnis yra maždaug 980 Hz.

Atkreipkite dėmesį, kad Arduino Uno analogWrite() funkcija veikia 3, 5, 6, 9, 10 ir 11 išvaduose. Taip pat svarbu ir tai, kad pin’o kuris bus prijungimas analoginio signalo išvedimui nebūtina apibrėžti naudojant funkciją pinMode().

analogWrite() funkcija reikalauja dviejų parametrų – pin’o (kaiščio) iš kurio bus išvedamas signalas ir reikšmės.

Pavyzdys:

int ledPin = 9; // LED prijungiamas prie 9 pin’o.

int analogPin = 3; // potenciometras prijungiamas prie 3 pin’o.

int val = 0; // deklaruojamas kintamasis jam suteikiant reikmšę.

void setup() {

pinMode(ledPin, OUTPUT); // kintamajam priskirtas 9 kaištis deklaruojamas išvesčiai.

}

void loop() {

val = analogRead(analogPin); // kintamajam val priskiriama reikšmė ateinanti iš funckijos.

analogWrite(ledPin, (val / 4)); // standartinės analoginės reikmšmės (0 - 1023) dalijamos iš 4.

// ledą pasiekia analoginės reikšmės nuo 0 iki 255.

}

 


Socialiniai tinklai
Pasiekite mūsų bendruomenę socialinėje erdvėje
Siekiame suburti tvirta ir draugiška bendruomene socialiniuose tinkluose, kuri bus pasiekiama ir atvira visiems.
Facebook
Youtube
Github
Codepen
LinkedIn
Instagram
Bendruomenė
Arduinopagalba.lt
Nesvarbu ar tu ieškai informacijos ar nori ją perduoti, mūsų bendruomenėje laukiami visi. Siekiame, kad projektas ne tik teiktų informaciją, bet ir padėtų surasti bendraminčius.
Prisijungti