Elektret Mikrofonundan (veya diğer bileşenlerden) gürültü için + 5v, sessizlik için 0v nasıl alabilirim?


12

Burada düzgün bir soru almak için birkaç soru soruyordum, sorduğum ilk sorular sonunda bağlantılı. İlk düşüncelerimin bazı şemalarını oluşturmak için Fritzing'i kullandım, ancak en azından bileşenler üzerindeki değerlerle ilgili yardıma ihtiyacım var, ki bu sadece makul veya ortak değerler gibi görünen şeyleri belirsiz bir şekilde anladım ve seçtim.

Temelde, 6 analog girişi olan bir Arduino var. Analog pimlerin herhangi birindeki voltajı okumak için 10 bitlik bir ADC kullanır, bu nedenle 0 = 0v, 511 = 2.5v ve 1023 = 5v ve arasındaki tüm değerler. Bir LINEAR DC okuması yapar, bu yüzden burada 1-0 mantığı aramıyorum.

Bunu LED ışıklara bağladım ve müziğe yanıt vermelerini istiyorum. İstediğim minimum bileşenlerle maksimum çözünürlük ve WAY çok fazla bileşen kullanıyorum ve bu WAY'ı çok karmaşık hale getiriyorum. Belki de Electret mikrofonları burada istediğim gibi değil, başka bir şeye açığım. PCB'imdeki alandan tasarruf etmek için op-amp kullanmamayı tercih ederim.

İstediğim basit bir gürültü seviyesi sensörü. Sesi çoğaltmak ya da netlik ya da herhangi bir şey aramak istemiyorum, ancak yakınlaşabildiğim kadarıyla istiyorum:

  • Mükemmel Sessizlik = 0v DC'ye (kararlı, AC değil) mümkün olduğunca yakın
  • Orta Gürültü = Yaklaşık 2.5v DC (kararlı, AC değil)
  • Yüksek Gürültü = 5v DC'ye (kararlı, AC değil) mümkün olduğunca yakın

Bir BJT ile anlayabileceğim en iyi şeyin 0.6v ila 4.4v arasında olacağını anlıyorum, ancak bu yeterince kabul edilebilir. Bununla birlikte olmayan, dalganın yarısı, 0.6v ila 2.5v arasındadır. Bu, mevcut kararımın yarısını sebepsiz yere boşa harcıyor gibi görünüyor. Ancak, bir BJT'den beni 0v-5v'ye yaklaştırabilecek başka kurulumlar varsa, onları denemek isterim; basit oldukları sürece.

İşte bunun daha basit olduğunu umuyorum, bunun mümkün olduğunu umuyorum, ancak elektret sinyalinin sadece pozitif yarıyı elde etmek için zarf dedektörü devresini (diyot, direnç ve kapasitör) sürmek için yeterli genliğe sahip olmasını gerektiriyor. Diyotun ileriye doğru düşmesi nedeniyle olabileceğini düşünmüyorum, ancak belki de bu, çıkış başlığından önce yeniden düzenlenebilir veya yapılabilir mi? Zarf detektörü ve amplifikatör dirençlerinin değerleri ne olmalıdır? Sinyale, RE veya RL'ye bir duyarlılık potansiyometresi yerleştirilmeli ve değeri ne olmalıdır? Doğrusal mı, Logaritmik mi?

Basit

Bununla birlikte, belki elektret çıkışı zarf detektöründen, hassasiyet şantından kurtulamaz ve yine de bir NPN transistörü süremez. Değilse, işte daha karmaşık bir sürüm. Bu rotaya gitmem gerekiyor mu? İstediğim çıkışı devreden almak gerçekten tüm bu bileşenleri gerektiriyor mu?

karmaşık

Daha fazla ayrıntı için, neyi eklemeye çalıştığımı tam olarak anlamadan önce sorduğum bazı geçmiş sorular. Zarf dedektörünün yapması gereken 'işte' ve elektret çıkışı için nasıl ayarlanacağından emin değilim:

Zarf Dedektörü Devre şeması


Bence bu hala oldukça geniş. Kendinize sormanız gereken soru, "bir sesin yüksek olması ne anlama gelir?" İnsanın ses yüksekliği algısı karmaşıktır ve frekansa, sesin süresine, ruh haline, kahve tüketimine, vb. Bağlı olabilir. İnsanların “sessizlik” algısı da çevreye ve ortam gürültüsüne bağlıdır. Ölçmek için bir elektrik devresi gerçekleştirmeden önce bu öznel algıları daha nesnel tanımlara çevirmeniz gerekecektir.
Phil Frost

İşte size yardımcı olacak bazı arama terimleri: "tepe dedektörü" "RC devresi" "zaman sabiti" "köşe frekansı" "düşük geçiş filtresi" "dB SPL"
Phil Frost

