
Merhabalar arkadaşlar. Bir hocamın isteği üzerine tasarlamış olduğum step motor sürücüsünü sizlerle paylaşmak istiyorum. Sistemi yapmaya başlayalı aslında epeyce oldu. Ancak işlerin yoğunluğu nedeniyle ancak tamamlayabildim. Hazırladığım sürücü genel amaçlı tasarlandı. Yani belirli bir projeye özel değil. Kısacası daha çok step motorların çalışma mantığını gözlemlemek ve farklı sürüş modlarını denemek amacıyla hazırlanmış bir sistem diyebilirim.
Bu sürücü ile 1.8 derece veya 7.5 derece adım açısına sahip step motorlar kullanılabilir. Motoru tam adım ve yarım adım modunda sürebilirsiniz.
Ayrıca daha önce ayarlanan devire tek tuşla çıkabilir ya da motoru adım adım hareket ettirebilirsiniz. Benzer farklı bir PIC16F628 step motor uygulaması görmek isterseniz bipolar step motor sürücü PIC16F628 LMD18245 yazısı da ilginizi çekebilir.
Devrede Kullanılan Temel Bileşenler
İçerik
- 1 Devrede Kullanılan Temel Bileşenler
- 2 L297 ile İlgili Yaşadığım Sorunlar
- 3 Besleme Yapısı ve Hız Sınırları
- 4 PWM Frekansı ve Devir Hesabı
- 5 Butonların Görevleri
- 6 Ayar Menüsü ve Parametreler
- 7 Step_Mod Menüsü
- 8 Yazılım Tarafında Karşılaşılan Kısıtlar
- 9 PCB Tasarımı ve Donanım Notları
- 10 Videolar ve Pratik Sonuçlar
Başlıktan da anlaşılacağı üzere sürücü kısmında L297 ve L298 ikilisini kullandım. Bu iki entegre sayesinde step motor üzerinde birçok işlemi rahat şekilde yapabiliyoruz.
- L297, adım motor kontrol entegresidir. Girişine uygulanan kontrol ve clock sinyallerine göre çıkışında motorun faz sinyallerini üretir.
- L298, H-köprü motor sürücü entegresidir. İçinde iki adet H köprüsü bulunur ve birçok motor sürme uygulamasında kullanılabilir. Maksimum 2A/phase akım verebilir.
Ana kontrolcü olarak her zamanki gibi PIC16F628 kullandım. Yapılan işlemleri görüntülemek için de 2×8 LCD kullandım.
L297’nin clock frekansını PIC16F628’nın RB3 pini, yani donanımsal PWM çıkışı üzerinden veriyorum.
Ayrıca L297’nin Enable, CW-CCW ve HALF/FULL pinlerini de PIC16F628 ile kontrol ediyorum.
Sistemin Şeması aşağıdaki gibidir.

