22.11.12

analogWrite'st lähemalt

Mis ja kuidas ja milleks....

analogWrite aktiviseerib siis seda võimaldavatel digitaalväljunditel "pulsi laiuse modulatsiooni" - ehk teeseldakse mingit vahepealset volti - mitte ainult 0 ja 5v mis muidu võimalikud on.

Kuidas seda siis tehakse?
Arduino PWM võbistamise sagedus on ca 500 hz - ehk siis ühes sekundis lülitatakse väljundit sisse ja välja 500 korda. Seega ühe tsükli pikkus on 1000/500=2 millisekundit (üks sekund on teatavasti 1000 millisekundit).

Selle 2 millisekundi jooksul lülitatakse siis väljund sisse ja välja. Nüüd on ainult küsimus, kui suur osa sellest 2ms on veedetud sisselülitatud asendis, kui kaua aega väljalülitatud asendis.

Graafiliselt siis nii:



Siin joonisel on iga rohelise kriipsu vahe 2 millisekundit. Must joon näitab väljundi lülitumist 0 ja 5v vahel.

Tulemuseks on aga see, et väljundisse ühendatud seade (led lamp näiteks) lülitub siis kiirelt sisse-välja. Kui aga see seade on aeglane - näiteks inimsilm seda ledi vaatamas, voltmeeter vmt. - siis saadaksegi tulemuseks väiksem kogust valgust (tumedam led) või voltmeetri puhul näit mis sama suur kui väljundi proportsionaalselt sisselülitatud aeg. Kui kirjutada selline jupp koodi: analogWrite(3, 255/2) - siis voltmeeter näitaks ilusat 2.5V.

Kommentaare ei ole:

Postita kommentaar