Bunu hesaba katmak için tasarımda bu hassasiyet potansiyometresine sahibim ('etkili bir şekilde tüm sessiz' veya 'her zaman yüksek' olabilmesi için yeterince geniş olmalı ve oradan ayarlayabilirim). RL, RE (kazancı kontrol etmek veya bir şey kontrol etmek) ya da sinyali şant etmek yerine mi bilmiyorum. Başka nasıl daha spesifik olabileceğimi bilmiyorum, daha fazlasına ihtiyaç duyulduğunu netleştirmeye yardımcı olabilir misiniz?
Ehryk

1
Denetleyicinin ADC referans voltajını 2V56 bant aralığına değiştirirseniz, 0-5V çıkış voltajına ihtiyacınız yoktur. 0 - 2.56V arasında tam çözünürlüğe ulaşacaksınız. Tam denetleyiciye bağlı olarak, referans olarak kullanmak için çeşitli bant boşluk voltajlarına sahipsiniz.
jippie

1
"Küçük sinyal aktif doğrultucu" için arama yapın ve diyot eşik voltajını denklemden alan techonlineindia.com/Libraries/tol/Signal3.sflb.ashx gibi bir devre bulun .
jippie

Yanıtlar:


27

Her şeyi sadece bir amplifikatör ve bir mikrodenetleyici (Arduino) ile yapabilseniz de, görebildiğim kadarıyla, analog seçeneği istiyorsunuz. Mikrofondaki ses seviyesini veren bir devre oluşturmaya çalıştım. Aralık 0V ila 4V arasındadır. Ancak, OP-AMP'yi değiştirerek kolayca 0V'den 5V'a yükseltebilirsiniz. Şimdi içine girelim;

Her şeyden önce, transistör amplifikatörünü OP-AMP ile değiştirdim. İşte ben geldim;

resim açıklamasını buraya girin

Bu 100 kazanç ile basit bir ters yükselticidir. İşte kazancı hesaplamak için formül;

Vout=RfRinVin=100kRinVin=100Vin

Gördüğünüz gibi, U1 giriş sinyalini alır, ters çevirir ve ardından 100 ile çarpar. R2 veya R3'ü değiştirebilirsiniz ve U1 kazancının değiştiğini göreceksiniz. Daha sonra anlayacağınız için giriş sinyalinin ters çevrilmesi burada önemli değildir. Bu amplifikatörün çıkışına bakalım ve giriş sinyalinde büyük bir büyüme olduğunu göreceksiniz.

resim açıklamasını buraya girin

Yukarıdaki grafikte, çıkışın DC ofset voltajının 2,5 volt olduğunu göreceksiniz. Bunun nedeni, kullandığımız sanal zemindir. Sanal bir zemin yaratırsak, bu, zemini başka bir voltaj seviyesine taşıdığımız anlamına gelir. Bu durumda onu 2.5 V'a taşıdık. Yeni yapılandırma ile devreye -2,5 V, 0 V ve 2,5 V gibi görünen bir şey yarattık . Bunu başarmak için 2.5 voltluk yeni bir voltaj rayı oluşturmak zorunda kaldım. Bu voltaj rayı (1 mA'dan daha az) çok fazla güç sağlamayacağından, oluşturulması kolaydır;

resim açıklamasını buraya girin

V+=V

Amplifikasyondan sonra, sinyali bir "zarf detektörü" ne yani "zarf takipçisi" ne takmalıyız. Bu, istediğiniz gibi ve sorunuzdaki resimde gösterdiğiniz gibi sinyal seviyesini alacaktır. Temel bir zarf takipçisi şöyle görünür:

resim açıklamasını buraya girin

Her şey harika görünüyor, ancak burada D3'ün bir diyot olduğunu ve kendi başına yaklaşık 0,6 V düştüğünü fark edin. Böylece, voltajı kaybedersiniz. Bunun üstesinden gelmek için, "süper diyot" olarak adlandırılan şeyi kullanacağız. Gerilim düşmesi neredeyse 0V olduğu için süper! Bunu başarmak için, diyotlu bir OP-AMP dahil ediyoruz ve hepsi bu! OP-AMP, diyotun voltaj düşüşünü telafi edecektir ve neredeyse ideal bir diyotunuz olacaktır;

resim açıklamasını buraya girin

V+=VVVV+

Şimdi, yukarıdaki zarf takip devresindeki D3'ü bir süper diyotla değiştirin ve daha iyi bir zarf takipçiniz var! Sonuçlarımıza bakalım;

resim açıklamasını buraya girin

