Robototexnika · Mikrokontrollerlar · 8-sinf
PWM: yorqinlik va ovoz
analogWrite(9, 64) — chiroq nega 25 % yonadi va buzzer qanday kuy chaladi?
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
PWM (impuls kengligi modulyatsiyasi): `analogWrite(pin, v)` pinni chastotada yoqib-o‘chiradi, davrning ulushida HIGH. Uno: 9-pinda 490 Hz → = 2,04 ms; = 64 → = 25 %, = 0,51 ms.
O‘rtacha kuchlanish va tok to‘ldirish koeffitsiyentiga proporsional. LED ning yorug‘ligi o‘rtacha tokka proporsional — 220 Ω bilan ≈ 12,7 mA.
Ko‘z (CIE 1976 ): sezilgan yorqinlik (0–100) yorug‘lik (0–1) ning kub ildiziga yaqin. = 10 % → ≈ 38, = 50 % → ≈ 76: yorug‘likning o‘ndan biri ko‘zga uchdan biridan ko‘proq bo‘lib ko‘rinadi.
Gamma tuzatish: qadamlar ko‘zga teng ko‘rinishi uchun ni darajaga ko‘tarib o‘stiramiz — boshida kichik, oxirida katta qadamlar.
Notalar — chastotalar: lya (A4) = 440 Hz, har yarim ton ≈ 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: = 255 — doim yoniq, 128 — yarim vaqt, 64 — chorak vaqt. Bu PWM — impuls kengligi modulyatsiyasi; yoniq ulush to‘ldirish koeffitsiyenti deyiladi. Zanjir uchun bu «o‘rtacha» kuchlanish volt: LED ning o‘rtacha toki va yorug‘ligi 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 muhim; 980 Hz da davr yarim baravar qisqa. Boshqa pinlarda (13 ham) `analogWrite` oddiy kalit: → LOW, → HIGH. = 0 va = 255 har qanday pinda aynan LOW / HIGH — `digitalWrite` kabi.
Ko‘z chiziqli emas
Fade dasturida 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 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: , ≈ 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 ≈ 2,04 ms — ekranda ≈ 5 davr; 980 Hz da ≈ 10. Yoniq impuls kengligi : = 64 da 0,51 ms, = 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 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 — 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 ≈ 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 , 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
- Arduino Uno: birinchi dastur — 7-sinf
- Tugma va raqamli kirish — 7-sinf
- Analog kirish va Serial monitor — 7-sinf
- millis() va ko‘p vazifa — 8-sinf