Ses frekansını ölçen bi devre pic c dilinde pic16f877 ile tasarımı??

Başlatan dejavumelih, 07 Haziran 2009, 11:35:21

dejavumelih

Ses frekansını ölçen bi devre pic c dilinde pic16f877 ile tasarlamam gerek konu hakkında bana yardım edebilrimisinizz??

gevv

[IMG]http://img191.imageshack.us/img191/5445/piccses.th.jpg[/img]

#inlude <pic.h>
#inlude <delay.c>
#inlude <lcd.c>
#inlude <stdio.h>
#inlude <math.h>

/*1sn gecikme*/

void bir_saniye(void)

{
unsigned char j:
for(j=0;j<4;j++)DelayMs(250);
}

/*ses db cevir spl hesapla*/

double ses_db(double p)

{
const double Pref=-93.98; //yükseltici kazanc
conts double gain= 150.0; //mikrofon 19.6mv/pa
conts double elektret= 19.6;
float Pa,spl;


if(p<1.0)spl=0;
else

{
Pa=p/(gain*elektret);
spl=20.0*log10(Pa)-Pref; //ses db olarak

}
return(spl);

}


/*ana program*/

main(void)

{

conts double lsb= 5000.0/1024.0; //lsb değeri
double yuksek,dusuk,volt,ses,mv;
unsigned int dB;
unsigned char goster[]=\"SES(dB)=\";
TRISB=0; //portb cıkış
TRISA=1; //ra2 ra3 cıkış
//ra0 giriş an0
//ad çeviriciyi tanımla

ADCON1=0x8E;
ADCON0=0x41;

lcd_init(); //lcd tanımla
lcd_clear(); //lcd temizle

for(;;) //sonsoz döngü

{

ADCON0=0x8E; //ad çeviriciyi başlat
while((ADCON0&4) !=0); //ad çeviriciyi bekle
yuksek=ADI.ESH; //yüksek bayt oku
dusuk=ADRESL; //düsük bayt oku
volt=256.0*yuksek+dusuk; //okunan sayısal sayı
mv=volt*lsb; //mv olarak gerilim
ses=ses_db(mv) //ses şiddeti db olarak
dB=(int)(ses); //db tam sayı olarak
sprintf(goster+10,\"%d\",dB);
lcd_clear(); //lcd temizle
lcd_puts(goster); //lcdde göster
bir_saniye(); //1 sn bekle

}

}


Devre mikrofondan gelen ses sinyalini lcd ekranda gösteriyor mikrofion yerine farklı ses kaynaklarıda bağlanabilir ama yüksek seviyeli olmamalı yüksek sesleri sınırlayarak uygulayabilirsiniz

Ayrıntılı bilgi için Doç. Dr. Doğan İbrahim beyin kitabını öneririm PICC ile Ses Projeleri
http://www.yayinevi.bilesim.com.tr/pic_ses.html


dejavumelih

Verdiğiniz kaynak için teşekkür ederim ama bu ses şiddetini ölçen bir devre frekansı ölçmem için üzerine ne eklemem gerekiyor? Bu konuda da yardımcı olabilir misiiniz?

gevv

http://www.circuit-projects.com/cimg/frq/Frequency-Counter.rar

tahminimce giriş bölümü düzenlenerek ses frekansı için kullanılabilir pic16f628 kullanılmış ama c dili kolay taşınabilir olduğu için pic16f877 için bir kaç düzenleme ile kullanılabilir


rush

mikrofondan gelen sinyali adc den geçirip sonra fft aldırdıktan sonra sesin frekans spektrumunu lcd ekrana yazdırabilirsin ;)

Hızlı Yanıt

Not: Bu konu bir moderatör tarafından onaylanmadan görüntülenmeyecektir.

Adı:
E-Posta:
Doğrulama:
Lütfen bu kutuyu boş bırakın:
IRFP250 Nedir:
kısayollar: göndermek için alt+s veya önizleme yapmak için alt+p'ye basın