Arduino İle BTS7960B Motor Sürücü Kullanımı

Merhaba arkadaşlar! Bu yazımızda BTS7960B motor sürücüsü nedir ve özellikleri nelerdir? Bunu öğreneceğiz. Umarım yararlı bir kaynak olur. 🙂

BTS7960B Motor Sürücü

BTS7960B Sürücü Nedir?

Bu H-Bridge modülü, Çift BTN7960B veya BTS7960B Yarım Köprü Sürücü yongalarına dayanmaktadır. Modül, yüksek güçlü DC Motor ve Solenoid sürücüleri için tasarlanmıştır. Bu yüksek akım sürücüsünü Arduino, PIC ve AVR ile kullanmak son derece kolaydır. Bu sürücü modülü, 43A’e kadar yüksek akıma sahip bir DC motoru kontrol etmenizi sağlar. Maksimum çalışma frekansı 25kHZ’e kadardır.

BTS7960B Sürücü Özellikleri?

  • Çift BTN7960B / BTS7960 çip yapısı (maksimum akım 43A)
  • Daha iyi izolasyon için 74HC244 arabellek sürücüsü.
  • MCU’dan modüle 5 telli bağlantı: GND, 5V, IN1, IN2, EN
  • Çalışma Gerilimi: DC 8~24V
  • Giriş frekansı maksimum 25kHz
  • Boyut: 46 mm (U) x 46 mm (G)
  • Toplam Maksimum Yükseklik : 38 mm (soğutucu, kondansatör ve konektör yükseklikleri dahil)
  • Sürücü: DC motoru sürmek için Yarım köprü oluşturan Dual BTN 7960 / BTS7960. Her çip, tek sürücü IC’li bir P-kanal ve bir N-kanal MOSFET içerir.
  • Akım algılama özelliğine sahip PWM tabanlı kullanım.
  • Düşük voltaj kapatma, Aşırı voltaj kilitleme, Aşırı sıcaklık kapatma ve aşırı akım koruması.
  • 3,3 V ve 5 V sistemlerle doğrudan kullanım sağlanabilir.
  • Mikrodenetleyiciyi ve motor sürücüsünü etkili bir şekilde izole etmek için dahili 74HC244 8bit hat sürücüsü çipi.
  • Dönüş hızı ayarı.
  • Duty cycle 0-100 %
  • Yüksek ve Düşük taraflar için Birleşik Yol Direnci: 16mOhm (Tip) ve 30,3mOhm (150C’de en kötü)
  • Yüksek akıma ulaşmak için jonksiyon sıcaklığı düşük kalmalıdır. BTN7960 modülü, tutarlı bir şekilde 10A ila 43A aralığına ulaşmak için yeterli olmayan küçük bir ısı emiciye(soğutucu blok) sahiptir. Sürekli yüksek akım kapasitesine ihtiyacınız varsa, daha iyi soğutma tekniği (örn. hava akışı, su soğutma, vb.) kullanılmalıdır.

Pin Yapısı

  1. RPWM: Sağ Taraf Yüksek / Düşük taraf Sürücü Etkin (0=düşük taraf açık, yüksek taraf kapalı; 1= yüksek taraf açık, düşük taraf kapalı)
  2. LPWM: Sol Taraf Yüksek / Düşük taraf Sürücü Etkin (0=düşük taraf açık, yüksek taraf kapalı; 1= yüksek taraf açık, düşük taraf kapalı)
  3. R_EN: Sağ Tarafı Etkinleştir
  4. L_EN: Sol Tarafı Etkinleştir
  5. R_IS: Sağ taraf Akım Algı Pini
  6. L_IS: Sol taraf Akım Algı Pini
  7. VCC: Logic VCC 3,0V/3,3V/5,0V Nominal (2,5V ila 5,3V olabilir)
  8. GND: 0V Mantıksal Güç Kaynağı

Güç Giriş Tarafı

  • M-: Motor /Solenoid Negatif Terminal
  • M+ : Motor /Solenoid Pozitif Terminali
  • B+: Akü Pozitif / Yüksek Akım (Nominal: 8V – 18V, Uzatılmış: 5,5V – 28V)
  • B-: Akü Negatif / Yüksek Akım ( 0V)

Kullanım Tablosu

R_EN + L_ENRPWMLPWMMOTOR DURUMU
0XXKAPALI/BEKLEMEDE
100Düşük Taraf Kırma
101Saat Yönü
110Saat Yönünün Tersi
111Yüksek Yan Kırma

Mantıksal Değerlerin Açıklaması

  • 1 = Mantık Yüksek (3v – 5,0V)
  • 0 = Mantık Düşük (0v)
  • x = Herhangi bir değer olabilir

Kullanım Alanları

  • E-bisikletler için motor kontrolü, Segway.
  • Yüksek tork gerektiren 2 tekerlekten çekişli / 4 tekerlekten çekişli robotlar.
  • Yüksek torklu robotik kollar.
  • Yüksek akım selenoidleri.
  • PWM kontrolünün ve akım yönünün tersine çevrilmesinin gerekli olduğu endüktif veya dirençli yükler.

BTS7960B Kullanımı

Örneğimizde potansiyometre ile motorumuzu sağa ve sola döndüreceğiz.

Projemizde kullanılacak elemanlar:

BTS7960B Devre Şeması

BTS7960B Devre Şeması
ModülArduino
BTS7960B R_PWM5
BTS7960B L_PWM6
BTS7960B R_EN8
BTS7960B L_EN9
BTS7960B VCC5V
BTS7960B GNDGND
Motor Pin 1BTS7960B M-
Motor Pin 2BTS7960B M+
9V Batarya –BTS7960B B-
9V Batarya +BTS7960B B+
Potansiyometre 5V5v
Potansiyometre ÇıkışA0
Potansiyometre GNDGND
Pin Bağlantıları

BTS7960B Kullanım Kodu

#define RPWM 5
#define LPWM 6
#define REN 8
#define LEN 9


int pot;
int out1;
int out2;

void setup() {
  Serial.begin(9600);
  pinMode(RPWM,OUTPUT);
  pinMode(LPWM,OUTPUT);
  pinMode(LEN,OUTPUT);
  pinMode(REN,OUTPUT);
  digitalWrite(REN,HIGH);
  digitalWrite(LEN,HIGH);

}
 
 
void loop() {
  
  pot=analogRead(A0);
  
  if(pot>512){
    out1=map(pot,512,1023,0,255);
    analogWrite(RPWM,out1);
    analogWrite(LPWM,0);
    
  }
  
  if(pot<512){
    out2=map(pot,512,0,0,255);
    analogWrite(LPWM,out2);
    analogWrite(RPWM,0);
    
  }
}

Kodumuzu açıklayacak olursak. Eğer potansiyome değeri 512’den büyük ise potansiyometreden alınanan değer 512-1023 arasındadır. Bu değer map fonksiyonu ile 0-255 değer aralığına dönüşüm yaptırılır ve motor sürücüye pwm sinyali olarak verilir. Bu aralıkta motor saat yönünün tersine döner. Eğer 512’den küçük ise potansiyometreden 512-0 değer aralığı 0-255 değer aralığına dönüştürülür ve motor sürücüye verilir. Bu aralıkta ise motor saat yönünde döner. Takıldığınız kısımları yorum olarak sorabilirsiniz 🙂