AKIM SINIRLAMASI ALTINDA STEP MOTOR SÜRMEK

Adım motorlarını sürme konusunda bir yayın yapmıştım. Başlangıçta L298 tümleşik sürücüsünü (dual H bridge) kullanırken daha sonra A4988 kullanan bir modele geçişimi anlatmıştım.

Bu yeni yayında L298 H köprüsünü motoru daha yüksek akımlarla ve hızlı olarak sürmek için nasıl kullanabileceğimizi anlatacağım. Bunu yaparken motor, daha doğrusu endüktif yükleri sürme konusundaki temel mühendislik bilgilerimizi tazeleyeceğiz. Bu yayını, özellikle genç mühendis arkadaşların ve mühendis adaylarının buna gereksinimlerinin olduğunu gördüğüm için yapıyorum. Zira bu bilgiler sadece adım motoru sürmek için değil, her türlü endüktif yükü sürmek için çok önemli. Bunları bilmeden motorumuzu istediğimiz hız ve güç ile sürmemiz mümkün değil.

Umarım faydalı olur.

YAYININ KAPSAMI VE AMACI

Adım motorlarını sürmek için STM32 mikro denetleyiciler ile L298 ve A4988 sürücülerini kullanarak geliştirdiğim uygulamalar vardı.

L298 kullandığım ilk uygulamalarımda motor adımını 5ms nin altına düşüremiyordum. Çünkü bobin akımı, hedeflediğim seviyeye ancak bu süre içinde yükselip tekrar inebiliyordu.

Akım sınırlaması yapabilen bir MOS entegre olan A4988 yi kullandığımda daha iyi performans aldım. Ama bu sefer de bu küçücük entegreleri soğutma konusunda pek başarılı olamadım. Ayrıca arada bir adım kaçırıyordu, stabilite yetersiz kaldı. Bu sorunda çalakalem yaptığım PCB tasarımında EMC açısından dikkatsizliğimin de payı vardı.

STM32/A4988 tabanlı kompakt CNC controller projesi olan bu uygulama ile ilgili yayınım için burayı tıklayabilirsiniz.)

Her neyse, A4988 uygulaması, geliştirme çalışmaları sırasında devre içlerine ulaşamadığım için sıkıntı yarattı.

Devre içinde ölçümler yapıp yapıya tam olarak hakim olabilmek için A4988 için yeni bir PCB tasarlamaktansa, L298 i akım sınırlaması ile kullanarak bir uygulama geliştirmeyi tercih ettim.

Bunun için mikroişlemci ile L298 in arasına L297 tüm devresini koyarak çalıştım. L297, mikro denetleyicinin üzerinden epeyce bir iş yükünü kendi üzerine alıyor. Mikro denetleyicinin sadece adım komutunu ve ilerleme yönünü L297 ye vermesi yeterli oluyor. L298’e giden 4 adet adım tetikleme gerilimini üretmek ve akım sınırlaması yapmak L297 ye kalıyor. Ayrıca mikro denetleyicide motor başına 2 GPIO pini, 3 CNC motoru için toplamda 6 GPIO tasarruf ediyoruz.

Bu yapıda akım sensörüne, bobin gerilimlerine, sürücü Enable sinyaline kolayca erişebildiğim için olan biteni de izleyebiliyorum.

Sonuç olarak amacımız 5ms olan adım süresini motor gücünden fedakarlık yapmadan 1.5ms ye düşürmek. Bunun için önce bizi 5ms de sınırlayan şeyin ne olduğunu öğrenmek, sonra da bunu aşmak için neler yapılabileceğini araştırmak istiyoruz. Bu yolculuk süresince endüktif yüklerin darbeli akımlarla sürülmesi, akım sınırlaması uygulanması, L297/L298 çiftinin kullanımı, alternatif yöntemler gibi farklı konulara el atacağız.

KONUYLA İLGİLİ YAYINLARIM VE BAŞVURU KAYNAKLARI

Bu konuyla ilgili önceki yayınım:

STM32 ve A4988 kullanarak step motor sürmek

Yararlanılabilecek kaynaklar:

ADIM MOTORLAR ve KULLANILIŞLARI HAKKINDA KISA BİLGİ

Adım motorları hatırlayalım. Artık her yerde karşımıza çıkıyorlar.

Bunlar benim en çok kullandığım NEMA17 ve NEMA23 boyutlarındaki motorlar.

Bu arada, NEMAxx boyutu motorun montaj delikleri arasındaki mesafeyi belirleyen fiziksel bir standard. Aynı NEMA boyutunda güç ve uzunlukları çok farklı motorlar bulunabilir.

NEMA17 ve NEMA23 adım motorlar

Bunlar da daha küçük boyutlu olanlara örnekler.

Küçük boyutlu adım motorlar