Yaklaşıyoruz. Gördüğünüz gibi, kırmızı çizgi olan zarf takipçisinin çıkışı 2,5 V ila 4 V arasında olabilir. 2,5 V ses yok, 4 V yüksek ses ve orta ses için 3,25 V. Bunu istediğiniz şekilde ölçeklemek için 2,5 V ofset voltajını çıkarabilir ve ölçeklendirebiliriz. Yani, 2.5 V çıkardığınızda; Ses yok için 0 V, 1,5 V yüksek ses ve orta ses için 0,75 V vb. Bundan sonra, bunu yaklaşık 3 ile çarparsanız, tam olarak istediğinizi elde edersiniz. Ses yok için 0 V, orta ses için 2,5 V ve yüksek ses için 5 V. Özetle, istediğimiz bu;

Vout=(Vin2.5V)3

Bunu başarmak için, bir diferansiyel yükselteç veya başka bir deyişle bir " çıkarıcı " kullanacağız .

resim açıklamasını buraya girin

Dirençler, R1 = R2 ve R3 = R4 olduğunda, diferansiyel amplifikatörün transfer fonksiyonu aşağıdaki ifadeyle basitleştirilebilir:

Vout=R3R1(V2V1)

V1 = 2.5V ve R3 / R1 oranını 3 yaparsanız, istediğiniz çıkışı elde edersiniz.

İstediğinizi yapacak tam şematik:

resim açıklamasını buraya girin

Simülasyon amacıyla LM324 OP-AMP'yi burada kullandım. Bu, maksimum çıkış voltajını 4V ile sınırlar. Tam menzilli çıkışa sahip olmak için, raydan raya çıkış OP-AMP kullanmalısınız. MCP6004'ü öneririm . İstediğiniz sonucu elde edene kadar R1 ve R2'yi değiştirin. İşte simülasyon ile ne var:

resim açıklamasını buraya girin

Şimdi, ADC'de bu değerleri ölçerken, doğrusal bir anlam elde edemezsiniz , bunun yerine ses kulakları bu şekilde duyduğu için logaritmik olarak daha iyi anlaşılır. Yani desibel kullanmalısınız . Desibellere aşina değilseniz, işte bununla ilgili harika bir video eğitimi.

Örneğin, sessiz bir odanın 40 dB civarında olduğu ölçülür. Bir odadaki bir parti, odanın seviyesini 100 dB'ye veya belki 110 dB'ye kadar çıkaracaktır. Bu web sitesinde e, bunun altında, resmin altına gömdüğüm yerden harika bilgiler bulabilirsiniz. Desibel seviyelerini düşünün ve devrenin voltaj çıkışını deneyin. Ardından, ihtiyacınız olacak ADC çözünürlüğünü hesaplayın. Muhtemelen, 12 bitlik bir ADC ile iyi olacaksınız.

resim açıklamasını buraya girin


5
Bu olağanüstü bir cevap; SE'nin bir şöhret salonu olsaydı, bunu aday gösterirdim. Çok hassas ve açıklayıcı olduğunuz için teşekkür ederiz! Bu resimleri nasıl üretiyorsunuz, bir osiloskoptan yakalama, PC kapsam yazılımı veya bir çözme algoritması?
Ehryk

1
@Ehryk Teşekkürler, ama abartıyorsunuz :). Öyle LTspice kullandığım söyledi.
abdullah kahraman

@Ehryk Cevabımı güncelledim ve ses ölçümü hakkında daha fazla bilgi ekledim.
abdullah kahraman

İnsanları hemen simülasyonları paylaşmak ve paylaşmak için devre kartını kullanın! Sana bunun için 50 temsilci vereceğim.
Kortuk

1
@Kortuk Ben düzgün taklit edemedim
abdullah kahraman

7

Doğru yolda gibi görünüyorsun. O does bu tür bir şey yapmak için ayrık bileşenlerin bir sürü almak. Bana inanmayabilirsiniz, ancak op-amp kullanmak bunların hepsini basitleştirebilir ve küçültebilir. Eminim daha küçük bir pakette ihtiyacınız olandan daha fazlasını yapan daha özel IC'ler bulabilirsiniz. Bahse girerim tam olarak ihtiyacınız olanı yapan bir IC vardır . Ancak, sadece akademik değer için bile olsa, onlarsız devam ederseniz daha fazla bilgi edineceksiniz.

Ayrıca mantığı mikroişlemciye taşıyarak bunlardan bazılarını basitleştirebilirsiniz. Zarf tespiti yazılımda kolaydır ve mikrofonunuzun ne kadar doğru olması gerektiğine ve mikrofonunuzun hassasiyetine bağlı olarak, mikrofondan sonra amplifikatörü atlamak ve çıkışını doğrudan ADC'ye koymaktan bile kaçabilirsiniz. Bu size 0V-5V kazandırmaz, ama bu önemli mi? Yazılımda bir sabitle çarpabilirsiniz. Kaybettiğiniz şey, ADC'nin tüm yelpazesini hazırlamanın doğruluğudur, ancak belki de basitlik kadar önemli değildir. Sen karar ver.


