Bu yazımda SVPWM anahtarlama tekniğini matematiksel analizini yapıp uygulamada dikkat edilmesi gereken noktalardan bahsedeceğim. Konuyu Ana Vektörlerin Elde edilmesi, İzdüşüm Hesabı, Duty Sürelerinin Hesaplanması ve Deneysel Çalışma Çıktıları olmak üzere 4 parçaya ayırdım.
ANA VEKTÖRLERİN ELDE EDİLMESİ
Aşağıdaki invertör devresi ile oluşturulabilinecek herhangi bir vektörün eşitliği denklem-1 de verildiği gibidir.
Zamana bağlı denklem-1’i S1, S3, S5 üst kol anahtarlarına bağlı olarak yazacak olursak,
denklem-2 elde edilir. Düzeltme: Verilen şekilde üst kol anahtarlarını soldan sağa doğru S1, S3, S5 olduğunu varsayınız.
Burada S1, S3 ve S5 anahtarlarının alabileceği değerler 1 ve 0 olduğuna göre tüm kombinasyonlar yazıldığında,
eşitlikleri elde edilir. Bu eşitlikler sırasıyla
vektörlerini belirtmektedir. Bu eşitliklerdeki matematiksel işlemler yapıldıktan sonra elde edilen sonuçlar, açılarına göre aşağıdaki gibi sıralanır.
Bu vektörler yada kompleks ifadeler kartezyen düzeleme aktarıldığında aşağıda ki hexagon adı verilen 6 adet sektörden oluşan şekil elde edilir. Bu şekilde görülen 6 adet vektörü kullanılarak, ana vektörler arasında kalan diğer sonsuz sayıdaki vektörüde oluşturabiliriz. Sektör isimleri, V1 – V3 arasındaki bölge sektör1, V3 – V2 arasındaki bölge sektör2,… şeklindedir.
ANA VEKTÖRLER ÜZERİNDEKİ İZ-DÜŞÜMLERİN HESAPLANMASI
Yukarıda de verilen hexagon yapısı referans alınarak herhagi bir elde etmek için bulunulan sektöre bağlı olarak 2 tane sıfır olmayan ana vektörü kullanarak istenilen vektör elde edilebilir. Bunun için şekildeki Vref vektörünü
eşitliğini kullanarak ta ve tb katsayılarını hesaplayabiliriz. Her bir sektör için bu denklemi çözdüğümüzde
tablo-1 verilen sonuçlar elde edilir. Örnek olması için tablo-1 deki sonuçlardan sektör2 nin tam çözümü aşağıdaki gibidir.
Burada real ve kompleks bileşenler birbirleriyle eşitlendiğinde
2 bilinmeyelin 2 denklemin çözümünden ta ve tb değerleri tablo-1 verildiği gibi elde edilir. Diğer sektörler içinde benzer işlemleri yaparak tablo-1’deki ta ve tb sürelerinin doğrulamasını yapabilirsiniz.
SVPWM algoritması mikrodenetleyicilerde hızlı bir şekilde koşturulabilinmesi için önemli 2 nokta bulunmakta, tablo-1’de verilen ta ve tb eşitliklerinde alfa real eksen ve beta sanal eksen olmak üzere atamaları yapıldığındaters-clark (bknz. Vektör Kontrol Giriş) dönüşümünün ardından elde edilen sinyaller SVPWM hesaplama rutinine parametre olarak geçildiğinde sinüs ve kosinüs hesaplamalarıyla işlemci meşgül edilmeden hızlı bir şekilde gerekli hesaplamalar işlemci tarafından yapılır. Diğer bir nokta ise yine tablo-1’de aynı renkte boyanmış olan satırlar arasında yalnızca işaret farkı bulunmakta olup bu durum dikkate alınarak kodlamanızı yaparsanız oluşturacak olduğunuz kütüphaneniz daha az hafıza gereksinimi duyacaktır.
MİKRODENETLEYİCİLER İÇİN DUTY SURELERİNİN HESAPLANMASI
Bu bölüme kadar SVPWM in matematiksel denklemleri yada algoritmaları elde edildi, geriye bunların mikrodenetleyici tarafında PWM sinyallerine dönüştürülme kısmı kaldı.
Bu aşamada anahtarlama kayıplarını etkileyen ve en uygun çözüm için dikkat edilmesi gereken 2 nokta bulunmakta. Bunlar:
- Sektörler arasındaki geçiş sıfır vektörleriyle yapılmalı.
- İnvertör devresindeki anahtarlama anlarında yalnıza 1 anahtarın durumu değişmeli.
Yukarıda ki 2 madde dikkate alınarak her sektör için uygulanması gereken anahtarlama dizileri
yukarıdaki gibi oluşturulur. Buna göre her faz için uygulanması gereken duty değerleri tablo-2’de verilmiştir.
Sıfır vektörünün katsayısı yada süresi olan t0 ise ta ve tb hesaplandıktan sonra
denklem-8 ile elde edilir.
DENEYSEL ÇALIŞMA ÇIKTILARI
Verilen bilgiler doğrultusunda yapmış olduğum çalışmanın çıktıları aşağıdaki gibidir. Yapacak olduğunuz yazılımınızı doğrulamanız için dalga şekilleriniz buradaki gibi olmalıdır. Çıktılar Stm32f303 mikrodenetleyicisinin 2 adet DAC(Dijital Analog Çevirici) bulunduğundan dolayı, hesaplanan 2 fazın duty değerleri osiloskopa basılmıştır.
Eğer faz-faz arasındaki sinyali bakacak olursanız, dalga şeklinin sinüs olduğunu göreceksiniz.
PSIM simülasyon programı için SVPWM fonksiyon bloğu oluşturdum. Simülasyon çalışmalarınızda kullanabilmeniz için bu bloğu kütüphane olarak yazının sonuna yakında ekleyeceğim.
hocam kütüphaneyi ekleyebilir misiniz, teşekkürler.
PSIM’de zaten Space-Vector üretme bloğu mevcutmuş o nedenle kendi kullanmış olduğum bloğu eklemedim.
SVPWM bloğuna ulaşmak için aşağıdaki yolu izleyiniz,
Elements -> SimCode For Code Generation -> General Hardware -> Space Vector PWM
Kullanımı ile ilgili sorun yaşarsanız bende kontrol edebilirim.
İyi çalışmalar.
Hocam Merhabalar
STM kodlarını paylaşabilir misiniz?
ferhatkaya3525@gmail.com
Merhaba,
Çalışmakta olduğum firmada bir ARGE projesi olarak yapmış olduğun bir çalışmaydı, bu nedenle kod paylaşımı yapamıyorum ancak takıldığınız noktaları aktarırsan yönlendirmeye gayret edebilirim.
Nazım hocam,bu konuya pratik bir örnek üzerinden açıklama yapabilirmisin,
böyle bir örneği siteye yükleyebilirmisin,
iyi akşamlar.
Nazım hocam,
bu işlemleri mikrodenetleyicide işlemek için
encoder ile rotorun açısal konumunu yani Teta açısını,
akım sensörü ile iki fazın akımlarını alırız,
bunlara başka hangi değerleri ilave etmeliyiz
Merhaba Mehmet,
Evet bu 3 değer vektör kontrol algoritması için yeterli.
İlerleyen aşamalarda rejeneratif frenleme algoritması için DC bara gerilimini de dahil etmelisin.
Nazım hocam,
SVPWM İzdüşüm Hesaplama Tablosu, Tablo1,Ana Vektör Katsayıları
Vx, iki vektör (V1—V3) arasında herhangi bir yerde bulunan Vektörel büyüklüğü mü simgeliyor,
ta’değerini hesaplarken Vx değerini nasıl bulacağız,
bununla ilgili bilgi bulamadım,makalenizde
Aynı soruyu bende merak ediyorum. Cevabını bulabildiniz mi?
Merhaba Mehmet, Merhaba Şaban
Üretmek istediğin referans vektörden geliyor Vx’in ne olduğu. Yani Vref = Vx * e^(jTheta).
Peki bu Vref nerede gelecek? Eğer Open-Loop bir deneme yapıyorsan belirli zaman aralıklarıyla bu Vref değerini kendin oluşturup SVPWM modülüne gönderirsen bu vektöre karşılık gelen duty değerleri mosfetlere aktarılıp motorun dönmesi sağlanacaktır.
FOC ile uğraşıyorsan Vref değerinin nereden geldiği http://www.nazimyildiz.com/2015/08/10/vektor-kontrol-giris/ bu yazımdaki blog diyagramda görülüyor.
Vref = Vx * e^(jTheta) = V_alfa + jV_beta, yani blok diyagramda gösterilen V_alfa ve V_beta değerleri Vref sinyalini oluşturuyor.
PMAC motor ile yaptığım çalışmanın videosu: https://www.youtube.com/watch?v=CKnicttITvE&feature=youtu.be
Yük altındaki videolarımı bulamadım, ani yük giriş çıkışlarında çok güzel tepki veriyordu, aşımsız(overshoot)temiz bir dinamik cevabımız vardı. Ani yük çıkışlarında BARA geriliminin hızlı artmasını önlemek içinde ek tedbirleri uygulamamıza eklemiştik. Yük testlerinde fuko freni kullanmıştık.
https://www.youtube.com/watch?v=y_9SpbISi4o&feature=youtu.be bu videoda da BLDC motora yazmış olduğum SVPWM fonksiyonunu kullanarak open-loop bir deneysel çalışma yapmıştım ancak böyle bir şeyi bilinçsiz bir şekilde denemenizi önermem çünkü akım kontrolü olmaması durumunda sürücünüze ya da motora zarar verebilirsiniz.