Burada adım motorların yapılarının ayrıntılarına girmeyeceğim. Sadece bunların sürülmeleri için bobinlerine uygulanması gereken gerilim ve akımları hatırlatacağım. Daha fazlası için baş tarafta verdiğim referanslara ve burayı tıklayarak ilgili yayınıma bakabilirsiniz.

Bu yayında adım motorunun iki adet faz bobinine faz farkıyla iki yönlü gerilimler uygulayarak bipolar modda çalıştırıyoruz. Çoğu motorda faz bobinlerinin orta uçlarına da erişilebiliyor, yani 2×3 altı adet bobin uçları oluyor. Orta uçlar kullanılarak daha da farklı sürüş teknikleri uygulanabiliyor.

Biz bu yayındaki uygulamada orta uçları kullanmıyoruz, zira L298 e uygun değil.

Adım motorun stator bobinlerine belirli sıra ve yönlerde uyguladığımız gerilimler ile içeride bir döner alan yaratıyoruz, sabit mıknatıslardan yapılmış olan rotor da bu alanı takip ederek dönüyor.

Motorun faz bobinlerine uyguladığımız gerilim/akımlara göre farklı açılarda adımlar atarak dönmesini sağlıyabiliyoruz. Aşağıdaki şekilde “yarım adım” (Half step) yöntemini kullandığımızda uyguladığımız gerilim/akım sıralaması görülüyor. Bu yöntem ile motorun bir periyodu 8 adımdan oluşuyor.

Bu periyod motorun bir tur dönmesine karşı düşmüyor. Motorun bir devirindeki adım sayısı kutup sayısına göre değişiyor. Benim elimdeki motorlar 200 adım/tur (1.8″) tipinde. Burada kullandığım “yarım adım” tekniği ile yarım adımlık açılarla ilerlediğimiz için motor 400 yarım adımda bir devir dönüyor.

Yarım adım planına uygun olarak adım motoru sürme gerilim/akımları.

Buna plana göre bobinlerden aşağıdaki gibi akımlar akıtmamız gerekiyor.

Yarım adım (half step) modunda sürülen adım motorunda hedeflenen bobin akımları

Bobinlerden iki yönde akıtılması gereken bu akımları elde edebilmek için her bir bobinin uçlarına aşağıdaki gibi gerilimler uyguluyoruz. Yani bobinin bir ucunu + besleme hattına, diğerini “0” hattına bağlayarak bir yönde, tersini yaparak diğer yönde akım akmasını sağlıyoruz.

Her 4 adımda bir, gri renkli bölgelerde bobinden akım akıtmadığımız bir adım var. Aşağıdaki diyagramda bobin uçlarının her ikisi de “0” hattına bağlanmış gibi görünüyor ama iş o kadar basit değil. Aslında doğrudan “0” hattına bağlamıyoruz, bu adımda bobin uçlarına ne bağladığımızın ne kadar önemli olduğunu bu yayında göreceğiz.

Şimdi gelelim bu gerilimleri uyguladığımızda bobinlerden hedeflediğimiz akımların akıp akmadığına. Ne yazık ki şekildeki gibi kare şeklinde gerilimler uyguladığımızda bobinlerden akan akımlar da böyle anında yükselip düşmüyor. Bu yayının konusu da bu işte.

İşi basitleştirmek için bir fazdan diğerine yön değiştiren gerilimleri, akımları bir kenara bırakıp tek bir bobinden oluşan bir devreyi ele alarak devam edelim.

GERİLİM UYGULANAN BİR BOBİNDEN AKAN AKIM

Elektrik/elektronik mühendisliğinin temel bilgilerinden olmasına rağmen konunun bütünlüğü açısından, gerilim uygulanan bir bobinden akacak akıma ilişkin formülleri burada tekrarlayacağım.

Bir bobine aşağıdaki gibi bir devrede anahtarı kapatarak gerilim uyguladığımızı düşünelim, bobinimizin sargılarının bir direnci olacaktır, onu da “R” olarak devremize ekliyoruz.

Anahtarımız başlangıçta “2” konumunda, uygulanan gerilim 0V ve bobinden akım akmıyor. Anahtarı “1” konumuna aldığımızda bobindeki akım aşağıdaki formüle uygun olarak artıyor, sonunda R direnci ile sınırlanarak belirlenen Io değerine ulaşıyor.

Bobin akımı yükselme formülü

Buradaki Io değeri de uygulanan gerilim ve bobin direncine bağlı olarak Io=V/R, T zaman sabiti de :

Bu ne kadar büyük olursa akım o kadar yavaş yükseliyor. T parametresi bobin akımının 0,632*Io değerine ulaşma süresini veriyor.

Akım Io değerinde iken anahtarı “2” konumuna alırsak bobin akımının sıfıra düşüşü ani olmayacak, aşağıdaki formüle göre üstel biçimde azalarak sıfırlanacaktır. Bu defa T değeri bobin akımının 0,368*Io değerine düşme süresini veriyor.