L297 ile İlgili Yaşadığım Sorunlar
Sistemi kurarken L297’nin datasheet’inin ilk sayfasında verilen şemayı birebir uyguladım. Buna rağmen sürüş şeklinden tam anlamıyla memnun kaldığımı söyleyemem.
L298 ile birlikte çalışırken, L297’nin akım değerini düşürmeme rağmen akım kontrolünü istediğim kadar iyi yapamadı. Özellikle düşük devirlerde motoru titretiyor.
Bu konu üzerinde epey uğraştım ama çok büyük bir gelişme kaydedemedim.
Step motor sürme konusunda pratik sonuç bazen teoriden farklı olabiliyor.
Özellikle rezonans, akım kontrolü ve besleme seviyesi gibi faktörler burada ciddi fark oluşturuyor.
Besleme Yapısı ve Hız Sınırları
Devrenin beslemesinde LM2575 kullandığım için sisteme 40V’a kadar besleme girebilirsiniz.
Ben testlerimde 39V seviyesinin üzerine çıkmadım. Tüm denemelerimi de bu aralıkta yaptım. Buna rağmen yüksek devirlerde gerçekten problem oluyor.
Yaptığım testlerde:
- 1.8 derecelik motorlarda yaklaşık 200-250 RPM seviyesine kadar
- 7.5 derece adım açılı motorlarda ise yaklaşık 300-400 RPM seviyesine kadar
problemsiz sonuç alabildim. Bu devirlerden sonra motor rezonansa giriyor ve duruyor. Bunu tam olarak aşamadım.
Görünüşe göre sistemdeki temel problemlerden biri de bu ve muhtemelen besleme voltajını daha da artırmak gerekiyor.
Testlerde hem 1.8 derece hem de 7.5 derece adım açısına sahip, yazıcılardan ve tarayıcılardan söktüğüm ya da daha önce CNC için satın aldığım bipolar ve unipolar step motorları kullandım.
PWM Frekansı ve Devir Hesabı
L297’nin clock palsini PIC16F628’nın HPWM donanımı ile elde ettiğim için, 4 MHz osilatör frekansı ile minimum 250 Hz alabiliyorum.
Maksimum frekans daha yukarı çıkabilecek durumda olsa da, şimdilik ben bunu 3333 Hz ile sınırladım. Bu frekansın yeterli olduğunu düşündüm.
Normal çalışmada LCD’de motorun devri gösterilir. PWM donanımından çıkan frekansı bildiğimiz için, motorun devrini motorun adım açısı ve sürüş modu üzerinden hesaplayabiliyoruz.
Örnek olarak 7.5 derecelik bir motoru tam adım modunda sürdüğümüzü düşünelim:
- Motor 360 derecelik bir turunu 48 adımda tamamlar.
- Devir hesabı için şu formül kullanılabilir:
Devir = PWM_Freq x (60 / 1 turdaki adım sayısı)
Örneğin 250 Hz için:
- 250 x (60 / 48) = 312.5 dev/dak
Aynı hesabı 1.8 derece için yaparsak:
- 250 x (60 / 200) = 75 dev/dak
Eğer sürüş modu FULL yerine HALF seçilirse, bu değerler yarıya düşer.
Butonların Görevleri
Devrede toplam 6 adet buton bulunuyor:
- Start
- Stop
- Up
- Down
- DRC
- Set
Up ve Down butonları
- Up butonu ile motor devri artırılır.
- 1.8 derece motorlarda maksimum değer 1041 RPM
- 7.5 derece motorlarda maksimum değer 4339 RPM
- Down butonu ise bunun tersini yapar.
- 1.8 derece motorlarda minimum değer 75 RPM
- 7.5 derece motorlarda minimum değer 312 dev/dak
Start ve Stop butonları
- Start butonu, önceden ayarlanmış devire motorun rampalı şekilde çıkmasını sağlar.
- Stop butonu ise motoru yine yumuşak şekilde yavaşlatıp durdurur.
DRC ve Set butonları
- DRC butonu motorun dönüş yönünü değiştirir. Motoru önce yavaşça durdurur, yönü değiştirir, ardından eski devrine yumuşak şekilde çıkarır.
- Set butonu, motor parametrelerinin girildiği menüye geçiş yapar.
Ayar Menüsü ve Parametreler
İlk menü Step_Ang menüsüdür. Buradan motorun adım açısı seçilir. Şimdilik 1.8 ve 7.5 olmak üzere iki seçenek vardır. Menü geçişleri sadece Set butonu ile yapılır.
Bir sonraki adım Driv_Mod parametresidir. Burada motorun tam adımda mı yoksa yarım adım modunda mı sürüleceği seçilir.
Daha sonra Soft_Strt RPM menüsü gelir. Bu menüde ana çalışma modunda Start butonuna basıldığında motorun hangi devire çıkacağı belirlenir.
Bir sonraki menü Soft_Strt Acc menüsüdür. Burada, motorun hedef devire hangi hızla rampalanacağı ayarlanır. 1 ile 10 arasında bir değer girilir:
- 1 seçildiğinde motor daha hızlı şekilde hedef devire çıkar
- 10 seçildiğinde ise daha yavaş ve yumuşak çıkar
Bu menüden sonra çıkmak için tekrar Set butonuna basmanız yeterlidir. Ayarlar kaydedilir ve ana çalışma ekranına dönülür.
Step_Mod Menüsü
Bir de Step_Mod menüsü vardır. Bu menüye girmek için ana çalışma modunda Set butonuna yaklaşık 2 saniye boyunca, ekranda Step_Mod yazısı görünene kadar basılı tutmanız gerekir.
Bu özellik son anda aklıma geldi. Madem sistem yapıldı, dedim ki motoru adım adım da sürebilelim. Bu menüde:
- Up ve Down butonları ile motor adım adım hareket ettirilebilir
- DRC butonuna basılarak yön değiştirilebilir
- Menüden çıkmak için yine Set butonu kullanılır
Yazılım Tarafında Karşılaşılan Kısıtlar
PWM donanımının yapısından dolayı yüksek frekanslarda PWM çözünürlüğü düşüyor. Aynı zamanda frekans artışındaki lineerlik de bozuluyor.
Bu nedenle frekans yükseldikçe motor daha hızlı hızlanmaya başlıyor. Bu dengesizlik düzeltilebilir ama şu anda PIC16F628’nın hafızasında yer kalmadığı için bununla ayrıca uğraşmadım.
Aslında yazılımın zor tarafı yok. Yapılan iş açık, mantık belli. Fakat 16F628’in hafızasının az olması ciddi sınır koyuyor.
Elimde çok sayıda olduğu için bu işlemciyi değerlendirmek istedim. Hafızaya sığdırmak için bayağı optimizasyon yapmak zorunda kaldım.
Ama bunun iyi bir yanı da oldu; kod optimizasyonu konusunda ciddi pratik kazandım.
PCB Tasarımı ve Donanım Notları
Baskı devre aşağıdaki gibidir.

