Laboratoriyaning amaliy qismi.
Modelni yig‘ish uchun bizga quyidagilar kerak:
Arduino Uno / Arduino Nano / Arduino Mega platasi;
plata (doska);
1 bipolyar tranzistor;
1 ta doimiy dvigatel;
1 dan 10 kOm gacha bo‘lgan 2 ta rezistor;
papa-papa va papa-mama simlari.
Siz shahar motorini to‘g‘ridan -to‘g‘ri Arduino raqamli yoki analog portlariga ulay olmaysiz. Buning sababi, Arduino platasidagi pinlar 40 mA dan yuqori tokni uzatishga qodir emas. Bunday holda, shahar motoriga yukga qarab, yuzlab milliamperlar kerak bo‘ladi. Shu sababli, yuqori kuchlanishli elektr zanjirini L293D tranzistorli yoki Dvigatel qalqoni bilan boshqarishga ehtiyoj bor.
Modelning Arduinoga ulanish sxemasi quyidagicha:
DC motorini Arduinoga ulash sxemasi
Elektr sxemasini yuqoridagi rasmda ko‘rsatilgandek yig‘ing. Agar siz panelda yig‘ilishiga diqqat bilan qarasangiz, tranzistor tugma vazifasini bajarayotganini sezasiz. Agar tugma itargich bosilganda elektr zanjirini yopsa, u holda tranzistor tayanchga kuchlanish qo‘llanilganda tokni o‘tkaza boshlaydi. Shunday qilib, biz Arduino-da avtomatik yoki yarim avtomatik dvigatelni boshqarishimiz mumkin.
Ushbu model uchun quyidagi dastur mos keladi:
void setup() {
pinMode(11, OUTPUT); // 13 pin ni chiqishini e’lon qilamiz
}
void loop() {
digitalWrite(11, HIGH); // svetodiodni yoqamiz
delay(2000); // 2 sekund kutamiz
digitalWrite(11, LOW); // svetodiodni o‘chiramiz
delay(2000); // 2 sekund kutamiz
}
Agar siz payqagan bo‘lsangiz, bu darsdan olingan eskiz - Arduinodagi LEDni yoqish. Mikroprotsessor nuqtai nazaridan, Pin13 bilan nima bog‘liqligi muhim emas - LED, tranzistor yoki Arduinodagi Lightsaber uchun LED drayveri. E'tibor bering, R1 rezistori tranzistorning poydevorini erga tortadi va R2 qarshiligi mikrokontroller portini ortiqcha yuklanishdan himoya qiladi.
Kod. Sensorli motorni boshqarish
Arduino DC motorini boshqarish kodini boshqacha yozish mumkin. Keling, kontaktlarning zanglashiga fotorezistorni qo‘shamiz va xonadagi yorug‘lik darajasi pasayganda motorni avtomatik ravishda yoqamiz. Suyuqlik darajasi sensori yoki boshqa sensorlardan ham foydalanishingiz mumkin. Eskizda biz DC motorini boshqarish (yoqish / o‘chirish) uchun if va else iboralaridan foydalanamiz.
Arduino UNOda shahar motorini boshqarish
// A0 analog kirish uchun nom bering
#define sensor A0
// A0 analog kirish qiymatlari uchun nom bering
// unsigned int faqat musbat sonlarni qabul qiladi
unsigned int value = 0;
void setup() {
// 11 pin tranzistorli chiqish bo‘ladi (англ. «output»)
pinMode(11, OUTPUT);
}
void loop() {
// A0 analog kirishda fotorezistordan qiymatni o‘qing
value = analogRead(sensor);
// Agar qiymat 500 dan past bo‘lsa, tranzistorni yoqing
if (value<500) digitalWrite(9,HIGH);
// Aks holda (agar qiymati> 500 bo‘lsa), tranzistorni o‘chiring
if (value>500) digitalWrite(9, LOW);
}
Do'stlaringiz bilan baham: |