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.
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.
}