L298 yazısında 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 L9110‘in kullanımını açıklayacağız.
Genel Bilgi
L9110 en başından motor sürücü olmak için geliştirilmiş ve bunun için gerekli tüm bileşenlerini içinde barındıran entegre devredir. Yaygın kullanılan model olan L298 kadar güçlü değildir, sürekli olarak 0.8 Amper, anlık da 1,5-2 Amper güç sağlayabilen minik bir çiptir. Ancak bu değerler çoğu basit uygulama için yeterli.
L9110 çipinin L298’den çok daha verimli çalıştığını da eklemek gerekir. 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 L9110 çok daha iyi bir seçenektir.
L9110 modülü 2 adet entegre devre barındırır ve böylece iki motoru birden kontrol edebilir. Modülün arka tarafında genelde yeşil renkte olan dörtlü bağlantı MOTOR A ve MOTOR B’nin bağlantılarıdır.
Modülün ön yüzündeki altılı pin ise güç ve giriş bağlantılarıdır.
Giriş Bağlantıları
Arduino’ya bağlayacağımız pinleri inceleyelim. Bu modül üzerindeki pin isimlendirmeleri biraz kafa karıştırıcı şekilde belirlenmiş.
A-IA: MOTOR A’nın A girişi
A-IB: MOTOR A’nın B girişi
B-IA: MOTOR B’nin A girişi
B-IB: MOTOR B’nin B girişi
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.
L9110 modülü üzerinde L298’deki gibi Arduino’yu beslemek için bir gerilim regülatörü bulunmuyor. Bu yüzden daha farklı yöntemlere başvurmalıyız. Örneğin Arduino’yu jack girişi üzerinden güçlü bir adaptör veya pil ile besleyebilir, VIN çıkışı üzerinden de motor sürücü modülünü besleyebiliriz. Bu durumda VCC pinini Arduino’nun VIN pinine, GND pinini de Arduino üzerinde GND pinine bağlamalıyız.
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.
L9110 ile İlk Proje: Tek Motor ile Başlayalım
İhtiyacımız olan her bilgiyi öğrendik. Şimdi L9110 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 L9110 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.
Sketch’in temel çalışma mantığı MOTOR A’yı kontrol eden A-IA ve A-IB 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 |
/* L9110 Motor Sürücü Kartı Arduino ile Nasıl Kullanılır? (1 Motor) L9110 ç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 A_IA = 6; // Sürücü kartın A_IA bağlantısı int A_IB = 5; // Sürücü kartın A_IB bağlantısı // A_IA ve A_IB pinleri MOTOR A'yı 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(A_IA, 0); // Motoru başlangıçta analogWrite(A_IB, 0); // durduruyoruz } void loop() { analogWrite(A_IA, 75); // Hız ve yön ayarı yapılıyor (0-255 arası yazılabilir) analogWrite(A_IB, 0); // Bir pine analog değer verdiysek diğer pini 0 yapmalıyız delay(4000); // Motorun dönüş süresini ayarlıyoruz analogWrite(A_IA, 0); // İki pin birden 0 yapıldığında analogWrite(A_IB, 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(A_IA, 0); // Bu kez motoru diğer tarafa döndüreceğiz analogWrite(A_IB, 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(A_IA, 0); // Motoru tekrar durduruyor analogWrite(A_IB, 0); // ve delay(1000); // yine biraz bekliyoruz... } |
Çift Motor Kullanalım
Sıra geldi L9110 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.
Sketch kodu ile de bitirelim. Aşağıdaki sketch L9110 modülüne bağlı iki motoru sırayla önce bir yöne, sonra diğer yöne döndürüyor.
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 |
/* L9110 Motor Sürücü Kartı Arduino ile Nasıl Kullanılır? (2 Motor) L9110 ç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 A_IA = 6; // Sürücü kartın A_IA bağlantısı int A_IB = 5; // Sürücü kartın A_IB bağlantısı int B_IA = 10; // Sürücü kartın B_IA bağlantısı int B_IB = 9; // Sürücü kartın B_IB bağlantısı // A_IA ve A_IB pinleri MOTOR A'yı kontrol eder // B_IA ve B_IB pinleri MOTOR B'yi 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(A_IA, 0); // MOTOR A'yı başlangıçta analogWrite(A_IB, 0); // durduruyoruz analogWrite(B_IA, 0); // MOTOR B'yi başlangıçta analogWrite(B_IB, 0); // durduruyoruz } void loop() { analogWrite(A_IA, 100); // MOTOR A için hız ve yön ayarı yapılıyor analogWrite(A_IB, 0); delay(1000); analogWrite(A_IA, 0); analogWrite(A_IB, 0); analogWrite(B_IA, 100); // MOTOR B için hız ve yön ayarı yapılıyor analogWrite(B_IB, 0); delay(1000); analogWrite(B_IA, 0); analogWrite(B_IB, 0); analogWrite(A_IA, 0); // MOTOR A bu kez diğer yöne döndürülüyor analogWrite(A_IB, 100); delay(1000); analogWrite(A_IA, 0); analogWrite(A_IB, 0); analogWrite(B_IA, 0); // MOTOR B bu kez diğer yöne döndürülüyor analogWrite(B_IB, 100); delay(1000); analogWrite(B_IA, 0); analogWrite(B_IB, 0); } |