Bobin akımı düşüş formülü

Yukarıdaki şeklin sağ tarafında bobin akımının bu formüllere uygun olarak yükselme ve düşme grafiklerini de görüyoruz.

BOBİN AKIMLARINI HIZLI ARTTIRMAK VE AZALTMAK İÇİN

Bir motoru daha hızlı döndürmek için daha kısa periyodlu akım darbeleriyle sürmek gerekiyor.

Ama yukarıdaki açıklama ve formüller gösteriyor ki, motor bobinine gerilim uyguladığımız zaman, hedeflenen akıma ulaşması için bir süre beklememiz gerekiyor. Bu süreyi de T parametresi belirliyor. Aynı şekilde bobin akımının sıfıra düşmesi için de beklememiz gerekiyor.

Io akım limiti ne kadar büyükse bu süre o kadar uzuyor. Bobin akımı motor gücünü belirleyen unsur olduğuna göre, daha fazla güç için motor hızından feragat mı edeceğiz?

HIZI ARTTIRMAK İÇİN ÇÖZÜM

Çözüm formüllerin içinde gizli aslında.

Elimizdeki motorun bobin endüktansını, bobin dirençlerini ve bobinlerden akıtılabilecek maksimum akımları motoru satın alırken belirlemiş oluyoruz. O halde bu parametreler sabit iken motoru izin verilen en yüksek akım (dolayısı ile tork değeri) ile en hızlı şekilde döndürmek için ne yapacağız?

Bunu Io limit akımını motor için izin verilen maksimum akımın (Im diyelim) çok üzerine yükselterek yapacağız. Çünkü Io ne olursa olsun bunun %63 üne ulaşma süresi aynı, yani T kadar. O halde Io*0,63 ün 1/n seviyesindeki Im akımına yaklaşık T/n sürede ulaşacağımızı görebiliyoruz.

Bu biraz karışık oldu, şöyle düşünelim: Besleme gerilimini yüksek tutalım, dolayısı ile Io limit akımı da yüksek, motorun maksimum akımının olabildiğince çok üzerinde olsun. Öyle ki bobin akımı Io a değil ama Im bobin akımına istediğimiz kadar kısa bir sürede (adım süresi içinde) ulaşsın. Akım Im ye ulaştığında da onu bu seviyede sınırlayalım.

Bir başka deyişle, akım Io a gidecekmiş gibi yükselsin ama biz onu Im gibi çok daha düşük bir seviyede sınırlayalım. Böylece istediğimiz Im akımına çok daha kısa bir sürede ulaşmış oluruz.

Not: Literatürde şöyle bir çözüm de var; Besleme gerilimini 5 kat arttırıp bobin direncini de 5 katına çıkartmak. Böylece L/R olarak hesaplanan T süresini 5 de birine düşürüp, akımı gene de bobin dayanım limitlerinin içinde tutmak. Buna L/nR yöntemi adını veriyorlar. Bu, direnç üzerindeki aşırı enerji kayıpları, ısınma, pahalı güç dirençleri kullanım zorunluluğu gibi nedenlerle uygulamada yer bulmayan bir yöntem.

Aşağıdaki diyagramda yukarıda söz edilen üç yöntem ile bobin akımının yükselme hızının karşılaştırması yer alıyor.

Akım sınırlamasız, L/5R ve akım sınırlamalı durumlarda akımın yükselme hızı karşılaştırması
(Şekil ST AN435 uygulama notundan alınmıştır.)

ÖRNEK BİR MOTOR İÇİN HESAPLAMA

Elimdeki bir motoru örnek alarak hesap yapalım:

Motor özellİklerİ

MINBEA 23LM-C355-P0V
Im : Akım : 1.5 A
R : Bobin direnci : 2.2 Ohm
L : Bobin endüktansı : 5.5 mH
Holding torque : 6.2 kg*cm
Detent torque : 550 gr*cm
Rotor inertia : 0.110 kg*cm2

T = L/R = 5.5*10-3 / 2.2 = 2.5 ms

Motoru, bobin akımını 1A ile sınırlayarak sürdüğümüzde ulaşabileceğimiz en yüksek hızı hesaplayalım (Bipolar, 8 adım half step) :

Io = 5.5A İÇİN HESAPLAMA (Vs=20V)

Vs = 20V için Io = 20/2*2.2 = 5.5A

Io ın %63 seviyesi : 0.63*5,5 = 3.436A

1A bobin akımına ulaşma süresi : 1/3.436 * 2.5 = 0.728 ms (Lineer yaklaşım)

En kısa adım süresi : 2*0,728 = 1.46ms (Akım düşüş süresinin de yükselme süresine eşit olduğu varsayımı ile)

Io = 1.5A (Vs=6.5V) ve akım sınırlamasız çalışma İÇİN HESAPLAMA

