Driver, step-dir sinyalleri ile çalışan hazır aldığın birşey ise;
Motor 1 turunu 200 adımda tamamlıyor.
5.5 tur dönmesini istiyorsan 5.5 * 200 = 1100 puls göndermen gerek. Eğer half step veya mikrostep kullanıyorsan bir de onun çarpanı var. 8 mikrostep için 5.5*200*8 puls göndereceksin.
Pul üretme işini ya bir döngüde delay lerle yaparsın yada bir timer kurup timer kesmesinde step sinyallerini üretirsin.
Bir üst aşaması mikrodenetleyicin destekliyorsa donanımsal PWM modülü ile sabit on zamanlı, değişken frekanslı pwm üretip, yine pwm veya timer kesmesinde puls sayabilirsin.
İstediğin kadar puls olunca da timer'ı-pwm'i kapatırsın.
Bu işin birde hız konusu var. Biraz daha karışık sayılır.
Direkt yüksek hızlarda motor çalışmaya başlamaz. Minimum bir hızdan başlayıp, hızı arttırman gerekir.
Sonra puls saydığın timer kesmesinde veya belirli bir hız profiline uyabilmek için ikinci bir timer kesmesinde vs. hızı hesaplayıp pwm ürettiğin timer'ın periyot değerini sürekli güncellemen gerekir.
Motor yüksek hızdan bir anda sıfır hıza inemeyeceğinden birde yavaşlama algoritması gerekir.
Ayrıca gideceğin yol istenen hıza ulaşmak için yeterli olmayabilir durumu da var.
Hızı hesaplamak için;
rpm * (200 * mikrostep) /60 sana saniyede üretmen puls adedini verir.
6 rpm hız ve 8 mikrostep durumu için saniyede 160 puls üretmen gerekir.
Bu da 1/160 = 6.25 milisaniyede bir puls üretmen gerektiğini söyler.
600 rpm için 62.5mikrosec de bir.
Eğer hazır sürücü kullanmayıp, kendin driver yapmaya çalışıyorsan öncelikle bir step sürücü chip'in datasheet'ine bi bak. Bipolar sürücü için tb6560, unipolar sürücü için sla7026-sla7062 chiplere bakabilirsin.
Faz akımları nasıl sıralanıyor, akım kontrolü nasıl yapılıyor vs. gibi şeyler hakkında ön bilgin olduktan sonra devam ederiz.
hocam cok guzel cevaplamıssınız benım cok ısıme yarayacak şimdi sistemimin linkini burada verıyorum.
link:
Sıstemı boyle calıstırmayı planlıyorum fakat ılk etapta buyuk cerceveyı panelın enı kadar yaklasık 1 metre goturup getırmeye calısacagım.
Rotora baglı tekerlek yarıcapı:20 mm ise
2xpixr=0.125m
1m/0.125m=7.95 tur yanı 8 tur atması gerek tekerın motor saftı ıle es merkezlı olduklarından saftında 8 tur atması gerek oluyor.
1 tam tur 200 adım ıse kı sıstemımın mıkrostep gerektırcek kadar hasssas oldugunu dusunmuyorum. Halfstepte gotururum gıbı gelıyor buda 400 adım eder.
8 tam tur yaptırırsam buda 2400 yapar. Bunu halfsteptekı 8 pals ile for dongusune sokarsam 0-600 arası for dongusu gıbı ıcınde 8 palsı donderırsem araya delay koyarsam bu mantık dogru olur mu ?
aklıma yatmayan kısım motorun rpmıne hıc gerek duymamıs olmam.
Ve en onemlısı driverda bır tane pulse bır tanede yon gırısı var puls dızısını mesela b portundan 4 bacaktan verırsem nasıl tek puls gırıslı olan bır drivera verecegım ? sanırım ılla frekansla olması gerek.
Sistemım belirli bir hız cok hızda gerektırmıyor stabıl orta mesafe bır hızda gıdıp gelıcek smdılık zaten vıdeoda gordugunuz uzere dura dura gıdecek ama ben motorumun torkunu denemek ıstedıgım ıcın tum sısteme once bır hareket vererrek gıdıp gelmesını ıstıyorum. Bu noktada sızce sıstemım soft start-stop gerektırck bır sıstem mı ? bence degıl gıbı.
Son olarak hocam pwm ile ya da timer ile hesabım dogru ıse 2400 pulsu benım nasıl gonderecegımı bıraz daha detaylı anlatabılr mısınız ? daha once pwm ıle tımerları dc motor surerken kullandım fakat burda baglantı kuramadım kafamda.
dip not :driverim tb6600
motor ozellıklerı:
Bipolar Tutma Torku: 3 Nm
Tel Sayısı: 8
Step/Tur: 200
Step Açısı: 1.8°
Flanj: 60 x 60 mm
Uzunluk: 86 mm
Ağırlık: 1.4 kg
Akım/Faz: 2.8 A
Direnç/Faz: 1.5 ohm
İnduktans/Faz: 6.8 mH
Rotor Ataleti: 840 gcm2
Çalışma Sıcaklığı: -20°C ÷ +50°C
Maksimum Isınma: 80°
bıraz uzun oldu fakat bana yardımcı olursanız cıdden projemde hayat vermıs olursunuz.