E

SPWM nedir :? Nasıl olusturulur

Başlatan Erata, 12 Kasım 2012, 19:12:33

Erata

Spwm (sinus pulse width modulation)  yani pwm sinyali  ile sinus üretmelktir

Çıkıştaki sinusun kalitesi spwm

kodlama step sayısına bağlıdır şu an kaliteli sinus inverterlerde 1Hz içinde

360 sinus kodu bulunmaktadır.

en kolay uretimi tablo olusturarak  frekansa göre belli süre icinde  pwm duty sini bu tablo ile ayarlayarak  pwm uretilir 

örnegin  50 hz icin 20 indexli bir tablo olusturursanız  pwm duty sini bu tablodaki her bir rakam ile  1 ms de degistirerek pwm i üretirsiniz
50 hz ..... perodu 20 ms dir

cıkan pwm i de fitre (alcak geciren)  ederseniz  50 hz sinus elde edersiniz


20 idx li örnek tablo :

const long int sinus50[]   ={36,24,14,7,5,7,14,24,36,50,64,76,86,93,95,93,86,76,64,50};

her 1 ms de asagidaki islemi yaparsak  pwm cıkısımızı filitre ettigimizde  50 hz sinus olusur 

PWM1_Set_Duty(sinus50[sinus50_idx++]);


(220 v 50 hz invertor calışmalarım gereği mikroc  yazılımı 0larak tarafımdan isis de  denenmistir)






F®T

hocam selamlar.
şu spwm olayı çok merak ettiğim bir olay aslında şöyle 400hz 3 faz bir konveter yapabilsem dahada süper olacak ama programlama olayında çok iyi değilim.hele C de hiç değilim.basic yada protonda bu işi nasıl yapabiliriz.?
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

Erata


sistem aynı PBP veya protondada  olay gene timer , tablo ve pwm olayına dayanıyor

o konuda ETE hocam yardımcı olabilir sanırım

ben yukarda basit olarak teknigi anlatmış oldum 

50 hz ve 20 indexli tablo icin   

1 ms timer ayarlayıp her interrupt geldiginde tablo index i 1 artırılarak tablodaki  degeri pwm duty ye koymak  sistem bu





F®T

Anladım hocam teşekkür ediyorum.basicte bu şekilde öğretici örnek bir çalışma olması iyi olurdu.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

ete

Sinuzoidal sinyal şeklini iyi biliyorum. Ama bunun PWM tekniği ile elde edilmesi konusunda bilgim yok.
SPWM kelimesini daha öncede duydum ama çok fazla ilgilenmedim.
Erata nın anlattığı yöntemide anlamadım. Biraz yüzeysel anlatılmış. Şema desteğide olmayınca hiç bir şey anlaşılmıyor.

Her neyse yıllar önce bende oturup düşünmüş ve nasıl sinüs işareti elde edebilirim diye kafa yormuştum. Sonra fiziki olarak da yaptığım aşağıda verdiğim sistemi yaptım.

Sistemin esası, sinüs işaretini oluşturacak data ların bir lokkup tablosunda toplanarak sırası ile 8 bitlik bir porta verilmesi ve portdan alınan bilgilerin bir DAC (digital to analog çevirici) verilerek onun çıkışında sinüs işaretinin oluşturulması temeline dayanmaktadır.

Ete



Erata









Osilaskopta  :

Sarı PWM ....  5 khz
Kırmızı ve yesil 50 hz sinus  birbirinin tersi  invertor calışması icin

Alcak geciren icin pasif filitre kullanıldı 
realde aktif filitre olacak  Aktif filitre kullanmamın  sebebi sinus e cevrilince dogal olarak genlik duşuyor  aktif filitrede kazanc vererek telafi etmeyi düşünüyorum


osilaskop 5 ms de ve sinus ün  iki tepe noktası arasında 4 kare var period 4x5= 20 ms   demekki frekans 50 hz

denemek isteyenler icin
hex ve dsn ekte




Erata

#7
Bir Kolaylık  olarak tablo olusturma programı

smart sine


Erata

#8
Araştırma icin dolanırken Basic icinde bir örnek buldum ama   pbp complier im olmadığından deneyemedim

picbasic de yazacak arkadaşlara kaynak oluşturabilir


'PIC 16F628a   sinuspwm 50hZ
'made by mat janssen

@ DEVICE PIC16F628A,XT_OSC
@ DEVICE PIC16f628A,HS_OSC
@ DEVICE PIC16F628A,MCLR_OFF
@ DEVICE PIC16F628A,BOD_OFF
@ DEVICE PIC16F628A,LVP_OFF
@ DEVICE PIC16F628A,CPD_OFF
@ DEVICE PIC16F628A,PROTECT_ON