Akım sınırlaması yapmadığımızda besleme gerilimini bobin akımı 1.5A dayanma sınırını geçmeyecek şekilde seçmek zorundayız. L298 üzerinde düşen gerilimi gözardı edersek 6.5V uygun bir değer oluyor. Bobin akımının adım süresi içinde 1A e ulaşacağı varsayımı için hesap yapalım:

Vs = 6V için Io = 6.5/2*2.2 = 1.5A

Io ın %63 seviyesi : 0.63*1,5 = 0,945A

1A bobin akımına ulaşma süresi : 1/0.945 * 2.5 = 2.64 ms (Lineer yaklaşım)

En kısa adım süresi : 2*2,64 = 5.28ms

Görüldüğü gibi akım sınırlaması uyguladığımızda motorumuzu 3.5 kat daha hızlı çevirebiliyoruz.

Eğer besleme gerilimini 20V değil de 40V a çıkartırsak adım süresi daha da kısalabilir ancak bu defa da motorun ataletini dikkate almak gerekecektir.

Bir not: L298 in üzerinde düşen gerilim aslında pek de gözardı edilecek bir şey değil, 1.8 ila 4.9 volt aralığında, yani 6.5 Volttan motora yaklaşık 4V, yüksek akımlarda daha da az kalıyor. Ama hesabı basit tutma hatırına böyle anlattım. Vs gerilimini motor üzerinde 6.5V kalacak şekilde yani 8.5V ya da daha fazla yaparsanız her şey yerli yerine oturur. Nasıl olsa akım sınırlaması olduğuna göre gerilimi L298 in dayanabileceği en yüksek değerlere çıkartabiliriz.

Bu şekilde 1 ila 2 Amper akıtıldığında L298 üzerinde harcanacak gücü de hesaplayabiliriz. 25W toplamı aşmamak gerek, bu limit 1-2 Amper ile aşılmaz zaten.

AKIM SINIRLAMASI UYGULANDIĞINDA BOBİN AKIMLARI

Akım sınırlaması ile sürülen bobinin akımı aşağıdaki şekilde görüldüğü gibi olacaktır. Bu grafikte adım periyodu, olabilecek en kısa sürenin 2 katı gibi görülmektedir.

Akım üzerindeki testere dişi görünümlü bölge akım sınırlaması uygulanan zaman aralıklarıdır.

Akım sınırlaması ile bobine uygulanan gerilim ve bobin akımı (Sarı bölgedeki akımı ters yönde düşününüz)

Bu yaklaşımda akımın bir şekilde 1 Amper ile sınırlanması gerektiğini de dikkate almak gerekiyor. Yayının ileriki bölümlerinde bunun nasıl yapılacağını göreceğiz.

BOBİN AKIMININ DÜŞME HIZI

Şu ana kadar bobin akımını nasıl etsek de daha hızlı yükseltsek diye çabaladık. Sonunda besleme gerilimini yükseltip akım sınırlaması koyarak bir çözüm uyguladık.

Ama adım süresini tamamladığımızda akımın da anında sıfıra düşmesini isteriz ki bir sonraki motor adımı etkin hale gelsin.

Öte yandan bobinler, nasıl ki akım yükselirken direnç gösteriyorlarsa, akımın azalmasına da direnç gösterirler. Yukarılarda verdiğimiz formül bunu gösteriyor. Öyle ki içinden akım akan bir bobinin uçlarını kısa devre edersek, bobin sargı direnci sıfır olsa o akım sonsuza kadar dönüp durmaya devam ederdi. Akımın düşmesine yol açan şey bobin sargı direnci ile deşarj yolu üzerindeki kayıplar oluyor.

O zaman bobin akımının hızlı sönmesini istiyorsak uygulanacak çözüm, uçlarını kısa devre etmek değil, açıkta bırakmak hiç değil – zira bu durumda uçlarda binlerce voltu bulan yüksek gerilimler oluşacak enerji bir şekilde atlayarak deşarj olacaktır. Uçları bir direnç üzerinden birleştirmek de ısınmaya ve enerji kayıplarına yol açacağından istenen bir şey değil.

Yavaş dönen motorlarda, röle vb. gibi bobin akımının sönümlenme süresinin çok da önemli olmadığı durumlarda bobin uçlarına ters yönde bağlı bir diyod ile akımın deşarj edildiğini bilirsiniz. Ama biz şu anda bir adım ya da servo motorunu hızlı çalıştırmanın peşindeyiz.

İşte bu noktada geldik bobini H köprü üzerinden sürme konusuna. Burada artık L298 H köprüsü üzerinden anlatmaya devam edeceğim ama bunlar başka sürücü devreler için de geçerli. L298 data sheet ve uygulama dokümanlarından aldığım şekillerden yararlanmak istiyorum.

H KÖPRÜSÜ ÜZERİNDEN BOBİN SÜRMEK

Bu noktada uygulamada bobinimizi nasıl bir devre ile sürdüğümüzü görelim:

Bu H devresi aslında L298 in iki H devresinden birisinin iç yapısını özetliyor ama başka H sürücüler için de geçerli. NPN tranzistorlar yerine MOSFET’ler koyarak da düşünebilirsiniz, açıklamalar aynen geçerli.

A girişi lojik H (High) olduğunda bobinin sol ucu Vs ye bağlanıyor, bu esnada B girişi lojik L (Low) ise bobinin sağ ucun Rs üzerinden toprağa bağlanıyor. Tersi durumda da bobine aksi yönde gerilim uygulanmış oluyor. Diyodlar bobin uçlarındaki gerilim sıfırlandığında akmakta olan akım için bir boşaltma yolu sağlıyor. EN girişi tüm tranzistorları Tristate yüksek empendans konumuna koyuyor ya da serbest bırakıyor.

H KÖPRÜNÜN ÇALIŞMASI

BOBİNDEN İSTENEN YÖNDE AKIM AKITMAK

Aşağıdaki şekilde A = H olduğu için bobinin sol ucu Q1 üzerinden Vs ye bağlı. B = L olduğu için de sağ ucu Q4 ve Rs üzerinden toprağa bağlı. EN = 1 olduğundan tranzistorlar aktif durumdalar.

Burada Rs direnci, bobinden akan akımın ölçülmesi için sensör görevi yapıyor. Akım hedeflediğimiz değere ulaştığında kontrol devremiz, bu akımın Rs üzerinde yarattığı gerilimi I_sense ucundan algılayarak köprü girişlerini gerektiği gibi değiştirecektir. Rs direnci ölçme için yeterli, ancak devrenin çalışmasını etkilemeyecek kadar küçük değerli (genelde 0.2-0.5 Ohm) güçlü bir dirençdir.

AKIMIN KESİLMESİ

Adım süresinin sonunda olsun, akım sınırlaması amacıyla olsun bobinden akan akımın kesilmesi ilk anda düşündüğümüzden biraz daha karmaşık.

Akımı kesmek için farklı yaklaşımlar var.

1. AKIMI AKTİF FAZ ÜZERİNDEN KESMEK

A girişine lojik H uygulanmış iken bunu lojik L ye çekmek bir yaklaşım. B girişi L seviyesinde kalmaya devam edecek, EN girişi de H olarak kalacak.

Bu durumda bobin akımı Q4, Rs ve D2 üzerinden akarak sönümlenecek. Sönümlenirken enerjisini Rs ve bobin sargı direnci üzerinde ısı vererek atacak. Bu, gerek Rs gerekse bobin dirençleri küçük değerlerde olduğundan yavaş, uzun süren bir sönümlenme olacak. Rs üzerinde hatırı sayılır bir ısı yayılımına yol açacağız.

2. AKIMI PASİF FAZ ÜZERİNDEN KESMEK

A girişini kapatmadan B girişini H yaparak Q4 tranzistorunu kapatmak da kullanılabilecek bir yöntem.

Bu defa akım sönümlenmesi D3 ve Q1 üzerinden oluyor, bu defa Rs devrede değil, ama sönümleme süresi ilk alternatife göre daha uzun.

3. AKIMI ENABLE SİNYALİ İLE KESMEK

A girişi H olarak bırakıp, EN girişini L yaparak tüm tranzistorları yüksek empedans konumuna koyabiliriz.

Bu durumda bobin akımı Vs üzerinden deşarj oluyor, ancak bobine ters yönde uyguladığımız Vs gerilimi sayesinde sönümlenme çok daha hızlı oluyor. Deşarj akımı Rs dirençleri üzerinden akmadığı için ısı yayılımı da daha az oluyor.

TERCİH EDİLECEK KESME YÖNTEMİ

Benim CNC ve benzeri uygulamalarımda üçüncü yöntem daha uygun oluyor. Çünkü en hızlı motor sürüşünü veriyor, Rs dirençleri üzerindeki ısı yayılımı daha düşük. Buna karşılık akım üzerindeki salınım (ripple) diğer yöntemlere göre daha yüksek, bu da motorun ısınmasını arttırıyor, bu benim için bir sorun oluşturmuyor.

Endüstride diğer yöntemlerin tercih edildiği durumlar da var, örneğin bobin endüktansının düşük olduğu büyük motorlarda bobin üzerinde yüklenen enerji daha düşük olduğu için diğer yöntemler tercih edilebiliyor.

AKIM SINIRLAMASI NASIL YAPILIYOR

Motor akımının Rs üzerinden akarken oluşturduğu gerilimi bir komparatorun bir girişine vererek, diğer girişindeki Vref karşılaştırma geriliminin aşılıp aşılmadığına bakıyoruz.

