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

Arduino PWM ile 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, Arduino PWM ile DC Motor Kontrolü, Yarı Devir ve Tam Devir

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

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, Arduino PWM ile DC Motor Kontrolü, Yarı Devir ve Tam Devir

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;

void setup() {
pinMode(3, OUTPUT); //3. pini output olarak gösterdik
}
void loop()
{
analogWrite(3, 255); //tam devir
delay(30000);

analogWrite(3, 127); //yarı devir
delay(30000);
}

hızlanıp, yavaşlama;

void setup() {
  pinMode(3, OUTPUT);
}
void loop() {
  for (int i = 0; i < 250; i++) {
    analogWrite(3, i);
    delay(10);
  }
  for (int i = 255; i > 5; i--) {
    analogWrite(3, i);
    delay(10);
  }
}