Op-amp'lerin daha basit yapabileceğini inanmıyorum, PCB gayrimenkulünü en aza indirmeye çalışıyordum. Bununla birlikte, bir LM358 8 pimli daldırma işleminin DRASTICALLly daha basit olacağı acı verici bir şekilde ortaya çıkıyor. Bir elektret mikrofonunun da kötü bir seçim olup olmadığını merak ediyorum; böyle basit bir arzunun (duyu yüksekliği, 0V-5V) saçma sapan karmaşık olduğu saçma görünüyor.
Ehryk

Bir elektret tek başına ~ 20mV tepe-tepe verir. Arduino'nun ADC'si ile bu, mükemmel sessizlikten mümkün olan en yüksek seviyeye kadar iki farktan ibarettir (sessiz olduğunda 5,9mV çözünürlük, tam patlamada 513 ila 509). Tek degradeler olarak "Sessiz / Orta / Yüksek" değil, iyi hassasiyet aralıkları istiyorum ve bu çizginin mükemmel bir şekilde kararlı olduğunu varsayıyorum.
Ehryk

@Erryk, sadece küçük şeyleri tutmak istiyorsanız, LM358'i (veya başka bir ortak op-amp'i) SOIC gibi büyük bir yüzeye monte paketinde bulabileceğinizden eminim . İyi aletlerle elle lehimlenmesi çok kolaydır ve delik açmak zorunda değilsiniz. Zaten tam olarak ihtiyacınız olanı yapan bir sensör satın almadığından, bir elektret mikrofonundan daha basit yapacağınızdan ve önyargı ve amplifikasyon hariç hepsini mikrodenetleyiciye taşıyacağınızdan şüpheliyim.
Phil Frost

4

Öncelikle, daha fazla işlem yapmanız gerekmedikçe arduinoya ihtiyacınız yok - gerçekten istediğiniz tek şey bir amplifikatör (bir op-amp yapardı, googles'in her yerinde temel devreler yükler). 0-5V. Doğruluk konusunda çok endişelenmiyorsanız (bilimsel ölçümden ziyade eğlence için olduğu gibi) oldukça temel bir kırpma devresi kullanabilir, çıkışı bir schmitt tetikleyicisine bağlayabilir veya bir ekran oluşturmak için LM3914 kullanabilirsiniz.

Bir AGC devresi kazancı ortalama seviyeyle otomatik olarak yukarı ve aşağı doğru artırmak için biraz daha incelik elde edilebilir.

Her neyse, arduino'yu terk ederek ve doğayı amaçladığı gibi analog yaparak büyük bir pozitif karma elde edersiniz;)

Düzenleme: Şans web üzerinde "mikrofon pre-amp" devreleri de bir sürü, muhtemelen bu gün sizin için yapmak bir 0.10 $ SOT23 çip var ...


Arduino, bir LED dizisini 5 PWM piniyle kontrol ediyor ve gürültü girişinin çeşitli bölümlerinin parlaklıklarında farklı harfler / desenler yanıp sönmesini sağlayacağım. Yani - arduino gereklidir ve bir şekilde, iyi bir çözünürlükle, müziğe değişen derecelerde parlaklıkta PWM yapabilmesi için ne kadar yüksek olduğunu söylemem gerekiyor. Devre şeması olmadan ne yaptığınızı gerçekten bilmiyorum.
Ehryk

Devre şemalarına takıntı etmeyin, her ders kitabında yer alan temel yapı taşları olan devreleri tanımlarım, hızlı bir google çeşitli işlevler (pre-amp, AGC, clipper, vb.) İçin temel devreleri açmalıdır. Disco icat edildiğinden beri hobi elektroniğinin konusu olan daha disko şeyler (grafik EQ devreleri, ekran sürücüleri, ışık organları, vb.).
John U

Sorun, değişken bileşenler ve 'özellikler' ile belirsiz bir şekilde tanımlanmış veya hiç tanımlanmamış çok fazla örnek olmasıdır. Belirli bileşenlerin neden seçildiğine ve değerlere ulaşıldığına dair bazı açıklamalara sahip özel diyagramlar, en yararlı bulduğum şey ve sorularımda genellikle istediğim şeydir. Örneğin bu cevap olağanüstü ve son derece yardımcı oldu.
Ehryk

Lego istiyorsun, bir plastik parçası ve neşter öneriyorum, bu sadece farklı bir yaklaşım.
John U

2
... ve zaten 10 top plastik ve kendi neşterim olduğu ve arama yaparak yüzlerce daha fazla şey alabileceğim gerçeğine cevap veriyorum. Artı, özellikle soruda bir lego istedim ve 'lego beklemeyin' diyorsunuz.
Ehryk
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.