Tb6612 Motor Sürücü ve Arduino ile DC Motor Kontrolü

tb6612 Motor Sürücü ve Arduino ile DC Motor Kontrolü

Arduino atölyemizde bugün sizlerle tb6612 motor sürücü ve Arduino uno (nano) kartımızla çift DC motor kontrolünü anlatmaya çalışacağız. Özellikle yüksek hızlı çizgi izleyen veya yüksek rpm gerektiren projelerde kullanılan tb6612 günümüzde en çok kullanılan motor sürücülerinden biri olarak göze çarpıyor.

tb6612 Motor Sürücü ile Çift DC Motoru Dizginliyoruz

Öncelikle uygulamamızda kullanacağımız malzemeleri listeyelim.

Öncelikle şunu belirtelim. Bu motor sürücü birçok üretici tarafından üretiliyor. Aslında tb6612 ‘yı bir entegre gibi düşünebilirsiniz. Farklı üreticilerden çıkmış kartlarla karşılaşabilirsiniz. Ancak günümüzde arduino projeleri için satılan bir çok motor sürücünün ya Pololu (yeşil) ya da Sparkfun (kırmızı) tarafından üretildiğini göreceksiniz. Bu nedenle biz de yazımızda iki firma için gerekli olan devre şemasını göstermeye çalışacağız. Bu iki farklı firmanın ürettiği tb6612 motor sürücünün elbetteki bazı bağlantı uçları farklı. Bunlara dikkat ederseniz programda herhangi bir değişiklik yapmanıza gerek kalmadan iki motoru çalıştırabilirsiniz.

tb6612 Motor Sürücü için Devre Şeması

Aşağıdaki resim 1′ de göstermeye çalıştık. Öncelikle kırmızı renk ile gösterilen sparkfun üretimidir. Bağlantıları aşağıda görüldüğü gibidir. Yeşil renkte gösterilen ise Pololu firmasının üretimi olan tb6612 motor sürücü olarak bilinir. TB6612 motor sürücüler 8 + 8 toplamda 16 uca sahiptir. Resme baktığınız zaman sadece Kırmızı renkli olanın bağlantılarını gösterdik. Ancak zaten dikkat ederseniz üst bölüm deki uçların isimleri ve dizilimleri hem yeşilde hem de kırmızı da aynıdır. Farklılık alt 8′ li pin grubundadır. Burada tek fark bu girişlerin dizilimleridir.

tb6612 Motor Sürücüyü Tanıyalım

Öncelikle uçları sizlere tanıtalım. PWMA ve PWMB girişleri sürülecek olan 2 motorun hızını (dönüş hızı) ayarlamak için kullanılan pindir. AIN1 ve AIN2 ile BIN1 ve BIN2 nin görevleri tam olarak şudur. Motorlar ileriye mi geriye mi hareket edecek? Bunu ayarlayabileceğiniz digital bilgi bu pinler aracılığı ile gönderilir. STBY motor sürücünün aslında çalışması için gerekli olan tetikleme işleminin gerçekleştirildiği pindir. Arabayı kullanmadan önce ne yaparız? Elbette ki anahtarla çalıştırırız. STBY ucundan digital 1 bilgisi ile motorlara güç vermeye hazırsınız.

Alt bölüme baktığımızda sparkfun ile pololu’ da bir farklılık görünüyor. Öncelikle sparkfun’ da bakacak olursak. VMOT ucu görünüyor. Pololu’ da VMOT ucunun sondaki GND’ nin hemen yanında olduğunu farkedersiniz. Peki nedir VMOT? VMOT motorların gücünün sağlandığı lipo ya da 9v’ lık pin bağlanacağı artı ucu ifade eder. Yani pilin artı ucunu doğrudan buraya bağlıyorsunuz. VCC ise her iki kart için aynı yerde olup, arduino uno ya da nano karttan 5v ile beslenen ucun takıldığı yerdir. Sparkfun’ da 3.sırada bir GND bulunuyor. Sonrasında A01 ve A02 ile B02 ve B01 uçlarını yan yana göreceksiniz. Bu uçlar ise doğrudan Motor 1 ve Motor 2 ‘nin uçlarına takılacak olan dört giriştir. (Motorları ters bağlarsanız ters yöne dönecektir.) Tüm bunlar haricinde bir de GND bağlantısı bulunuyor. Burada dikkat ederseniz bir kablo hem arduino’ ya bağlı hem pile hem de tb6612′ nin GND ucuna. Bu bağlantıları yapmışsanız artık kodlamaya geçebiliriz.

Tb6612 Motor Sürücü Devre Şeması
Resim 1 – Tb6612 Motor Sürücü Devre Şeması

Aşağıdaki resim 2′ de sizlere sparkfun ile pololu tb6612′ yi karşılaştırmayı daha somut bir şekilde yapmaya çalıştık. Buradan da inceleyebilir ve devrenizi bu bilgileri referans alarak kurabilirsiniz.

