Şimdi Ara

Arduino Uno ve LM298 ile DC motor

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
1 Misafir - 1 Masaüstü
5 sn
8
Cevap
0
Favori
1.319
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhabalar,

    Yazılım bilgim bulunmamaktadır bu yüzden yardıma ihtiyacım var. Elimde LM 298 motor sürücüsü bulunmaktadır. Şekil şudur.

     Arduino Uno ve LM298 ile DC motor

    Arduino Uno Set'im bulunmaktadır ve elimdeki motor 12V DC motor.Bu motorun devir kontrolünü yapmak için nasıl bir yol izlemeliyim?İnternette araştırınca lm298 ile ilgili açık kaynak kod bulamadım.

    Resimde motor kısmını motora bağlayacağım eyvallah , 12V ve GND kısmını güç kaynağına bağlayacağım eyvallah , I1 I2 ve E kısmı arduiono'ya bağlanacak ama nasıl , analog kısıma mı digital kısıma mı ve sonra kod nasıl yazılır ve hız nereden yada ne ile kontrol edilir.

    Teşekkürler.







  • O halde biraz teorik bilgi vereyim, daha iyi anlarsın.

    Bu tip sürücüler sadece bir yükselteç devresidir. Enable girişine 5v verdiğin zaman çıkıştan 12V alırsın. Çıkış voltajınla oynama şansın yok, sabit. Peki hızı nasıl ayarlayacaz dersen, Enable girişinin sinyalini kesik kesik vereceksin. Yani biraz 1 (5v), biraz 0 (0V). Bu işlemi hızlı şekilde yaparsan motor sanki analog voltaj veriyormuşsun gibi döner.

    Arduino içinde bu işi kolaylaştıran bir modül var, adı pwm. Bu modülü kullanmak için analogWrite() diye bir fonksiyon yazmışlar. Aha burada.https://www.arduino.cc/en/Reference/AnalogWrite

    Enable ucunu 5 ya da 6 numaralı pine (pwm pinleri) bağladıktan analogWrite fonksiyonu ile motoru istediğin hızda döndürebilirsin. Hız aralığı 0 ile 255 arasında. 0'da motor durur, 255'te son hızla döner. Mesela motoru yarı hızla döndürmek için;

    analogWrite(5, 128);
    Bu işlem Enable girişini sürekli 1-0-1-0-1-0-1-0... yapar. İşlem saniyede 980 kere tekrarlandığı için farketmezsin.

    Motor sürücünün diğer girişleri basit. Bunları arduinonun istediğin pinlerine bağlayabilirsin. Tabi dijital çıkış veren pinlere.
    I1 I2
    0 0 -> Hiç sürücü bağlamamışsın gibi olur, serbest halde.
    0 1 -> Motor döner.
    1 0 -> Motor diğer tarafa döner.
    1 1 -> Ani fren.




  • Hocam teşekkürler cevap için , sürücü 5v'u 12v'a çevirir demişsin ama sürücüde zaten 12V giriş ve bende de 12V üreteç var.Motor da 12V zaten.Motoru sürücüdeki motor için ayrılan kısma bağlarım , sürücüdeki 12V ve GND'yide üretece bağlarım , I1 I2 ve E'de arduinoya girer. Ben böyle anladım , değil mi?

    Enable girişi dediğiniz nedir tam olarak? Sürücüdeki E ile gösterilen kısım mı? Bunu 5 yada 6 pinine bağla diyorsunuz.

    Peki I1 ve I2 nereye bağlanır ve nasıl değer atanır , yönü değiştirmek için?
  • Temel lojik ve yazılım bilgin yoksa senin için zor olabilir.

    E enable girişi. Sürücüyü aktif hale getirmek için buraya lojik 1 verilir, bu da genelde 5V'tur. Enable lojik 1 ise sürücüye verdiğin giriş voltajı (12V) çıkışa aktarılır, motor vs. ne bağlarsan işte. Yükselteç dediğimiz olay bu.

    Çalışma sistemini anlamak için arduinoyu falan bir kenara atıp kablolarla kontrol etmeyi dene. I1 girişini GND'ye bağla (lojik 0). I2 girişini 5V'a bağla (lojik 1). Bu haldeyken E girişine 5v verdiğin an motor dönmeye başlar. I1 ve I2 nin yerlerini değiştirirsen motor tersine döner.

    Bunun arduinodaki karşılığı kabaca;
    digitalWrite(pin_I1, LOW);
    digitalWrite(pin_I2, HIGH);

    analogWrite(pin_ENABLE, 255); // pin_ENABLE 5 veya 6 nolu pin
    Buradaki 255'i düşürdükçe motorun hızı düşer. Diğer ikisini de tersleyince motorun yönü değişir.

    I1 ve I2 daha önce dediğim gibi arduinonun herhangi bir dijital pinlerine bağlanabilir. Artık yazılımın detayları sana kalmış. Kolay gelsin.




  • Teşekkürler
  • Merhabalar, hazır bir başlık varken, bir soru da ben sormak istiyorum. Ben yüksek amperli (13 amp, 24v) bir motorun hızını ayarlamak istiyorum. Anladığım kadarıyla yüksek amperli harici bir güç kaynağı ile kullanacağım, bu yüzden IRF540 gibi bir mosfete ihtiyacım olacak. Ben nu motoru belirli sürelerde belirli hızlarda kullanmak istiyorum. Örneğin 3 dakika için (0-255 arası) 100 ile, sonraki 5 dakika boyunca 255 ile sonra devirde. Mümkün müdür? Böyle birkaç kod yazıp bir switch ile bunlar arasında geçiş yapılabilir mi? Devirleri hall sensör ile okuyup, lcd ekranda görebilir miyiz?

    Benim için çok önemli bir proje, yardımcı olursanız çok memnun olurum.
  • Sir Wilde kullanıcısına yanıt
    Motoru tek yönde mi süreceksiniz yoksa yön de değiştirecek mi?
    Eğer yön değiştirecekse H-Bridge kullanmanız gerekir. Bu kadar yüksek akımları kontrol etmek ve hız kontrolü de sağlamak için mosfetleri de mosfet sürücü entegreleri ile sürmeniz gerekir. Örneğin IR2104, IR2110 gibi. Aksi halde mosfetler PWM ile sürülürken pinleri arasında bulunan kapasitelerin doldurulup boşaltılması problem çıkaracağı için tam iletime veya yalıtıma geçirilemezler. Bu sebeple ısınırlar veya patlayabilirler. Devre de istediğiniz gibi çalışmaz.
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.