digitalaudioBir önceki yazımda faz farklı genel bir sinüs için dijital denklem elde edilmişti. Şimdi ise önce matlab-simulink ile basit bir simülasyon ardından STM32f429-Disco geliştirme kitini kullanarak 2 adet faz farklı sinüs fonksiyonunu DAC çıkışlarından üreteceğiz. Sinyallerin gözlemlenmesi için Electronic Explorer Boardu kullanıldı. Kod geliştirme ortamı için Keil, çevre birimleri ve saat-sinyallerini(clock configuration) hızlıca ayarlamak için ise STM32Cube programları kullanılmıştır. Uygulamaya ait yazılım dosyalarını buradan indirebilirsiniz.

KATSAYILARIN HESAPLANMASI

Sinüs frekansları 80Hz ve örnekleme frekansımız 16kHz seçildiğinde 2 adet sinüs denklemimiz için gerekli olan 8 adet katsayı

blok_sema_kirpildiSin(w*n*Ts) için:
fb1 = 1.9990131
fb2 = -1.0
ff1 = 0
ff2 = 0.03141075
Sin(w*n*Ts + 35derece) için:
fb1 = 1.9990131
fb2 = -1.0
ff1 = 0.5735764
ff2 = -0.5475632

yukarıdaki gibi elde edilmektedir.

MATLAB SİMÜLASYONU

Yukarıda hesaplanan katsayılar simulinkte oluşturulan blok şemaya yerleştirilip simülasyon çalıştırıldığında aşağıdaki simülasyon sonucu elde edilmektedir. Burada dikkat edilmesi gereken, giriş sinyali olarak 0 ve her iki sinüs denkleminin 1.gecikme(Uint-Delay) elementinin başlangıç değerinin 1 yapılması gerekliliğidir. Bunun anlamı çıkışta genliği 1 olan sinüslerin üretileceğidir. Başka bir değişyle osilasyon işlemini başlatmak için sisteme verilmesi gereken bir darbe olarak isimlendirebiliriz.

sin0_sin35_Block

Resimleri büyütmek için üzerine tıklayabilirsiniz.

_80Hz_faz0_faz35

MİKRODENETLEYİCİ İLE GERÇEKLEME

Yazılımda sinüs hesaplamaları için gerekli değişkenlerin tutulması aşağıdaki SinusZ yapısı ve sinüs fark denklemi algoritmasının koşturulduğu calcZEquation(SinusZ *sinus) fonksiyonu yazılmıştır. Yazılımın tamamını yazının başında verdiğim adresten inceleyebilir/indirebilirsiniz.

sin0_sin35_20sin0_sin35_10

STM32F429 ile gerçekleme çıktıları yukarıda verilmiştir. DAC çıkışarı için PA4 ve PA5 pinleri kullanılmıştır. İşlemci pinlerinden negatif voltaj üretilemeyeceği için elde edilen dijital sinüs değerlerine 2048 eklenmiştir.

Sinüs denklemlerinin koşturulduğu 16kHz timer kesme fonksiyonu ise aşağıdaki gibidir.

Herkese çalışmalarında başarılar.

Z DÖNÜŞÜMÜ UYGULAMASI

Leave a Reply