DEFINE OSC 20
DEFINE CCP1_REG PORTB
DEFINE CCP1_BIT 3
CCP1CON = %00001100
CMCON = 7
OPTION_REG = $C3
INTCON = $C5
PIE1 = 1
T1CON = $05
T2CON = $7C
TRISA = %00111111
TRISB = %00000000

STP VAR BYTE
GETAL VAR BYTE
FREQ VAR WORD
FREQL VAR FREQ.BYTE0
FREQH VAR FREQ.BYTE1

Clear

FREQ = $FE88 '50Hz


ON INTERRUPT GoTo UPD



BEGIN:
GoTo BEGIN


Disable
UPD:
STP = STP + 1
IF STP > 199 Then STP = 0
LookUp STP,[128,132,136,139,143,147,150,154,158,161,165,169,172,176,179,182,186,189,192,195,199,202,204,207,210,213,215,218,220,223,225,227,229,231,233,235,237,238,240,241,242,243,244,245,246,247,247,247,248,248,248,248,248,247,247,247,246,245,244,243,242,241,240,238,237,235,233,231,229,227,225,223,220,218,215,213,210,207,204,202,199,195,192,189,186,182,179,176,172,169,165,161,158,154,150,147,143,139,136,132,128,124,120,117,113,109,106,102,98,95,91,87,84,80,77,74,70,67,64,61,57,54,52,49,46,43,41,38,36,33,31,29,27,25,23,21,19,18,16,15,14,13,12,11,10,9,9,9,8,8,8,8,8,9,9,9,10,11,12,13,14,15,16,18,19,21,23,25,27,29,31,33,36,38,41,43,46,49,52,54,57,61,64,67,70,74,77,80,84,87,91,95,98,102,106,109,113,117,120,124],GETAL
CCPR1L = GETAL
TMR1L = FREQL : TMR1H = FREQH
PIR1.0 = 0
Resume


F®T

katkılardan dolayı teşekkür ediyorum.bu iş üzerinde uğraşıp nasip ise 3 fazlı 400hzlik  bir konverter yapmak istiyorum. acaba işlemci hızı ile ilgili bir sıkıntı oluşurmu
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

gilestel

Sinüs pwm oluşturmaya çalışıyorum fakat konuda yeniyim yardımcı olabilir misiniz*

Hattuşa

#11
sa arkadaşlar konu ile alakası yok ama sinüs sinyali için, nacizane önerim AD9850 kullanılmasıdır. bununla ilgili sitede epey uğraştım ve sonunda 1 hz ile 7 mhz arası 1 hz hassasiyette sinüs üretmeyi başardım.


bu kit ebay gibi satış sitelerinde 6-10 dolar arasında satılmaktadır. kitin kontrolü SPI veri yolu ile sağlanmakta, ben proton ile kiti kontrol ettim.

F®T

güzel bir karta benziyor.tek faz çıkışlımı?kartın genel özellikleri nelerdir?
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

Hattuşa

FFT usta;
2 adet sinüs çıkışı var, gerçi 2. çıkışı kontrol etmedim, çıkış genliği 1v entegre datasheetini incelerseniz daha sağlıklı bilgiler alabilirsiniz. esasında 128Mhz rezanatorle 40 Mhz e kadar çıkış veriyor, bana 2mhz e kadar lazım olduğu için üzerinde durmadım, şuan ki yazılımla 7 mhz civarına kadar sorunsuz çıkış veriyor. 32 bit işlem olduğu için biraz beni zorladı ve uygulamam biraz dağınık oldu zira 12 adet (telefon tuş takımı) bu kit işlemci katı vs derken kablo karmaşası vardı asıl uygulama için bir PCB çizip kutulamak lazım ama bilirsiniz elektronikçiler biraz dağınık ve yoğun insanlardır (en azından ben öyleyim) şimdilik devreyi çalıştırıp sonuçları gördüm, nasipse ilerleyen zamanda çıkışa bir opamp ekleyip onun çıkışından da kare dalga almayı düşünüyorum, testere sinyali almak için nasıl bir configrasyon yapmam lazım şimdilik araştırmadım. amacım sinüs, kare ve testere çıkışlı bir sinyal generatoru yapmak, dediğim gibi şimdilik üzerine yoğunlaşamadım...  ;D

F®T

teşekkürler.güzel bir kite benziyor.ilerde banada lazım olabilir.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

Powered by EzPortal