Merhaba, bugün Arduino ile DC motorun nasıl sürüleceğini öğreneceğiz. Projemize geçmeden önce DC Motor nedir, ne işe yarar, nasıl çalışır ve çeşitleri nelerdir bahsetmek istiyorum.
DC Motor Nedir? Nasıl Çalışır?
DC motorlar doğru akım enerjisini mekanik enerjiye çeviren makinelerdir. Motorun içinde yer alan sargılara elektrik akımı uygulandığında, yine motorun içerisinde bulunan sabit mıknatıslara zıt yönde oluşan manyetik kuvvetin etkisi ile hareket etmesi prensibine dayanmaktadır.
DC Motor Çeşitleri Nelerdir?
DC motorları temel olarak
olarak 4 başlık altında inceleyebiliriz.
Fırçalı DC Motorlar
Bu motorlar içlerinde bulunan bobinin sarmallarına fırça yardımıyla temas ederek elektrik akımını iletir ve akım bobinden geçerek mıknatıslar arasında elektromanyetik alan oluşturur, motorun hareket etmesini sağlar. En temel ve basit motor çeşidi olmakla beraber verimlilikleri de düşüktür.
Herhangi bir DC motor sürücü ile kullanılabilirler. (L298N, L293B, L293D gibi..)
Fırçasız DC Motorlar
Fırçalı DC motorların aksine isminden de anlaşılacağı üzere içlerinde fırça bulundurmazlar. Fırça olmadığı için sürtünme azaldığından verimlilikleri yüksektir. Performans gerektiren projelerde, drone ve RC araba gibi alanlarda sıklıkla tercih edilirler.
İçlerinde fırça bulunmadığı için ESC (Elektronic Speed Controller) adı verilen özel sürücülere ihtiyaç duyarlar. Örneğin fırçasız motorlardan yapılmış bir drone’da her motor için 30-40 Amperlik bir ESC bulunur.
Step Motorlar
Konumlandırma hassasiyeti yüksek step motorlardır. 3D yazıcı, CNC gibi hassasiyet gerektiren projelerde kullanılırlar. Bipolar ve unipolar olmak üzere iki çeşit step motor vardır.
En çok tercih edilen modeli bipolar bir step motor olan Nema17′ dir. Nema 17 bir turu 200 adımda dönmektedir. Yani bu 360/200= 1.8 derecelik bir hassasiyetle kontrol edebileceğiniz anlamına geliyor.
Fırçalı ve fırçasız motorlara göre yavaş çalışırlar yüksek akım çekerler. Çalışmak için özel sürücülere ihtiyaç duyarlar. (A4988, DRV8825, TMC2130 gibi..) Bu sürücüler sayesinde step motor hassasiyeti 8x, 16x ,32, 64x, 128x şeklinde artırabilirsiniz.
Servo Motorlar
Step motorlar kadar hassas olmayan fakat fırçasız motorlar kadar da serbest olmayan DC motorlardır. Arduino gibi mikrodenetleyici kartlarla direkt sürülmesi oldukça kolaydır. 0-180 derece arası dönen versiyonları piyasada bolca bulunsa da sonsuz turlu servo motorlar da vardır.
RC arabaların direksiyon kısmı ya da RC uçakların ‘flap’ ları gibi açı kontrolü gerektiren yerlerde kullanılmak için üretilmişlerdir. En büyük avantajları çok hafif olmalarıdır.
Arduino ile DC Motorlar Nasıl Kontrol Edilir?
Yukarıda belirttiğim gibi bazı DC motor çeşitleri özel sürücülere ihtiyaç duymaktadır. Step motor, fırçalı ve fırçasız DC motorları direkt olarak Arduino’ya bağlayamamamızın en büyük sebebi Arduino’nun çıkış pinleri en fazla 16mA akım verebilirken bu DC motorların yeri geliyor 5 amperden bile fazla akım çekmesi gerekiyor. Yani Arduino’nun sınırından yüzlerce kat fazla bir akım çekiyor diyebiliriz. Eğer bu DC motorları direkt Arduino’ya bağlarsak motorun bağlı olduğu pini yakma ihtimaliniz çok yüksek. Hem bu durumdan kaçınmak hem de motoru daha kolay kontrol edebilmek için motor sürücülerine ihtiyacımız var.
Örneğin, fırçalı bir DC motoru sürmek için transistör ya da H-köprüsüne sahip bir sürücü kullanmamız gerekirken, fırçasız motorlar için ESC, step motorlar içinse A4988 gibi sürücüler kullanmak zorundayız.
Biz bugün yazımıza örnek olması için L298N ve Arduino Uno kullanarak bir fırçalı DC motoru çift yönlü olarak kontrol edeceğimiz bir proje gerçekleştireceğiz.
Arduino ile Fırçalı DC Motor Kontrolü Devresi
(NOT= L298N üzerindeki EN pinlerinin jumper ile kısa devre edildiğine dikkat edelim.)
Arduino ile Fırçalı DC Motor Kontrolü Kodları
const int in1 = 6; // + yönü
const int in2 = 7; // - yönü
void setup() {
pinMode(in1, OUTPUT); // 6 ve 7 numaralı pinlerimizden güç çıkışı olacağını belirttik.
pinMode(in2, OUTPUT);
}
void loop() {
digitalWrite(in1, HIGH); //+ yönünde 2 saniye çalıştırdık
delay(2000);
digitalWrite(in1, LOW);
delay(1000);
digitalWrite(in2, HIGH); //- yönünde 2 saniye çalıştırdık
delay(2000);
digitalWrite(in2, LOW);
delay(1000);
}
Sonuç
Sonuç olarak kodu çalıştırdığınızda DC motorun 2 saniye + yönde, 2 saniye – yönde hareket ettiğini fark edeceksiniz ve eğer isterseniz koddaki “HIGH” yerine 0-255 arasında bir değer girerseniz motorunuzun hızını da değiştirebilirsiniz.
Bir projemizin daha sonuna geldik. “Arduino ile Fırçalı DC Motor Kontrolü” projesi hakkında herhangi bir sorunuz olursa bu gönderiye yorum olarak yazabilir ya da mail adresimden bana ulaşabilirsiniz.
🚀Okumanızı Tavsiye Ederiz: Servo Motor Nedir?