Bir RS flip flop yaklaşık 20 KHz de çalıştırdığımız bir osilatör ile sürekli olarak SET ediliyor. Akım limiti aşıldığında flip flop RESET leniyor ve motor sargısını süren tranzistor kesime gidiyor, bir sonraki osilatör periyordu gelene kadar kesimde kalıyor.
Tranzistorun iletimde kalacağı süre bobin akımının limiti ne kadar süre sonra tekrar aşacağına bağlı oluyor. Bu yönteme sabit frekanslı PWM diyoruz. Bizim uygulamamızda bu komparator, flipflop ve osilatör L297 entegresi içinde yer alıyor. Vref’i bir gerilim bölücü yardımı ile değiştirerek istediğimiz bobin akımını seçebiliyoruz.

Akım sınırlama yöntemi (L297)
( Şema ST AN460 uygulama dokümanından alınmıştır. )

Bizim uygulamamızda akım kesme işlemini yukarıdaki şekilden biraz farklı olarak, bobini süren tranzistora değil de EN girişine uyguladığımız lojik sinyal ile yapıyoruz. Böylece tüm tranzistorları yüksek empedans konumuna sürüyor ya da serbest bırakıyoruz.

HIZLI VE YAVAŞ AKIM DÜŞMESİNİN SONUCA ETKİSİ

Bobin akımı çizimlerinden 4 adımdan birinde bobinden akan akımın sıfır olmasını istediğimizi biliyorsunuz.




Eğer akımı yeterince hızlı düşüremezsek akımın sıfır olması gereken adımlarda da devam ettiğini, bunu izleyen adımın da gecikmeli ve deforme olarak geldiğini aşağıdaki şekilde görüyoruz.

Yavaş ve hızlı düşen bobin akımlarının sonuca etkisi
(Şekil ST AN435 dokümanından alınmıştır.)

L298 İLE UYGULAMAYA GEÇELİM

L298, ST Microelectronics’in adım motor sürmek için geliştirdiği popüler “çift H köprü” lerden birisi. Bu entegre, bipolar teknoloji içeriyor, bunun MOS teknoloji ile üretilmiş benzerleri de farklı seçenekleri ile piyasada bulunabiliyor.

L298 HAKKINDA

L298 Multiwatt 15
L298 Power SO20

Ben soğutucu bağlama ve ölçüm için ayaklarına erişme kolaylığı açısından Mulitiwatt15 seçeneğini seviyorum. Bir de Power SO20 SMD modeli var.

Yalnız SO20 kılıfının alt tarafında PCB ye lehimlenmesi gereken bir soğutucu yüzey var ki, lehimlemeyi, hele hele sökmeyi bir eziyet haline getiriyor. Yer sıkıntınız yoksa önermem.

L298 in iç yapısı şöyle:

Bu yapı yazımızın başlangıç bölümlerinden kullandığım şekillerden dolayı tanıdık gelecektir. Burada, ilk bölümlerde kullandığım H köprülerden iki tane var. Böylece adım motorun iki bobinini sürmek için bir L298 yeterli oluyor.

Adım motora bağlantılar şöyle:

Burada L298 in L297 ile birlikte kullanılışı görülüyor. L298 i doğrudan A,B,C,D ve EN pinlerini mikro denetleyici GPIO larına bağlayarak da kullanabiliriz, nitekim ben ilk uygulamalarımda öyle yapmıştım. Ama o zaman Rs akım sensör dirençlerini ve sense gerilimlerini kullanmıyordum, yani akım sınırlaması yoktu. Bu uygulamada A;B;C;D pinlerine uygulanan adım sinyallerini L297 üretiyor, akım sınırlamasını da o yapıyor.

Tek başına L298 bir PCB tasarım/üretiminden kaçınılarak kullanılmak isteniyorsa, piyasada yandaki gibi ucuz geliştirme modülleri bulunabiliyor.

L298 in L6506 İLE KULLANIMI

Eğer adım sinyallerinin üretimi ile ilgilenmiyorsak L298 i L297 yerine L6506 ile birlikte kullanabiliyoruz. Bu durumda L6506 sadece akım sınırlama görevini üstleniyor. Mikro denetleyici ile istediğimiz sürüş tekniğini (Full step, microstep vb.) özgürce uygulayabilir ya da DC motor sürebiliriz. DC Motor sürme uygulamasını daha sonra bir başka yayında ele alacağım.


L298 DATA SHEET’İNDEN TEMEL ÖZELLİKLER

Bazı önemli teknik özellikler gözümüzün önünde bulunsun diye buraya kopyalıyorum.

L297/L298 ÇİFTİNİN KULLANIM AYRINTILARI

Şemayı şöyle tekrar gözümüzün önüne koyalım:

L297/L298 uygulaması

Burada CW/CCW girişi motorun dönüş yönünü belirliyor. CLOCK girişine uygunan bir darbe sinyali de motoru 1 adım ilerletiyor.

Ben Half/Full mod seçimini bu pini +Vcc ye bağlayarak half Step modunda sabit bıraktım.

