Ses sinyalini Analog Girişe verme

Başlatan Mucit23, 30 Mayıs 2017, 17:46:35

Mucit23

Selamlar

Ses Sinyalinin Spektrumu ile uğraşıyorum şöyle bir problemim var. PC'den aldığım ses sinyalini 2 Adet gerilim bölücü ile aşağıdaki gibi bir devre ile analog girişe uyguluyorum.

Dirençler 100K, C değerim ise 470nf Polyester kondansatör.

Yüksek frekanslarda genliğim çok düşüyor. Diyelimki 32 noktadan FFT alıyor isem ilk İlk 7-8 Band da max değerler görülürken Sonraki bandlarda genliğin çok düştüğünü görüyorum. Halbuki Girişe Sinyal jeneratörü ile sinyal uyguluyorum genliğim aynı.

Bu sorunun sebebi ne olabilir? Nasıl iyileştirmeler yapılabilir?

ankyra

PC den aldığın ses sinyali sadece pozitif eksende kalıyor olabilir mi?

RaMu


Bence 100k çok büyük geliyor,
R*C değeri büyük Tau büyük oluyor,
yüksek frekanslarda kondansatör hızlı boşalamadığından
bu frekanslar filtrelenmiş oluyor.

10k belki 1k kullanılabilir,
hatta bence kulaklık empedansı gösterecek değerde olmalı ama
bunu sağlamak için belki opamplı bir devre tasarlanabilir.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

Mucit23

Aslında bi uygulamada 1M görmüştüm. 1M o an elimde yoktu 100k kullandım. Daha düşük değerleri denemedim ama yarın deneyip sonucu yazarım

Mucit23

10K direnç ile biraz iyileşme oldu gibi. Fakat hala çok eksik. Üst frekansların genliği hala alt frekanslara göre çok düşük kalıyor.

PSoC'larda CMSIS DSP kütüphanesini derlemeyi başardım. Oradaki hazır kütüphanelerle FFT alıyorum. Ama bahsettiğim sorunlar var. Videolardaki spektrum analyser'lar gibi sonuçlar elde edemedim bir türlü.


Dediğiniz doğru aslında Kulaklık empedansına sahip bir giriş olmalı Line Girişi için fakat nasıl bir devre tasarlanmalı bilmiyorum. Birde Mikrofon bağlamayı düşünüyorum.

berat23

bence sorun empedans, uyumsuz olunca yüke gücü aktaramıyorsunuz. kullandığınız adc nin giriş empedasnı ile filtrenin çıkışı uyumlu mu? bence buna mutlaka bakıp öyle filtre yapın zira pasif filtrede bu önemli, o direnç sadece filtrenin frekans tepkisini değiştirmiyor zira.

çözüm olmazsa aktif filtre deneyin.

Mucit23

hocam bu tür sinyal işleme konularında temel bilgiler dışında bilgim yok. Belki basit bir konu ama filtre nasıl tasarlanır bilmiyorum. Aktif filtre hakkında biraz daha ayrıntılı bahsetmeniz mümkünmü


Birde şöyle bir durum var. R ve C değerleri ne olursa olsun girişe yine ses kartı üzerinden frekansı belirli sinüs verince o frekans bandına ait genlik max değer alabiliyor. Yani sadece müzik sinyalinde sorun var.

RaMu

Aslında yük olarak direk kulaklık bağlayıp,
kulaklık üzerindeki gerilimi ADC ye girsen,
olmaz mı acaba.





Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

OG

Kaynak (PC) üst frekanslarda çıkış seviyesini kendisi düşürüyor olabilir (Low pass mantığı). Öncelikle PC çıkışından emin olmak için skop ile bakmakta fayda var.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

Mucit23

Hocam skopta görüntülemek kolay ama yüksek frekansların genliğinin düşüp düşmediğini doğrudan anlamak zor olur herhalde. Ama skopta sinyalin FFT'sini alabilirim.

Anlamadığım nokta şudur. Neden aynı pc'den müzik sinyali yerine tone generator yazılımları ile sinüs üretince her frekans bandında max genliği görebiliyorum.

Bu arada örnekleme frekansım sabit, Timer ADC ve DMA 3'lüsü ile 32Khz'de örnekleme yapıyorum. Donanımsal problemlerden dolayı şu arkadaşınki gibi temiz bir sonuç elde edemedim.

https://www.youtube.com/watch?v=tCmaOb-VAEo

Sorum şudur. Analog girişe aşağıdaki gibi bir Mikrofon preamplifikatörü bağlayıp ortamdan ses sinyalini alsam eğer empedans sorunu çözülebilirmi?


Epsilon

#10
Sizin konunuza birebir cevap olmayabilir ancak aşağıdaki linkte anlayabildiğimi çevirmeye çalıştım

https://dsp.stackexchange.com/questions/540/lower-frequencies-stronger-in-fft

FFT DÜŞÜK FREKANSLARDA DAHA KUVVETLİ

Mikrofon girişinden FFT hesaplıyorum. Daha düşük frekansların daima daha yüksek frekanslardan daha kuvvetli (daha yüksek dB) aldığını fark ettim.
(Alttaki satırlarda sanırım MATLAB da yaptığı ek hesaplamaları izah ediyor )
Sonra da :
Bu beklenen bir durummudur?  Değilse nasıl çözerim diye soruyor.
Bu soruya en çok puan verilen cevabın çevirisi aşağıda.

"Evet, çok beklenen bir durum. Gördüğünüz şey, mutlak bant genişliği başına sabit enerji olan "white noise" ile karşılaştırıldığında "pink noise" bir spektrum, yani bağıl bant genişliği başına sabit enerji. Pembe sinyaller için 1-2kHz arasındaki enerji 2-4kHz ile aynıdır (her biri bant genişliğinin iki katına çıkıyor veya bir "oktav" temsil ediyor.

Çoğu doğal ses sinyalleri (Konuşma, müzik, film vb.) Pembeye benzer bir spektruma sahiptir. Ayrıca çoğu akustik arka plan sesleri (mikrofon gürültüsü, HVAC gürültüsü, hava basıncı dalgalanmaları, genel arka plan) pembe veya daha düşük frekanslara doğru daha eğik olma eğilimindedir.

İnsan işitme sistemleri de böyle çalışır. İç kulaktaki ses sinyalleri, kabaca üçüncü bir oktav tayfı ile aynı olan sabit bağıl bant genişliğine ("Kritik Bantlar" olarak adlandırılır) ait bantlara ayrılır.

Ses spektrum verilerine bakmanın en iyi yolu, onu logaritmik bir frekans ölçeğinde değerlendirmektir"


Mucit23

Aslında bu bana baya mantıklı geliyor. Bugün osiloskop ile Filtreden sonra analog girişteki sinyali görüntüledim. Sabit genlikli sinüs sinyali band genişliği boyunca frekansını değiştirerek uyguladım. Her frekansta ADC girişindeki sinyalin genliğinin sabit olduğunu gördüm. Yani filtre düzgün çalışıyor gibi.


Normalde spektrum çizerken FFT sonucumun her frekansa ait değerini Bargraph boyutuna göre oranlıyordum. Fakat bahsettiğim problemler oluşuyordu. Dolayısıyla düşük frekanslarda bu oran değerini değiştirerek bu sorunu biraz düzeltebilirim sanırım. Biraz deneme yapmam lazım.

Mucit23

Geçen yazacaktım unuttum. Bu sorun ADC girişine mikofon bağlayarak büyük ölçüde çözüldü. Sadece 0-8Khz arası sinüs dalga uyguladığımda FFT sonucumda anlam veremediğim harmonikler oluşuyor.