Sparkfun ve Pololu Karşılaştırması
Resim 2 – Sparkfun ve Pololu Karşılaştırması

DC Motorlarımızı Kontrol Etme Zamanı Geldi

Kodla ile aslında biz öncelikle sadece 2 motorumuzun yönünü ayarlayıp, sonrasında onu hareket ettirmeyi deneyeceğiz. Aşağıdaki kodları arduino uno ya da nano’ muza yükleyelim. Koddaki açıklama bloklarında aslında yeterince açıklama ekledim. Ancak yine de birkaç konudan bahsedelim. Öncelikle değişkenlerle tb6612′ deki pin bağlantılarını arduino’ ya tanımlıyoruz. Sonrasında setup metodunun içinde tüm bu uçları OUTPUT yani çıkış olarak tanımlıyoruz. Sonrasında aslında bir arabayı hareket ettirir gibi işlemleri ardı ardına gerçekleştiriyoruz.

Önce digitalWrite(STBY, HIGH); komutu ile arabayı çalıştırıyoruz. Sonrasında digitalWrite(AIN1, HIGH); komutu ile arabanın yönünü belirliyoruz. (Vites atmış gibi düşünün.) Son olarak da analogWrite(PWMA, 255); komutu ile motoru maksimum hızda sürüyoruz. Bu işlemleri ikinci motorumuz için de yapıyoruz. Yani aynı anda 2 motor’ da hareket ediyor. Sonrasında 2 saniye duruyor ve asıl döngü tekrar döndüğü için bu işlem hep tekrarlanıyor.

//motor 1 A01 ve A02 ye bağlanacaktır.
//motor 2 B01 ve B02 ye bağlanacaktır.

int STBY = 10; //standby (bekleme modu)

//Motor 1
int PWMA = 3; // Hız kontrolü için PWMA değişkeni
int AIN1 = 9; // Motor 1 Yön
int AIN2 = 8; // Motor 1 Yön (Ters)

//Motor 2
int PWMB = 5; // Hız kontrolü için PWMB değişkeni
int BIN1 = 11; // Motor 2 Yön
int BIN2 = 12; // Motor 2 Yön (Ters)

void setup(){
pinMode(STBY, OUTPUT); // standby pini çıkış modunda tanımladık.

pinMode(PWMA, OUTPUT); // pwma pinini hız kontrolü için ayarladık
pinMode(AIN1, OUTPUT); // motor yönünü belirlemek için ain1 pini çıkış olarak ayarladık.
pinMode(AIN2, OUTPUT); // motor yönünü (ters) belirlemek için ain2 pini çıkış olarak ayarladık.

pinMode(PWMB, OUTPUT); // pwma pinini hız kontrolü için ayarladık
pinMode(BIN1, OUTPUT); // motor yönünü belirlemek için bin1 pini çıkış olarak ayarladık.
pinMode(BIN2, OUTPUT); // motor yönünü (ters) belirlemek için bin2 pini çıkış olarak ayarladık.
}

void loop(){
digitalWrite(STBY, HIGH); // Motora güç veriyoruz...Yani standby'dan çıkartıyoruz.
digitalWrite(AIN1, HIGH); // Motor 1' in yönünü ileri olarak aktifleştir
digitalWrite(AIN2, LOW); // Motor 1' in ters hareketini pasifleştir.
analogWrite(PWMA, 255); // Motoru XXX(0-255 arasında) değeri ile döndür...
digitalWrite(BIN1, HIGH); // Motor 1' in yönünü ileri olarak aktifleştir
digitalWrite(BIN2, LOW); // Motor 1' in ters hareketini pasifleştir.
analogWrite(PWMB, 255); // Motoru XXX(0-255 arasında) değeri ile döndür...
delay(5000); // 5 sn motor dönecek.
digitalWrite(STBY, LOW); // Motoru durduyoruz.
delay(2000); // 2 sn motor duracak.
}

Burada PWMA ve PWMB çıkışları için 255 değeri aslında motorunuz gerekli gücün sağlanması durumunda maksimum rpm değerinin verildiği yer. Yani bu değer 255 ise ve kullandığınız motor 1500 rpm ise dakikada bu motorun 1500 kez dönebileceği ifade edilmiştir.

Arduino Tb6612
Resim 3 – Tb6612 ile Çift DC Motor Sürme

Yukarıda breadboard üzerinde oluşturduğum devre görüntüsünü verdim. tb6612 motor sürücü ve arduino ile dc motorları kontrol etmeyi bu yazımızda inceledik. Sonraki arduino yazılarımızda tekrar görüşmek dileğiyle.

Not: tb6612 Motor Sürücü ve Arduino ile DC Motor Kontrolü isimli makale içerisindeki anlatımlar özgün içeriktir. Alıntı yapmadan kullanı[email protected]

No comments yet! You be the first to comment.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Yazılarımızı Takip Etmek için
Facebook Sayfamızı Beğenin
Bizlere destek olun