Fanlab

Robototexnika · Mikrokontrollerlar · 8-sinf

PWM: yorqinlik va ovoz

analogWrite(9, 64) — chiroq nega 25 % yonadi va buzzer qanday kuy chaladi?

Tajribani ochish

Vaziyat

Robot mashinaning old chirog‘i keskin emas, ravon yonib-so‘nishi kerak, qo‘shimchasiga u signal ham chalsin. Arduino pini esa faqat ikki holatni biladi: 0 V yoki 5 V. Qanday qilib «yarim» yorqinlik olinadi? analogWrite(9, 64) yozsangiz, chiroq chorak yorqinlikda yonadi — lekin ossillografga qarasangiz, pinda hech qanday «chorak» kuchlanish yo‘q: faqat tez-tez yonib-o‘chish. Nega ko‘z buni silliq yorug‘lik deb qabul qiladi? Nega 0 dan 255 gacha teng qadamlar bilan o‘sgan yorqinlik ko‘zga teng ko‘rinmaydi? Va tone(8, 440) ning 440 si qayerdan kelgan?

Mavzu

PWM: analogWrite, yorqinlik va ovoz. LED ravon so‘nadi, buzzer kuy chaladi: to‘ldirish koeffitsiyenti va chastota

Asosiy tushunchalar

  • To‘ldirish koeffitsiyenti
  • Ko‘z va gamma
  • tone() — chastota

Formulalar

D=v255,T=1f,tyoniq=D⋅T

PWM (impuls kengligi modulyatsiyasi): `analogWrite(pin, v)` pinni f chastotada yoqib-o‘chiradi, davrning D ulushida HIGH. Uno: 9-pinda 490 Hz → T = 2,04 ms; v = 64 → D = 25 %, tyoniq = 0,51 ms.

Uo‘rt=D⋅5 V,Io‘rt=D⋅Iyoniq,Iyoniq=5−ULEDR+Rpin

O‘rtacha kuchlanish va tok to‘ldirish koeffitsiyentiga proporsional. LED ning yorug‘ligi o‘rtacha tokka proporsional — 220 Ω bilan Iyoniq ≈ 12,7 mA.

L∗=116Y3−16

Ko‘z (CIE 1976 L∗): sezilgan yorqinlik L∗ (0–100) yorug‘lik Y (0–1) ning kub ildiziga yaqin. Y = 10 % → L∗ ≈ 38, Y = 50 % → L∗ ≈ 76: yorug‘likning o‘ndan biri ko‘zga uchdan biridan ko‘proq bo‘lib ko‘rinadi.

vk=255(kN)γ,γ≈2,2…3

Gamma tuzatish: qadamlar ko‘zga teng ko‘rinishi uchun v ni darajaga ko‘tarib o‘stiramiz — boshida kichik, oxirida katta qadamlar.

fn=440⋅2n/12

Notalar — chastotalar: lya (A4) = 440 Hz, har yarim ton 212 ≈ 1,0595 marta. Do (C4) = 262, re 294, mi 330, fa 349, sol 392, lya 440, si 494, do (C5) 523 Hz. `tone(pin, f)` shu chastotali 50 % to‘ldirishli to‘lqin beradi.

Nazariya

PWM: ikki holatdan «o‘rtacha»

Mikrokontroller pini raqamli: 0 V yoki 5 V, oralig‘i yo‘q. `analogWrite(pin, v)` esa pinni sekundiga yuzlab marta yoqib-o‘chiradi: v = 255 — doim yoniq, 128 — yarim vaqt, 64 — chorak vaqt. Bu PWM — impuls kengligi modulyatsiyasi; yoniq ulush D=v/255 to‘ldirish koeffitsiyenti deyiladi. Zanjir uchun bu «o‘rtacha» kuchlanish 5D volt: LED ning o‘rtacha toki va yorug‘ligi D ga proporsional. Ko‘z 490 Hz miltillashni sezmaydi — u yorug‘likni taxminan 1/50 s davomida «yig‘adi»: 50–60 Hz dan tez miltillash silliq yorug‘lik bo‘lib ko‘rinadi.

Qaysi pinlar, qaysi chastota

Uno da PWM faqat ~ belgili 3, 5, 6, 9, 10, 11 pinlarda — ularni uchta taymer yuritadi: Timer0 — 5 va 6 (≈ 980 Hz; shu taymer `millis()` ni ham sanaydi), Timer1 — 9 va 10 (490 Hz), Timer2 — 3 va 11 (490 Hz). Chastota yorqinlikka ta’sir qilmaydi — faqat D muhim; 980 Hz da davr yarim baravar qisqa. Boshqa pinlarda (13 ham) `analogWrite` oddiy kalit: v<128 → LOW, v≥128 → HIGH. v = 0 va v = 255 har qanday pinda aynan LOW / HIGH — `digitalWrite` kabi.

