- Bahan yang Diperlukan:
- Rajah Litar:
- Menggunakan Kaedah Regresi untuk Mengira dB dari Nilai ADC:
- Program Arduino untuk mengukur tahap bunyi dalam dB:
- Mengendalikan Arduino Sound Level Meter:
- Penguat dengan Litar Penapis:
Pencemaran bunyi telah mula menjadi penting kerana kepadatan penduduk yang tinggi. Telinga manusia normal dapat mendengar tahap bunyi dari 0dB hingga 140dB di mana tahap bunyi dari 120dB hingga 140dB dianggap sebagai bunyi. Loudness atau tahap bunyi biasanya diukur dalam desibel (dB), kami mempunyai beberapa instrumen yang dapat mengukur isyarat suara dalam dB tetapi meter ini sedikit mahal dan sayangnya kami tidak mempunyai modul sensor di luar kotak untuk mengukur tahap bunyi dalam desibel. Dan tidak ekonomik untuk membeli mikrofon mahal untuk projek Arduino kecil yang seharusnya mengukur tahap bunyi di bilik darjah atau ruang tamu kecil.
Oleh itu, dalam projek ini kita akan menggunakan mikrofon Electret Condenser biasa dengan Arduino dan cuba mengukur tahap pencemaran bunyi atau bunyi dalam dB sedekat mungkin dengan nilai sebenarnya. Kami akan menggunakan litar penguat normal untuk menguatkan isyarat suara dan memberikannya kepada Arduino di mana kami akan menggunakan kaedah regresi untuk mengira isyarat bunyi dalam dB. Untuk memeriksa apakah nilai yang diperoleh benar, kita dapat menggunakan aplikasi android "Sound Meter", jika Anda memiliki meter yang lebih baik, Anda dapat menggunakannya untuk penentukuran. Perhatikan bahawa projek ini tidak bertujuan untuk mengukur dB dengan tepat dan hanya akan memberikan nilai sedekat mungkin dengan nilai sebenarnya.
Bahan yang Diperlukan:
- Arduino UNO
- Mikrofon
- LM386
- POT pemboleh ubah 10K
- Perintang dan Kapasitor
Rajah Litar:
Litar untuk Arduino Sound Level Meter ini sangat mudah di mana kami telah menggunakan litar penguat Audio LM386 untuk menguatkan isyarat dari mikrofon kondensor dan memasangnya ke port Analog Arduino. Kami telah menggunakan IC LM386 ini untuk membina Litar penguat audio voltan rendah dan litarnya lebih kurang sama.
Keuntungan op-amp khusus ini dapat ditetapkan dari 20 hingga 200 menggunakan perintang atau kapasitor di pin 1 dan 8. Sekiranya dibiarkan bebas, keuntungan akan ditetapkan sebagai 20 secara lalai. Untuk projek kami, keuntungan maksimum yang mungkin dilakukan oleh litar ini, jadi kami menggunakan kapasitor bernilai 10uF antara pin 1 dan 8, perhatikan bahawa pin ini sensitif terhadap polaritas dan pin kapasitor negatif harus disambungkan ke pin 8. Penguat lengkap litar dikuasakan oleh pin 5V dari Arduino.
Kapasitor C2 digunakan untuk menyaring bunyi DC dari Mikrofon. Pada asasnya apabila deria mikrofon terdengar gelombang suara akan ditukar menjadi isyarat AC. Isyarat AC ini mungkin mempunyai bunyi DC yang ditambah dengan yang akan ditapis oleh kapasitor ini. Begitu juga, walaupun selepas penguatan, kapasitor C3 digunakan untuk menyaring sebarang bunyi DC yang mungkin ditambahkan semasa penguatan.
Menggunakan Kaedah Regresi untuk Mengira dB dari Nilai ADC:
Setelah siap dengan litar kami, kami dapat menyambungkan Arduino ke komputer dan memuat naik program "Analog Read Serial" dari Arduino untuk memeriksa sama ada kami mendapat nilai ADC yang sah dari mikrofon kami. Sekarang kita harus menukar nilai ADC ini ke dB.
Tidak seperti nilai lain seperti mengukur suhu atau kelembapan, mengukur dB bukanlah tugas yang mudah. Kerana nilai dB tidak linear dengan nilai ADC. Terdapat beberapa cara di mana anda boleh sampai tetapi setiap langkah yang mungkin saya cuba tidak memberikan hasil yang baik. Anda boleh membaca forum Arduino ini di sini jika anda ingin mencubanya.
Untuk aplikasi saya, saya tidak memerlukan banyak ketepatan semasa mengukur nilai dB dan dengan itu memutuskan untuk menggunakan kaedah yang lebih mudah untuk menentukur nilai ADC secara langsung dengan nilai dB. Untuk kaedah ini, kita memerlukan meter SPL (Meter SPL adalah instrumen yang dapat membaca nilai dB dan memaparkannya), tetapi sayangnya saya tidak memilikinya dan pasti kebanyakan kita tidak akan. Oleh itu, kita dapat menggunakan aplikasi android yang disebut "Sound meter" yang dapat dimuat turun dari play store secara percuma. Terdapat banyak jenis aplikasi seperti itu dan anda boleh memuat turun apa sahaja pilihan anda. Aplikasi ini menggunakan mikrofon bawaan telefon untuk mengesan tahap kebisingan dan memaparkannya di telefon bimbit kami. Mereka tidak begitu tepat, tetapi pasti berfungsi untuk tugas kita. Oleh itu mari kita mulakan dengan memasang aplikasi Android, aplikasi saya ketika dibuka kelihatan seperti di bawah ini
Seperti yang saya katakan sebelumnya, hubungan antara nilai dB dan Analog tidak akan linear maka kita perlu membandingkan kedua-dua nilai ini pada selang masa yang berbeza. Hanya perhatikan nilai ADC yang dipaparkan di skrin untuk dB berbeza yang dipaparkan di telefon bimbit anda. Saya mengambil kira-kira 10 bacaan dan mereka kelihatan seperti di bawah ini, anda mungkin sedikit berbeza
Buka halaman excel dan taipkan nilai-nilai ini, buat masa ini kita akan menggunakan Excel untuk mencari nilai regresi untuk nombor di atas. Sebelum itu mari kita plot grafik dan periksa bagaimana keduanya berkaitan, saya kelihatan seperti di bawah ini.
Seperti yang kita lihat, nilai dB tidak berkaitan secara linear dengan ADC, yang bermaksud anda tidak boleh mempunyai pengganda yang sama untuk semua nilai ADC untuk mendapatkan nilai dB yang setara. Dalam hal ini kita dapat menggunakan metode "regresi linier". Pada dasarnya, ia akan menukar garis biru tidak teratur ini ke garis lurus terdekat (garis hitam) dan memberi kita persamaan garis lurus itu. Persamaan ini dapat digunakan untuk mencari nilai setara dB untuk setiap nilai ADC yang diukur oleh Arduino.
Dalam excel, kami mempunyai plug-in untuk analisis data yang secara automatik akan mengira regresi untuk set nilai anda dan menerbitkan datanya. Saya tidak akan membahas bagaimana melakukannya dengan cemerlang kerana berada di luar skop projek ini, juga mudah bagi anda untuk Google dan mempelajarinya. Setelah anda mengira regresi untuk nilai, excel akan memberikan beberapa nilai seperti yang ditunjukkan di bawah. Kami hanya berminat dengan nombor yang dinyatakan di bawah.
Sebaik sahaja anda mendapat nombor ini, anda akan dapat membentuk persamaan di bawah seperti
ADC = (11.003 * dB) - 83.2073
Dari mana anda boleh memperoleh dB
dB = (ADC + 83.2073) / 11.003
Anda mungkin harus mendorong persamaan anda sendiri kerana penentukurannya mungkin berbeza. Walau bagaimanapun, pastikan nilai ini selamat kerana kami akan memerlukannya semasa memprogram Arduino.
Program Arduino untuk mengukur tahap bunyi dalam dB:
Program lengkap untuk mengukur dB diberikan di bawah, beberapa baris penting dijelaskan di bawah
Dalam dua baris di atas, kami membaca nilai ADC pin A0 dan menukarnya menjadi dB menggunakan persamaan yang baru kami hasilkan. Nilai dB ini mungkin tidak tepat kepada nilai dB yang sebenarnya, tetapi tetap hampir dengan nilai yang dipaparkan pada aplikasi mudah alih.
adc = analogRead (MIC); // Baca nilai ADC dari amplifer dB = (adc + 83.2073) / 11.003; // Tukarkan nilai ADC ke dB menggunakan nilai Regresi
Untuk memeriksa sama ada program ini berjalan dengan baik, kami juga telah menambahkan LED ke pin digital 3 yang dibuat tinggi selama 1 saat apabila Arduino mengukur bunyi yang kuat di atas 60dB.
jika (dB> 60) {digitalWrite (3, TINGGI); // hidupkan LED (TINGGI adalah tahap voltan) kelewatan (1000); // tunggu digitalWrite kedua (3, RENDAH); }
Mengendalikan Arduino Sound Level Meter:
Setelah anda siap dengan kod dan perkakasan, muat naik kod tersebut dan buka monitor bersiri anda untuk melihat nilai dB yang diukur oleh Arduino anda. Saya menguji kod ini di bilik saya di mana tidak banyak bunyi kecuali untuk lalu lintas di luar dan saya mendapat nilai di bawah pada monitor bersiri saya dan aplikasi android juga memaparkan sesuatu yang hampir dengan ini
Penyelesaian projek yang lengkap dapat dilihat pada video yang diberikan di akhir halaman ini. Anda boleh gunakan untuk memproyeksikan untuk mengesan bunyi di dalam bilik dan periksa sama ada terdapat aktiviti atau berapa banyak bunyi yang dihasilkan di setiap kelas atau sesuatu seperti itu. Saya baru sahaja membuat LED menjadi tinggi selama 2 saat jika ada bunyi yang dirakam melebihi 60dB.
Pengerjaannya memang memuaskan, tetapi pasti dapat digunakan untuk projek dan prototaip asas lain. Dengan beberapa penggalian lagi, saya mendapati bahawa masalahnya sebenarnya adalah dengan perkakasan, yang masih menimbulkan kebisingan kepada saya sekarang dan kemudian. Oleh itu, saya mencuba litar lain yang digunakan di papan mikrofon yang menyeronokkan percikan api yang mempunyai penapis lorong rendah dan lorong tinggi. Saya telah menerangkan litar di bawah untuk anda mencuba.
Penguat dengan Litar Penapis:
Di sini kami telah menggunakan saringan low pass dan high pass dengan Amplifier untuk mengurangkan kebisingan dalam litar pengukuran tahap bunyi ini agar ketepatan dapat ditingkatkan.
Dalam litar di atas ini, kami telah menggunakan penguat LM358 yang popular untuk menguatkan isyarat dari mikrofon. Bersama penguat kami juga telah menggunakan dua penapis, saringan lulus tinggi dibentuk oleh R5, C2 dan penapis lorong rendah digunakan oleh C1 dan R2. Penapis ini direka untuk membenarkan frekuensi hanya dari 8Hz hingga 10KHz, kerana penapis lulus rendah akan menapis apa sahaja di bawah 8Hz dan penapis Lulus Tinggi akan menapis apa sahaja di atas 15KHz. Julat frekuensi ini dipilih kerana mikrofon kondensor saya berfungsi hanya dari 10Hz hingga 15KHZ seperti yang ditunjukkan dalam lembaran data di bawah.
Sekiranya permintaan frekuensi anda berubah, anda boleh menggunakan formula di bawah untuk mengira nilai Resistor dan kapasitor untuk frekuensi yang anda perlukan.
Kekerapan (F) = 1 / (2πRC)
Juga, perhatikan bahawa nilai perintang yang digunakan di sini juga akan mempengaruhi Penguatan penguat. Pengiraan untuk nilai perintang dan kapasitor yang digunakan dalam litar ini ditunjukkan di bawah. Anda boleh memuat turun lembaran excel dari sini untuk mengubah nilai Frekuensi dan mengira nilai regresi.
Litar sebelumnya berfungsi dengan memuaskan untuk jangkaan saya, jadi saya tidak pernah mencuba ini. Sekiranya anda mencuba litar ini, beritahu saya jika ia berfungsi lebih baik daripada yang sebelumnya melalui komen.