Arduino PWM ile DC Motor Kontrolü, Yarı Devir ve Tam Devir

Arduino PWM ile DC Motor Kontrolü, Yarı Devir ve Tam Devir arduino pwm ile dc motor kontrolü

Arduino PWM ile DC Motor Kontrolü yaptığımız içeriğimiz ile, PWM kullanmayı öğrenerek bir çok projenize yeni bir boyut kazandırabilirsiniz. Bu içeriği hazırlama sebebimiz, bir okuyucumuzun bizlerden yardım istemesinden kaynaklanıyor. Daha önceki yazılarımızda Arduino ve PWM‘den bahsetmiştik. Bu bilgilere dayanarak, aynı zamanda okurumuzun yardım talebine cevap olarak yazıya başlayalım!

Kısaca PWM Nedir?

PWM tekniğinin temeli kare dalga üretmekte yatıyor. Bu kare dalga da genellikle referans olarak aldığı dalganın ortalaması kadar büyüklüğe sahip oluyor. Kare dalga, bilindiği gibi “on” ve “off” konumlarını sağlıyor. Böylece kare dalga gönderildiğinde “on” konumunda 5V uygulanırken, “off” konumunda 0V uygulanmış oluyor. İşte bu “on” kısmının aktif olduğu genişliğe “Pulse Width” yani “Sinyal Genişliği” adı veriliyor. Bu doğrultuda istenilen sinyal genişliği elde etmek için de modülasyon tekniği uygulamanız gerekiyor ki bu da PWM’in temel mantığıdır. Arduino ile yanıp sönen bir LED devresi kurmak veya Arduino ile DC motor kontrolü gerçekleştirmek için PWM tekniğini kullanmamız gerekiyor. Bu teknik de Arduino’ya gömülen yazılımda yatıyor. “analogWrite(…)” fonksiyonu ile görev döngüsünün miktarı belirleniyor ve kare dalga elde ediliyor.

Arduino PWM ile DC Motor Kontrolü
Arduino PWM ile DC Motor Kontrolü

PWM çıkışı için Arduino ’nun her hangi bir PWM pinini kullanabilirsiniz, bu pinleri bir tablo yardımı ile ya da, kartınızın üstündeki, pinlerin yanında ki (~) işaretine bakarak anlayabilirsiniz. Biz sizin için 3. pini tercihe ettik.

PWM ile Neler Yapılabilir ?

  • Bir LED kısıp, ışığını arttırabilirsiniz.
  • Bir analog çıkış sağlayabilirsiniz; tabii dijital çıkışlar filtrelendiyse,
  • %0 ile %100 arasında (0v – 5v) bir voltaj çıkışı sağlayabilirsiniz
  • Ses sinyalleri üretebilirsiniz
  • Motorlar için hız kontrolü sağlayabilirsiniz.
  • Modüle edilmiş sinyal üretebilirsiniz (Ifrared LED Kumandaları gibi)

Devre Açıklaması

Hız kontrolü yapmak istediğimiz için PWM pini kullanmak zorundayız devamında analogWrite fonksiyonuyla 0–255 arasında bir değer göndermeliyiz 30 saniye tam devir istediğimiz için 30 saniye 255, 30 saniye yarı devir istediğimiz için 255/2 = 127 göndermemiz işimizi görecektir.

Gerekli Malzemeler

  • Arduino Uno
  • IRF740A Mosfet
  • 3.5 Volt DC Motor
  • 12V Güç Kaynağı
  • 10k Direnç

Devre Şeması

Mosfetin üzerindeki sayılar size bakacak şekilde tuttuğunuzda;

İlk bacağı olan “Gate” Arduino’nun 3 nolu pinini bağlıyoruz.

İkinci bacağı olan “Drain”, motorun diğer bacağına bağlıyoruz.

Üçüncü bacağı olan “Source” ise ortak GND’ye (toprak) bağlıyoruz.

Arduino PWM ile DC Motor Kontrolü, Yarı Devir ve Tam Devir arduino pwm ile dc motor kontrolü
Arduino PWM ile DC Motor Kontrolü

