Kirish 2 1-bob. Elektr, gidravlik yoki pnevmatik yuritmalar 5


Foydalanilgan adabiyotlar


Download 0.66 Mb.
bet10/11
Sana18.06.2023
Hajmi0.66 Mb.
#1594553
1   2   3   4   5   6   7   8   9   10   11
Bog'liq
71-20 Murtazayev Azizbek kurs ishi

Foydalanilgan adabiyotlar

  1. Karimov X.G‘., Bobojanov M.K. Avtomatik boshqarish va rostlash nazariyasi asoslari. Ma’ruzalar matni/ - Т., 2000.

  2. Аллаев K.P., Мирзабоев А. Малые колебания электрических систем, под редакцией проф.В.К.Соколова. —Т.: Издательство «Fan va technologiya», 2011.

  3. Теория автоматического управления, под редакцией А.В.Нетушила. -М.: «Высшая школа», 1976.

  4. Е.И.Юрьевич. Теория автоматического управления, «Энергия», -Л., 1975 г.

  5. Бабаков Н.А., Воронов А.А. Теория автоматического управления. —М.: «Высшая школа», 1986.

  6. Шаталов А.С. Теория автоматического управления. -М .: «Высшая школа», 1977. 7. Куропаткин Н.В. «Теория автоматического управления». -М .: «Высшая школа», 1973.

  7. “Axborot tizimlari va texnologiyalari”: Oliy o‘quv yurtlari talabalari uchun darslik//Mualliflar jamoasi: C.S.Gʻulomov, R.X.Alimov, X.S.Lutfullayev va boshk./; S.S.Gʻulomovning umumiy taxriri ostida.-T.: «Sharq», 2000.- 592 b.

  1. Aripov M.M, Muxammadiyev J.U. “Informatika va informasion texnologiyalar”. O‘quv qullanma. Toshkent shaxri, 2005 yil.

  2. Закиров Ф.И др. “Информатикаcu информационные c технологии”, Ташкент 2007 г.

  3. https://en.wikipedia.org/wiki/Arduino

  4. “Axborot tizimlari va texnologiyalari”: Oliy o‘quv yurtlari talabalari uchun darslik//Mualliflar jamoasi: C.S.Gʻulomov, R.X.Alimov, X.S.Lutfullayev va boshk./; S.S.Gʻulomovning umumiy taxriri ostida.-T.: «Sharq», 2000.- 592 b.

  5. https://www.electronicsforu.com/electronics-projects/joystick-controlled-industrial-automation-system



