Boxodir Karimov – Robototexnikadan boshlang’ich bilimlar. O’quv qo’llanma (страница 3)
4.Analog sensor A1 kirishiga ulanishi mumkin, shu bilan birga mikrokontroller nafaqat signalni oladi, balki signal xarakteristikasini ham o`rganadi.
PWM pinlari va analog pinlarini ajratganimizga sabab shuki, PWM pinlari analog signal yaratadi, ular servo, step motor boshalar qurilmalar ulanadi shu bilab birga turli xil xususiyatlarga ega signallarni yetkazib beradi. Analog pinlar (Analog In) analog sensorlarni ulash uchun ishlatiladi, ulardan kiruvchi signal o`rnatilgan ADC yordamida raqamli signalga aylanadi.
ADC nima? Analog signal har qanday miqdordagi qiymatlarni qabul qilishi mumkin. Raqamli signal esa faqat ikkita qiymatga ega: HIGH va LOW. Arduinoda analog signallarning qiymatini o`lchash uchun o`rnatilgan analog-raqamli konvertor (ADC) mavjud. ADC analog kuchlanishni raqamli qiymatga aylantiradi. Analog signalning qiymatini olish uchun ishlatiladigan funksiya analogRead (pin) dir. Ushbu funksiya analog kirish pinining kuchlanish qiymatini o`zgartiradi va mos yozuvlar qiymatiga nisbatan 0 dan 1023 gacha raqamli qiymatni qaytaradi. Aksariyat Arduino UNOda A5gacha, Arduino Mega-da A15gacha va Arduino Mini va Nanoda A7 gacha pinlar mavjud. Pin raqami uning yagona parametridir.
PWM signalini chiqarish uchun analogWrite (pin, qiymat) funksiyasidan foydalaniladi. Qiymat =0 bo`lsa, signal har doim o`chirilgan bo`ladi. Qachonki qiymat=255 bo`lsa, signal har doim yoqilgan bo`ladi. PWM funksiyasi ko`plab Arduino platalarida 3, 5, 6, 9, 10 va 11-pinlarda ishlaydi. Ko`pgina pinlarda PWM signalining chastotasi taxminan 490 Gers ni tashkil qiladi. UNO va shunga o`xshash platalarda 5 va 6-pinlar taxminan 980 Gers chastotaga ega. Analog kirish qiymatini kerakli qurilmalar qiymatlariga moslashtirish uchun quyidagi funktsiyadan foydalanishingiz mumkin: map (qiymat, pastdan, yuqoridan, pastga, yuqoriga). Bu 0 dan 1023 gacha bo`lgan PWM chiqish signaligacha yani 0—255 oralig`ida bo`ladi. Bu funksiya beshta parametrga ega, birinchisi analog qiymat o`zgaruvchisidir, qolganlari esa mos ravishda 0, 1023, 0 va 255.
3.3.Arduino UNOda PWM, analog, raqamli pinlar
PWM (PWM) pinlarlari (Analog chiqish) 3, 5, 6, 9, 10, 11.
Analog pinlarlari (Analog kirish/chiqish) A0, A1, A2, A3, A4, A5.
Raqamli pinlarlari (Raqamli kirish/chiqish) 0 dan 13 gacha barcha portlar, foydalanish mumkin:
A0 – A5 gacha Analog pinlarlari raqamli pin sifatida ishlatiladi, agar umumiy maqsadli portlar yetarli bo`lmasa, masalan, plataga 15 ta svetodiodni ulashni xohlasangiz. Bundan tashqari, Arduino UNO va Nano platalarida A4 va A5 portlari I2C protokoli (SDA va SCL pinlari) uchun ishlatiladi – ular A4 va A5 pinlari bilan parallel ishlaydi.
Agar chiqish kuchlanishini tartibga solmoqchi bo`lsangiz, "~" belgisi bilan belgilangan pinlarni ishlatishingiz kerak. Arduino UNO uchun bular 3, 5, 6, 9, 10, 11. Analog portlar yordamida 0 dan 5 voltgacha bo`lgan har qanday kuchlanishni chiqarish mumkin va raqamli chiqishlarni faqat yoqish va o`chirish mumkin. Analog portlar PWM (pulse-width modulation), o`zbek tilida IKM (impuls kengligi modulyatsiyasi), rus tilida (широтно-импульсная модуляция) dan foydalanadi, bu analog signalni simulyatsiya qiladi.
Arduinoda analog pinlarni raqamli sifatida ishlatish
Ko`p qurilmalarni ulashda umumiy maqsadli pinlar etarli bo`lmasligi mumkin. Bunda dasturda analog pinlarni raqamli pinlar sifatida ishlatish mumkin.
void setup () {
pinMode (A3, OUTPUT); //A3 pinini raqamli chiqish sifatida e`lon qilish
}
Raqamli signal va analog signal o`rtasidagi farqni tushunish uchun, LED va rezistorli sxemani amaliyot taxtasida o`rnating. Analog chiqishni
~ 9 ga ulang. Chiqish portini Pin 9 ga ulang. Dasturni Arduino NANO yoki UNO platasiga yuklang.
Port 9 raqamli chiqish sifatida ishlashi mumkin. Agar digitalWrite funksiyasi analogWrite ga o`zgartirilsa, HIGH (1) va LOW (0) qiymatlari o`rniga 0 dan 255 gacha bo`lgan istalgan qiymatni qabul qiladi. Aynan shu oraliqda analog chiqishlardagi kuchlanish o`zgartiriladi. LEDni yoqish va o`chirish uchun dasturni yuklab oling. Ushbu dasturning ishlashining batafsil tavsifi quyida kodda berilgan.
3.4.Arduino UNOdagi analog portlar (A0-A5 pinlari)
Ushbu bo’limda Arduinoning analog A0-A5 portlarini ko`rib chiqamiz. Analog portlarning ishlash printsipini tahlil qilinadi, ularga nima ulanishi mumkinligi ko`rib chiqiladi. Amaliyot taxtasidan foydalanib, boshqariladigan yorug`lik bilan yoritgich sxemasini yig`amiz, shunda potensiyometr (o`zgaruvchan qarshilik) yordamida LEDning yorqinligini o`zgartirish mumkin bo`ladi. Arduino IDE tilida #define va analogRead direktivasini ko`rib chiqing.
3.3-rasm. Arduinoga potensiometrni ulash sxemasi
Arduinoda potensiometr uchun dastur:
void setup () {
Serial.begin (9600);
pinMode (A0, INPUT); // potansiometrni A0 kirishiga ulang
}
void loop () {
int qiymat = analogRead (A0); // A0 portidan ma`lumotlarni o`qish
Serial.print («Potensiometr qiymati ->»);
Serial.println (qiymat);
}
Arduinoda analog kirishlar
Arduinoning Atmega mikrokontrolleri olti kanalli analog-raqamli konvertorni (ADC) o`z ichiga oladi. Konvertorning ruxsati 10 bit bo`lib, 0 dan 1023 gacha qiymatlarni olish imkonini beradi. Arduino analog kirishlari vasifasi (Arduino UNOda (A0-A5) analog sensorlardan asosiy foydalanish qiymatlarni o`qish. Potansiyometrdan ko`rsatkichlarni olish uchun analog kirishdan foydalaniladi.
O`lchov bo`linmasining kichik qiymati deyarli har qanday miqdorning qiymatlarini katta aniqlik bilan olish imkonini beradi. Analog kiritishni o`qish uchun analogRead funksiyasidan foydalaning. Analog portlar digitalRead buyrug`i yordamida amalga oshirilishi mumkin, bu buyruq tugmachadan ma`lumotlarni o`qish uchun ishlatiladi. digitalWrite buyrug`i bilan esa LEDni boshqarishingiz mumkin.
3.5. Arduinoda analog signal va LED
int LED = 0; //LEDning dastlabki yorqinligi
int fade = 5; //LED yorqinligini o`zgartirish bosqichi
void setup () {
pinMode (9, OUTPUT); // chiqish ishlashi uchun Pin 9 dan foydalaning
}
void loop () {
//LED yorqinligini Pin 9ga o`rnating
analogWrite (9, LED); //har bir siklda berilgan so`ng miqdorini qo`shish orqali yorqinlikni o`zgartiring;
LED = LED + fade; //minimal va maksimal yorqinlikda o`chirish tartibini o`zgartiring;
if (LED == 0 || LED == 255) {
fade=-fade;
}
delay (20); //effektni pauza qilish
}
Tushuntirish:
1.AnalogWrite funksiyasi (pin, qiymat), bu yerda pin – signal qo`llaniladigan chiqish porti, qiymat-0 (to`liq o`chirilgan) va 255 (to`liq yoqilgan) orasidagi qiymat, LEDning yorqinligini yoki tezligini impuls kengligi modulyatsiyasi (PWM) yordamida boshqariladi.
2.LED o`zgaruvchi sikli har gal bajarilganda «0» boshlang`ich qiymatiga ega bo`ladi, fade ning berilgan qiymati LED qiymatiga qo`shiladi (bu dasturda fade =5).
LED o`zgaruvchisi maksimal qiymati 255 ga yetganda, fade -5 manfiy qiymatni oladi. Endi, har safar sikl bajarilganda, LED qiymatiga -5 qo`shiladi, ya`ni, har safar fade LEDdan ayriladi.
Arduinoda LEDning yorqinligini o`zgartirish
Ushbu bo’limda LEDning yorqinligini o`zgartiriladigan qurilmaning elektr sxemasini yig`amiz. Potensiometr yordamida 9-pinga ulangan LEDning yorqinligini o`zgartirishimiz mumkin. Potensiometrning ikki tarafdagi oyoqlari 5V va GND portlariga ulanadi, kuchlanish qiymati o`rta oyoqdan olinadi va Arduinoning A0 analog kirishiga ulanadi.
Elektr zanjirini ko`rsatilganidek yig`ing. Potensiometrning o`rta oyog`i kuchlanish ko`rsatkichlarini olish uchun A0 analog portiga ulanadi. Arduinoning 5V va GND portlariga ulash uchun, potensiometrni ikki tarafidagi oyoqlarini qay biriga ulanishi muhim emas. LEDning yorqinligini oshirish uchun faqat htugmachasining aylanish yo`nalishi o`zgartiriladi. Sxema tayyor bo`lgandan so`ng, Arduinoni kompyuterga ulab va dasturni yuklang.
3.4-rasm. Arduinoga led va potensiyometr ulash sxemasi
Arduinoda led va potensiyometr uchun dastur
#define LED_PIN 9 // LED bilan pinga nom bering
#define POT_PIN A0 // Potensiometr piniga nom bering
void setup () {
// LED pin chiqish
pinMode (LED_PIN, OUTPUT);
//potensiometrli pin kirish bo`ladi
pinMode (POT_PIN, INPUT);