Burada kullandığımız mosfet N tipinde bu yüzden güç kaynağımızın “+” kutbunu direkt olarak motora, “-” kutbunu mosfete bağlıyoruz. Arduino ve kullandığınız adaptörün “-” ve GND’leri birbirine bağlı olması gerekmektedir. Eğer elinizde 12V’u geçmeyen yeterli bir güç kaynağı varsa Arduino’nun Vin bacağını da bununla besleyebilirsiniz çünkü Arduino kartınız üzerindeki voltaj çevirici(Genelde LM7805) onu zaten 5V ’a düşürecektir ancak unutmamalısınız ki burada motorunuz belli bir seviye güç kaybedebilir. Ayrıca, GND’ye 10K’lık bir direnç bağlarsanız arduino’nun kararsız durumlarının önüne geçebilirsiniz. İsterseniz 10nF geçmeyek bir kapasitör ile de bunu sağlayabilirsiniz.

Arduino Kodu

30 saniye tam devir, 30 saniye yarı devir;

hızlanıp, yavaşlama;

MOSFET Seçim Kriterleri ve IRF740A’yı Anlamak

DC motor kontrolde kullanılan IRF740A, 400 V / 10 A kapasiteli bir N-Kanal MOSFET’tir. Arduino’nun 5 V PWM çıkışı doğrudan gate’i süremez çünkü YG (threshold gerilimi) genellikle 2-4 V arasındadır; bu nedenle tam sürülme (full enhancement) için gate-source geriliminin (VGS) veri sayfasında belirtilen VGS(th) değerinin en az 2-3 katı olması gerekir. Düşük güçlü uygulamalarda Arduino’nun 5 V çıkışı yeterli olabilir, ancak motorun çektiği akım yükseldikçe MOSFET iç direnci (RDS(on)) üzerine düşen gerilim artar ve MOSFET ısınmaya başlar; bu aşamada gate’i tam sürmek için 10-12 V gate sürücü devresi kullanmak tercih edilir.

IRF740A gi yüksek gerilimli (400 V) bir MOSFET seçilmesinin nedeni, endüktif yük olan DC motorun kapandığı anda geri-EMK (back-EMF) üretmesidir. Motor sargılarında depolanan enerji, devreye ani gerilim tepeleri (voltage spike) olarak yansır; bu tepe genliği güç kaynağı gerilimiyle doğru orantılıdır ve MOSFET’in VDS sınırını aşması hâlinde anlık olarak hasar verebilir. Yüksek VDS toleransı bu sınıra karşı emniyet marjı sağlar.

Freewheeling Diyot: Neden Zorunludur?

  • Geri-EMK Koruması: Motor sargıları kapandığında (MOSFET kapanınca) manyetik alanda depolanan enerji, motorun kutuplarından devreye zorlar. Freewheeling diyot (flyback diyot) bu enerjiyi MOSFET yerine kendi üzerinden döngüye alır ve ani gerilim tepenı güvenli biçimde yüklenir.
  • Diyot Seçimi: Freewheeling diyotun ortalama ve tepe akım toleransı, motorun çektiği maksimum akımdan büyük olmalıdır. 1N4007 gibi genel amaçlı diyotlar düşük frekanslı uygulamalarda yeterlidir; ancak PWM frekansı 10 kHz’i aşarsa Schottky diyot (örn. 1N5819, 1N5822) tercih edilmedir çünkü tersine çevirme gecikmesi (reverse recovery time) çok daha kısadır.
  • Yerleştirme: Diyot, MOSFET’in drain-source pinlerine paralel ve ters kutuplu bağlanmalıdır: katot (çizgili uç) drain’e, anot ise source’a değdirilir. Diyot MOSFET’ten uzak yerleştirilirse bağlantı teli ürettigi parazit endüktans gerilim tepesini büyütebilir; olabildiğince yakın tutun.
  • analogWrite ve PWM Frekansı: Arduino Uno’da Pin 9 ve 10 için varsayılan PWM frekansı yaklaşık 490 Hz, Pin 3, 5, 6, 11 için ise yaklaşık 980 Hz’dir. Bu frekanslarda 1N4007 kabul edilebilir performans gösterir. Frekansı timer register’larıyla artırarak daha sessiz motor kontrolü elde edebilirsiniz, ancak bu durumda Schottky diyot zorunlu hale gelir.
  • Isıl Yönetim: IRF740A yüksek akımlarda önemli ölçüde ısınabilir; TO-220 paketinin arka metal kısmı doğrudan ısıl yüzeye veya küçük bir ısı emiciye (heatsink) vidalanabilir. Veri sayfasındaki maksimum gövde sıcaklığı (TJ = 150 °C) aşılmamalıdır.

Yorum yapma özelliği, forum tarafından gelen istek sebebiyle kapatılmıştır. Lütfen tartışmalar ve sorularınız için topluluk forumumuza katılın.