CONTROL sinyali akım sınırlaması için dilimleme (chopping) işleminin faz üzerinden mi yoksa Enable kontrolu ile mi yapılacağını belirliyor. Bu pin lojik “L” ise Enable (INH1,2) üzerinden, “H” ise pasif olan faz üzerinden akım sınırlaması yapılıyor. Ben bu pini toprağa bağlayarak Enable kıyım yöntemini seçtim.

OSC pinine bağlanan R1/C1 akım sınırlamasını sağlayan PWM frekansını belirliyor. Frekans yaklaşık olarak 1/0.7RC ile hesaplanabiliyor. R nin 10K dan büyük seçilmesi gerekiyor. RC değerleri şekildeki gibi 22K/3n3 seçildiğinde PWM frekansı 14KHz civarında oluyor.

Sistem üzerinde birden fazla adım motoru var ise -CNC de bulunan 3-4 motor gibi- bunların paylaştıkları besleme ve toprak yollarında dolaşan akım darbelerini azaltmak için senkron çalışmalarını isteriz. SYNC girişi burada devreye giriyor. Motor sürücülerden sadece birisinin osilatörünü çalıştırıp, SYNC pinlerini birbirlerine bağlıyoruz. Osilatörlü olanın dışındakilerin OSC pinlerini de topraklıyoruz.

DİYODLARIN SEÇİMİ

Adım motor uçlarındaki diyodların seçimine dikkat etmek gerekiyor. Yukarılarda fotosunu verdiğim türden geliştirme kitlerinde genel amaçlı doğrultucu diyodlar kullanıldığını görüyorum. Halbuki bunların “hızlı toparlanan” (fast recovery) diyodlar olması gerekiyor. Biraz açıklayalım.

Bilindiği gibi gerçek dünyada hiç birşey ideal değil. İletimde olan bir diyodun uçlarına ters gerilim uyguladığınızda anında kesime geçemiyor, bir toparlanma süresi var. Bu toparlanma süresi diyoddan diyoda çok farkediyor. Pek çok uygulamada bu süre çok önemli değil, ama bu uygulamada önemli.

Benim kullandığım ES1J diyodda bu süre 35ns. Standard toparlanma süreli diyodlarda bu gecikme 5 µs ye kadar çıkabiliyor, ortalama bir diyodda ise 300-500ns oluyor.

Peki bu neden önemli ? Bobinden akım akmakta iken kesmek istediğimizde köprüyü aşağıdaki konuma aldığımızı hatırlayalım:

Burada EN girişi “Low” ve bobin akımının D2 ile D3 ü iletime sokarak akmakta olduğunu biliyoruz.

Bu boşaltma işlemini izleyen bir sonraki adıma geçtiğimizde EN i “High” yaparak bobinin bu ucunu Q4 ve Rs üzerinden tekrar toprağa bağlıyoruz.

Ancak D3 diyodu toparlanma süresince iletimde kalıyor. Yani Vs besleme gerilimini Q4/Rs üzerinden toprağa bağlamış oluyoruz, bu da çok yüksek akım darbelerine yol açıyor.

Osiloskop ekranında bu akımların Rs direnci üzerinde yarattığı sivri tepeleri görebilirsiniz. Normal bobin akımlarının üç katına varan akım darbelerinin oluşturduğu bu gerilim sıçramaları pek çok soruna yol açıyor.

  • Devreye ve çevreye yayınlanan yüksek frekanslı parazitler (EMC sorunları)
  • Bu tepelerin L297 komparatorunu yanıltması nedeni ile erken tetiklenen akım kesmeleri
  • Akustik gürültü
  • Rs dirençlerinde ısınma

İşte bu nedenlerle bu darbelerin sürelerini olabildiğince azaltmak isteriz. Diyodların toparlanma sürelerinin çok kısa olması bundan dolayı önemli. Sonuçta bu akım “diken” lerini tamamiyle sıfırlamak mümkün değil. Bu durumda devre tasarımımızı dikkatle yaparak EM salımı ve parazitleri en aza indirmemiz gerekiyor. Bu kadar hızlı yükselen/düşen darbelerin GHz ler mertebesinde sinyaller yarattığını biliyoruz, yani devremiz milisaniyelik darbelerle çalışıyormuş gibi de görünse aslında RF tasarımı yapıyormuş gibi hareket etmemiz gerekiyor.

Bir hatırlatma; yukarıdaki osiloskop ekranı Rs üzerinden akan akımı gösteriyor, ancak her zaman bobin üzerinden akan akımı değil. Neden öyle olduğunu yazının başından beri verdiğim çizimlerdeki kalın kırmızı akım yollarını izleyerek açıklayabilirsiniz. Bobinden geçmeden Rs den geçen epeyi akım var. Ayrıca bobinden geçtiği halde Rs den geçmeyen akımlar da var.

EN SİNYALİ İLE BİRLİKTE BOBİN AKIMLARI