Ilova
// Biz IR va servolar bilan ishlash uchun kutubxonalardan foydalanamiz
#include
#include
// Ishlatilgan pinlar sonini aniqlang#define RECV_PIN 2
#define SERV_PIN 3
#define BUZZER_PIN 4
// "Harakat" turini aniqlangenum Command
{
CMD_NONE = 0,
CMD_OPEN = 1,
CMD_CLOSE = 2
};
// IR kutubxonasidan foydalanish uchun ob'ekt yaratingIRrecv irrecv(RECV_PIN);
decode_results results;
// Masofadan boshqarish pulti tugma kodlarini saqlaydigan o'zgaruvchilar yarating
unsigned long codeOpen = 0;
unsigned long codeClose = 0;
// Qabul qilingan buyruq va uning qabul qilingan vaqtini saqlash uchun o'zgaruvchilarni aniqlang
unsigned long cmdStartTime;
unsigned char cmd;
// Doimiy aylanish servosini boshqarish uchun ob'ekt yarating
Servo srv;
// Amalga oshirish xususiyatlari tufayli IRremote kutubxonasidan foydalanib bo'lmaydi
// ovozli signal funksiyasi bilan birga (ular bir xil uzilishdan foydalanadi). Kimga
// ushbu muammoni engish uchun biz uzilishlardan foydalanmasdan versiyamizni amalga oshirdik
// funktsiyalari beep.
void beeep(int pin, int freq, unsigned long duration)
{
unsigned long start;
// PIN-kodni chiqishga tarjima qiladi
pinMode(pin, OUTPUT);
// Ijro boshlangan lahzani eslang
start = millis();
// Davomiyligi millisekundlar uchun signal
while (millis() - start < duration) {
// Ovozli signal chastotasi pin holati o'zgarishi orasidagi pauzalar bilan aniqlanadi
digitalWrite(pin, HIGH);
delay(1000/freq/2);
digitalWrite(pin, LOW);
delay(1000/freq/2);
}
// Har ehtimolga qarshi pinni o'qish rejimiga qaytaradi
pinMode(pin, INPUT_PULLUP);
}
// Qurilmani "o'rganish" funktsiyasi (ochish / yopish tugmalarining kodlarini yodlash)
void learn(void)
{
// To'g'ri buyruqni kuting
// (siklni tugatish sharti uning tanasida)
while (true) {
if (irrecv.decode(&results)) {
// Kod bor. Keling, kutubxonaga tadbirni o'tkazganimizni aytaylik.
irrecv.resume();
// 16 bitdan qisqa kodlarni o'tkazib yuborish (bizning masofadan boshqarish pultlarimiz 16 yoki 32 bit kodlarni berdi,
// qolganlari xato deb hisoblanadi)
if (results.bits >= 16) {
// Qabul qilingan kodni ochish uchun kod sifatida saqlang
codeOpen = results.value;
// Tasdiqlash uchun tanlang
beeep(BUZZER_PIN, 500, 100);
break;
}
// Biz bir xil kodlar to'plamini tasodifiy qabul qilishni o'tkazib yuborish uchun 100 ms kutamiz
delay(100);
}
}
// Har holda, biz 200 ms kutamiz (foydalanuvchi tugmachalarda tezroq bo'lmasligi aniq. // bosing)
delay(200);
// Xuddi shu usuldan foydalanib, biz ikkinchi kodni olamiz (yopish uchun)
while (true) {
if (irrecv.decode(&results)) {
irrecv.resume();
if (results.bits >= 16 && results.value != codeOpen) {
codeClose = results.value;
beeep(BUZZER_PIN, 500, 100);
break;
}
delay(100);
}
}
}
// Qurilmani ishga tushirish funksiyasi
void setup(void)
{
// Kutubxonani ishga tushiring IRRemote
irrecv.enableIRIn();
// Buyruqni ishga tushiring (buyruq yo'q edi)
cmd = CMD_NONE;
// Foydalanuvchiga biz uch marta tanlash bilan boshlaganimizni ayting
beeep(BUZZER_PIN, 500, 100); delay(100);
beeep(BUZZER_PIN, 500, 100); delay(100);
beeep(BUZZER_PIN, 500, 100); delay(100);
// "trening" protsedurasini boshlang
learn();
// Biz mashg'ulot jarayonining oxiriga imzo chekish uchun ovqatlanamiz
beeep(BUZZER_PIN, 2000, 1000);
}
// Doimiy aylanish servosini ishga tushiringvoid start(void)
{
srv.attach(SERV_PIN);
srv.write(cmd == CMD_OPEN ? 0 : 120);
}
// motorni to'xtatingvoid
stop(void)
{
// Doimiy aylanadigan servoni to'xtatishning eng oson yo'li - ajratish
// от неё
srv.detach();
}
// Dasturning ish aylanishi 
void loop(void)
{
unsigned long codeValue;
int codeLen;
// Buyruqni IR orqali skanerlashni boshlang
if (irrecv.decode(&results)) {
// Biz kutubxonaga uning ma'lumotlarini olganligimiz haqida xabar beramiz irrecv.resume();
// Kod va kod uzunligini oling
codeValue = results.value;
codeLen = results.bits;
// Yomon kodlarni olib tashlang
if (codeLen >= 16) {
// Agar ochish uchun kod kelgan bo'lsa va haydovchi aylanmayapti
// qarama-qarshi tomon, ochishni yoqish.
if (codeValue == codeOpen && cmd != CMD_CLOSE) {
cmd = CMD_OPEN;
cmdStartTime = millis();
start();
} else if (codeValue == codeClose && cmd != CMD_OPEN) {
// Agar yopish kodi kelgan bo'lsa va hozirda haydovchi aylanmayapti
// qarama-qarshi tomon, ochishni yoqish. cmd = CMD_CLOSE;
cmdStartTime = millis();
start();
}
// Agar aylanish yo'nalishini keskin o'zgartirish uchun buyruq kelsa, biz saqlaymiz
// bunday yomon buyruqni e'tiborsiz qoldirib, o'limdan xizmat qiling. } else if (codeLen == 0 && (cmd == CMD_OPEN || cmd == CMD_CLOSE)) {
// Ba'zi masofadan boshqarish pultlari tugma bosilganda kod yuboradi
// nol uzunlik. Biz buni buyruqning takrorlanishi deb hisoblaymiz.
cmdStartTime = millis();
}
delay(100);
}
// Bu erda biz oxirgi buyruq olinganidan keyin 500ms drayverni o'chirib qo'yamiz if (cmd == CMD_OPEN || cmd == CMD_CLOSE) {
if (millis() - cmdStartTime > 500) {
cmd = CMD_NONE;
stop();
// Drayv to'liq to'xtaguncha kuting
delay(1000);
}
}
}



Download 0.66 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   10   11




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling