Mosfet ini seven kulak versin

Başlatan hasankara, 02 Ağustos 2014, 11:13:49

hasankara

Bu başlığı, benim gibi hataya düşmeyip onlarca mosfetinizi yakmayın diye açıyorum.

Bir noktaya hem üst seviye hem alt seviye uygulayabilmek için mosfetler ile köprü tipi bağlantılarını tercih ediyoruz. her ne şekilde olursa olsun yarım köprü üzerindeki iki mosfet aynı anda iletime geçerse, bu neredeyse gerçek bir kısa devre etkisi göstermekte ve büyük ihtimal, mosfetlerden birisi veya bir kaçı bozulmakta, kısa devre olmakta. Bu durum için, yaptığım çalışmamda ki bread board üzerinde bir miktar tolerans ile paçayı kurtarmama olanak sağlasa da pcb üzerine geçtiğimiz zaman akım yolları daha kısa ve daha geniş olduğu için bağlantılar daha net ve dolaylı olarak bağlantılarda oluşan istemsiz direnç etkileri ortadan büyük oranla kalktığı için, kendisini daha çok hissettirmekte.

3lü yarım köprü mosfetlerini sürmek için ir2101 tercih etmiştim. ir2101 leri de mikrodenetleyici ile sürdüm. fark ettiğim üzere ir2101 entegresi, yarım köprü sürmek için değil de direnç gösteren bir yük sürmek için tercih edilen bir entegre. Esas nokta doğruluk tablosuna baktığımızda sürmesi için bağladığımız iki mosfeti aynı anda iletime sokabilme olanağı sunuyor olması.

Ben, mikrodenetleyicim zaten yeterli hız sağlar düşüncesi ile bu durumun üstesinden geleceğine inanarak ir2101 ile tasarımımı gerçekledim. bread board üzerinde sorun kendisini belli etmez iken pcb üzerinde şöyle bir problemle karşılaştım; besleme voltajını direk 20-30c pil üzerinden sağladığımda mosfetlerden kayıp verdim. bazen 4 oldu bazen 2 oldu. sonradan akıl edip sigorta ile deneyince de 1 mosfet yakıp sigortanın atmasıyla denemelerimde tekrar başa dönüyordum. özellikle denetleyici ilk çalışma anında çıkışları kontrolsüz konumda bulunduğu için pil üzerinden yaptığım denemelerde (4-5 kez) %90 oranla ilk takma anında mosfetlerden bazıları yandı. Bir keresinde yanmamıştı onda da hafif bir temassızlık la denetleyici tekrar durdu ve mosfet yanma durumu yine gerçekleşti.

Daha sonra ir2104 ü akıl edip denemeye karar verdim. datasheet e bakıldığında yarım köprü mosfetlerini sürmek için üretildiğini referans tasarımda görebiliyoruz. doğruluk tablosuna bakıldığında yarım köprü mosfetlerini aynı anda iletime geçirmek gibi bir seçenek bulunmuyor. yani denetleyici tarafından hiç bir şekilde yarım köprüyü kısa devre yapmasına sebebiyet vermiyor. anahtarlama girişini SD yani shut down ucundan yapmamız gerekiyor. Hem bu sürücü sayesinde high mosfet mi yoksa low mosfet mi anahtarlansın diye bize ekstra seçenek de sunulmuş oluyor. Bu entegre ile yaptığım denemelerde bu anlamda başarılı oldum ve mosfetlerim şu an güvende ve içim gayet rahat. Yaptığım onlarca denemede tek bir problem yaşamadım. neyse ki pin bağlantıları bire bir aynı olması sayesinde sadece yazılımı güncelleyerek tasarımıma ir2104 leri adapte ettim böylece pcb de değişime gitme ihtiyacı duymadım. ancak anahtarlamayı sd ucundan vermek önemli ayrıntı çünkü diğer, in girişi mosfet seçimi sağlıyor ve mosfet geçişinde 560ns ölü zaman uyguluyor.

Erol YILMAZ

IR2104 te 2 tane sinyal girişi var.
IN ve SD

Açılımları :
IN: Logic input for high and low side gate driver outputs (HO and LO), in phase with HO
SD: Logic input for shutdown

IN girişi ile ya üst fet açık kalır, yada alttaki fet.

Shutdown ise ikisini de iletimsiz bırakır.

Kullandığım LM5106 da aynı şekilde çalışıyor.
Fırçalı Motor için H bridge de Shutdown girişini kullanmıyorum.

tekosis

tecrübenizi paylaştığınız için teşekkür ederim.
İlim ilim bilmektir, ilim kendin bilmektir, sen kendin bilmezsin, bu nice okumaktır.

magnetron

şöyle bişey yapsak olmaz mı ?

HIN ve LIN girişlerini AND kapısının girişlerine versek

AND kapısının çıkışını ise Shutdown girişine versek

böylece HIN ve LIN aynı anda gelirse SD aktif olacak ve 2113 çıkışı vermeyecek ?

ne dersiniz ?

Tagli

Komütasyon kesmesinde kendimiz 500 ns gecikme (deadtime) koysak çok mu yakışıksız olur? O zaman IR2101 kullanmaya devam edilebilir. Hatta ben onu bile koymadan çalıştırmıştım. Ne kadar sağlıklı olduğu tartışılır ama MOSFET'ler yanmadı hiç.
Gökçe Tağlıoğlu

mistek

@hasankara PWM çıkışına mikroişlemcide Deadtime koyulmuyor mu?
boş işlerin adamı ---- OHM Kanunu: I = V/R ---- Güç Formülü: P = V*I = I^2*R = V^2/R

Okan AKÇA

2101 sorunsuz olarak kullaniyorum gozden kacan bir şeyler  vardir

Tagli

Alıntı yapılan: mistek - 02 Ağustos 2014, 13:12:22
@hasankara PWM çıkışına mikroişlemcide Deadtime koyulmuyor mu?
Anladığım kadarıyla donanımsal deadtime desteği BLDC sürerken kullanılamıyor. Daha doğrusu, sinüsoidal sürüşte işe yarıyor galiba. Bu sebeple komütasyon kesmesine yazılımsal olarak deadtime konması gerekli.
Gökçe Tağlıoğlu

hasankara

her yarım köprüyü kendi içerisinde düşünerek konuşalım. söz gelimi 2 mosfetten bahsediyoruz. bread board üzerinde yine pil ile aynı bağlantıyı yaptığımda sorun yaşamaz iken pcb de sorun yaşadım ve üstelik sorun arada bir kendisini gösteriyor durumu da değil %90 şeklinde bir oran verdim. Olaylar denetleyici çalıştığı sürece kontrolümüzde olabiliyor ancak ilk enerjilendiği anda denetleyici rutin çalışmasına gelene kadar mosfetler çoktan beslenmiş ve sürülmeye hazır bekliyorlar. bize göre denetleyicinin çalışmaya başlama süresi anlık gelse de mosfetlerin  bu süre kadar başı boş kalmaları, onların yanması için çok yeterli olabiliyor. besleme hattı uzun kablolardan geliyor olsaydı belki ilk başlangıç anında direnç gösterip mosfetleri bu çok kısa süre için koruyabilecek idi ama pcb ile pil bağlantısını araya ek kablo kullanmadan yaptığımdan dolayı bu durumla karşılaştığımın yorumunu getirebildim.

magnetron ne amaçla böyle bir şeyden bahsettiğini anlamasam da shutdown ir2104 için üzerinde çizgi var yani 0 olduğunda shut down oluyor, 1 olduğunda mosfetlerden birisini aktif ediyor. mosfetlerden hangisinin aktif olacağına da in den karar veriyor. in 1 iken üst mos, 0 ikende alt mos iletimde oluyor. ama ir2101 için koruma işini nasıl yapabiliriz diye soruyor isen kısmen şöyle yapılabilir; 2 şer girişli and ve or kapısı girişleri birbirine paralel bağlanır. çıkışları da ir2101 in girişlerine bağlanır. böylece kapıların paralel girişlerine 11 verdiğimizde üst mos 00 verdiğimizde alt mos 10 yada 01 verdiğimizde de iki mosta devre dışı kalır. üst mos yada alt mos derken,  ir2101 girişlerinin bağlantı seçimine göre tam tersi de yapılabilir. ama iki uçta birlikte 11 - 00 şeklinde yüksek hızda anahtarlanırsa deadtime yoksunluğundan mosfetler zarar görebilir.

tagli deadtime, yarım köprüde üzerinde ki mosfetlerden bir diğerine geçiş aşamasında ihtiyaç oluyor. yani shutdown durumu gözetmeksizin, örnek olarak üst mosfet iletimde iken aniden bahsi geçen yarım köprünün alt mosfetini devreye sokmak istediğimizde deadtime ihtiyaç duyuluyor. daha somut bir örnekle, normal fırçalı motor için yön değiştireceği an buna ihtiyaç duyabiliriz. diğer bir deyişle motor sabit yönde döndüğü sürece deadtime gerek kalmıyor. tabi bir de allegro hoca nın bahsettiği gibi kullanılmayacaksa, yani anahtarlamayı in den verildiği şeklinde hız ayarı yapılmayacaksa koşulunu da koymalıyız.  demek istediğim problemin ortaya çıkması deadtime den kaynaklanmıyor aslında. denetleyici rutinine girene kadarki geçen sürede problem kendisini gösteriyor.

uzun lafın kısası demek istediğim, yarım köprü için ir2101 ile ir2104 arasında ki seçimimiz ir2104 olmalı. veya bu mantıkta çalışan bir yarım köprü mosfet sürücüler olmalı. Çünkü, zaten yarım köprü bağlantısına özgü tasarlanmış olması sebebi ile mosfetleri koruyabilecek bir çok şey düşünülmüş, ve yarım köprü bağlantısında, mosfetleri bilinçli bozmak dışında her şeyi yapabiliyoruz.

z

IR2101 genel amacli bir surucu. Bununla half bridge surucu yapacaksaniz Hin ve Lin girislerine uygulanan sinyallere deattime koymak zorundasiniz.
IR2104 ise half bridge surucu yapmak icin.

IR2106 ile bir cok H tipi step motor surucu yaptim. Bu cipin de Hin ve Lin girisleri ayri ayri kontrol edilebiliyor.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Tagli

Alıntı yapılan: hasankara - 02 Ağustos 2014, 13:39:37Olaylar denetleyici çalıştığı sürece kontrolümüzde olabiliyor ancak ilk enerjilendiği anda denetleyici rutin çalışmasına gelene kadar mosfetler çoktan beslenmiş ve sürülmeye hazır bekliyorlar. bize göre denetleyicinin çalışmaya başlama süresi anlık gelse de mosfetlerin  bu süre kadar başı boş kalmaları, onların yanması için çok yeterli olabiliyor.
Mikrodenetleyiciler ilk enerjilendiklerinde bacakları giriş modunda olur. IR2101 girişlerinde zaten pull-down dirençleri var. Program doğru yazılırsa yukarıda bahsettiğin durumun olmaması lazım.

Deadtime olayını az çok biliyorum. Ben de şu sıralar BLDC sürücü yapmaya çalışıyorum. Senin MOSFET'leri nasıl sürdüğün aklımda kalmamış ama ben aşağı tarafları sabit olarak açıp kapatarak sadece üst tarafa PWM veriyorum. Bu PWM'i de tek kanaldan çıkarak bir AND kapısı ile 3 adet üst MOSFET'e dağıtıyorum. Zaten normal çalışmada - yani motorun bir an için dönmediğini ve 6 komütasyon fazından birinde olduğumuzu varsay - eğer yarım köprülere 1 2 3 diye numara verirsek, mesela 1'in üstü ile 2'nin altı iletimde oluyor. Diğer MOSFET'ler zaten iletimde değil. Bu durumda zaten sorun çıkmaz. Sorun komütasyon değişirken çıkabilir. Sonraki fazda atıyorum 1'in altı ve 3'ün üstü iletimde olacaksa, o geçiş sırasında 1. yarım köprüde kısa devre olabilir. 1'in üstünü kapattıktan (iletimden çıkarıp) sonra altını açarken (iletime sokarken) biraz beklemek gerekir. Bu örnek değişimde 2. ve 3. yarım köprülerde zaten sıkıntı olmaz.
Gökçe Tağlıoğlu

hasankara

bldc de tek yönde döndüğü süre sürücüsünde ki 3 komutasyonu inceleyelim. dediğin gibi 1 üst 2 alt ile başlayalım, bir sonraki 1üst 3 alt oldu, bir sonrakinde ise 2üst 3 alt diye devam ettiğini düşündüğümüz de 1 iki komutasyonda üst seyretti sonra ki komutasyonda boşta kalıyor zaten. kalan 3 komutasyonda iki kez altta kalıp tekrar boşta kalıyor. yani tek yarım köprüyü düşününce mosfet üst yada alt geçişinde arada boşta kalıyor normal komutasyon sıralaması gereği.

http://en.nanotec.com/support/tutorials/stepper-motor-and-bldc-motors-animation/ buradaki animasyon güzel.

void bldc_komutasyon(unsigned char giris, unsigned int pwm) {
    switch (giris) {
        case 0:
            OC3RS = 0;
            OC5RS = 0;
            OC4RS = 0;
            break;
        case 1:
            OC3RS = 0;
            OC5RS = 0;
            OC4RS = 0;
            PORTD = 0b100 << 5;

            OC3RS = 0;// tamamen bos
            OC4RS = pwm; // pwm
            OC5RS = 2000; // komutasyon
            break;
        case 2:
            OC3RS = 0;
            OC5RS = 0;
            OC4RS = 0;
            PORTD = 0b100 << 5;

            OC4RS = 0;// tamamen bos
            OC3RS = pwm; // pwm
            OC5RS = 2000; // komutasyon
            break;
        case 3:
            OC3RS = 0;
            OC5RS = 0;
            OC4RS = 0;
            PORTD = 0b010 << 5;

            OC5RS = 0;// tamamen bos
            OC3RS = pwm; // pwm
            OC4RS = 2000; // komutasyon
            break;
        case 4:
            OC3RS = 0;
            OC5RS = 0;
            OC4RS = 0;
            PORTD = 0b010 << 5;

            OC3RS = 0; // tamamen bos
            OC5RS = pwm; // pwm
            OC4RS = 2000; // komutasyon
            break;
        case 5:
            OC3RS = 0;
            OC5RS = 0;
            OC4RS = 0;
            PORTD = 0b001 << 5;

            OC4RS = 0;// tamamen bos
            OC5RS = pwm; // pwm
            OC3RS = 2000; // komutasyon
            break;
        case 6:
            OC3RS = 0;
            OC5RS = 0;
            OC4RS = 0;
            PORTD = 0b001 << 5;

            OC5RS = 0;// tamamen bos
            OC4RS = pwm; // pwm
            OC3RS = 2000; // komutasyon
            break;
    }
}


faydalı olması dileği ile.

Tagli

O ayrıntı gözümden kaçmış. Evet, görülen o ki komütasyon değişirken bir yarım köprüde en fazla 1 MOSFET'in durumu değişebiliyor. O zaman bu durumda, BLDC sürerken aslında deadtime koymaya ihtiyaç olmadığı sonucunu çıkarabiliriz. Böylece benim MOSFET'lerin deadtime koymadığım halde güzel çalışmaları da açıklanmış oluyor.

Bu arada, site güzelmiş, teşekkürler.
Gökçe Tağlıoğlu

hasankara

bu site deki animasyon bldc çalışma mantığını anlamak konusunda faydalı olmuştu. bu arada yukarıda paylaştığım kod komutasyon tipi ir2104 e göre düzenlendi, ir2101 de biraz farklılık olması gerekiyor. bu da ir2101 için yazılan komutasyon case lerinden bir tanesi;
            OC3RS = 0;
            OC5RS = 0;
            OC4RS = pwm;
            PORTD = 0b100 << 5;
            break;


ir2101 de portd pin çıkış kanallarından bir tanesi sürekli aktif edilebilirken, ir2104 de portd pin çıkışından üst veya alt mosfet seçimi yapıp pwm yolundan da kanal aktifliğini düzenliyoruz. demanyetizasyon için her komutasyonda sürekli aktif olan bir mosfet olması gerekiyor bu yüzden ir2104 kodunda her komutasyonda pwm yollarından bir tanesini sürekli max duty oranı belirlemek gerekiyor.

z

Ben sizin surus seklinizi anlamadim.

Bu suruculerde yukari moslari suren devrenin calisabilmesi icin PWM isterler. Yani Hin girisini 1 yaparim bana MOS +V verir diyemezsiniz.
PWM frekansinda Cikis voltaji +V olmasin istense bile cok kucuk bir aralik icin buna izin verilir. Uygulamalarimda %5....%95 gibi araligi kullaniyorum.

3fazli step motorlari surerken kullandigim guc kati da sizinki gibi 3 yarim kopruden ibaret ve 3 kanal da her an icin PWM ile suruluyordu. (Vector space modulasyon kullaniyorum)

Bu sekilde surerseniz moslariniz isinacaktir.

Sonucta 6 dilimden birisinde ust mosu nasil surekli on tutuyorsunuz? Bu esnada buna ait surucu nasil boost islemi yapiyor?

Uygulamanizda ihtiyaciniz olmayabilir ama hic cok dusuk devir sayisinda dondurmeyi denedinizmi?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com