Önceki L298, L9110 ve DRV8833 12 Pin yazılarımızda DC motorların özelliklerinden ve onları çalıştırabilmek için neden bir motor sürücü modülü kullanmamız gerektiğinden uzun uzun bahsetmiştik.
Bu yazıda en verimli ve uygun fiyatlı motor sürücü modüllerinden biri olan DRV8833‘ün 16 pinli modelinin kullanımını açıklayacağız. Modülün 12 pinli versiyonunu açıkladığımız yazıya gitmek için buraya tıklayın.
Genel Bilgi
DRV8833 en başından motor sürücü olmak için geliştirilmiş güçlü bir entegre devredir. Yaygın kullanılan model olan L298 kadar güçlü değildir, motor başına 1,5 Amper güç sağlayabilen minik bir çiptir. Ancak bu değerler çoğu basit uygulama için yeterli.
DRV8833 çipi oldukça verimli bir tasarıma sahiptir, 3 ile 10 volt arasında çalışabilir. Bu sayede güç kaynağından gelen gerilimin çok daha büyük bölümü motorlara aktarılabilir. Özellikle düşük gerilimlerle çalışacak ve düşük akım ihtiyacı olan bir proje için DRV8833 çok daha iyi bir seçenektir.
DRV8833 çipini kullanan farklı modüller ile karşılaşmamız mümkün. Adafruit’in mavi renkteki modülünün yanında 12 pin yapıya sahip siyah renkte ve 16 pin yapıdaki kırmızı renkte klon modülleri edinebiliyoruz.
Bu yazıda kırmızı renkteki 16 pinli modülün kullanımını anlatacağız. Bu modüller pinleri lehimlenmemiş şekilde geldikleri için önce bir miktar lehim işi yapmamız gerekecek.
Ne yazık ki pin bağlantı yazıları modülün alt kısmında yazılı ve modülü breadboard’a bağladıktan sonra hangi pinin ne olduğunu anlamak imkansız. Bu yazıdaki kurulum resminde pin isimleri modülün üzerine yazıldı.
Giriş Bağlantıları
Arduino’ya bağlayacağımız pinleri inceleyelim. Modül 4 giriş ve 4 çıkıştan oluşuyor. Aslında tek yöne dönen 4 motoru birden kontrol edebiliriz, ancak motorları iki yöne de döndürmemiz gerekiyorsa motor başına iki çıkış kullanmalıyız. Bu da modül başına 2 motorun kontrol edilebileceği anlamına geliyor.
AIN1: 1. motorun 1. bağlantısı
AIN2: 1. motorun 2. bağlantısı
BIN1: 2. motorun 1. bağlantısı
BIN2: 2. motorun 2. bağlantısı
Bu girişlerin Arduino üzerinde PWM (~) destekli bir pine bağlanması gerekiyor. Böylece analogWrite() komutu ile motor yönü ve hızını kontrol edebiliyoruz.
Güç Bağlantıları
DC motorların çok fazla akıma ihtiyaç duyduklarını biliyoruz. Bu akımı USB kablosu ile elde edemeyiz, harici bir güç kaynağı ile sağlamamız gerekiyor. Bu güç kaynağı seri bağlı 4 veya 6 adet kalem pil, 9 Volt pil, Li-Po pil veya bir kuru akü olabilir. 12 Volt’a kadar gerilim ve 3-4 Amper’e kadar verebilen bir adaptör de kullanabiliriz.
Modülü harici bir güç kaynağı ile besleyecek ve Arduino için farklı bir güç kaynağı veya USB kullanacaksak modül ile Arduino board’un GND pinleri birbirine bağlanmalıdır.
DRV8833 ile İlk Proje: Tek Motor ile Başlayalım
İhtiyacımız olan her bilgiyi öğrendik. Şimdi DRV8833 ile ilk motorumuzu çalıştıralım. Devre kurulumu aşağıdaki şekilde;
Bu kurulumda tek motor kullanıyoruz. Güç kaynağı olarak 9 Volt pil kullandık. Ancak bu tip pillerin verebilecekleri akım sınırlıdır, o yüzden sadece kısa denemeler için kullanılabilir. 6 adet AA kalem pili birleştiren pil kutularından edinmek ve Alkalin piller kullanmak tavsiye edilir.
Aşağıdaki sketch DRV8833 modülüne bağlı bir motoru önce bir yöne, sonra diğer yöne döndürüyor ve bu dönmelerin hızlarını ayarlıyor. Bu sketch’e L9110 modülü örneğinden aşinayız.
STBY pinini VM pinine bağlamayı unutmayalım.
Sketch’in temel çalışma mantığı bağlı motoru kontrol eden AIN1 ve AIN2 pinlerinin birine 0, diğerine istenen hız değeri kadar (0-255 arasında) PWM değeri göndermek. Hangi pine PWM değeri gönderdiğimiz de motorun dönüş yönünü belirliyor.
Arduino’da iyi olmak için öncelikle elektronikte iyi olmak gerekir. Türkiye’nin en iyi temel elektronik eğitim seti ARDUINO ÖNCESİ TEMEL ELEKTRONİK EĞİTİM VE DENEY SETİ‘ni keşfedin. Gereksiz bilgilerden arındırılmış basit ve eğlenceli anlatımla ELEKTRONİK öğrenin ve Arduino’ya METE HOCA farkıyla güçlü başlayın!
Sketch kodunu kopyalamak için pencerenin sağ üst köşesindeki butona tıklayabilir veya buraya tıklayarak ZIP dosyası olarak indirebilirsiniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
/* DRV8833 (16 Pin) Motor Sürücü Kartı Arduino ile Nasıl Kullanılır? (1 Motor) DRV8833 (16 Pin) çift motor sürücü modülünün detaylı açıklaması ve örnek projelerini web sitemizde bulabilirsiniz. Mete Hoca https://www.metehoca.com/ */ int AIN1 = 6; // Sürücü kartın AIN1 bağlantısı int AIN2 = 5; // Sürücü kartın AIN2 bağlantısı // AIN1 ve AIN2 pinleri AO1 ve AO2'ye bağlı motoru kontrol eder // Bu pinleri PWM (~) destekli bir pin header'a bağlamalıyız // Bir pine PWM ile hız değeri göndermeli, // diğer pini ise 0 PWM olarak ayarlamalıyız. void setup() { analogWrite(AIN1, 0); // Motoru başlangıçta analogWrite(AIN2, 0); // durduruyoruz } void loop() { analogWrite(AIN1, 75); // Hız ve yön ayarı yapılıyor (0-255 arası yazılabilir) analogWrite(AIN2, 0); // Bir pine analog değer verdiysek diğer pini 0 yapmalıyız delay(4000); // Motorun dönüş süresini ayarlıyoruz analogWrite(AIN1, 0); // İki pin birden 0 yapıldığında analogWrite(AIN2, 0); // motor durur delay(1000); // Motorun durduğu süre. Hızlı dönüşlerden sonra // yön değişimi yapacaksak bir süre beklemek // sürücü kart ve motoru zorlamamak için faydalıdır analogWrite(AIN1, 0); // Bu kez motoru diğer tarafa döndüreceğiz analogWrite(AIN2, 150); // Yeni hız ve yön ayarı yapılıyor. Biraz hızlı dönsün. delay(2000); // Motorun dönüş süresi analogWrite(AIN1, 0); // Motoru tekrar durduruyor analogWrite(AIN2, 0); // ve delay(1000); // yine biraz bekliyoruz... } |
Çift Motor Kullanalım
Sıra geldi DRV8833 modülü ile çift DC motor kullanmaya. Şimdiye kadar öğrendiğimiz bilgiler ile çift motorun nasıl kullanılacağını aşağı yukarı tahmin edebiliyoruz.
Devre kurulumu ile başlayalım. Kafa karıştırmayacak hoş bir görüntü için pin bağlantı sıralarını biraz değiştirdik. Aslında tek yaptığımız solda kalan ikinci motor bağlantılarını doldurmak.
Tabi ki STBY pinini VM pinine bağlamayı yine unutmayalım.
Sketch kodu ile de bitirelim. Aşağıdaki sketch DRV8833 modülüne bağlı iki motoru sırayla önce bir yöne, sonra diğer yöne döndürüyor. Bu sketch’e de L9110 modülü örneğinden aşinayız!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
/* DRV8833 (16 Pin) Motor Sürücü Kartı Arduino ile Nasıl Kullanılır? (2 Motor) DRV8833 (16 Pin) çift motor sürücü modülünün detaylı açıklaması ve örnek projelerini web sitemizde bulabilirsiniz. Mete Hoca https://www.metehoca.com/ */ int AIN1 = 6; // Sürücü kartın AIN1 bağlantısı int AIN2 = 5; // Sürücü kartın AIN2 bağlantısı int BIN1 = 10; // Sürücü kartın BIN1 bağlantısı int BIN2 = 9; // Sürücü kartın BIN2 bağlantısı // AIN1 ve AIN2 pinleri AO1 ve AO2'ye bağlı motoru kontrol eder // BIN1 ve BIN2 pinleri BO1 ve BO2'ye bağlı motoru kontrol eder // Bu pinleri PWM (~) destekli bir pin header'a bağlamalıyız // Bir pine PWM ile hız değeri göndermeli, // diğer pini ise 0 PWM olarak ayarlamalıyız. void setup() { analogWrite(AIN1, 0); // 1. motoru başlangıçta analogWrite(AIN2, 0); // durduruyoruz analogWrite(BIN1, 0); // 2. motoru başlangıçta analogWrite(BIN2, 0); // durduruyoruz } void loop() { analogWrite(AIN1, 100); // 1. motor için hız ve yön ayarı yapılıyor analogWrite(AIN2, 0); delay(1000); analogWrite(AIN1, 0); analogWrite(AIN2, 0); analogWrite(BIN1, 100); // 2. motor için hız ve yön ayarı yapılıyor analogWrite(BIN2, 0); delay(1000); analogWrite(BIN1, 0); analogWrite(BIN2, 0); analogWrite(AIN1, 0); // 1. motor bu kez diğer yöne döndürülüyor analogWrite(AIN2, 100); delay(1000); analogWrite(AIN1, 0); analogWrite(AIN2, 0); analogWrite(BIN1, 0); // 2. motor bu kez diğer yöne döndürülüyor analogWrite(BIN2, 100); delay(1000); analogWrite(BIN1, 0); analogWrite(BIN2, 0); } |