Picproje Elektronik Sitesi

ENDÜSTRiYEL OTOMASYON => Güç Elektroniği => Konuyu başlatan: Mucit23 - 16 Mart 2018, 11:48:28

Başlık: Space Vector Modulation(SVM) Konusu
Gönderen: Mucit23 - 16 Mart 2018, 11:48:28
Selamlar

Daha Önce BLDC sürücü çalışmalarımda Trapez sürüş tekniği ile motoru çalıştırmıştım. Şimdi Bir sonraki aşama Space Vector Modulasyonu işine girmek istiyorum. Eğer ileride FOC konularında çalışma yaparsam bu konuda onun bir parçası niteliğinde olacak.

Komutasyonu yine hall effect sensörlerle yapıyorum. Hal çıkışılarım 001 011 010 110 100 101 şeklinde sürekli değişiyor.

Bu şekilde bir vektöre düzlemden bahsediliyor.
(https://s10.postimg.cc/4qpor0l8p/400px-_Space_Vector_Modulation.gif)

Anladığım kadarıyla her konum için ayrı bir vektör hesaplanıyor. Rotora ait Vektör Statoru belirli bir alfa açısıyla takip ediyor. Motorun hızını ise Vektörün genliği yani Vref Belirliyor.

Anlamadığım nokta ise şudur. Benim Hall effect sensörlerime göre doğrudan bir tablo oluşturup bu tabloya göremi PWM değerlerini hesaplayacağım. Yukarıdaki Vektörel Eksen ile PWM üretme işini bağdaştıramadım.

Temel düzeyde anlatabilecek olan var mı?
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: devrecii - 16 Mart 2018, 14:48:48
Ben de tam olarak bilmiyorum ama tahminimi yazayım. En azından bi fikir olur
 

Daha öncesinden v1 ile v2 arasında mı ?  v5 ile v6 arasında mı ?
hangi arada oldğunu bulmalısın bu basit, hall sensör durumuna göre
hall sensör değiştiği an  açı 0 derece.

Hall sensör tekrar değiştiği an ise açıya  90 dersek geçiş süresi ise
dönüş hızımızı verir (sayılara takılmayalım 90 yada 10 anlaşılsın diye).

Hall sensör değiştiği an  açı 0 derece hız baz alınarak topluyorsn. 


derece += (90/hız) .....


Bu lineer

vsonuç(u,v,w) =(((90-derece)* v1(u,v,w)) + ((derece)*v2(u,v,w)))/90;



Bu circular iyisi

vsonuç(u,v,w) =(cos(derece)* v1(u,v,w)) + (sin(derece)*v2(u,v,w));


sonucu pwm ye gönderebilirz.
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: RaMu - 16 Mart 2018, 20:53:31
Bu konuları anlatan güzel videolar buldum,
bende onları izliyorum, bir ara konu açıp bu videolardan bahsetmeyi düşünüyordum.


Texas Ins ın eğitim seminerimi ne.
Bu videonun 1. dakikasından itibaren anlaıyor space vector olayını:
https://www.youtube.com/watch?v=VI7pdKrchM0&feature=youtu.be
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Zoroaster - 17 Mart 2018, 01:38:02
Alıntı yapılan: Mucit23 - 16 Mart 2018, 11:48:28
.....Anlamadığım nokta ise şudur. Benim Hall effect sensörlerime göre doğrudan bir tablo oluşturup bu tabloya göremi PWM değerlerini hesaplayacağım. Yukarıdaki Vektörel Eksen ile PWM üretme işini bağdaştıramadım.

Temel düzeyde anlatabilecek olan var mı?

SPWM de 60 dereceye yerlestirilmis sensorler degil encoder kullanacaksin. Cunku sin sinyalleri encoderdan gelen aci bilgisinden uretilecek.

Sin sinyallerin genligi, torku ve hizi belirleyecek.

60 derecelik dilimler gene encoderdan gelen bilgiyle olusturulacak.

Eger encoder kullanmayip 60 dereceye yerlestirilmis 3 sensorle bu isi yapmaya kalkarsan grafikte verdigin sadece v1,v2,,,v6 vektorlerini olusturabilirsin ki bu da trapezoidal surusun cok otesine gecmez.

V1 ve V2 vektorleri arasindaki aciyi supurebilmek icin cok daha detayli aci bilgisine ihtiyacin olacak. Bu da encoder ile mumkun.

SPWM olayinda her bir segmentte  oyle bir UV, UW, VW pwm gerilimleri ureteceksin ki bu voltajlar aralasindaki fark sana sin(Teta), Sin(Teta+120) ve Sin(Teta+240) voltajlarini verecek.

http://www.cncdesigner.com/wordpress/?p=6675
http://www.cncdesigner.com/wordpress/?p=6925

Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Mucit23 - 17 Mart 2018, 09:51:16
Abi Elimde birkaç çeşit ESC var onların çıkışını motor bağlı iken inceledim. Trapez Sürüş Tekniği yok Gerilimin Harmonikli bir sinüs olduğunu gördüm. Düşünüce ESC Sensörsüz komutasyon yapıyor. Enkoder vs birşey yok. Çıkış gerilimini nasıl bu kadar sinüse benzetmiş olabilir? 

Burada da bir arkadaş hall Sensör ile yapmış.
https://www.youtube.com/watch?v=nHKQ4dAHFxg

Şimdilik Elimde enkoder yok ama satın alacağım. Enkoder Gelene kadarda SVM nin alt yapısını oturtup hall sensörlerle çalıştırmam gerekiyor. SVM Alt yapısını oturtturduktan sonra Enkoder bağlayıp FOC konusuna bakacağım.
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Zoroaster - 17 Mart 2018, 10:08:19
Sinus voltaj vermek sorun degil. Önemli olan açısal hızın sabit kalacak mi?

Yoksa sinüssel voltajı 0..60 aralığında ver sensörden komutasyon bilgisi gelirse sektör atla. Bu mantıkla kurulmus duzenekte sinyale bakarsan harmonikli bir sinüs görürsün. Fakat amac bu degil.

Bu arada SPWM de voltaj hiç bir zaman saf sinüs olmaz. Çünkü pwm voltajlar arasındaki farklar sinüs üretecek. Dolayısı ile scopla faz voltajlarına baktığında acaip bozuk bir gerilim şekli görürsün. Fakat scopu faz faz arasına takarsan o zaman temiz sinyal görürsün.

Önemli olan sinus teta da teta acısı 0'dan 60'a geldiğinde tam o anda sensor sektor atla diyebilecekmi? Bu önemli. Bu da ancak encoder ile ile olur kullanılacak teta doğrudan mil açısından okunur. 60 dereceye gelindiğinde tam o anda 60 derece sensörün de sinyal verir.

FOC ile Step motor döndürürken encoder falan kullanmıyorum. Çünkü biliyorum ki step motor sargısına uygulanan voltajla adım atar. Eğer motoru aşırı yüklemezsem düzgün sinüse karşılık düzgün mil dönüşü elde ederim.
Fakat brushless motorda olay bu kadar basit değil. Yük ile rotor açısı kayar ve bu kaymayla eş zamanlı sin sinyallerini de kaydırmalısın.

Eğer motor yüksüz ise hiç sensör kullanma ve düşük frekansda FOC ile döndür.
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Mucit23 - 17 Mart 2018, 10:29:47
Anladım abi birkaç deneme yapacağım artık. Şimdi senin yazını okuyordum. Birşey aklıma takıldı.
Böyle bir Tablo oluşturduk diyelim.

(https://s18.postimg.cc/wyrvqrlnt/SPWM2.jpg)
Burada uygulanması gereken işaretin -V/3 veya -2V/3 olduğu durumlarda Sadece Low Side Moslara PWM uygulanacak anladığım kadarıyla Bu doğrumudur? Üst kanalı kapatıyoruz. Peki Sinyalin V/3 veya 2V/3 olduğu durumlarda aynı kola ait High Side ve Low Side Moslara Birbirinni Tersi PWM uygulamamın bir sakıncası varmı? Timerim Önlem almazsam eğer bu şekilde çalışıyor çünkü

Vektörün Modülü ile PWM arasındaki ilişki ise doğrudan şu şekilde sanırım.  PWM %100 açık iken Motora V uygulanıyorsa %33 açık iken V/3 olur diyeceğim. 2V/3 için %66. Peki Motorun dönüş hızını hangi parametre ayarlıyor.

Genel bir PWM değeri olması lazım ama bu vektörlerin modülleri ile nasıl bağdaştıracam onu anlayamadım
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Zoroaster - 17 Mart 2018, 11:11:57
Amacımız SVPWM ile 3 fazlı gerilim üretmek olsaydı hiç sorun yoktu. Encoderdan tespit edilmesini istediğim açıyı sanki encoderdan okumuşuz gibi matematiksel olarak 0,1,2,3...60 diye artırıp 60 derece ulaştığımızda sektör atlatmamız yeterli olurdu. Gene aynı şekilde 60,61,62,....120 yapıp diğer sektöre sıçrardık ve 3 fazlı gerilimler üretilmiş olurdu. Üretilen gerilimin frekansı açıyı belirlemede kullandığımız gecikme parametresine bağlı olurdu. Fakat işin içine motor girince açıyı bu şekilde artırıp milin de bu açıyı takip etmesini bekleyemeyiz. (Step motor istisna) Dolayısı ile verdiğin videodaki aktör motor milini eliyle gelişigüzel değerde frenlemeye kalksaydı o motor saçmalardı. (60 derecelik bölge içinde açısal hız sabit kalmazdı)

SVPWM 6 çıkışımız var ve merkeze göre simetrik pwm tekniği kullanılıyor. Her bir kolun H ve L çıkışı birbirinin inverti.

Sinus sinyalleri doğrudan pwm registerlerine yazmıyoruz. Arada bir hesap daha var. Mesela, bir segmentte 3 PWM den sadece ikisi ile oynuyoruz. Diğer segmentte bir başka ikili ile. Oynamadığımız üçüncü PWM ise diğer 2 pwm den hesaplanıyor.

T pwm peryodu, T1 ve T2, 1. ve 2. pwm on süreleri ise T3 hep T-T1-T2 oluyor.

Yazımın devamında zaten bu konuyu detaylı anlatacağım.

FOC yazımda motor devrinin frekansla değil voltajla ayarlandığından bahsetmiştim. Voltajı artırınca mil daha çabuk konum değiştiriyor....

Olaylar mil açısına bağlı olarak gelişiyor.

AC motorun devir sayısı frekansla değişir ama biz FOC tekniğinde AC frekansı harici kaynaktan değil mil pozisyonundan elde ettiğimiz için pwm sinyaller mil açındaki değişim hızını değiştiriyor dolayısı ile frekans değişiyor.

Alıntı YapVektörün Modülü ile PWM arasındaki ilişki ise doğrudan şu şekilde sanırım.  PWM %100 açık iken Motora V uygulanıyorsa %33 açık iken V/3 olur diyeceğim. 2V/3 için %66. Peki Motorun dönüş hızını hangi parametre ayarlıyor.

V1=0, V2=0, V3=V iken -V/3 -V/2 2V/3 voltajları oluşuyor. V1 ve V2 için duty %0 iken V3 için duty %100

H bridge ile yüke en fazla V voltajı verebilirken 3 half bridge ile yıldız baglı yükün her birine en fazla 2V/3 voltajı uygulayabiliyoruz.
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Mucit23 - 19 Mart 2018, 18:14:17
Abi Adım Adım gitsem iyi olacak. Şuanda Döküman karmaşası içerisindeyim. Kafam allak pullak oldu.

Yapı hala kafamda tam olarak oturmuş değil. Bu yüzden olayı koda dökemedim henüz. Hafta sonuda uğraşamadım pek.

Abi senin söylediklerine göre T1 ve T2'yi nasıl hesaplayacağım? Bunu tam olarak anlayabilmiş değilim.  İncelediğim bir döküman da şu şekilde yapmış. Anladıklarımı anlatayım yanlışım var ise sen düzelt

İlk Başta ta, tb ve t0 olmak üzere 3 ayrı süre hesaplamış. Bunlar Her sektör için hesaplanıyor.
(https://s10.postimg.cc/nx13cd0ih/Ekran_Al_nt_s.jpg)

Burada Tch PWM Periyodu. 13 ve 14. denklemlerde verilen K, sektör numarası. 1-6 arası değişebilir.

Teta (θ) ve Vref buradaki denklemde şu şekilde verilmiş.
(https://s10.postimg.cc/tl7e3fkc9/Ekran_Al_nt_s_2.jpg)

Teta Zaten Sin(2pi/3) olmak üzere sabit. Yaklaşık 0.866 gibi bir değer. Vref ise Bu denklemden anladığım kadarıyla Max 2V/3 olarak oluyor. Bi önceki mesajın sonunda söylemiştin abi. Daha Fazla arttırırsak Over Modulation denen olay gerçekleşiyor. Fakat normal olarak hız ile oynamak için Vref Değeri 0<Vref<2Vdc/3 arasında değişmesi gerekiyor. Motor hızını bu parametre değiştiriyor.

Şimdi ta, tb ve t0 sürelerini Hesapladık. Bundan sonra Sektör numarasına göre 3 adet pwm sinyali üreteceğiz.

Buda aşağıdaki tabloya göre üretiliyor.
(https://s10.postimg.cc/g6ub73g5l/Ekran_Al_nt_s_3.jpg)

Örneğin 1. Sektördeysek ve STM32 için konuşursak Timer Capture Compare Registerleri aşağıdaki gibi güncellenecek.

TIM1->CCR1=ta+tb+t0
TIM1->CCR2=tb+t0
TIM1->CCR3=t0

Referans aldığım döküman budur.
https://waset.org/publications/5205/space-vector-pwm-simulation-for-three-phase-dc-ac-inverter

@Zoroaster Abi keşke buradaki (http://www.cncdesigner.com/wordpress/?p=6925) yazının devamı gelse.





Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: devrecii - 19 Mart 2018, 19:21:43
Bügün ben elimdeki bldc motoru söküp bi inceledim;

Motorun çevresinde yekpare bir mıknatıs olmasına rağmen mıknatıs üzerinde 12 tane N-S kutpu var.

Yani motora 360 derecelik akım verdiğinde motorun rotoru  sadece 30 derece dönüyor ,  bir proje için kullanacaktım büyük hayal kırıklığına uğradım

Senin motor da büyük ihtimalle böyledir öğrenmen çok kolay tellerin herhangi iki tanesine 5v akım verip motoru elinle çevirmeye çalış tık tık diye
atlayarak gidiyor sayabilirsin.

Bu durumda sinus modulasyonu yapmamnın hiçbir anlamı yok , zaten kısacık bi yol var bunun içi sins kasmaya gerek yok bence,

Yukarıda verdiğin resim tropozid resim doğru değil. Rotor o şekilde hareket etmiyor ne yazkki.   

Bu motorlar her durumda çalışıp seni yanıltabilir , çok şey yanlış da olsa çalışıyor Hall sensörlerin yerlerin,i motor mıknatısında kaç tane NS var
yerlerini bulup sensörleri uygun bir şekilde konumlandırmaya dikkat etmen gerekir.




Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Mucit23 - 19 Mart 2018, 20:46:15
Elimde birkaç çeşit motor var. Amaç motoru döndürmek değil konuyu anlamaya çalışıyorum. Yoksa motoru döndürmek döner alan oluşturmak çok. zor değil.
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Mucit23 - 20 Mart 2018, 12:26:56
Benim bu uygulamada 0-360 derecelik bir sinüs üretecek olsam açıyı 0-360 derece arasında mı değiştireceğim?

Yukarıdaki kurduğum mantıkta bir hata varmı? 13,14 ve 15 nolu denklemlerle ta,tb ve t0 sürelerini hesapladım. Bir açı değişkeni belirleyip açıyı 0-360 derece arasında sürekli arttırdım. Daha sonra bu açıya göre sektör numarasını hesaplayıp (açı/60) o sektöre ait tabloya göre PWMU,PWMV ve PWMW değerlerini hesapladım

Hesapladığım değerler bazı noktalarda aniden işaret değiştiriyor. Yanlış olduğunu düşündüm. PWM donanımına vermeden önce hesapların doğruluğunu nasıl test ederim. Motordan bağımsız olarak 3 fazlı sinüs üretmeye çalışıyorum.

@Zoroaster Abi vaktin varsa eğer bakarmısın?
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Cemre. - 20 Mart 2018, 22:07:19
Merhaba @Mucit23 hocam,

Aşağıdaki bir MATLAB kodu ama konuyu anlamanıza yardımcı olacaktır eminim ki,


clear
clc
Ang = 0.0;

Mod_Index = 2/sqrt(3);
i = 1;
RAD2DEG = pi/180;

for k = 1:1:2
    for Ang = 0:1:359
        Mag = 0.5;
        Ang_R = mod(Ang, 60) * RAD2DEG;
        Ta = ((Mag * cos(Ang_R)) / Mod_Index) - (((Mag * sin(Ang_R)) / Mod_Index) * (1 / sqrt(3)));
        Tb = ((Mag * sin(Ang_R)) / Mod_Index) * (2 / sqrt(3));
        Tz = 1 - (Ta + Tb);
        if Ang>=0 && Ang<60
            Pa(i) = Tz/2 + Ta + Tb;
            Pb(i) = Tz/2 + Tb;
            Pc(i) = Tz/2;
        elseif Ang >= 60 && Ang < 120
            Pa(i) = Tz/2 + Ta;
            Pb(i) = Tz/2 + Ta + Tb;
            Pc(i) = Tz/2;
        elseif Ang >= 120 && Ang < 180
            Pa(i) = Tz/2;
            Pb(i) = Tz/2 + Ta + Tb;
            Pc(i) = Tz/2 + Tb;
        elseif Ang >= 180 && Ang < 240
            Pa(i) = Tz/2;
            Pb(i) = Tz/2 + Ta;
            Pc(i) = Tz/2 + Ta + Tb;
        elseif Ang >= 240 && Ang < 300
            Pa(i) = Tz/2 + Tb;
            Pb(i) = Tz/2;
            Pc(i) = Tz/2 + Ta + Tb;
        elseif Ang >= 300 && Ang < 360
            Pa(i) = Tz/2 + Ta + Tb;
            Pb(i) = Tz/2;
            Pc(i) = Tz/2 + Ta;
        end
        i=i+1;
    end
end
subplot(3,1,1)
plot(Pa)
ylim([0 1])
grid on
grid minor
subplot(3,1,2)
plot(Pb)
ylim([0 1])
grid on
grid minor
subplot(3,1,3)
plot(Pc)
ylim([0 1])
grid on
grid minor
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Mucit23 - 20 Mart 2018, 22:15:21
Hocam valla çok iyi olur. Bende bugün biraz matlabda deneyeyim dedim. ST de denediğim kodu matlaba yarıbuçuk geçirdim ama akşam derse gidince yarı kaldı. Bana işin mantığını anlayabileceğim bir kod parçası lazım.
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Cemre. - 20 Mart 2018, 22:21:45
Alıntı yapılan: Mucit23 - 20 Mart 2018, 22:15:21
Hocam valla çok iyi olur. Bende bugün biraz matlabda deneyeyim dedim. ST de denediğim kodu matlaba yarıbuçuk geçirdim ama akşam derse gidince yarı kaldı. Bana işin mantığını anlayabileceğim bir kod parçası lazım.

Yukarıda paylaştım. Sorunuz olursa yardımcı olmaya çalışayım.
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Mucit23 - 20 Mart 2018, 22:24:02
Teşekkürler hocam yarın deneyeceğim. Şuan zaten ben nerde hata yaptım ona bakıyorum. Benim yazdığım kodda sizinkine benziyor.
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Mucit23 - 21 Mart 2018, 14:52:36
Hocam verdiğiniz yapıyı matlabda çalıştırdım. Aynı kodları şimdi Keilde STM32 üzerinde deniyorum. Matlabde Magnitude değeri 1 olduğu zaman aldığım sinyaller 1 arasında değişiyor. Mag değeri 0.5 olduğunda çıkış sinyalide ona göre düşüyor. Keilde yazdığımda ise Magnitude değeri 1 olduğu zaman aldığım sinyalin max değeri 0.66 oluyor.

Burada sinyali bozmadan Magnitude değerini ne kadar arttırabilirim?
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Cemre. - 21 Mart 2018, 15:00:19
Merhaba,

Magnitude aslında bir çarpan ve normalde max değeri belirli olmalı. Siz daha ziyade Modulasyon Index'i isimli bir değişken daha tanımlayıp onu da çarpan olarak denklemlere ekleyin. Aynı magnitude için farklı modülasyon indexlerinde farklı sonuçlar alabiliyor olun. Bu size esneklik sağlayacaktır. Benim denklemlerdeki mod_index değişkeni aslında max_magnitude gibi bir değişken olmalıymış. Üstünkörü yazınca böyle kalıyor bazen hatalı olarak. Mag değerini de max_mag ile saturasyona sokun tabiki. Bu şekilde max_mag değeri duty max değerine eşit olabilir.

Örn, PWM CCR Max değeri 1023 ise siz de bootstap'tan dolayı misal max_mag = 999 gibi bir şey yapabilirsiniz. Mag değerini de svpwm hesabı yapan fonksiyonda saturasyona sokarsınız.
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Zoroaster - 23 Mart 2018, 16:12:44
Alıntı yapılan: Mucit23 - 21 Mart 2018, 14:52:36
Hocam verdiğiniz yapıyı matlabda çalıştırdım. Aynı kodları şimdi Keilde STM32 üzerinde deniyorum. Matlabde Magnitude değeri 1 olduğu zaman aldığım sinyaller 1 arasında değişiyor. Mag değeri 0.5 olduğunda çıkış sinyalide ona göre düşüyor. Keilde yazdığımda ise Magnitude değeri 1 olduğu zaman aldığım sinyalin max değeri 0.66 oluyor.

Burada sinyali bozmadan Magnitude değerini ne kadar arttırabilirim?

SVPWM ile ilgili yazımda hatırlarsan anahtarlar DC V kaynağı üzerinden yıldız yükü beslerken yükün her bir fazında en fazla 2V/3 voltajı oluşuyordu.

V=1 için  2/3=0.66 olduğundan senin de max değer olarak 0.66 görmen çok normal.

Yazım henüz tam bitmedi eğer işlem hatası yapmadıysam sinüsel bozulmaya uğramadan en fazla 0.577 V elde edebilirsin.
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Mucit23 - 27 Mart 2018, 12:02:08
Birkaç gündür işlerim dolayısıyla il dışına çıkmıştım. Bu yüzden biraz ara vermek zorunda kaldım.

Hocam şimdi Motor üzerinde deneme yaptım ama motoru düzgün çalıştıramadım. @Cemre. hocamın verdiği algoritmayı çalıştırıyorum. Yaptıklarımı anlatayım hatam varsa düzeltin.

İlk önce aşağıdaki tablodan hal sensörden gelen bilgiye göre açıyı belirledim. Şöyle bir tablo oluşturdum.


const uint16_t angle_map[7]={0,240,120,180,0,300,60};

Hall sensörlerden Exint kesmesi geldiğinde aşağıdaki kod parçacığıyla açıyı belirledim.

angle=angle_map[PMSM_HallSensorsGetPosition()]

PMSM_HallSensorsGetPosition fonksiyonu 001 011 010 110 100 101 şeklinde çıkış veriyor.

Main programda ise ADC den okuduğum değere göre genliği belirleyip cemre hocamın kodlarını çalıştırıyorum.
amp=(float)ADCConvertedValue/4095.0;

ta=calc_ta_time(angle,amp);
tb=calc_tb_time(angle,amp);
    tz = (1 - (ta + tb)) / 2;
   
if(angle<60)
{
  pwmu = ta + tb + tz;
pwmv = tb + tz;
pwmw = tz;
}
else if(angle>=60 && angle<120)
{
  pwmu = ta + tz;
pwmv = ta + tb + tz;
pwmw = tz;  
}
else if(angle>=120 && angle<180)
{
pwmu = tz;
pwmv = ta + tb + tz;
pwmw = tb + tz;
}
else if(angle>=180 && angle<240)
{
  pwmu = tz;
pwmv = ta + tz;
pwmw = ta + tb + tz;
}
else if(angle>=240 && angle<300)
{
  pwmu = tb + tz;
pwmv = tz;
pwmw = ta + tb + tz;
}
else if(angle>=300 && angle<360)
{
  pwmu = ta + tb + tz;
pwmv = tz;
pwmw = ta + tz;
}

pwmu=pwmu*4500;
pwmv=pwmv*4500;
pwmw=pwmw*4500;

PMSM_SetPWM_UVW((uint16_t)pwmu,(uint16_t)pwmv,(uint16_t)pwmw);


PWM Periyodum yada Tim1 ARR değeri 16Khz için 4500, FOSC frekansım 72Mhz. Tim1 Presacaller değeri 1/1 dolayısıyla 72000000/4500 =16Khz yapıyor. Motoru 16Khz'de anahtarlıyorum.

Genlik değerini arttırdığımda motor videodaki gibi hareket ediyor.
https://www.youtube.com/watch?v=y7PKaFk_cvI

Bu komutasyon hatasımıdır? Neden olur bu durum?
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Zoroaster - 27 Mart 2018, 12:15:20
Bana aci tablon hatali gibi geldi

const uint16_t angle_map[7]={0,240,120,180,0,300,60};
001 011 010 110 100 101 şeklinde çıkış veriyor.

1,3,2,6,4,5

0,60,120,180,240,300 siraya sokarsak

const uint16_t angle_map[7]=0,0,120,60,240,300,180}; olmali

Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Cemre. - 27 Mart 2018, 13:05:10
Angle 60 derecelik dilimlerle mi değişiyor? Hall sensörleri dikkate almadan, çok düşük bir hızda angle 0-360 gezdirecek şekilde çalıştırmayı dener misiniz? Bir de Bootstrap'tan ötürü doluluğu 4500 yerine atıyorum 4500*95/100 gibi bir değer ile çarpmanızı tavsiye ederim. Bootstrap kapasitörlerine şarj olacak süreyi tanıdığımızı garanti etmiş olalım.
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: M.Salim GÜLLÜCE - 27 Mart 2018, 14:24:24
Mucit anladığım kadarıyla 3 faz çalışan fırçasız motor sürmeye çalışıyorsun.
1-Temel olarak sinüs ile sürüldüğünde dengeli bir tork ve dönüş elde edilir.
2-Digital olarak sürmen gerektiğinden Sinüs e simule etmelisin.
3-Dünüş hısını Faz frekansı Dönüş torkunu ise Faz akımı belirler. (tüm fazların dengeli ve Faz açısı dışında eşit olduğunu belirtmek gerek)
4-Akım seviyesi torku belirlerken dönüş momentlerinde yük etkisine bağıl bir denge sağlamayı gerektirir.
5-Sürme işleminde Akımı belirlemek için PWM kullanmak zorunda olduğundan Bir periyodluk işlemi Sinüs simulasyonu (Sinüs tablosu) ile ve Darbe boşluk katsayısı ile belirlenebilir olduğundan PID kullanmak zorundasın.
6-PID için geri besleme referansı Hall effekt çıkışları olacak şekilde istenen deviri oluşturmada refeans teşkil etmelidir.
7-Düşük devirde Period başına PWM pals adedi artırıldığında stabil olacağından Yüksek devirde ise Dönüş momenti nedeniyle PWM pals adedini düşürmen verimliliği artıracaktır.

Mucit kardeşim muhtemelen bunları biliyorsun ve uygulamaya çalışıyorsun.
Aklımın erdiğince anlatmaya çalıştım. Sörçü lisan affola.

Acizane istenen devirle değişken yükle fırçalı motor sürmeye çalıştığımda da benzer problemler beni sıkıntıya sokmuştu.
umarım karınca kararınca faydam olur.
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Mucit23 - 27 Mart 2018, 17:51:58
Alıntı yapılan: Cemre. - 27 Mart 2018, 13:05:10
Angle 60 derecelik dilimlerle mi değişiyor? Hall sensörleri dikkate almadan, çok düşük bir hızda angle 0-360 gezdirecek şekilde çalıştırmayı dener misiniz? Bir de Bootstrap'tan ötürü doluluğu 4500 yerine atıyorum 4500*95/100 gibi bir değer ile çarpmanızı tavsiye ederim. Bootstrap kapasitörlerine şarj olacak süreyi tanıdığımızı garanti etmiş olalım.

Hocam denedim o şekilde de dönmüyor. Farklı bir sorun var gibi. Diğer bir taraftan boostrap için tolerans çok fazla. 4500=%100 duty. Benim SVPWM fonksiyonlarıma genlik olarak 1 verirsem max 0.66 gibi çıkış alıyorum. Dolayısıyla Duty çok yükselmiyor.

@Zoroaster Abi O şekilde de denedim. Önceden zorlada olsa dönüyordu. Şimdi sadece ileri geri yapıyor. Fazları değiştirdim aynı. Komutasyon sırasını değiştirdim ters yöne dönüyor ama yine aynı videodaki gibi dönüyor. Bana göre komutasyon yada açıyla ilgili bir durum. Doğru açıyı doğru sıralamayı nasıl tespit edebilirim abi?

@MehmetSalimGüllüce Bilgi için teşekkürler. Bende öğrene öğrene birşeyler yapmaya çalışıyorum. SVPWM konusundayım bu işi tam oturtamadım henüz.
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Cemre. - 27 Mart 2018, 17:58:47
Basit bir kontrol için V/f oranı sabit olacak şekilde deneyebilirsiniz.

Bir de, önce belirli bir magnitude'da 0derece açıda 200-300ms gibi bekletip rotorun başlangıç pozisyonuna gelmesini bekleyip daha sonra 0-360 gezecek şekilde deneyebilirsiniz.

Ben basit bir V/f kontrolü ve rampa fonksiyonu yazarak servo motor çalıştırmıştım. Uzun rampa süresi ile kaldırmak önemli. Aksi halde motor devrilip sizinki gibi hareketler sergileyecektir.
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Cemre. - 27 Mart 2018, 18:00:36
Alıntı yapılan: Mucit23 - 27 Mart 2018, 17:51:58
Benim SVPWM fonksiyonlarıma genlik olarak 1 verirsem max 0.66 gibi çıkış alıyorum. Dolayısıyla Duty çok yükselmiyor.

Burayı anlayamadım. Neden? Akşam eve gidince bir ekran görüntüsü paylaşacağım bununla alakalı.
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Mucit23 - 27 Mart 2018, 18:15:23
Hocam ayrıntılı debug yapmadım. Matlab'da duruö böyle değil. Genlik değerini 1 verirsem max genlik 1 oluyor ama STM32'de böyle olmuyor. Yapılan işlem aynı ama sonuç farklı.

Buda tam çalışan kod.
int main(void)
{
SysTick_init();

GPIO_Configuration();
NVIC_Configuration();
USART2_Configuration();
ADC_DMA_Configuration();
  PMSM_PWMTimer_Init();
PMSM_HALL_Init();

while(1)
  { 

amp=(float)ADCConvertedValue/4095.0;

ta=calc_ta_time(angle,amp);
tb=calc_tb_time(angle,amp);
    tz = (1 - (ta + tb)) / 2;
   
if(angle<60)
{
  pwmu = ta + tb + tz;
pwmv = tb + tz;
pwmw = tz;
}
else if(angle>=60 && angle<120)
{
  pwmu = ta + tz;
pwmv = ta + tb + tz;
pwmw = tz;  
}
else if(angle>=120 && angle<180)
{
pwmu = tz;
pwmv = ta + tb + tz;
pwmw = tb + tz;
}
else if(angle>=180 && angle<240)
{
  pwmu = tz;
pwmv = ta + tz;
pwmw = ta + tb + tz;
}
else if(angle>=240 && angle<300)
{
  pwmu = tb + tz;
pwmv = tz;
pwmw = ta + tb + tz;
}
else if(angle>=300 && angle<360)
{
  pwmu = ta + tb + tz;
pwmv = tz;
pwmw = ta + tz;
}

pwmu=pwmu*4500;
pwmv=pwmv*4500;
pwmw=pwmw*4500;

PMSM_SetPWM_UVW((uint16_t)pwmu,(uint16_t)pwmv,(uint16_t)pwmw);

    sprintf(txt,"angle=%d %f %f %f\n",angle,pwmu,pwmv,pwmw);
  printf(txt);
// delay_ms(1);
//
// angle++;
// if(angle>359)
// {
//    angle=0;
// }

  }
}


float calc_ta_time(uint16_t Angle, float amplitude)
{
  float AngleRad = (Angle % 60) * RAD2DEG;
float Ta = 0;

Ta = ((amplitude * cos(AngleRad)) / Mod_Index) - (((amplitude * sin(AngleRad)) / Mod_Index) * (1/sqrt(3)));

return Ta;
}

float calc_tb_time(uint16_t Angle, float amplitude)
{
  float AngleRad = (Angle % 60) * RAD2DEG;
float Tb = 0;

  Tb = ((amplitude * sin(AngleRad)) / Mod_Index) * (2 / sqrt(3));

return Tb;
}
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: marecrisium - 27 Mart 2018, 21:18:26
Alıntı yapılan: Mucit23 - 27 Mart 2018, 18:15:23
Hocam ayrıntılı debug yapmadım. Matlab'da duruö böyle değil. Genlik değerini 1 verirsem max genlik 1 oluyor ama STM32'de böyle olmuyor. Yapılan işlem aynı ama sonuç farklı.

Buda tam çalışan kod.
int main(void)
{
   SysTick_init();
   
   GPIO_Configuration();
   NVIC_Configuration();
   USART2_Configuration();
   ADC_DMA_Configuration();
  PMSM_PWMTimer_Init();
   PMSM_HALL_Init();
   
   while(1)
  { 
     
      amp=(float)ADCConvertedValue/4095.0;
   
      ta=calc_ta_time(angle,amp);
      tb=calc_tb_time(angle,amp);
    tz = (1 - (ta + tb)) / 2;
   
      if(angle<60)
      {
        pwmu = ta + tb + tz;
         pwmv = tb + tz;
         pwmw = tz;
      }
      else if(angle>=60 && angle<120)
      {
        pwmu = ta + tz;
         pwmv = ta + tb + tz;
         pwmw = tz;       
      }
      else if(angle>=120 && angle<180)
      {
         pwmu = tz;
         pwmv = ta + tb + tz;
         pwmw = tb + tz;     
      }
      else if(angle>=180 && angle<240)
      {
        pwmu = tz;
         pwmv = ta + tz;
         pwmw = ta + tb + tz;         
      }
      else if(angle>=240 && angle<300)
      {
        pwmu = tb + tz;
         pwmv = tz;
         pwmw = ta + tb + tz;   
      }
      else if(angle>=300 && angle<360)
      {
        pwmu = ta + tb + tz;
         pwmv = tz;
         pwmw = ta + tz;         
      }
     
      pwmu=pwmu*4500;
      pwmv=pwmv*4500;
      pwmw=pwmw*4500;
     
      PMSM_SetPWM_UVW((uint16_t)pwmu,(uint16_t)pwmv,(uint16_t)pwmw);
     
    sprintf(txt,"angle=%d %f %f %f\n",angle,pwmu,pwmv,pwmw);
     printf(txt);
//       delay_ms(1);
//     
//      angle++;
//      if(angle>359)
//      {
//         angle=0;   
//      }   

  }
}


float calc_ta_time(uint16_t Angle, float amplitude)
{
  float AngleRad = (Angle % 60) * RAD2DEG;
   float Ta = 0;
   
   Ta = ((amplitude * cos(AngleRad)) / Mod_Index) - (((amplitude * sin(AngleRad)) / Mod_Index) * (1/sqrt(3)));
   
   return Ta;
}

float calc_tb_time(uint16_t Angle, float amplitude)
{
  float AngleRad = (Angle % 60) * RAD2DEG;
   float Tb = 0;
   
  Tb = ((amplitude * sin(AngleRad)) / Mod_Index) * (2 / sqrt(3));
   
   return Tb;
}



Hocam kodun ta ve tb sürelerini hesaplama fonksiyonlarında bir gariplik var gibi.



float AngleRad = (Angle % 60) * RAD2DEG;


Burada Angle değeriniz için {0,240,120,180,0,300,60} değerinden birisi olması gerekli, bu değerlerin 60'a göre modu hepsinde sıfır olmaz mı ?
Her açı için aynı AngleRad değeri hesaplanıyor gibi geldi bana.


Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Cemre. - 27 Mart 2018, 21:21:50
@Mucit23

CCRx_Max değeri ile grafikteki max değerin eşit olduğunu görebilirsiniz. Sizinle paylaştığım yapının C implementasyonundan farklı bir kod çalıştırmıyorum ben de.

(https://s18.postimg.cc/ih8jzfq5x/svpwm.png) (https://postimg.cc/image/ih8jzfq5x/)
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Mucit23 - 27 Mart 2018, 21:41:45
Hocam ona yarın ayrıntılı olarak bakacağım ama öncelikle 60'ar derecelik komutasyonda neden düzgün bir döner alan elde edemiyorum onu çözmem gerekiyor. Şuanda genliğin tam 1 olmaması çok da sorun yaratmıyor.


@marecrisium evet haklısın açının 60'a modu sürekli sıfır oluyor fakat açıyla birlikte sektörde değiştiği pwm değerleri sürekli değişiyor. Sorun  burada olabilirmi emin değilim.
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Cemre. - 27 Mart 2018, 21:45:52
Hocam, siz bu açı değerini 0-360 derece arasında küçük adımlarla gezdirmiyor musunuz? 0, 60, 120... gibi hızlı atlamalarla çalışacaksanız svm'in ne anlamı var anlamadım?
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Mucit23 - 27 Mart 2018, 23:30:47
Hocam şuan için değil. 60'ar derece arttırarak döner alan oluşturabilsem bir sonraki aşamada enkoder temin edip enkoder ile bu işlemi yapacağım. Ozaman dediğiniz gibi doğrudan açıyla oynayıp konum kontrolü yapmaya çalışacağım.

Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: bulut_01 - 28 Mart 2018, 08:36:49
enkoder yok ise svpwm ile ugrasmakda bos gibi geliyor.
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Cemre. - 28 Mart 2018, 09:52:16
Alıntı yapılan: bulut_01 - 28 Mart 2018, 08:36:49
enkoder yok ise svpwm ile ugrasmakda bos gibi geliyor.

Sensörsüz Vektör Kontrol'de de enkoder yok :)
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: bulut_01 - 28 Mart 2018, 11:12:41
lineer biçimde 360 dereceyi nasıl hesaplayıpda her acıda sinyal oluşturacak? enkoder olmadan.
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Mucit23 - 28 Mart 2018, 11:22:44
@Cemre. Hocam tamam hall komutasyonu boşverdim. Bir döngü içerisinde açı değerini sürekli 0-360 arasında arttırdım ama yine döner alan oluşmuyor. Döner alanın genliğini bir potansiyometre ile değiştiriyorum.

Açıyıda söngü içerisinde aşağıdaki gibi sürekli arttırıyorum.
      
angle++;
if(angle>359)
{
   angle=0;
}
delay_us(100);


Genliği arttırdığımda motorun döner alanı takip etmesi gerekir fakat motorda ufak tefek kıpırdamalar dışında hareket yok. Atladığım şey nedir neyi yanlış yapıyorum hocam?
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: bulut_01 - 28 Mart 2018, 11:40:31
bence atladıgın nokta rotorun pozisyonunu bilmemen.
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Cemre. - 28 Mart 2018, 11:56:47
Alıntı yapılan: bulut_01 - 28 Mart 2018, 11:12:41
lineer biçimde 360 dereceyi nasıl hesaplayıpda her acıda sinyal oluşturacak? enkoder olmadan.

İşte o da sensorsuz kontrolün konusu. Faz akımlarından estimate edeceksiniz vs. Buradaki konuyu çok dağıtır ama evet böyle bir şey var.

@Mucit23 hocam, sorunuza gelecek olursak, dedigim gibi başta bir hizalama prosesi isletmelisiniz. Mesela angle 0 iken 200 300ms boyunca bekleyin rotor pozisyonunun belirli bir acıya oturduğunu görün. Daha sonra 0-360 arasinda gezdirin bakalim nasıl tepki veriyor. Bir de buna ek olarak V/f prosedürü çalıştırmayı deneyin. Yani pottan max magnitude gelirken max dönüş frekansı olacak şekilde oradaki delay'i degistiren bir iki satir kod yazin. Açık çevrim olarak bu şekilde çalışması lazım motorun.

Telefondan yazdım kusura bakmayın. PCye geçtiğimde duzeltecegim.
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Mucit23 - 28 Mart 2018, 13:13:27
Hocam frekans çok düşük. Buna gerek varmıki ? Kutup sayısı ile ilgili olabilir.  Döngüyü biraz daha hızlandırıp deneyeyim.
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Mucit23 - 06 Nisan 2018, 12:28:04
Selamlar

Vizelerim Araya girdiği için 2 haftadır proje ile doğru düzgün uğraşamadım. Bugün güzel gelişmeler oldu.

Bir önceki videoda

Motorun düzgün dönmemesinin sebebi döngü içerisinde döngüyü sekteye uğratan sprintf ve printf fonksiyonlarıymış.

sprintf(txt,"angle=%d %f %f %f\n",angle,pwmu,pwmv,pwmw);
printf(txt);

Bu kodların işlenmesi çok uzun sürdüğü için işlemler sekteye uğruyordu. Bunu kaldırdım açıyı yine kendim arttırdım ve motor dönmeye başladı. Daha sonra hall sensörlerden aldığım bilgiye göre açıyı 60'ar 60'ar arttırdım. Sonuç videodaki gibi.



Gayet stabil bir şekilde çalışıyor. Hatta sanki Blok komutasyona göre biraz daha sessiz çalışıyor. Emin değilim.

Osiloskop ile Faz Faz arası gerilimleri görüntüledim. Sinyal nedense çok gürültülü.
(https://s14.postimg.cc/dqffldnld/20180406_120055.jpg)
(https://s14.postimg.cc/awca8060h/20180406_120118.jpg)

Osiloskobun GND'sini W fazına bağlayıp Canlı ucları U ve V fazlarına bağlıyorum. Bu kadar çok gürültü olması normalmidir? Ölçüm hatası olabilirmi?
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Zoroaster - 06 Nisan 2018, 13:24:08
O meshur sinusel katlanmayi goremiyorum. Sanki pwm degerlerini hesaplayan rutin hemencecik saturasyona ugramis veriler uretiyor.

Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: M.Salim GÜLLÜCE - 06 Nisan 2018, 14:30:10
Alıntı yapılan: Mucit23 - 06 Nisan 2018, 12:28:04Osiloskobun GND'sini W fazına bağlayıp Canlı ucları U ve V fazlarına bağlıyorum. Bu kadar çok gürültü olması normalmidir? Ölçüm hatası olabilirmi?
Mucit kaardeşim bana pek anoprmal gelmedi. 3 fazdan birini GND farzedip ölçtüğünde mutlaka ve mutlaka Köprü çıkışının hiç bağlantı kurmadığı bir anını yakalar. Zaten Her faz için tamamen HI-Z durumuda bazı anlarda olmak zorunda. Yani GND Kabul ettiğin nokta boşa çıkarsa ölçüm zıplamaları normaldir.

Acizane tavsiyem çok yüksek değer olmasada senin akım kapasiteni bozmayacak değerde + ya ve - ye eşdeğer direnç bağlayarak GND noktası şeklinde ölçmendir.
Besleme geriliminin Ortası gibi düşünebilirsin.
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Mucit23 - 06 Nisan 2018, 15:16:46
Abi Merhaba

Alıntı yapılan: Mehmet Salim GÜLLÜCE - 06 Nisan 2018, 14:30:10Acizane tavsiyem çok yüksek değer olmasada senin akım kapasiteni bozmayacak değerde + ya ve - ye eşdeğer direnç bağlayarak GND noktası şeklinde ölçmendir.
Besleme geriliminin Ortası gibi düşünebilirsin.

Abi yöntemi tam anlayamadım.

+ ve - Derken DC baradan mı bahsediyorsun. Benim Aklıma U V ve W faz hatlarına 0.1R Direnç bağlayıp bu direnç üzerindeki gerilimi görüntülemek. Bu şekilde akımı net görebilirim. Ama Osiloskobumun probları izole olmadığı için aynı anda en fazla 1 kanal görüntüleyebilirim.
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Mucit23 - 06 Nisan 2018, 16:12:28
Birkaç Resim aldım.

Fazlardan Birine 0.1R Taş direnç bağlayıp bu direnç üzerindeki gerilimi görüntüledim.
Bu resimde Açıyı kendim 1 derece aralıklarla 0-359 arasında gezdiriyorum. Genlikle oynuyorum. Motorda döner alanı takip ederek dönüyor.

(https://s14.postimg.cc/qsewgdg41/20180406_160352.jpg)

Ben burada 2.34V luk pik gerilimler görüyorum. 0.1ohm dirence bölünce 23 küsür amper akım yapar. Ki zaten 5W taş direnç aşırı ısınıyor. Mosfetlerde biraz çalışınca ısınmaya başlıyorlar.
Aynı görüntünün biraz yakınlaştırılmış hali
(https://s14.postimg.cc/uc0u66qjl/20180406_160409.jpg)

Burada ise açıyı 60'ar 60'ar arttırıyorum. Tek fazın akım dalga şekli bu şekilde.

(https://s14.postimg.cc/wqspqmei9/20180406_154859.jpg)

Akımın bu kadar yüksek piklere çıkmasının nedeni nedir?
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Cemre. - 06 Nisan 2018, 17:28:47
Taş direnç ile değil de varsa SMD veya bobin şeklinde sargı içermeyen başka bir direnç ile denerseniz daha iyi olabilir. Ya da piyasada satılan hall effect current transducer (ACSxxx serisi) modülleri ile de deneyebilirsiniz.
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Mucit23 - 09 Nisan 2018, 10:01:20
Hocam 30A'lik ACS 712'lerden sipariş ettim. Gelince onlarlada Ölçüm alacağım.

Peki Akım neden bu kadar yüksek değerlere çıkıyor? Bunu yorumlayabilecek olan varmı? @Zoroaster Abi fikrin varmı bu konuda?
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: M.Salim GÜLLÜCE - 09 Nisan 2018, 10:50:09
Alıntı yapılan: Mucit23 - 06 Nisan 2018, 15:16:46Abi Merhaba

Abi yöntemi tam anlayamadım.

+ ve - Derken DC baradan mı bahsediyorsun. Benim Aklıma U V ve W faz hatlarına 0.1R Direnç bağlayıp bu direnç üzerindeki gerilimi görüntülemek. Bu şekilde akımı net görebilirim. Ama Osiloskobumun probları izole olmadığı için aynı anda en fazla 1 kanal görüntüleyebilirim.
Aynen dediğin gibi artı ve eksi baradan bahsediyorum.
3 Faza karşılık Nötr gibide düşünebilirsin.
Hatta mümkünse dirençlerin paralellerine küçük birer kapasitede bağlayabilirsin.

aşağıda verdiğim resimdeki nötr yada motorun Common ucu yerine geçecek bir devre.
(https://3.bp.blogspot.com/-gBwAaDGWwf4/U9uAiwdQ58I/AAAAAAAAr6A/B5jSlidwDT4/s1600/three-phase-four-wire-distribution.gif)
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Mucit23 - 09 Nisan 2018, 12:42:28
Abi şimdi denedim. Gerilimin Sıfır Noktası V/2 oluyor. Skobun GND'sini buraya bağladım. Fazlarda 0-V arasında PWM sinyalleri görüyorum doğal olarak. Burada Pek problem yok gibi.

Akımın aşırı değerlere çıkmasıyla ilgili şöyle bir mantık yürütüyorum. Doğrumu değilmi emin değilim. Uğraştığım motorun endüktansı çok düşük. PWM frekansım tam olarak 16Khz. Bu değer bence düşük kalıyor. PWM'in ton süresinde akım alıp başını gidiyor. PWM frekansını 50Khz gibi bir değere çıkarıp deneyeceğim.

FOC uygulamalarında PWM chopper frekansı ne olması lazım?
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: M.Salim GÜLLÜCE - 09 Nisan 2018, 12:51:32
Alıntı yapılan: Mucit23 - 09 Nisan 2018, 12:42:28Abi şimdi denedim. Gerilimin Sıfır Noktası V/2 oluyor. Skobun GND'sini buraya bağladım. Fazlarda 0-V arasında PWM sinyalleri görüyorum doğal olarak. Burada Pek problem yok gibi.

Akımın aşırı değerlere çıkmasıyla ilgili şöyle bir mantık yürütüyorum. Doğrumu değilmi emin değilim. Uğraştığım motorun endüktansı çok düşük. PWM frekansım tam olarak 16Khz. Bu değer bence düşük kalıyor. PWM'in t10 süresinde akım alıp başını gidiyor. PWM frekansını 50Khz gibi bir değere çıkarıp deneyeceğim.

FOC uygulamalarında PWM chopper frekansı ne olması lazım?
Mucit sanki motor devresindeki indüktif yapı rezonatif geri vuruş oluşturuyor gibi. Bazı indüktif sistemlerde rastladım. istenmeyen salınımlar oluşturabiliyor. frekansın yüksek olursa belki bir nebze olabilir. Yada söndürme yapman gerekebilir emin değilim açıkçası. Bobinlere paralel birer kapasite de işini çözebilir sanırım.
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Cemre. - 09 Nisan 2018, 12:57:19
16-20kHz uygundur. Sorun şu ki siz cycle-by-cylcle current limiting yapmıyorsunuz. Böyle yapıyor olsanız kimse alıp başını gidemez. Tam olarak bir FOC yapıyor olsanız zaten sistem yüksüz/boşta olduğu için Ton akımın alıp başını gidemeyeceği kadar kısa olacak. Rotor kutup altına gelirken (relüktans minimum olurken/olduğunda) zaten motor ~kısadevre akımı çekecektir.
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Mucit23 - 09 Nisan 2018, 16:57:26
Sadece SVPWM ile motoru kontrollü bir şekilde çalıştırmak nasıl mümkün olur? Akım için geri besleme yapmam lazım bu aşamaya geldiğimin farkındayım. Fakat hala olaylar tam kafama oturmadı. Akım kontrolü nasıl işleyecek? Mantığını biraz anlatırsanız ona göre sistemi tekrar revize edeceğim. Şuanki yaptığım sistemde akım geri beslemesi yok.

Elimde bir adet ESC var. Bu esc ile daha önce videolarını çektiğim motoru çalıştırıp faz faz arası gerilimi osiloskopla görüntüledim.
Böyle bir sinyal var.
(https://s9.postimg.cc/wsc0gew7j/20180409_161438.jpg)
Hızı arttırdıkça frekansla birlikte gerilimin genliği artıyor. Bu gözlemlenebiliyor.
Bu 60 Derece açıyıla komutasyon yaptığım için bu işi SVPWM tekniği ilede yapsam Sonuç olarak blok komutasyon uygulamış oluyorum motora. Hal sensörlerden gelen komutasyona göre tam sinüs uygulamak istersem nasıl bir yöntem izlemem gerekir. Yani 60 derecelik bir dilimi hal sensörlerin iki konumu arasında aşmam gerekir. ESC ler bu işi nasıl yapıyor. Onlardamı FOC tekniklerini tamamiyle uyguluyor?
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Zoroaster - 09 Nisan 2018, 17:12:35
http://www.cncdesigner.com/wordpress/?p=6675

(http://www.cncdesigner.com/wordpress/wp-content/uploads/FOC4.png)

Bloktaki Clark Park donusumunu yapsaydin elinde motorun cektigi AC akimla dogrudan orantili DC bilesenli akim bilgisi olacakti. Bunu PID gibi bir blokla gene DC olan bir set degere oturtacaktin.

Dikkat edersen basindan beri bahsettigimiz encoder bilgisi de tam burada lazim oluyor.

@cemre

Hemen hemen her motorda reluktans mil pozisyonundan etkilense de goz ardi edilir ve fircasiz senkron motorlar reluktansi degisen motorlar sinifina girmez.

Degisken reluktansli motorlar icin konusacak olursak da reluktansin minimum oldugu yerlerde enduktans maksimum olur.
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Cemre. - 09 Nisan 2018, 17:26:48
SVPWM'e takılmayın. SVPWM'in şu an için size sağladığı, çıkışta sinüs formunda bir faz arası gerilim görmek. Amaç vektör kontrollü bir sürücü yapmaksa zaten faz akımlarını kullanarak belirli dönüşümlerle 3 Fazlı motoru DC motor gibi modellememize olanak sağlayarak kolayca kontrolünü yapacağız. Bu noktadan sonra iş kontrol teorisine kayıyor. Ancak bunun haricinde bu akım bilgisini hem donanımı hem de motoru korumak amacıyla da kullanacaksınız. Örneğin kısa devre koruması, aşırı akım, aşırı yüklenme koruması vs. gibi...

Zaten ben yazarken sayın @Zoroaster hocam da gerekli kontrol şemasını paylaşmış...
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Mucit23 - 09 Nisan 2018, 17:42:12
Anladım. Yapılacak olan belli o halde. Enkoder olarak bunu almayı düşünüyorum.
https://www.direnc.net/rotary-encoder-400pulse
Çözünürlük olarak yeterli geleceğini düşünüyorum. Fiyat olarakda iç piyasada bundan uygunu yok gibi.

Ek olarak test düzeneğimde Akım ölçümü için Yarım köprülere Şönt direnç bağlayacağım. 10mohm veya 20mohm sönt dirence ihtiyacım var.
https://www.ozdisan.com/pasif-komponentler/direncler/sont-direncler/CSRC10J15L0B00
%5 toleransa sahip. Bu tip bakır şönt dirençler yeterli hassasiyeti sağlayabilirmi? İncelediğim şemalarda Genellikle 2512 SMD dirençler kullanılıyor onlarda genellikle %1 toleranslı oluyor. Fakat bu özelliklerde direnç TR de bulamadım.

Buna göre şemamı düzenleyip yeniden bir kart yapacağım
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Cemre. - 09 Nisan 2018, 18:16:23
Alıntı yapılan: Zoroaster - 09 Nisan 2018, 17:12:35......

Hemen hemen her motorda reluktans mil pozisyonundan etkilense de goz ardi edilir ve fircasiz senkron motorlar reluktansi degisen motorlar sinifina girmez.

Degisken reluktansli motorlar icin konusacak olursak da reluktansin minimum oldugu yerlerde enduktans maksimum olur.
@Zoroaster Hocam, burada reluktansin minimum olmasından kastım, stator kutup ayaklarında oluşturduğumuz elektromıknatısın rotor tarafına bakan kutbu ile rotordaki mıknatısın kutup ayağı tarafına bakan kutbu arasındaki reluktansın (yani manyetik yolun direncinin) minimum olması durumuydu. Yani motor reluktans prensibi ile çalışıyor anlaşılmasın yazdığımdan. Bu arada Fırçasız doğru akım motorunda tutma momentini üreten etki reluktans momenti etkisidir. Yanlışım varsa düzeltin lütfen.
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Cemre. - 09 Nisan 2018, 18:20:14
Alıntı yapılan: Mucit23 - 09 Nisan 2018, 17:42:12Anladım. Yapılacak olan belli o halde. Enkoder olarak bunu almayı düşünüyorum.
https://www.direnc.net/rotary-encoder-400pulse
Çözünürlük olarak yeterli geleceğini düşünüyorum. Fiyat olarakda iç piyasada bundan uygunu yok gibi.

Ek olarak test düzeneğimde Akım ölçümü için Yarım köprülere Şönt direnç bağlayacağım. 10mohm veya 20mohm sönt dirence ihtiyacım var.
https://www.ozdisan.com/pasif-komponentler/direncler/sont-direncler/CSRC10J15L0B00
%5 toleransa sahip. Bu tip bakır şönt dirençler yeterli hassasiyeti sağlayabilirmi? İncelediğim şemalarda Genellikle 2512 SMD dirençler kullanılıyor onlarda genellikle %1 toleranslı oluyor. Fakat bu özelliklerde direnç TR de bulamadım.

Buna göre şemamı düzenleyip yeniden bir kart yapacağım

Tavsiyem başlangıç aşamasında doğrudan faz akımını ölçen bir sistem tasarlamaniz. Böylece ADC'den okunan değeri doğrudan kontrol bloklarında kullanırsınız. Aksi halde anahtarların durumuna göre shunt direnclerden akim akacak veya akmayacak vs. birsuru kargaşa. Enkoder için Atek firmasına danışabilirsiniz.
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Zoroaster - 09 Nisan 2018, 21:04:37
Alıntı yapılan: Cemre. - 09 Nisan 2018, 18:16:23@Zoroaster Hocam, burada reluktansin minimum olmasından kastım, stator kutup ayaklarında oluşturduğumuz elektromıknatısın rotor tarafına bakan kutbu ile rotordaki mıknatısın kutup ayağı tarafına bakan kutbu arasındaki reluktansın (yani manyetik yolun direncinin) minimum olması durumuydu. Yani motor reluktans prensibi ile çalışıyor anlaşılmasın yazdığımdan. Bu arada Fırçasız doğru akım motorunda tutma momentini üreten etki reluktans momenti etkisidir. Yanlışım varsa düzeltin lütfen.

Tamam iste ben de onu diyorum. Reluktansin minimum olmasi iyi bir sey. Bu enduktansin max olacagi anlamina gelir.

Tutma etkisi motora bagli. Silindirik miknatisli motorlarda bu hemen hemen hic hissedilmiyor.
Fakat RC modeller parca miknatisli ve onlarda reluktansin belirgin sekilde hissedilmesi normal bir durum.
Buradaki sorunda akimin alip basini gitmesini enduktansa baglayamayiz.
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Mucit23 - 09 Nisan 2018, 21:27:11
Hocam eğer öyle olsa yeni kart yapmama gerek kalmaz. Hall effect sensörlerle işimi görürüm. +-31A lik ACS711 Modülleri var
https://www.direnc.net/acs711ex-akim-sensoru-31a31a-pololu?lang=tr&h=66cc8a7d&gclid=Cj0KCQjwnqzWBRC_ARIsABSMVTPLBe9XisPH2752E02qCRB-WzpLPZpiR1wzYyG36fg1kshA3qsSXssaAtQCEALw_wcB
Bu tip bir sensör olur herhalde.

Bu arada PWM frekansını 50Khz'ye çıkardım test için. Aynı devirde çekilen ortalama akım yarı yarıya düştü neredeyse.   
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Cemre. - 09 Nisan 2018, 21:56:33
Alıntı yapılan: Zoroaster - 09 Nisan 2018, 21:04:37Tamam iste ben de onu diyorum. Reluktansin minimum olmasi iyi bir sey. Bu enduktansin max olacagi anlamina gelir.

Tutma etkisi motora bagli. Silindirik miknatisli motorlarda bu hemen hemen hic hissedilmiyor.
Fakat RC modeller parca miknatisli ve onlarda reluktansin belirgin sekilde hissedilmesi normal bir durum.
Buradaki sorunda akimin alip basini gitmesini enduktansa baglayamayiz.

Ben bunu, minimum relüktans durumunda manyetik devreyi düşündüğümüzde N*i (sarım sayısı*sargıdan akan akım) bir manyetik akı kaynağı, bir de rotordaki mıknatıs sabit akı kaynağı ve toplamda zıt kutupların birbirini çekmesinden ötürü oluşan iki seri akı kaynağı devresinin kararsız bir konumda (çünkü sargıdan geçen akım arttıkça sabit akı yoğunluğu artacak) manyetik elemanlar doyuma gidene kadar artan bir sargı akımı grafiği izlememize yol açıyor olarak yorumlamıştım. Konuyu net olarak hedef alıp anlatan bir kaynak varsa veya anlatmak isterseniz memnuniyetle derinlerini kurcalayabilirim @Zoroaster :)
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Cemre. - 09 Nisan 2018, 21:57:54
Alıntı yapılan: Mucit23 - 09 Nisan 2018, 21:27:11Hocam eğer öyle olsa yeni kart yapmama gerek kalmaz. Hall effect sensörlerle işimi görürüm. +-31A lik ACS711 Modülleri var
https://www.direnc.net/acs711ex-akim-sensoru-31a31a-pololu?lang=tr&h=66cc8a7d&gclid=Cj0KCQjwnqzWBRC_ARIsABSMVTPLBe9XisPH2752E02qCRB-WzpLPZpiR1wzYyG36fg1kshA3qsSXssaAtQCEALw_wcB
Bu tip bir sensör olur herhalde.

Bu arada PWM frekansını 50Khz'ye çıkardım test için. Aynı devirde çekilen ortalama akım yarı yarıya düştü neredeyse.   

Anahtarların sıcaklığı ne durumda peki? Sanki yavaş yavaş lineer bölgede geçirdikleri süre artmış ve bu sebeple akım düşüyormuş gibi geldi. Tabiki Xl=2*pi*f*L'den endüktif reaktans da arttı ancak bana bu kadar ciddi bir düşüş pek olası gelmiyor. Tabii bilemiyorum da :)
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Mucit23 - 09 Nisan 2018, 22:01:25
isterseniz yarın akımları tekrar görüntüleyip atabilirim. Mosfetleri ısıtacak kadar uzun süre çalıştırmadım ama önceki çalışmada Yaklaşık 30-35 sn de moslar deli gibi ısınıyordu. Ama ısının düştüğü kesin.
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Cemre. - 09 Nisan 2018, 22:09:29
Mosfet Vgs, Vds gerilimleri aynı ekrandayken osiloskop görüntüsü paylaşabilirsiniz.
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Ax2_Bx_C - 09 Nisan 2018, 22:37:38
Proje arayışım içerisinde MPPT'li motor sürücü benim de ilgimi çekiyor, sizce kaç beygir motorlar için bu sürücüler daha fazla rağbet görür?
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Zoroaster - 09 Nisan 2018, 23:51:41
Alıntı yapılan: Cemre. - 09 Nisan 2018, 21:56:33Ben bunu, minimum relüktans durumunda manyetik devreyi düşündüğümüzde N*i (sarım sayısı*sargıdan akan akım) bir manyetik akı kaynağı, bir de rotordaki mıknatıs sabit akı kaynağı ve toplamda zıt kutupların birbirini çekmesinden ötürü oluşan iki seri akı kaynağı devresinin kararsız bir konumda (çünkü sargıdan geçen akım arttıkça sabit akı yoğunluğu artacak) manyetik elemanlar doyuma gidene kadar artan bir sargı akımı grafiği izlememize yol açıyor olarak yorumlamıştım....)

Itirazim su aciklamaya: "Rotor kutup altına gelirken (relüktans minimum olurken/olduğunda) zaten motor ~kısadevre akımı çekecektir."

V=Ldi/dt + Ndfi/dt

i=int(V/Ldt)-(N/L)Fi

reluktans minumuma giderken L maxa gider. i ifadesinde 1/L ve N/L azalir. Bu da akimi azaltir. Fakat bu aciklama yeterli degil.

Cunku 1/L ve N/L katsayilarinin degerlerinin tam kutup altinda azalmasiyla ilgilenmeyip ayni zamanda Vdt integrali ile Fi fonksiyonunun, DC motor icin mil acisinin 90 derece oldugu durumdaki akimin ani degerine bakmak lazim.

Kurcalamak istiyorsan su sorulara bakmak gerekir.

Bir bobine sinusel voltaj uygulaniyor ve bobin kutup alani icinde gerilimle ayni acisal hizda ve fazda döndürülüyorsa akim, bobinin hangi acisinda max hangi acida min yapar.

En onemli soru ise bobin harici olarak dönderilmek yerine bobin akımının ürettiği tork ile dönerken akimin max ve min yaptigi anlar hangi açılara denk gelir? Mile bağlı yükün atalete sahip olması yaad sürtünmeli olmasının açıya etkisi nasıl olur?
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Mucit23 - 10 Nisan 2018, 10:39:29
Alıntı yapılan: Cemre. - 09 Nisan 2018, 22:09:29Mosfet Vgs, Vds gerilimleri aynı ekrandayken osiloskop görüntüsü paylaşabilirsiniz.

Hocam motor çalışıyorken ve motor çalışmıyorken iki ayrı görüntü aldım.

CH1(Kırmızı) VGS, CH2(Sarı) VDS gerilimini gösteriyor. Frekans 50khz. LowSide Mos'un VGS gerilimini görüntüledim
(https://s9.postimg.cc/wwkj4ite7/20180410_101901.jpg)
Bu görüntüde ise Motor çalışıyor.
(https://s9.postimg.cc/depvopehr/20180410_101814.jpg)
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: marecrisium - 10 Nisan 2018, 11:32:49
Mosfetlerin Gate direncini biraz büyütmeyi dene, bunun yanında dead time'ı da biraz artırıp sonuçları gör. Ayrıca 50kHz motor sürücü için çok yüksek bir frekans.
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: M.Salim GÜLLÜCE - 10 Nisan 2018, 12:19:03
Alıntı yapılan: Mucit23 - 10 Nisan 2018, 10:39:29Hocam motor çalışıyorken ve motor çalışmıyorken iki ayrı görüntü aldım.
Bu görüntüde ise Motor çalışıyor.
(https://s9.postimg.cc/depvopehr/20180410_101814.jpg)
Yük altındaki DS ü merak ettim. Sağdaki çapaklar artacakmı azalacakmı.
50 kHz sebebiyle tork azalmıştır sanırım.
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: miyago - 11 Nisan 2018, 09:08:29
Microchip firmasında çok güzel bir doküman gördüm. Linki aşağıdadır. Umarım faydası olur.


http://microchipdeveloper.com/mct5001:start?utm_source=Facebook&utm_medium=Social&utm_term=FY19Q1&utm_content=Developer%2BHelp&utm_campaign=Post (http://microchipdeveloper.com/mct5001:start?utm_source=Facebook&utm_medium=Social&utm_term=FY19Q1&utm_content=Developer%2BHelp&utm_campaign=Post)
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Mucit23 - 11 Nisan 2018, 10:26:26
Alıntı yapılan: Mehmet Salim GÜLLÜCE - 10 Nisan 2018, 12:19:03Yük altındaki DS ü merak ettim. Sağdaki çapaklar artacakmı azalacakmı.
50 kHz sebebiyle tork azalmıştır sanırım.

Hocam dün yazamadım. Yük altında değişmiyor Motoru elimle zorladığımda yine aynı şekil bir görüntü alıyorum. Fakat Herzaman oluşmuyor sanki Duty sürekli değiştiği için yakalamakta zorlanıyorum. Fakat dediğiniz gibi Frekansı 50Khz yapınca Tork azalıyor.

Yine 16Khz yaptım PWM frekansını.

@Cemre. Akım sensörlerim muhtemelen Yarın gelir. Enkoder de istedim. 360PR çözünürlüğe sahip bir enkoder satın aldım.
http://www.alfasanayi.com/arc-s-50-saft-atek-made-in-turkey-urun-182.html

Akım kontrolü için ADC ile 3 Fazın akımını ölçüp Clark Dönüşümüne sokacağım değilmi? Bundan sonra nasıl bir yöntem izlemem gerekir?

İlk Önce Enkoder işinimi halletsem diye düşünüyorum. Orada Rotor Pozisyonunu Enkoder ile tespit edip Ona göre Rotor açısını hesaplamam lazım.

Burada bir sorum olacak. Enkoder bağladık diyelim.Enkoder artımsal enkoder olduğu için ilk başta açı değerini sıfır kabul edeceğim. Fakat Rotor pozisyonu farklı bir konumda olabilir. Bu durumda motor nasıl kalkış yaptıracağım?
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: bulut_01 - 11 Nisan 2018, 10:39:39
ben olsam sensorsuz kontrol üzerine ugrasırdım enkoder acı derdim olmazdı.  :)
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: M.Salim GÜLLÜCE - 11 Nisan 2018, 15:38:42
Alıntı yapılan: bulut_01 - 11 Nisan 2018, 10:39:39ben olsam sensorsuz kontrol üzerine ugrasırdım enkoder acı derdim olmazdı.  :)
Mucit biraz muziplik yapsam kızmazsın umarım.
Açıkçası konuya ilgi gösterdiğimden beri aklımda lakin deneyimleme şansım olmadığından mide bulandırmayayım demiştim.
Bulut söyleyince söylemezsem olmaz dedim kendi kendime.

Aslında sen her faza belirli bir güçle hareket verdiğinde fazlardan en az birisi bir ara boşa çıkıyor.
Tabiiki dönüş Sabit manyetik alan ve indüktif yapı gereği aynı bobinleri sensor gibi kullanamazmısın.
Sanırım dönüş nedeniyle bir gerilim de üretmeleri gerekiyor gibi.
Yanılıyor olabilirimde...

Aklıma kalem havyalardan takılmıştı. Rezistans yanında ısı sensoru olduğu halde onu kullanmadan sadece rezistansla ısıyı kontrol altında tutuyorlar. Yöntemide basit. enerjiyi kestiklerinde rezistansın direncini ölçüp sıcaklığı bulmaya çalışıyorlar.
Aceba sende işe yararmı?
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: M.Salim GÜLLÜCE - 11 Nisan 2018, 15:45:31
Bişey daha eklemek isterim.
gerçi sen akım taransdüser siparişi verdin hatta birde şöntle beraber..
LEM LTS25-NP sensorlar var 25Amper max. dahada duyarlı yapabiliyorsun. çift yönlü akım bilgisi verebiliyor. Üstelik özdisan da da mevcut. Şönte de gereksinimi yok. İster PCB ister Uzay montaj kullan. Hem AC hem de DC de kullanabilirsin.
inceleyebilirsim.
https://www.ozdisan.com/guc-yari-iletkenleri/transduserler/akim-transduserleri/LTS25-NP (https://www.ozdisan.com/guc-yari-iletkenleri/transduserler/akim-transduserleri/LTS25-NP)
(https://img.ozdisan.com/ETicaret_Dosya/6249_7920828.JPG)
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Mucit23 - 11 Nisan 2018, 16:00:29
Alıntı yapılan: Mehmet Salim GÜLLÜCE - 11 Nisan 2018, 15:38:42Mucit biraz muziplik yapsam kızmazsın umarım.
Açıkçası konuya ilgi gösterdiğimden beri aklımda lakin deneyimleme şansım olmadığından mide bulandırmayayım demiştim.
Bulut söyleyince söylemezsem olmaz dedim kendi kendime.

Aslında sen her faza belirli bir güçle hareket verdiğinde fazlardan en az birisi bir ara boşa çıkıyor.
Tabiiki dönüş Sabit manyetik alan ve indüktif yapı gereği aynı bobinleri sensor gibi kullanamazmısın.
Sanırım dönüş nedeniyle bir gerilim de üretmeleri gerekiyor gibi.
Yanılıyor olabilirimde...

Aklıma kalem havyalardan takılmıştı. Rezistans yanında ısı sensoru olduğu halde onu kullanmadan sadece rezistansla ısıyı kontrol altında tutuyorlar. Yöntemide basit. enerjiyi kestiklerinde rezistansın direncini ölçüp sıcaklığı bulmaya çalışıyorlar.
Aceba sende işe yararmı?

Estf. abi ne kızması. Açıkçası O iş beni çok yorar. Ki zaten amacım motoru kuru kuruya döndürmek değil. Bitirme projemin konusu Fırçasız DC motoru Enkoder bağlayıp açılı bir şekilde döndürebilmek. Bu bir tez çalışması. Endüstriyel bir ürün ortaya çıkarmak gibi bir hedefim şuanda yok. Onun için açıkçası pek vaktimde yok. Gerçi bu kadar çalışma yaptık iyide oldu. Devamını elimden geldiği kadar getireceğim.

Akım sensörü olarak Hall Effect sensörlerden satın aldım. O bahsettiğiniz sensörler biraz pahalı. Gerek yok diye düşünüyorum o kadar para vermeye :)
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Cemre. - 11 Nisan 2018, 16:59:50
Alıntı yapılan: Mehmet Salim GÜLLÜCE - 11 Nisan 2018, 15:38:42Mucit biraz muziplik yapsam kızmazsın umarım.
Açıkçası konuya ilgi gösterdiğimden beri aklımda lakin deneyimleme şansım olmadığından mide bulandırmayayım demiştim.
Bulut söyleyince söylemezsem olmaz dedim kendi kendime.

Aslında sen her faza belirli bir güçle hareket verdiğinde fazlardan en az birisi bir ara boşa çıkıyor.
Tabiiki dönüş Sabit manyetik alan ve indüktif yapı gereği aynı bobinleri sensor gibi kullanamazmısın.
Sanırım dönüş nedeniyle bir gerilim de üretmeleri gerekiyor gibi.
Yanılıyor olabilirimde...

Aklıma kalem havyalardan takılmıştı. Rezistans yanında ısı sensoru olduğu halde onu kullanmadan sadece rezistansla ısıyı kontrol altında tutuyorlar. Yöntemide basit. enerjiyi kestiklerinde rezistansın direncini ölçüp sıcaklığı bulmaya çalışıyorlar.
Aceba sende işe yararmı?
BEMF ile hız tespiti bilinen bir uygulama zaten :)
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: bulut_01 - 11 Nisan 2018, 17:04:49
Alıntı yapılan: Cemre. - 11 Nisan 2018, 16:59:50BEMF ile hız tespiti bilinen bir uygulama zaten :)
bu yöntem ile ne kdr hassas acı hesabı yapılabilir? enkoder çözünürlüğüne bu yöntemle ulaşmak ne kdr gerçekci olur?
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: Cemre. - 11 Nisan 2018, 17:18:08
Alıntı yapılan: bulut_01 - 11 Nisan 2018, 17:04:49bu yöntem ile ne kdr hassas acı hesabı yapılabilir? enkoder çözünürlüğüne bu yöntemle ulaşmak ne kdr gerçekci olur?

Hall effect sensör uygulamasındaki gibi bemf'in zero cross anlarında komutasyon yaptırmak için kullanılıyor. Bu konuyla alakalı çok fazla makale var ieeexplore'da.
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: bulut_01 - 11 Nisan 2018, 17:46:56
Alıntı yapılan: Cemre. - 11 Nisan 2018, 17:18:08Hall effect sensör uygulamasındaki gibi bemf'in zero cross anlarında komutasyon yaptırmak için kullanılıyor. Bu konuyla alakalı çok fazla makale var ieeexplore'da.
üstad komutasyon için kullanıldıgını biliyorum çözünürlük anlamında sormustum ne kadar hassas konum ölçebilir diye bemf ile?
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: spirtless - 12 Mayıs 2018, 21:46:27
Arkadaşlar merhaba,
Bir süredir PMSM motor sürücüsü için uğraşıyorum. Şuana kadar pcb donanımı hazır ancak yazılım konusunda bir noktada tıkandım. Yapacağım uygulama pozisyon kontrolü olacaktır.  Daha o noktaya gelemeden pwm konusunda tıkandım. Vektör kontrolü yapmaya çalışıyorum. Pwm duty nin hiç durmadan %8-%92 arasında değişmesi lazım.Ben arada pwm in 0 olduğunu da görüyorum. Ayrıca kodun açıklamasına göre pwm değerlerini girdiğimde çok farklı değerler görüyorum. Mesela %92 duty oranına göre değer verdiğimde %15 gibi duty görüyorum. Muhtemelen kod diziliminde bir hata yapıyorum. Bu konuda yorumlarınız nedir?
Bunu çözdükten sonra pozisyon bilgisi alt programını ekleyeceğim.


#include<18F4431.h>
#device adc=10
#fuses HS, NOWDT, NOPROTECT, NOBROWNOUT, PUT, NOLVP
#use delay(clock=200000000)

setup_oscillator(OSC_20MHZ);

  #include <math.h>
  #include "float.h"
  #include "math.h"
  #include "stdlib.h"
  #include "stdio.h"
 

#define POWER_PWM_PERIOD 332
/***********************************
freq= Fosc / (4*(period + 1) * postscale)
or
period = (Fosc /( 4 * freq * postscale)) -1

if we want 15khz
period =( 20mhz /(4 * 15khz * 1) -1
peroid = 332;
*****************************************/


double U_faz_aci=(0), V_faz_aci=((180)/3), W_faz_aci=((2*180)/3);
float motor_frekans=50,max_motor_frekans=50,pwm_frekansi=15000;
double aci_artis, ornek_sayisi=50, duty_kazanc=1;
double sin_U, sin_V, sin_W,duty_U,duty_V,duty_W;
float32 rad=PI/180.0;
 
void main()
{
 
// Setup the 4 Power PWM channels as ordinary pwm channels.
//setup_power_pwm_pins(PWM_ODD_ON, PWM_ODD_ON, PWM_ODD_ON, PWM_ODD_ON);
//  setup_power_pwm_pins(PWM_COMPLEMENTARY,PWM_COMPLEMENTARY, PWM_COMPLEMENTARY, PWM_OFF);
  setup_power_pwm_pins(PWM_COMPLEMENTARY,PWM_COMPLEMENTARY, PWM_COMPLEMENTARY, PWM_COMPLEMENTARY);
// Mode = Free Run
// Postscale = 1  (1-16) Timebase output postscaler
// TimeBase = 0  (0-65355) Initial value of PWM Timebase
// Period = 2000  (0-4095) Max value of PWM TimeBase
// Compare = 0    (Timebase value for special event trigger)
// Compare Postscale = 1 (Postscaler for Compare value)
// Dead Time

  setup_power_pwm(PWM_FREE_RUN, 1, 0, POWER_PWM_PERIOD, 0, 1,0);
//  setup_power_pwm(PWM_CLOCK_DIV_4 | PWM_FREE_RUN |  PWM_DEAD_CLOCK_DIV_16,1,10000,1000,0,1,30);
    set_power_pwm0_duty(0);
    set_power_pwm2_duty(0);
    set_power_pwm4_duty(0);
         
  while(TRUE)
  {
       
                                                                      //Hız düştükçe V/f oranını sbit tutmak için basılan gücü düşür
        duty_kazanc=(motor_frekans/max_motor_frekans)*(0.92)*1;    // kazanç sabitleyici (V/f sabit tutmak için)

                                                                    // Belli bir orandan sonra artık V/f sabit değil. Duty ratio değerini sabitle
        if(duty_kazanc<(0.2))
        {
        duty_kazanc=0.2;
        }
            //Duty ratio değerini limitle
      if(duty_kazanc>(0.92))
      {
      duty_kazanc=0.92;
        }
                                                                  // anahtarlama frekansını ulaşılmak istenilen hız değerine bölerek örnekleme sayısını bul
      ornek_sayisi=(pwm_frekansi/motor_frekans);                //örnekleme sayısı
      aci_artis = ((180)/ornek_sayisi);                          // örnwkleme sayısını kullanarak oluşturulacak sinüs değerinin açısal artışını bul

      u_faz_aci=u_faz_aci+aci_artis;                            // fazlardaki sinüsün açısını arttır
      if(u_faz_aci>(180))
      {
      u_faz_aci=u_faz_aci-(180);                                // fazlardaki sinüsün açısını baştan başlat
      }
 
      if(u_faz_aci<(180/3))
      {
      v_faz_aci=(180/3)+u_faz_aci;
      w_faz_aci=((2*180)/3)+u_faz_aci;
      }

      else if ((u_faz_aci>=(180/3)) && (u_faz_aci<((2*180)/3)))
      {

      v_faz_aci=(180/3)+u_faz_aci;
      w_faz_aci=u_faz_aci-(180/3);
      }

      else if ((u_faz_aci>=((2*180)/3)) && (u_faz_aci<=(180)))
      {

      v_faz_aci=u_faz_aci-((2*180)/3);
      w_faz_aci=u_faz_aci-(180/3);
      }
                                 
      sin_U=(sin(u_faz_aci*rad))*duty_kazanc;                // pwm genlik değeri(U)
      sin_V=(sin(v_faz_aci*rad))*duty_kazanc;                //  pwm genlik değeri(V)
      sin_W=(sin(w_faz_aci*rad))*duty_kazanc;                //  pwm genlik değeri(W)
 
      if(sin_U<(0.08))
      {
        sin_U=0.08;
      }
      if(sin_U>(0.92))
      {
        sin_U=0.92;
      }
      if(sin_V<(0.08))
      {
        sin_V=0.08;
      }
      if(sin_V>(0.92))
      {
        sin_V=0.92;
      }
      if(sin_W<(0.08))
      {
        sin_W=0.08;
      }
      if(sin_W>(0.92))
      {
        sin_W=0.92;
      }
 
        duty_U=4*POWER_PWM_PERIOD*sin_U;
        duty_V=4*POWER_PWM_PERIOD*sin_V;
        duty_W=4*POWER_PWM_PERIOD*sin_W;
       
        set_power_pwm0_duty(duty_U);
        set_power_pwm2_duty(duty_V);
        set_power_pwm4_duty(duty_W);           
  } 
  }

Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: spirtless - 13 Mayıs 2018, 14:26:50
Yorum yapacak veya yardımcı olabilecek kimse yok mudur?
Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: devrecii - 13 Mayıs 2018, 15:22:28
Kimse cevap vermemiş diye yazayım dedim.

Programcılıkta adım adım ilerleme kuralı vardır öyle kodu yazayım hop hemen çalışsın yok, bunu 50 senelik koderler bile başaramaz.

İlk başta sana tavsiyem basit pwm çıkışını al ve osiloskopda incele , daha sonra belli zamanda değişken pwm yap izle ,daha sonra herhangi pswm filan yapmadan 0-360derece sinus pwm yap ve bunu osiloskpda gözlemle dha sonr 3 faz sinus üret ve osklopda incele . 6 çıkış mı olacak 3 çıkışmı bu da var.

Daha sonra vektör kontrol yapabilirsin. Mikroişlemciye sinus hesaplatmak ,double float işlemleri vs mikroişlemciyi çok yorar.

Sinus tablosu oluşturabilirsin. Tabi bu en son ki iş.

Başlık: Ynt: Space Vector Modulation(SVM) Konusu
Gönderen: spirtless - 13 Mayıs 2018, 16:08:44
Bu kod dizilimini daha önce TI C2000 ve ARM core 9 serisi AM4379 idk board üzerinde denedim. Güzel bir sinüs elde ettim fakat başka sorunlar yaşadığım ve teknik desteği kısıtlı olduğu için basic seviyede bir işlemci ile adım adım ilerliyorum. Ancak pic18F4431 8 kanal power pwm çıkışı olduğu işe bu noktadan başladım fakat kod dizilimim uygun olarak çalışmıyor. Bir yerlerde eksik bilgi var veya atladığım bir nokta var. Zaten ilk olarak pwm sonra geri besleme en son olarak haberleşme ünitesi olarak konuyu böldüm.Kontrol konusunda bilgi sahibiyim ancak bunu koda döktüğümde sorunla karşılaştım. Uygun çalışmayan yer burası;
        set_power_pwm0_duty(duty_U);      //U fazı H-side
        set_power_pwm2_duty(duty_V);     //V fazı H-side
        set_power_pwm4_duty(duty_W);     //W fazı H-side


normalde beklenen  set_power_pwm0_duty(min) ise en düşük %duty  , set_power_pwm0_duty(max) ise en yüksek %duty
olması gerekir. Ama sanki bazı değerler de yine min ve max duty görülüyor. Hatta gördüğüm kadarı ile pwm sürekli olması gerekirken bazen pwm çıkısı arada bir 0 oluyor. Temel problemim budur. Kodun eksik ve hatalı kısımlarını görerek iyileştirme yapmak istiyorum.