PCB çiziminde özellikle L297 ve L298 çevresini tamamlamak bayağı vakit aldı. Birçok yerde padlerin arasından 1-2 yol geçirmek gerekti. Bu nedenle PCB basımı biraz daha dikkat ve tecrübe istiyor.
Soğutma konusu önemli
- L298’e mutlaka soğutucu bağlanmalıdır.
- Ben denemelerde aşırı akım nedeniyle bir tanesini bozdum.
- Bu entegre kolay bozulabildiği için iyi soğutulmalıdır.
Benim kullandığım soğutucu, PCB üzerine çizdiğim yapıyla aynıdır. Aslında bir anakarttan söktüğüm bir parçaydı, burada değerlendirmiş oldum. Ayrıca PCB’ye fan yeri de koydum. Fakat burada ufak bir tasarım hatası yaptım.
Fanlar 12V ile çalışır. Eğer sistemi 12V ile besliyorsanız sorun yok. Ama cihazı 30-40V ile besliyorsanız, fan için ayrıca yine LM2575 tabanlı bir devre kurarak voltajı sabitlemeniz gerekir.

Gördüğünüz üzere soğutucu oldukça sıra dışı bir yapıya sahip. Piyasada aynısını bulmak pek mümkün görünmüyor.
Videolar ve Pratik Sonuçlar
Videodaki motor 1.8 derecelik ve 2.2 Nm torka sahip bir step motordu. Eski bir cihazdan sökmüştüm. Elimde buna benzer birçok motor olduğu için farklı testler yapma imkânım oldu.
Ekteki videoda sistemin tüm özelliklerini görebilirsiniz.
Videodaki motor 6 uçlu unipolar bir motordu. Fakat ortak uçlara enerji verdiğimde düşük devirlerde çok akım çektiği için motoru bipolar olarak çalıştırdım. Yani sürücüye sadece motorun faz uçları bağlıydı.
Buradaki videoda ise motoru 1000 RPM seviyesine kadar çıkardım. Ama genelde bu devirlerde kararlı çalışmıyor. Rezonans frekansını geçtikten sonra motor milini hafif elimle çevirirsem senkronizasyon yakalanıyor ve motor dönmeye başlıyor.
7.5 derecelik motorlarda da maksimum değer olan 4339 dev/dak seviyesine kadar çıkabildim. Tabii yukarıda bahsettiğim yöntemle. Yoksa aynı rezonans problemi onlar için de geçerli.
Sonuç
Yaşadığım problemlere rağmen bu proje benim için step motorlar konusunda çok iyi bir tecrübe kaynağı oldu.
Özellikle L297 L298 ile step motor sürme, rezonans davranışı, rampa kontrolü, PIC16F628 ile PWM üretimi ve sınırlı hafızada yazılım geliştirme gibi konularda ciddi pratik kazandırdı.
PIC16F628A L297 L298 ile Step Motor Sürücü Dosyaları
Bir sonraki yazımda görüşmek dileğiyle..



paylaşım için çok teşekkürler
hocam paylaşımınız çok güzel. tez için yapmayı düşünüyorum proteusa aktarmada sıkıntı çektim. motor 44,4 e kadar gelıp duruyor harhangi bir şekide mudahale edemıyorum. yardımcı olursanız çok sevinirim. [email protected] mail adresim.
arkadaşlar lcd yi bulamıyorum hep 14 bacaklı 2*8 var bulabilenniz oldumu adres verebilrmisiniz
merhabalar benim bir sorun olacaktı bu devrenin programı hangi dilde yazılmıştır.hangi programı kullanarak yazdınız acaba yardımcı olursanız çok sevinirim.saygılarımla
paylaşım çok güzel eline sağlık kardeşim yanlız preteus ve ares dosyalarını atma ihtimalin varmı kardeşim atarsan çok sevinirim teşekkür ler
hocam öncelikle ellerinize sağlık güzel bir çalışma olmuş.aynı devreyi ben yaptm fakat yazılımı da yükledim ama sistem çalışmadı lcd de yazı çıkmıyor. yani sunu düşündüm sisin atmış olduğunuz hex dosyası 11kb fakat 16f628a nın hafızası 3kb burada yanlışlık var diye düşünüyorum.pic e yükleyeceğimiz program ıgönderme şansınız olursa [email protected]
Hocam emeğinize saglık projenizi bende yapmak istiyorum. Malzeme listesi, devrenin açık ve baskı şemaları,piclerin programlarina nasil ulaşabilirim