• Kirishlar Chiqish Y A EN
  • Arduino taraqqiyoti ma’ruza #5 Mavzu: Arduino yordamida motorlarni boshqarish texnologiyalari




    Download 0,51 Mb.
    Pdf ko'rish
    bet7/7
    Sana28.12.2023
    Hajmi0,51 Mb.
    #128747
    1   2   3   4   5   6   7
    Bog'liq
    Lecture-5

    H-ko'prikli sxemaning ishlashi
     
    Keyinchalik, siz potentsiometr va H-ko'prigi yordamida dvigatelning yo'nalishini va tezligini 
    boshqaradigan dastur yozasiz. Potansiyometrni o'rta diapazonda o'rnatish dvigatelni to'xtatadi, 
    potentsiometrni o'rtasidan yuqori diapazonga qo'yish oldinga tezlikni oshiradi va potentsiometrni 
    o'rtasidan pastroqqa qo'yish tezlikni orqaga oshiradi. Bu Arduino dasturida funktsiyalarni ishlatish 
    Kirishlar 
    Chiqish 

    A EN 
    H H 

    L H 

    X L 



    uchun yana bir ajoyib imkoniyat . Siz dvigatelni to'xtatish funktsiyasini yozishingiz mumkin , 
    bunda u belgilangan tezlikda oldinga siljiydi, ikkinchisi esa belgilangan tezlikda orqaga 
    aylanadi . Dvigatel rejimini o'zgartirishdan oldin, funktsiya boshida H-ko'prigini to'g'ri o'chirib 
    qo'yganingizga ishonch hosil qiling ; bu sizning xato qilish ehtimolini kamaytiradi va tasodifan H-
    ko'prigini qisqartiradi.
    Yuqoridagi rasmdagi mantiqiy diagrammadan so'ng, kerakli natijalarga erishish uchun pinlarni 
    qanday boshqarish kerakligini tezda aniqlashingiz mumkin :
    ■■ Qurilma orqali oqim oqimini to'xtatish uchun yoqish pinini past qilib qo'ying.
    ■■ Kalitlarni bir tomonga burilishga o'rnatish uchun birini baland, ikkinchisini past qilib qo'ying.
    ■■ Kalitlarni teskari yo'nalishda aylantirish uchun, baland va pastni almashtiring .
    ■■ Dvigatel zudlik bilan to'xtab qolishi uchun ikkala kalitni ham pastga qo'ying.
    ESLATMA. Kalitlarning holatini o'zgartirmasdan oldin, oqim oqimini har doim o'chirib qo'ying, 
    shunda kalitlar aylanayotganda bir lahzalik qisqa tutashuvni yaratib bo'lmaydi.
    Birinchidan, siz ilgari tasvirlangan harakatlarni xavfsiz bajaradigan funktsiyalarni o'ylab 
    topishingiz kerak. Yangi Arduino eskizini yarating va yangi funktsiyalarni yozishdan boshlang :
    //Motor oldinga harakatlanadi 
    void forward (int rate) 

    digitalWrite(EN, LOW); 
    digitalWrite(MC1, HIGH); 
    digitalWrite(MC2, LOW); 
    analogWrite(EN, rate); 

    //Motor orqaga harakatlanadi 
    void reverse (int rate) 

    digitalWrite(EN, LOW); 
    digitalWrite(MC1, LOW); 
    digitalWrite(MC2, HIGH); 
    analogWrite(EN, rate); 
    //Motor tormoz 
    void brake () 

    digitalWrite(EN, LOW); 
    digitalWrite(MC1, LOW); 
    digitalWrite(MC2, LOW); 
    digitalWrite(EN, HIGH); 

    E'tibor bering, har bir funktsiyaning boshida EN pin har doim past bo'ladi, keyin esa MC1 va MC2 
    pinlari (Dvigatelni boshqarish pini) o'rnatiladi. Bu bajarilganda, oqim oqimi qayta yoqilishi 
    mumkin. Tezlikni o'zgartirish uchun avval qilgan texnikadan foydalaning . PWM dan foydalanib, 


    siz EN pinining almashtiriladigan burchini o'zgartirishingiz va tezlikni boshqarishingiz 
    mumkin. Tezlik 
    o'zgaruvchisi 0 
    dan 
    255 
    gacha bo'lishi 
    kerak . 
    Asosiy 
    tsikl kirish 
    potentsiometrining ma'lumotlaridan to'g'ri tezlikni yaratishga e'tibor beradi .
    Endi, dasturning asosiy tsiklini ko'rib chiqing: 
    void loop() 

    val = analogRead(POT); 
    //go forward 
    if (val > 562) 

    velocity = map(val, 563, 1023, 0, 255); 
    forward(velocity); 

    //go backward 
    else if (val < 462) 

    velocity = map(val, 461, 0, 0, 255); 
    reverse(velocity); 

    //brake 
    else 

    brake(); 


    Asosiy tsiklda potentsiometr qiymati o'qiladi va potentsiometr qiymatiga qarab tegishli funktsiyani 
    chaqirish mumkin. Eslatib o'tamiz, analog kirish 0 dan 1023 gacha raqamli qiymatlarga o'tkaziladi. 
    Potentsiometr o'rta nuqtani o'rab turgan 100 birlik ichida bo'lsa , tormoz funktsiyasi chaqiriladi. 
    Potentsiometr qiymati 562 dan 1023 gacha oshishi bilan oldinga tezlik oshadi. Xuddi shunday, 
    tezlik 462 va 0 potentsiometrlari orasidagi teskari yo'nalishda ortadi. Xarita funktsiyasi sizga 
    oldingi bobdan tanish bo'lishi kerak . Bu erda, teskari tezlikni aniqlayotganda, o'zgaruvchilar 
    tartibiga e'tibor bering: 461 - 0 ga, 0 - 255 ga teng; xarita funktsiyasi o'zgaruvchilar kamayish 
    tartibida o'tkazilganda xaritani o'zgartirishi mumkin . Loopni funktsiyalar va sozlamalar bilan 
    birlashtirib, siz Quyidagi kodda ko'rsatilgan dasturga o'xshab tugallangan dasturni olasiz . Sizning 
    dasturingiz bu yerga mos kelishiga ishonch hosil qiling va uni Arduinoga yuklang .
    //Hbridge Motor kontrol 
    const int EN=9; //Half Bridge 1 Enable 
    const int MC1=3; //Motor kontrol 1 
    const int MC2=2; //Motor kontrol 2 
    const int POT=0; //POT Analog Pin 0da 
    int val = 0; // POTdan keluvchi signal qiymatini o’qish uchun 
    int velocity = 0; //Mo’ljallangan tezlikni to’plash uchun ( 0-255) 


    void setup() 

    pinMode(EN, OUTPUT); 
    pinMode(MC1, OUTPUT); 
    pinMode(MC2, OUTPUT); 
    brake(); //Motor tormozlangan holatda boshlash 

    void loop() 

    val = analogRead(POT); 
    //oldinga 
    if (val > 562) 
    {
    velocity = map(val, 563, 1023, 0, 255); 
    forward(velocity); 

    //oldinga 
    else if (val < 462) 

    velocity = map(val, 461, 0, 0, 255); 
    reverse(velocity); 

    //tormoz 
    else 

    brake(); 


    //Motor goes forward at given rate (from 0-255) 
    void forward (int rate) 

    digitalWrite(EN, LOW); 
    digitalWrite(MC1, HIGH); 
    digitalWrite(MC2, LOW); 
    analogWrite(EN, rate); 

    //Motor goes backward at given rate (from 0-255) 
    void reverse (int rate) 

    digitalWrite(EN, LOW); 
    digitalWrite(MC1, LOW); 
    digitalWrite(MC2, HIGH); 
    analogWrite(EN, rate); 

    //Stops motor 
    void brake () 



    digitalWrite(EN, LOW); 
    digitalWrite(MC1, LOW); 
    digitalWrite(MC2, LOW); 
    digitalWrite(EN, HIGH); 
    }
    Hammasi kutilganidek ishlayaptimi? Agar yo'q bo'lsa, kontaktlarning to’g’ri ulanganligiga 
    ishonch hosil qiling. Qo'shimcha qiyinchilik sifatida, ikkinchi o’zgarmas tok motorini oling va uni 
    H-ko'prik chipining boshqa yarmiga ulang. Siz minimal harakat bilan bir vaqtning 
    o'zida ikkita dvigatelni boshqarishingiz mumkin.
    Foydalanilgan Adabiyotlar 
    • Jeremy Blum, “Exploring arduino: Tools and techniques for engineering 
    wizardry”, 2013 
    • Electronics: A Systems Approach (6th edition), Neil Storey,Pearson Education 
    UK, 2017 
    • Arduino.cc veb sayti ma’lumotlari 

    Download 0,51 Mb.
    1   2   3   4   5   6   7




    Download 0,51 Mb.
    Pdf ko'rish

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Arduino taraqqiyoti ma’ruza #5 Mavzu: Arduino yordamida motorlarni boshqarish texnologiyalari

    Download 0,51 Mb.
    Pdf ko'rish