Merhaba arkadaşlar, bu yazımızda Arduino ile DC Motorun Devir Yönü Kontrolünü gerçekleştireceğiz. 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.

L298

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

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.

q1q4

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.

q2q3

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ı

hbridge 1hbridge 2hbridge 3

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

hbridge 5

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

hbridge 6

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

hbridge 4

Arduino Kodları

#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();   
  } 
}

🚀Öneri: Arduino ile yapabileceğin projeler için Arduino Projeleri kategorimizi ziyaret edebilirsiniz. İyi Çalışmalar. 🙂

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz