Forumda yapılan arama sonucu, bulunan 1 adet konudan, sayfa olarak 1 ile 1 arasındakiler gösterilmiştir

Konu: Arduino ile DC Motorun Devir Yönü Kontrolü

  1. #1

    Arduino ile DC Motorun Devir Yönü Kontrolü

    DC motorun sabit hızda dönerken yön değiştirmesini H-Bridge mantığı sayesinde sağlayacağız. Bu kontrol devresini L298 mosfet sürücü entegresi sayesinde gerçekleştireceğiz.





    H-Brigde Nedir?

    4 adet anahtarlama elemanı içeren ve ortasında bir yük bulunan H harfine benzeyen devredir, adını bu şekilden almıştır. Devrede kullanılan anahtarlama elemanları BJT ya da MOSFET transistörleri olabilir. Devrede kullanılan diyotlar bobinlerden kaynakla olabilecek zıt emk’yı sönümlemek için ters bağlanır.





    H-Brigde Nasıl Çalışır?

    H-Bridge devresinin motor sürücü olarak kullanımı anahtarlama elemanlarının çeşitli kombinasyonları üzerine motora yön vermektir.

    Doğru Akım Motorlarının yönünü değiştirmek için endüvi akımının yönünü değiştirmemiz yeterli olacaktır.

    Q1 ve Q4 anahtarı off, Q3 ve Q2 anahtarının on olduğu durumda akım güç kaynağı tarafından başlayarak Q1’in üzerinden geçer motorun solundan girip sağ kısmından çıkar buna ileri yönde çalıştırma denir. Ardından Q4 anahtarının üzerinden toprağa doğru ilerler.



    Bu sefer Q2 ve Q3 off, Q1 ve Q4 on modunda çalışırsa, akım Q3 üzerinden motorun sağ kısmından sol tarafına doğru geçer motor geri yönde çalışır ardından Q2 üzerinden akarak toprağa gider.



    L298 Entegresi Nedir?

    L298N motor sürücü entegresi 4V-7V arasında giriş gerilimi, 46V’a kadar çıkış gerilimi sunabilir. 4 adet çıkış portu bulunur. Yani 2 adet DC motor ya da 1 adet Step motor sürebilir. Bu çıkışlardan 2A’lik akım sağlanabilir. İçerisinde bulunan 2 adet H-Bridge yapısı sayesinde motor sürücü devrelerinde sıklıkla kullanılır. Yapısında hazır olarak bulunan 7805 gerilim regülatörü sayesinde , giriş voltajını 5V’a düşürür.

    L298 Entegresi Pinleri

    INPUT 1, 2, 3 ve 4 (5, 7, 10 ve 12. pinler): INPUT pinleri motorların dönme yönünün kontrolü için Arduino’ya bağlanır. INPUT 1 ve 2 pinleri 1. motorun, INPUT 3 ve 4 pinleri ise 2. motorun kontrolünde kullanılır.

    OUTPUT 1, 2, 3 ve 4 (2, 3, 13 ve 14. pinler): Bu pinler motorlara bağlanan pinlerdir. OUTPUT 1 ve 2. pinler 1. Motora, OUTPUT 3 ve 4. pinler ise 2. motora bağlanır.
    ENABLE A ve ENABLE B (6. ve 11. pinler): Bu iki pin motorların dönüş hızını ayarlamak için kullanılır. Bu yüzden bu pinleri Arduino’nun PWM ayaklarına bağlamamız gerekir. PWM sinyalinin duty cycle’ına göre motorun hızı arttırılabilir veya azaltılabilir. ENABLE A pini 1. motorun, ENABLE B pini ise 2. motorun hızını kontrol etmek için kullanılır.

    Devrenin Bağlantı Şeması





    BUTON 1 basılı durumdayken motor sağdan sola doğru dönmektedir.



    BUTON 2 basılı durumdayken motor soldan sağa doğru dönmektedir.



    Başlangıç durumunda ve BUTON 3 basılı durumdayken motor durmaktadır.



    Arduino Kodları

    HTML-Kodu:
    #define BUTON1 22
    #define BUTON2 24 
    #define BUTON3 26
    #define DEBOUNCE 500
    #define yellowLED 28
    #define redLED 30
    #define greenLED 31
    int ENA = 7;
    #define IN1 33
    #define IN2 34
    int PWM_max = 255;
    
    void setup() {  
    pinMode(BUTON1, INPUT);
      pinMode(BUTON2, INPUT); 
     pinMode(BUTON3, INPUT);  
    pinMode(ENA, OUTPUT);  
    pinMode(IN1, OUTPUT);  
    pinMode(IN2, OUTPUT);  
    pinMode(yellowLED, OUTPUT);  
    pinMode(redLED, OUTPUT);  
    pinMode(greenLED, OUTPUT);  
    
      initial();
      }
    
    void loop() {  
    test_right();  
    test_left();  
    test_stop();
    
    }
    void initial()
    {  
    analogWrite(ENA, 0);  
    digitalWrite(IN1, LOW);  
    digitalWrite(IN2, LOW);  
    digitalWrite(redLED, HIGH);  
    digitalWrite(yellowLED, LOW);  
    digitalWrite(greenLED, LOW);
    }
    void test_right()
    {  
    if (digitalRead(BUTON1) == HIGH)  
    {  
      delay (DEBOUNCE);   
     analogWrite(ENA, PWM_max);    
    digitalWrite(IN1, HIGH);    
    digitalWrite(IN2, LOW);    
    digitalWrite(redLED, LOW);    
    digitalWrite(greenLED, HIGH);    
    digitalWrite(yellowLED, LOW);  
         } 
    }
    void test_left()
    {  
    if (digitalRead(BUTON2) == HIGH)  
    {    
    delay (DEBOUNCE);    
    analogWrite(ENA, PWM_max);    
    digitalWrite(IN1, LOW);    
    digitalWrite(IN2, HIGH);    
    digitalWrite(redLED, LOW);   
     digitalWrite(greenLED, LOW);    
    digitalWrite(yellowLED, HIGH);  
        } 
    }
    
    void test_stop()
    { 
     if (digitalRead(BUTON3) == HIGH) 
     {    initial(); 
        } 
    }
    Konu adı: Arduino ile DC Motorun Devir Yönü Kontrolü
    Yazan: zorbey
    Konu zorbey tarafından (25.Mart.2022 Saat 14:03 ) değiştirilmiştir.

Bu Konu için Etiketler

Yetkileriniz

  • Konu Acma Yetkiniz Yok
  • Cevap Yazma Yetkiniz Yok
  • Eklenti Yükleme Yetkiniz Yok
  • Mesajınızı Değiştirme Yetkiniz Yok
  •