Fanlab

Robototexnika · Mikrokontrollerlar · 7-sinf

Analog kirish va Serial monitor

Qorong‘ida o‘zi yonadigan tungi chiroq: 0–1023 sonlar qayerdan keladi va chiroq nega miltillaydi?

Tajribani ochish

Vaziyat

Yo‘lakdagi tungi chiroq kech kirishi bilan o‘zi yonadi, tong otganda o‘chadi — hech kim tugma bosmaydi. Ichida fotorezistor va kichkina «miya». Arduino ham shunday chiroq bo‘la oladi: analog kirish A0 kuchlanishni emas, 0 dan 1023 gacha son beradi. Avval potensiometr bilan bu sonlar qayerdan kelishini topamiz va ularni Serial monitorda ko‘ramiz, keyin fotorezistorni ulaymiz. Stol lampasini xiralashtiramiz — chiroq yonadi… lekin g‘ira-shirada u titrab-miltillaydi. Nega? 1024 pog‘ona, `map()`, chegara va gisterezis — hammasi shu tajribada.

Mavzu

Analog kirish va Serial monitor. Potensiometr va fotorezistor: 0–1023 raqamlar qayerdan keladi, map() va Serial.println()

Asosiy tushunchalar

  • analogRead, 10 bit
  • Fotorezistor bo‘luvchisi
  • Serial va gisterezis

Formulalar

N=⌊U5 V⋅1024⌋,0≤N≤1023

ADC (10 bit): `analogRead(A0)` kuchlanishni 1024 pog‘onaga bo‘ladi; 5 V → 1023, 2,5 V → 512.

ΔU=5 V1024≈4,9 mV

Bir pog‘ona — eng kichik farq, ADC ni «ko‘ra oladi»; undan mayda o‘zgarish sonni o‘zgartirmaydi.

UA0=5 V⋅R10kRLDR+R10k

Fotorezistor bo‘luvchisi: yorug‘da RLDR kichik — A0 da deyarli 5 V (katta son); qorong‘ida RLDR megaomlarga chiqadi — son nolga yaqin.

𝚖𝚊𝚙(𝙽, 𝟶, 𝟷𝟶𝟸𝟹, 𝟶, 𝟷𝟶𝟶)=⌊N⋅1001023⌋

`map()` bir oraliqni boshqasiga butun sonlarda o‘tkazadi: 512 → 50, kasr qismi tashlanadi.

N<Npast⇒yoq,N>Nyuqori⇒o‘chir

Gisterezis: yoqish va o‘chirish chegaralari har xil (450 / 550) — shovqin ikkala chegarani birdan kesib o‘ta olmaydi, chiroq miltillamaydi.

Nazariya

Analog va raqamli

`digitalRead` faqat ikki javob biladi: HIGH yoki LOW. Dunyo esa uzluksiz: yorug‘lik, harorat, dastak burchagi — istalgan qiymat. Arduino ning A0–A5 pinlari analog-raqamli o‘zgartirgich (ADC) ga ulangan: u 0–5 V kuchlanishni o‘lchab, 10 bitli son beradi — 210=1024 pog‘ona, 0 dan 1023 gacha. Bir pog‘ona 5/1024≈4,9 mV. Har o‘lchov ≈ 100 mks: sekundiga ≈ 10 000 marta. `analogRead(A0)` kuchlanishni emas, sonni qaytaradi; voltga o‘zingiz aylantirasiz: U=N⋅5/1023.

Potensiometr A0 da

Potensiometrning chet oyoqlari 5V va GND ga, o‘rtasi A0 ga: bu kuchlanish bo‘luvchi — dastak k=α/270° ulushda 5 V beradi. «Potensiometr» tajribasida LED bo‘luvchini «o‘tirgizgan» edi; ADC kirishi esa deyarli tok olmaydi (≈ 100 MΩ), shuning uchun 10 kΩ potensiometr aynan k⋅5 V beradi: o‘rtada 2,5 V → 512, oxirida 5 V → 1023. Sonni foizga `map(N, 0, 1023, 0, 100)` o‘tkazadi — butun sonlarda, kasr tashlanadi.