Şimdi bir aynı şekil üzerinde adım ve EN sinyallerini, Rs üzerindeki akım gerilimini ve bobin akımını gösterelim. Bobin akımının 8 adımda bir ters yönde aktığını düşünün lütfen. (Tembellik işte, şekli düzeltmeye bir türlü elim varmadı.)

Yukarıdaki şekilde L297 nin ürettiği EN sinyalinin akımı nasıl sınırladığını görebiliyoruz. Gerilimi uyguladığımızda bobin akımı sıfırdan başlayarak bir rampa ile yükseliyor. Bunun lineer değil, bir ters üstel yükseliş olduğunu biliyorsunuz.

Yükselen akım sınırı aştığında EN sinyali “0” olarak H köprü tranzistorlarını yüksek emedans konumuna sürüyor, devreyi akım kesimine sokuyor. EN nin sıfır olmasına rağmen bobin akımının sıfırlanmayıp bir testere dişi oluşturacak biçimde indiğini görüyoruz. Yukarılarda “hızlı düşüş” dediğimiz şey bu işte. Yavaş/hızlı ayrımını bu küçük aralıkta ayırd etmek pek kolay değil. Farkı asıl EN nin adım süresince “0” da kaldığı aralıklarda görüyoruz.

Akım bu şekilde limit altında üzerinde küçük salınımlarla dar bir aralıkta sabit kalıyor.

EN nin “1” seviyesinde kaldığı 3 adımlık süreden sonra 1 adımlık “0” aralığı geliyor. Bu aralığın idealde sıfır akımla geçmesi gerekiyor ama bobin akımını sıfıra düşürmenin de bir sınırı var, bu kadarına razı oluyoruz artık.

UYGULAMADA ÖLÇÜLEN BOBİN AKIMI

Bu da devre üzerinden ölçtüğüm bobin akımı, akım 0.8A de sınırlanmış durumda. Bobin akımını bobine seri olarak bağladığım 1 Ohm direnç uçlarından ölçüyorum.

Adım süresinin yaklaşık 1ms olduğu görülebiliyor. Teorideki öngörülerle gerçek uygulamalardaki uyum bana her zaman keyif vermiştir.

TORK TİTREŞİMİNİN YOK EDİLMESİ

A4988 li sürücüyü anlattığım yayında her üç adımdan sonra gelen, bobinlerden birisinin akımsız kaldığı aralıktaki güç kaybını tekrar ele alalım.

Bu renklendirilmiş adımlarda motorun iki bobininden sadece birisi enerjilendiği için torkda düşme oluyor, motor gücündeki bu azalmalar istenmeyen bir şey. Bunun önüne geçmek için o esnada enerjilenmiş olan bobinin akımını 1.41x arttırma yoluna gidiyoruz.

Bu artışı, o adımlarda uyguladığımız akım sınırını, yani L297 nin komparatorunun Vref girişini 1.41 fazlasına yükselterek yapıyoruz. Aşağıdaki gibi bir devre ile:

Tork ripple azaltması
(Şekil ST AN435 dokümanından alınmıştır.)

EN sinyallerinden birisi “0” olduğunda tranzistor kesime giderek Ref girişine 1.41x daha yüksek bir gerilim uyguluyor. Aşağıdaki osiloskop ekranı bu çözümün uygulandığı durumu gösteriyor, ancak bu ölçüm L297/L298 devremden değil, A4988 li olan uygulamamda ölçtüğüm. Bu devreyi L297L298 e henüz uygulamadım.

A4988 bobin akımı

L297/298 CNC KONTROL SİSTEM UYGULAMASI

Bu çözümü uyguladığım projeden birkaç foto:

L297/L298 sürücü bloku, L298 soğutma fanları görülüyor.
L2977L298 SÜRÜCÜ STM32 CNC KONTROL ÜNİTESİ_R3 İLE BİRLİKTE
L297/L298 Sürücü plaketi üst tarafı (Burada L297 ler görünüyor, L298 ler alt tarafta)

SONUÇ

L297/L298 uygulaması benim için oldukça tatminkar sonuç verdi. Artık CNC motorlarımı istediğim hızla sürebiliyorum. CNC kesim hızını sınırlayan şey motorlar değil, kesme uçlarının kalitesi ve kesilen malzemenin özellikleri.

Bu yayın daha çok öğrenci arkadaşlara yönelik olarak kolay anlaşılır ve açık olması hedeflenerek hazırlandı. Ancak, bu hedefe ulaşıp ulaşmadığımı ancak gelecek geri dönüş ve yorumlardan anlayabileceğim. Okuyup buraya kadar gelen arkadaşlardan bana görüş ve önerilerini iletmelerini rica ediyorum. Eklenmesi, daha açık anlatılması gereken şeyler varsa bana bildiriniz.

YAYININ SONU – Selçuk ÖZBAYRAKTAR Haziran 2022