stm32G4 cordic-coprocessor data registerleri

maydın

Yeni Üye
Katılım
8 Ocak 2025
Mesajlar
4
merhaba
uzay vectör pwm için arama ve araştırma yapıyorum, henüz kod yazacak kadar bilgim yok.
svpwm algoritması için gerekli olan sinüs değerlerini üretecek
Cordic motorunda bulunan m , modulus nedir, hangi değeri modulus olarak atayacağım,
modulus teriminden benim anladığım - V ani = gerilim*sin(açı) - motora uygulanan U gerilimin digital bilgisidir.
 

Ekler

Modulus magnitude u veriyor cordic de. Sin ve cos içinde çıktı m*sin m*cos cinsinden, bulmak için döndüreceği vektörün magnitude u aslında m. Nasıl yani dersen de bir dik üçgen düşün hipotenüs dışındaki iki kenarı msin mcos uzunluğunda olsun. Hipotenüsün uzunluğu ne gelir m. Sen m i 1 e sabitleyip doğrudan kullanabilirsin, m e 0-1 aralığında değer girerek scale edebilirsin eğer 1den büyük değer girmeye çalışırsan da hata vermesi lazım. Doğru mu hatırladım bilmiyorum bazı şeyleri yanlış hatırlıyor olabilirim.


Space vektör de V ani = tarzı bir işleme girmemen lazım. 2 level olduğunu düşünerek senin 6 tane sektörün var, doğrudan alfa beta da iken sektörü seçip ona göre duty hesabı yapıp yazman lazım. Va Vb Vc yi elde edip bunu yapmaya çalıştığında aslında tekrar alfa beta ya doğru döndüğünü ya da benzer bir işlem tanımlamaya çalışıtğını göreceksin.
 
--stm32 mcu içindeki cordic motorunu nasıl kullanacagım, adım açısını - örneğin adım açısı 5 derece olsun- bir kere girmek yeterli mi, yoksa 72 örnek için her seferinde açı bilgisi , data registerinden tekrar tekrar girilecek mi,

--- Varsayım olarak açı bilgisini bir kez girmek yeterli olsun ,bu durumda bir sonraki açının sinüs değerini üretmek için cordic motorunu tetiklemek gerekir ,bu nasıl yapılır,

----Codic yardımcı işlemcisi tek faz çıkış veriyor, 3 faz svpwm için üç çıkış gerekir ,diğer iki sinüs bilgisini nasıl üreteceğiz.
 
Hocam öncelikle bence yanlış yoldasın, yaptığın işi sadece tahmin edebiliyorum ve bana yanlış yaptığın izlenimi geliyor. Ama sorularını yanıtlayacağım, yaptıklarının matematik kısmını biraz anlatıp sorarsan burada sana cevap verecek minimum 2-3 üye daha çıkar.
stm32 mcu içindeki cordic motorunu nasıl kullanacagım, adım açısını - örneğin adım açısı 5 derece olsun- bir kere girmek yeterli mi, yoksa 72 örnek için her seferinde açı bilgisi , data registerinden tekrar tekrar girilecek mi,
Cordic in ana amacı belirli başlı işlemleri hızlı yapmak. Bu hızlı yapma işini biraz açarsak 300-400ns içerisinde bir açının sin ve cosunu, fixed point olarak elde edebiliyoruz diye hatırlıyorum. Alternatif olarak memory e sin cos tablosu da konulabilir ancak ne arm math, ne de standart C math librarysi bu hızda bir hizmet sunmuyor, cordic ikisinden de hızlı kalıyor, memory e yazmak ise memory israfi oluyor. Cordic yani zorunlu değil ama kullansan kazancın olur. Adım açısı dediğin şey nedir? Hangi açının sin cos u lazımsa ya da hangi işlemi yapacaksan ilgili registerları doldurup tetiklemen gerekli. Yani sana sin(0.27 rad) lazım diyelim sen cordic in ilgili registerına 0.27rad ve modulus 1 i dolduracaksın ve o sana 0.27 rad için sin ve cos değeri dönecek. Bir avantajı da bu aynı anda sin ve cos u hesaplıyor sana. Tabi bunu dma ile birleştirip değişik işler yapılabilir, dma dan gerçekten 5er derece artacak şekilde açı bilgisi beslenebilir üzerine kafa yormak lazım.

Varsayım olarak açı bilgisini bir kez girmek yeterli olsun ,bu durumda bir sonraki açının sinüs değerini üretmek için cordic motorunu tetiklemek gerekir ,bu nasıl yapılır,

ST nin bu konuda dökümanları var. Register level mi yazıyorsun, hal lib mi kullanıyorsun LL lib mi kullanıyorsun, cube mu kullanıyorsun bilemeden kimse sana net cevap veremez. İnternette güzel örnekler vardı diye hatırlıyorum ama eğer yanlış değilsem biraz nazlı çalıştırırken insanı limite kadar zorlayabilen bir peripheral dı. ST böyle şeyleri son zamanlarda düzeltme hareketine girdi gibi düşünüyorum, dolayısıyla bence internette bu işi yapabilecek örneği bulman kesin.

Codic yardımcı işlemcisi tek faz çıkış veriyor, 3 faz svpwm için üç çıkış gerekir ,diğer iki sinüs bilgisini nasıl üreteceğiz.

Svpwm de sin bilgisine ihtiyacın yok. Inverse park transform çıkışında Valfa Vbeta değerleri elinde olacak. Önce hangi sektör de olduğunu bulacaksın, sonra da leglerin dutylerini oradan hesaplayacaksın. İnternette bunun bir sürü örneği var artık. Ha dersen ki ben park clarke vs yapmıyorum kardeşim bende ABC voltajları var bana bunu SVPWM ile uygula, o zaman ben gidip clarke alırım sanırım biraz kafa yormak lazım işlemleri optimize etmek için.
 
şu video faydalı olur. ayrıca kanalda güzel videolar da var. clc'nin de dediği gibi cordic engine donanımsal metamatik hızlandırıcı. işlemcinin normalde yazılım ile birkaç yüz us içinde yaptığı hesaplamaları çok daha hızlı gerçekleştiriyor. ama cordic engine spwm için ayarlarını yapayım bana otomatik olarak 3 fazlı spwm motor çıktısı üretsin donanımı değil.


 

Çevrimiçi üyeler

Forum istatistikleri

Konular
8,624
Mesajlar
141,034
Üyeler
3,429
Son üye
_Arda_

Son kaynaklar

Son profil mesajları

Abdullah karaoglan falcon_browning Abdullah karaoglan wrote on falcon_browning's profile.
selamın aleyküm ses sistemindeki cızırtıyı hallettınızmi
"Araştırma, ne yaptığını bilmediğinde yaptığın şeydir." - Wernher von Braun
“Kendi yolunu çizen kişi, kimsenin izinden gitmez.” – Nietzsche
Kim İslâm’da güzel bir çığır açarsa (güzel bir alışkanlık başlatırsa), onun sevabı ve kendisinden sonra ona uyanların sevapları, onların sevaplarından hiçbir şey eksilmeksizin ona da yazılır.
erdemtr55 taydin erdemtr55 wrote on taydin's profile.
Merhaba Taydin bey,
Gruba spms serisi yapıcak mısınız?
ben 3 sargılı toroid ile 2 adet flyback sürücek bir devre yapmayı düşünüyorum.size soracak sorularım vardı?
Back
Top