Fotorezistor (LDR)

Fotorezistor — kadmiy sulfid (CdS) qatlamli disk: yorug‘likda qarshiligi keskin kamayadi. Odatiy GL5528: 10 lk da ≈ 10 kΩ, kun yorug‘ida yuzlab om, qorong‘ida ≈ 1 MΩ. ADC qarshilikni emas, kuchlanishni o‘lchaydi — shuning uchun bo‘luvchi: 5V → LDR → A0 → 10 kΩ → GND. Yorug‘da LDR kichik, A0 da deyarli 5 V (900+); qorong‘ida LDR katta, A0 nolga yaqin (10–50). 10 kΩ bejiz emas: u LDR ning «g‘ira-shira» qarshiligiga teng — chegara o‘rtada, 512 atrofida chiqadi. Qo‘l bilan yopsangiz, ikki sekundda son yuzga tushadi.

Serial monitor va Serial Plotter

`Serial.begin(9600)` USB orqali kompyuter bilan aloqani ochadi: 9600 bod ≈ sekundiga 960 belgi. `Serial.print(x)` sonni yozadi, `println` — yangi qatordan. Serial monitor matnni ko‘rsatadi; Serial Plotter esa har qatordagi sonni nuqta qilib grafik chizadi — sensorni «ko‘rishning» eng tez yo‘li. Bu tajribada grafik avtomatik: A0 va chiroq holati vaqt bo‘yicha. `float` sonlar ikki kasr bilan chiqadi: 2.50.

Chegara, miltillash va gisterezis

Tungi chiroq: `if (N < 500) yoq; else o‘chir;`. Yorug‘likda va qorong‘ida ishlaydi, lekin g‘ira-shirada — N aynan 500 atrofida — chiroq titraydi: lampa shu’lasi, soyalar, ADC shovqini sonni ±10–20 ga tebratadi va u chegarani sekundiga o‘nlab marta kesib o‘tadi. Davo — gisterezis: ikki chegara, 450 da yoqish, 550 da o‘chirish; oradagi 100 pog‘ona ichida hech narsa o‘zgarmaydi, shovqin unga yetmaydi. Termostat, ko‘cha chiroqlari, sovutgich — hammasi shu usulda. Ikkinchi yordamchi — bir nechta o‘lchovning o‘rtachasi.

Model haqida va xavf

ADC: N=⌊1024U/5⌋ (1023 dan oshmaydi), shovqin ±1 pog‘ona; LDR: R=10 kΩ⋅(E/10 lk)−0,7, qorong‘ida 1 MΩ; yorug‘lik ±4 % tebranadi (lampa va soyalar); lampa 0–100 % → 1–1000 lk. Serial uzatish modelda bir zumda (haqiqatda 9600 bodda qator ≈ 5 ms). Xavf: A0 ga 5,5 V dan ko‘p berib bo‘lmaydi — bo‘luvchini 9 V batareyadan quvvatlasangiz, yorug‘da A0 da 8 V bo‘ladi: pinning himoya diodi ochiladi, bir necha mA chip orqali oqadi va ATmega328P kuyadi (xira yorug‘likda hali 4,5 V — omon qoladi, ko‘zingiz tushmaydi!).

Bilasizmi?

  • ATmega328P dagi ADC har o‘lchovga ≈ 100 mikrosekund sarflaydi (125 kHz takt, 13 takt) — Arduino hujjatida «sekundiga taxminan 10 000 o‘lchov» deyiladi; shuning uchun `delay()` siz `loop()` da ham A0 sekundiga 10 mingdan ko‘p o‘qilmaydi.
  • Yorug‘likda qarshiligi o‘zgaradigan moddani 1873-yilda ingliz muhandisi Uilloubi Smit (Willoughby Smith) selenda kashf etgan — fotorezistorning «bobosi»; hozirgi arzon fotorezistorlar kadmiy sulfid (CdS) dan yasaladi va ko‘cha chiroqlarining avtomatik yoqilishida ishlatiladi.

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