- Gerekli malzemeler:
- Devre şeması:
- ADC Değerinden dB'yi Hesaplamak için Regresyon Yöntemini Kullanma:
- Ses seviyesini dB cinsinden ölçmek için Arduino Programı:
- Arduino Ses Seviyesi Ölçerin Çalışması:
- Filtreli Amplifikatör:
Yüksek nüfus yoğunluğu nedeniyle gürültü kirliliği gerçekten önem kazanmaya başladı. Normal bir insan kulağı, 120dB ile 140dB arasındaki ses seviyelerinin gürültü olarak kabul edildiği 0dB ila 140dB arasındaki ses seviyelerini duyabilir. Ses yüksekliği veya ses seviyeleri genellikle desibel (dB) cinsinden ölçülür, ses sinyallerini dB cinsinden ölçebilen bazı cihazlarımız vardır ancak bu ölçerler biraz pahalıdır ve ne yazık ki ses seviyelerini desibel olarak ölçmek için kullanıma hazır bir sensör modülümüz yok. Küçük bir sınıfta veya oturma odasında ses seviyesini ölçmesi gereken küçük bir Arduino projesi için pahalı mikrofonlar satın almak ekonomik değildir.
Bu yüzden bu projede Arduino ile normal bir Elektret Kondenser mikrofon kullanacağız ve ses veya gürültü kirliliği seviyesini gerçek değere mümkün olduğunca yakın dB cinsinden ölçmeyi deneyeceğiz. Ses sinyallerini yükseltmek ve ses sinyallerini dB cinsinden hesaplamak için regresyon yöntemini kullanacağımız Arduino'ya beslemek için normal bir amplifikatör devresi kullanacağız. Elde edilen değerlerin doğru olup olmadığını kontrol etmek için “Ses Ölçer” android uygulamasını kullanabiliriz, daha iyi bir ölçüm cihazınız varsa bunu kalibrasyon için kullanabilirsiniz. Bu projenin dB'yi doğru bir şekilde ölçmeyi amaçlamadığını ve sadece gerçek değere mümkün olduğunca yakın değerler vereceğini unutmayın.
Gerekli malzemeler:
- Arduino UNO
- Mikrofon
- LM386
- 10K değişken POT
- Dirençler ve Kapasitörler
Devre şeması:
Bu Arduino Ses Seviyesi Ölçer devresi, kondansatör mikrofondan gelen sinyalleri yükseltmek ve Arduino'nun Analog portuna sağlamak için LM386 Ses amplifikatör devresini kullandığımız çok basit bir devredir. Düşük voltajlı bir ses amplifikatörü Devresi oluşturmak için bu LM386 IC'yi zaten kullandık ve devre aşağı yukarı aynı kaldı.
Bu özel op-amp kazancı, pin 1 ve 8'de bir direnç veya kapasitör kullanılarak 20'den 200'e ayarlanabilir. Eğer serbest bırakılırlarsa, kazanç varsayılan olarak 20 olarak ayarlanacaktır. Projemiz için bu devre tarafından mümkün olan maksimum kazancı sağlıyoruz, bu nedenle 1 ve 8 pinleri arasında 10 uF değerinde bir kapasitör kullanıyoruz, bu pinin polariteye duyarlı olduğunu ve kapasitörün negatif piminin 8 numaralı pime bağlanması gerektiğini unutmayın. devre Arduino'dan 5V pin ile güçlendirilmiştir.
Kapasitör C2, Mikrofondan gelen DC gürültüsünü filtrelemek için kullanılır. Temel olarak mikrofon sesi algıladığında, ses dalgaları AC sinyallerine dönüştürülür. Bu AC sinyali, bu kapasitör tarafından filtrelenecek olan bir miktar DC gürültüsüne sahip olabilir. Benzer şekilde, amplifikasyondan sonra bile amplifikasyon sırasında eklenmiş olabilecek herhangi bir DC gürültüsünü filtrelemek için bir kapasitör C3 kullanılır.
ADC Değerinden dB'yi Hesaplamak için Regresyon Yöntemini Kullanma:
Devremizi hazırladıktan sonra, Arduino'yu bilgisayara bağlayabilir ve mikrofonumuzdan geçerli ADC değerleri alıp almadığımızı kontrol etmek için Arduino'dan "Analog Read Serial" Örnek programını yükleyebiliriz. Şimdi bu ADC değerlerini dB'ye çevirmeliyiz.
Sıcaklık veya nem ölçümü gibi diğer değerlerin aksine, dB'yi ölçmek kolay bir iş değildir. Çünkü dB'nin değeri ADC'lerin değeriyle doğrusal değildir. Ulaşabileceğiniz birkaç yol var, ancak denediğim her olası adım bana iyi sonuçlar vermedi. Denemek isterseniz bu Arduino forumunu buradan okuyabilirsiniz.
Uygulamam için dB değerlerini ölçerken çok fazla doğruluğa ihtiyacım olmadı ve bu nedenle ADC değerlerini dB değerleriyle doğrudan kalibre etmenin daha kolay bir yolunu kullanmaya karar verdim. Bu yöntem için bir SPL ölçere ihtiyacımız olacak (Bir SPL ölçer, dB değerlerini okuyabilen ve görüntüleyebilen bir araçtır), ancak ne yazık ki bende yoktu ve çoğumuzun olmayacağından eminim. Bu yüzden oyun mağazasından ücretsiz olarak indirilebilen "Ses ölçer" adlı android uygulamasını kullanabiliriz. Bu tür birçok uygulama türü vardır ve istediğiniz herhangi bir şeyi indirebilirsiniz. Bu uygulamalar, gürültü seviyesini tespit etmek ve cep telefonumuzda görüntülemek için telefonun dahili mikrofonunu kullanır. Çok doğru değiller ama kesinlikle görevimiz için işe yarayacaklar. Öyleyse Android uygulamasını yükleyerek başlayalım, benimki açıldığında aşağıdaki gibi görünüyordu
Daha önce de söylediğim gibi, dB ve Analog değerler arasındaki ilişki doğrusal olmayacak, bu nedenle bu iki değeri farklı aralıklarla karşılaştırmamız gerekiyor. Cep telefonunuzda görüntülenen farklı dB için ekranda görüntülenen ADC değerini not edin. Yaklaşık 10 okuma aldım ve aşağıda şöyle görünüyordu, biraz değişebilir
Bir excel sayfası açın ve bu değerleri yazın, şimdilik yukarıdaki sayı için regresyon değerlerini bulmak için Excel'i kullanacağız. Bundan önce bir grafik çizelim ve her ikisinin de nasıl ilişkili olduğuna bakalım, benimki aşağıdaki gibi görünüyordu.
Gördüğümüz gibi, dB'nin değeri ADC ile doğrusal olarak ilişkili değildir, yani eşdeğer dB değerlerini elde etmek için tüm ADC değerleri için ortak bir çarpanınız olamaz. Böyle bir durumda "doğrusal regresyon" yöntemini kullanabiliriz. Temel olarak, bu düzensiz mavi çizgiyi mümkün olan en yakın düz çizgiye (siyah çizgi) dönüştürecek ve bize bu düz çizginin denklemini verecektir. Bu denklem, Arduino'nun ölçtüğü her ADC değeri için eşdeğer dB değerini bulmak için kullanılabilir.
Excel'de, değerler kümeniz için regresyonu otomatik olarak hesaplayacak ve verilerini yayınlayacak veri analizi için bir eklentimiz var. Bu projenin kapsamı dışında olduğu için bunu excel ile nasıl yapacağımı anlatmayacağım, aynı zamanda Google için çok kolay ve öğreniyorum. Değerin regresyonunu hesapladığınızda, excel aşağıda gösterildiği gibi bazı değerler verecektir. Yalnızca aşağıda vurgulanan rakamlarla ilgileniyoruz.
Bu sayıları aldıktan sonra aşağıdaki denklemi oluşturabileceksiniz.
ADC = (11.003 * dB) - 83.2073
Buradan dB'yi türetebilirsiniz
dB = (ADC + 83.2073) / 11.003
Kalibrasyon farklı olabileceğinden kendi denkleminizi sürmeniz gerekebilir. Ancak, Arduino'yu programlarken buna ihtiyacımız olacağı için bu değeri güvende tutun.
Ses seviyesini dB cinsinden ölçmek için Arduino Programı:
DB ölçmek için eksiksiz program aşağıda verilmiştir, birkaç önemli satır aşağıda açıklanmıştır.
Bu iki satırın üstünde, A0 pininin ADC değerini okuyoruz ve az önce türettiğimiz denklemi kullanarak bunu dB'ye dönüştürüyoruz. Bu dB değeri, gerçek dB değerine göre doğru olmayabilir, ancak mobil uygulamada görüntülenen değerlere oldukça yakın kalır.
adc = analogRead (MIC); // ADC değerini amplifer dB = (adc + 83.2073) / 11.003'ten okuyun; // Regresyon değerlerini kullanarak ADC değerini dB'ye dönüştür
Programın düzgün çalışıp çalışmadığını kontrol etmek için dijital pin 3'e, Arduino 60dB'nin üzerinde yüksek bir gürültü ölçtüğünde 1 saniye boyunca yüksek olacak şekilde yapılan bir LED ekledik.
eğer (dB> 60) {digitalWrite (3, HIGH); // LED'i açın (YÜKSEK voltaj seviyesidir) gecikme (1000); // ikinci bir digitalWrite (3, LOW) bekleyin; }
Arduino Ses Seviyesi Ölçerin Çalışması:
Kod ve donanıma hazır olduğunuzda, sadece kodu yükleyin ve Arduino'nuz tarafından ölçülen dB değerlerine bakmak için seri monitörünüzü açın. Dışarıdaki trafik dışında fazla gürültünün olmadığı odamda bu kodu test ediyordum ve seri monitörümde aşağıdaki değerleri aldım ve android uygulaması da buna yakın bir şey gösterdi
Projenin tam çalışması bu sayfanın sonunda verilen videoda bulunabilir. Odadaki sesi algılamak ve herhangi bir aktivite olup olmadığını veya her sınıfta ne kadar gürültü oluştuğunu veya buna benzer bir şeyi kontrol etmek için kullanabilirsiniz. 60dB'nin üzerinde kaydedilmiş ses varsa 2 saniye boyunca yüksek gitmesi için bir LED yaptım.
Çalışma garip bir şekilde tatmin edici, ancak kesinlikle projeler ve diğer temel prototipler için kullanılabilir. Birkaç kazı ile sorunun gerçekte donanımla ilgili olduğunu buldum, bu da ara sıra bana hala gürültü veriyordu. Ben de kıvılcım eğlenceli mikrofon kartlarında kullanılan alçak geçiren ve yüksek geçiren filtreye sahip diğer devreleri denedim. Denemeniz için aşağıda devreyi açıkladım.
Filtreli Amplifikatör:
Burada, bu ses seviyesi ölçüm devresindeki gürültüyü azaltmak için Amplifikatörlü Alçak geçiren ve yüksek geçiren filtreler kullandık, böylece doğruluk artırılabilir.
Yukarıdaki devrede, mikrofondan gelen sinyalleri yükseltmek için popüler LM358 amplifikatörünü kullandık. Amplifikatörün yanı sıra iki filtre kullandık, yüksek geçiren filtre R5, C2'den oluşur ve alçak geçiren filtre C1 ve R2 tarafından kullanılır. Bu filtreler, düşük geçiş filtresi 8 Hz'nin altındaki her şeyi filtrelediğinden ve Yüksek Geçiş filtresi 15 KHz'in üzerindeki her şeyi filtrelediğinden, yalnızca 8 Hz'den 10 KHz'e kadar frekansa izin verecek şekilde tasarlanmıştır. Bu frekans aralığı, kondansatör mikrofonumun aşağıdaki veri sayfasında gösterildiği gibi yalnızca 10Hz ila 15KHZ arasında çalıştığı için seçilmiştir.
Frekans talebiniz değişirse, gerekli frekansınız için Direnç ve kapasitör değerini hesaplamak için aşağıdaki formülleri kullanabilirsiniz.
Frekans (F) = 1 / (2πRC)
Ayrıca, burada kullanılan direnç değerinin amplifikatörün Kazancını da etkileyeceğini unutmayın. Bu devrede kullanılan direnç ve kondansatör değerlerinin hesaplanması aşağıda gösterilmiştir. Frekans değerlerini değiştirmek ve regresyon değerlerini hesaplamak için buradan excel sayfasını indirebilirsiniz.
Önceki devre beklentilerim için tatmin edici çalıştı, bu yüzden bunu hiç denemedim. Bu devreyi denerseniz, yorumlar aracılığıyla önceki devreden daha iyi çalışıp çalışmadığını bana bildirin.