c de x Khz dizi oluşturmak

Başlatan semitesla, 17 Kasım 2009, 17:53:22

semitesla



Microchipin sitesinden resimde görülen örnek kodu indirdim. Örnekte bulunan square 1khz dizisini, matlabda time ve frekans domainlerinde çizdirdim resimde  de görüyorsunuz. Sorum şu: ben 1 khz değilde 2khz, 3khz lik  vs. bir dizi oluştumak istesem nasıl oluşturacağım. Örnekleme oranının 10000 olduğunu örnek koddan biliyorum. Microchip  1khz lik diziyi nasıl oluşturmuş. dizinin frekansının olmayacağını biliyorum ama 10000 sayısı ile nasıl bir matematiksel işlem sonucu 1000hz bulunabiliyor.

matlab kodlarım
x=[....]
plot(x)
specx=fft(x)
f=linspace(-5000,5000,512);
plot(f,abs(fftshift(specx)))

mihri

Yanlış hatırlamıyorsam o datalar Q8.7 ( decimal=Q8.7 / 32768 ) notasyonunda yazılmış datalar. Yani genlik decimal olarak 10000 değil 1 olmalı. Dizinin frekans değeri genlik ile alakalı değildir. Dizinin örneklenmesi için geçen süre frekans bilgisini verir. Meselan 1000 elemanlı dizinin elde edilmesi 1sn sürüyor ise ve dizide her 2 eleman periyodik olarak birbirini tekrarıyorsa (kare dalga gibi) bu dizinin elde edildiği işaret için 500Hz diyebiliriz. Bazı durumlar hariç.

Aşağıdaki linkte microchip firmasının dsp için hazırladığı program var burdan denersen daha kolay olabilir.

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en023587
"Eppur si muove!"

azimli

anladığım kadarı ile simetrik bir kare dalga sinyal oluşturmak niyetindesiniz ama sinyal üst(+) ve alt(-) alternanslar boyunca her alternans kendi içindede 0V. ile arasında kare dalga oluşturuyor ve bu kare dalgalar simetrik bir periyottta oluşmuyor önce dar daha sonra açılarak giden ve yine daralarak alternansını tamamlayan sinyaller oluyor
yani amaç yüksek frekanslı ortalaması sinüs sinyali olan bir sinyal oluşturmak asenkron motor süren invertörler gibi,bir nevi ortalaması şebeke geriliminin sinüs eğrisine benzer bir sinyal elde etmek.


bu işi bir kaç gündür bende araştırıyorum tek alternans için sürekli aynı periyotlarda sinyal oluşturma işi mikro işlemci Timer+Output Compare modülü ile oluşturulabiliyor gibi,
neden gibi; henüz gerçekte denemedim ama büyük ihtimalle çalışır diğer alternansı işin içine kattığımda olay karışıyor araştırmalarım bu işin en iyi işlemcinin motor kontrol pwm modülüyle gerçeklenebileceğini söylüyor işlemcide bu iş için bazı modellerde 6 bazılarında ise 8 kanal ayrılmış bu kanalların yarısı üst (+) alternans yarıda alt (-) alternansları sürmek için 3 ve 4 fazlı sitemler oluşturmak için.

resimdeki sinyal için 1 tek çift kanala ihtiyaç var.

z

Ornekleme frekansı fs, üreteceğiniz sinyal frekansınız f ise

fs=nf bağıntısı geçerli.

Örnegin 10Khz örnekleme ile

5 Khz sinyal üreteceksen n=2
2 Khz sinyal üreteceksen n=5
1 Khz sinyal üreteceksen n=10

Matlab değil de Basic ile sinüsel bir sinyal verilerini tablo yapmak istersen

n=fs/f ve k sinyal genliği olmak üzere,

dim y(n)
for x=0 to n-1
y(x)=int(k*sin(x*2*pi/n))
next n

ile sin(x) tablosunu oluşturursun.

Eğer kare dalga tablosu oluşturmak istersen

dim y(n)
for x=0 to n-1
if x>= n/2 then y(x)=-k else y(x)=k
next n
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

semitesla

hepinize çok teşekkür ederim yukarıda linkte verilen program işimi gördü.