Ko‘z chiziqli emas

Fade dasturida v 0 dan 255 gacha teng o‘sadi, lekin chiroq boshida juda tez yorishadi, keyin deyarli o‘zgarmaydi. Sabab ko‘zda: sezgi yorug‘likning o‘ziga emas, taxminan uning kub ildiziga proporsional (CIE 1976 L∗=116Y3−16 formulasi, shu asosda rangshunoslik va ekranlar ishlaydi). Yorug‘likning 10 % i ko‘zga ≈ 38 %, 50 % i ≈ 76 % bo‘lib ko‘rinadi. Qadamlar ko‘zga teng ko‘rinishi uchun gamma tuzatish kerak: vk=255(k/N)γ, γ ≈ 2,2–3 — boshida mayda, oxirida katta qadamlar. Shunday jadval har bir ekran va LED-chiroqning «dimmer»ida bor.

Ossillogrammani o‘qish

Ossillograf pin kuchlanishini vaqt bo‘yicha chizadi: 1 ms/div — ekran bo‘ylab 10 ms. 490 Hz da davr T=1/490 ≈ 2,04 ms — ekranda ≈ 5 davr; 980 Hz da ≈ 10. Yoniq impuls kengligi tyoniq=D⋅T: v = 64 da 0,51 ms, v = 191 da 1,53 ms. Amplituda doim 5 V — PWM kuchlanishni emas, vaqtni o‘zgartiradi. Shu belgi orqali PWM ni haqiqiy analog kuchlanishdan (DAC) ajratish mumkin: Uno da DAC yo‘q.

tone(): ovoz ham PWM

Passiv buzzer (pyezo plastinka) o‘zi chalmaydi — unga tebranish berish kerak: `tone(pin, f)` pinni f chastotada 50 % to‘ldirish bilan yoqib-o‘chiradi (aktiv buzzer esa 5 V berilsa o‘zi bir xil tonda chiyillaydi). Musiqada har nota — chastota: lya (A4) 440 Hz, oktava — ikki marta, yarim ton — 212 marta. `tone(pin, f, ms)` berilgan vaqtdan keyin o‘zi to‘xtaydi va dasturni to‘xtatib turmaydi; `noTone(pin)` o‘chiradi. Uno da bir vaqtda bitta tone chalinadi, u Timer2 ni egallaydi — shu paytda 3 va 11 pinlardagi PWM to‘xtaydi. Pyezo buzzer tok deyarli olmaydi; magnitli 16 Ω buzzerni esa pinga to‘g‘ridan-to‘g‘ri ulab bo‘lmaydi: tok 5/(16+25) ≈ 120 mA — 40 mA chegaradan uch marta ko‘p, chip kuyadi (tranzistor yoki 100 Ω kerak).

Model haqida

Ossillogramma to‘ldirish koeffitsiyenti va chastotadan ideal chiziladi (keskin frontlar; haqiqiy pinda ≈ 25 Ω va sig‘im tufayli frontlar bir necha nanosekund). LED yorug‘ligi o‘rtacha tokka proporsional deb olingan (LED ning ish sohasida bu to‘g‘ri); «ko‘z sezadi» qiymati — CIE L∗, ko‘z ancha murakkab (atrof yorug‘ligi, moslashish), lekin kub ildiz yaxshi birinchi yaqinlashuv. Ovoz — kompyuter dinamigidan to‘rtburchak to‘lqin, past balandlikda, faqat siz yoqsangiz; haqiqiy pyezo buzzer 2–4 kHz atrofida (rezonans) ancha balandroq chaladi. Chip qizishi `arduinoblink` dagi kabi soddalashtirilgan.

Bilasizmi?

  • Pyezoelektr hodisasini 1880-yilda aka-uka Jak va Pyer Kyuri kashf etgan: kvars kristalini siqsangiz, unda zaryad paydo bo‘ladi, kuchlanish bersangiz — u tebranadi. Buzzerdagi pyezo plastinka, kvars soat va ultratovush sensorlari shu hodisada ishlaydi.
  • Lya notasi 440 Hz — xalqaro standart: 1955-yilda ISO tavsiya sifatida qabul qilgan, hozirgi ISO 16 standarti 1975-yildan. Undan oldin orkestrlar turlicha sozlangan — 19-asr Parijida 435 Hz, ba’zi joylarda 450 Hz dan ham baland.

Tajribada nima bor

Haqiqiy plata qo‘lda chizilgan rasmda: uni aylantirasiz, qismlarni joylaysiz, zanjirni ulaysiz, kodni yozib yuklaysiz — tok va kuchlanish o‘sha zahoti hisoblanadi, xato ulashda qism kuyadi. Ichida topshiriqlar, nazariya, test va ekskursiya bor.

Shu bo‘limdagi boshqa tajribalar