kapasitif mic

Başlatan helloworld, 14 Aralık 2014, 20:27:59

helloworld

bundan aldım 




aşıgıdaki preamplifikatör devresini denedim.ortam sessizken çıkış sıfır bağırdıkca 30 mv lara kadar çkıyor.ben bunu adc yapıyorum(16f877a).ortam sessizken max bağırdıkça lcd de değeri düşüyor.


yardımcı olur musunuz.hangi yükselteci kullanıyım bu mikrofona.lcd de ortam gürültüsünü 0-100 arası bi degerde göstermeyi istiyorum da.

Kabil ATICI

#1
ADC'de ölçüğün değeri 0x03FF'den veya 1023'den. çıkart. Böylece senin değerin tersi alınmış olur. Elde ettiğin sonucu ekranda göstermek için kullanabilirsin...

İşlemci kullanıyorsun, sonucu istediğin gibi oynayabilirsin...
ambar7

runcode

#2


Bİ ARA BEN BUNDAN KULLANMIŞTIM HATTA ELİMDE BAYA Bİ VAR BAS KONUŞ YAPMIŞTIM GAYET GÜZEL DENİYE BİLİRSİN.

helloworld

#3
çok iyi fikir teşekkürler.fakat az önce birşeyi daha farkettim.potla voltaj okuyup lcd de gösteriyorum(0-100 degeri).potun çevirdikçe 0 degerindeki gürültü 500 birimine çıkıyor.neden acaba?etkileniyor çünkü pottan.


burda preamplifikatör devresi yok çünkü mikrofon picte olmadıgı için.yazdıgım kodu da paylaşıyım.

/

#define use_portb_lcd TRUE   // LCD B portuna bağlı

#include <lcd.c>   // lcd.c dosyası tanıtılıyor

unsigned long int bilgi,bilgi2,bilgi3; 
float voltaj,voltaj2,voltaj3;  



void main ( )
{
   setup_psp(PSP_DISABLED);        // PSP birimi devre dışı
   setup_timer_1(T1_DISABLED);     // T1 zamanlayıcısı devre dışı
   setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
   setup_CCP1(CCP_OFF);            // CCP1 birimi devre dışı
   setup_CCP2(CCP_OFF);            // CCP2 birimi devre dışı
   
   set_tris_e(0x0F);  // RA0 Giriş olarak yönlendiriliyor

   setup_adc(adc_clock_div_32);   // ADC clock frekansı fosc/32
   setup_adc_ports(ALL_ANALOG);
   
   lcd_init();   // LCD hazır hale getiriliyor
      
       printf(lcd_putc,"\f  OLCU ALETI");
       printf(lcd_putc,"\n  ....");
       delay_ms(2500);
       
     
   while(true)   // sonsuz döngü
   {
      set_adc_channel(5);  
      delay_us(20);         
      bilgi=read_adc();  

      voltaj=(0.0048828125*bilgi)*100;   
      voltaj=voltaj+2;
      lcd_gotoxy(1,1); 
      printf(lcd_putc,"\f   SICAKLIK");
      printf(lcd_putc,"\n%f",voltaj);
      delay_ms(2000);
       
       
       
      set_adc_channel(6); 
      delay_us(20);       
      bilgi2=read_adc();
      voltaj2=(bilgi2)/10;      
      lcd_gotoxy(1,1);
      printf(lcd_putc,"\f      VOLTAJ");
      printf(lcd_putc,"\n%f",voltaj2);      
      delay_ms(2000);
      
      set_adc_channel(7);  
      delay_us(20);         
      bilgi3=read_adc();
      voltaj3=bilgi3/10;
            
      lcd_gotoxy(1,1);
      printf(lcd_putc,"\f    GURULTU");
      printf(lcd_putc,"\n%f",voltaj3);
      delay_ms(100);
   }
}


neden potu arttırırken GURULTU degeri 500 lere çıkıyor?

Kabil ATICI

Burada gürültüyü sen nasıl ölçüyorsun? Çünkü orada bir dc çevirici göremedim. Eğer doğrudan mikrofondan gelen sinyali (preampli) ölçüyorsan bu hatalı olur. O zaman anlık sinyal ölçümü yapmış olursun.

VUmetre devreleri girişinde kullan türden bir dc çeviriciye ihtiyacın var.
Normalde opamplı bir şey yapılır. Ama ticari olmayan uygulamalar için diyotlu devre iş görebilir
http://homepage.ntlworld.com/michael.williamson5/xbox/vumeter/images/schematic.gif
buradakine benzer...
http://www.electronics-lab.com/blog/wp-content/uploads/2007/10/led-vumeter.GIF
ambar7

helloworld

#5
3 tane adc girişini kullanıyorum.birisi voltaj,birisi sıcaklık,birisi ses birimini ölçüp yazıyor.voltaj ölçerken potu arttırıyorum sıcaklık degeri de artıyor(lcd ekranında yazan).bu nasıl oluyor.onu anlamıyorum.isiste böyle birşey olmuyor.ama reel de yaparken gürültüde sıcaklık degerı de artıyor.bunun sebebini anlamadım.sizce nedir?

mesaj birleştirme:: 15 Aralık 2014, 00:09:50

Alıntı yapılan: runcode - 14 Aralık 2014, 21:09:43


Bİ ARA BEN BUNDAN KULLANMIŞTIM HATTA ELİMDE BAYA Bİ VAR BAS KONUŞ YAPMIŞTIM GAYET GÜZEL DENİYE BİLİRSİN.

devre şeması daha güzel gözüken hali var mı?

runcode

Görsellerde mikrofon preanfi diye aratırsan bir çok örnek devre şeması çıkar.
Adc uygulaması daha önce yapmadım ama sanki adc portlarını belirtmemişsin gibi geldi bana hangi port ve bitten okuyorsan programa belirt belki düzelir uygulaman..
forumda daha bilgili arkadaşlar daha bi yardımcı olabilirler sanırım...