رباتیک و هوافضا

اندازه گیری سطح صدا با آردوینو بر حسب دسی بل با میکروفون

اندازه گیری سطح صدا با آردوینو

به نام خدا

پروژه اندازه گیری سطح صدا با آردوینو بر حسب دسی بل با میکروفون

 

اندازه گیری سطح صدا با آردوینو بر حسب دسی بل با میکروفون

به علت تراکم جمعیت زیاد, آلودگی صوتی واقعا اهمیت دارد. گوش طبیعی انسان میتواند سطح صدا را از ۰ دسی بل تا ۱۴۰دسی بل بشنود که در آن سطح صدا از۱۲۰ دسی بل تا ۱۴۰دسی بل به عنوان نویز در نظر گرفته می شود .بلندی صدا یا سطح صدا معمولا برحسب دسی بل اندازه گیری میشوند .

ما بعضی از ابزار هایی را داریم که میتوانیم که سیگنال های صوتی را در دسی بل اندازه گیری کنیم اما این ابزار ها کمی گران هستند و متاسفانه ما از ماژول باکس برای اندازه گیری سطح صدا در دسی بل استفاده نمی کنیم و مقرون به صرفه نیست خرید میکروفن های گران قیمت .برای یک پروژه کوچک آردوینو که باید میزان صدا را در یک کلاس کوچک یا اتاق نشیمن اندازه گیری کند .

بنابراین در این پروژه از یک میکروفن ساده با آردوینو استفاده میکنیم و سعی میکنیم سطح آلودگی صدا یا سرو صدا را در دسی بل تا حد ممکن نزدیک به مقدار واقعی اندازه گیری کنیم.

ما یک مدار تقویت کننده عادی برای تقویت سیگنال های صوتی و تغذیه آن به آردوینو استفاده خواهیم کرد که در ان از روش رگرسیون برای محاسبه سیگنال های صوتی در دسی بل استفاده میکنیم .

برای بررسی این که آیا مقادیر بدست آمده صحیح هستند , میتوان از نرم افزاراندروید (وسیله صدا) استفاده کنیم ,اگر شما یک وسیله بهتر داشته باشید می توانید آنرا برای کالیبراسیون استفاده کنید.

توجه داشته باشید که هدف این پروژه دقت اندازه گیری برحسب دسی بل نیست و فقط مقادیر را که ممکن است به مقدار واقعی نزدیک می شود, ارایه دهد .

وسایل مورد نیاز:

آردوینو UNO

میکروفن

LM386

پتانسیومتر ۱۰ کیلو

مقاوت و خازن ها

دیاگرام مدار

 

اندازه گیری سطح صدا با آردوینو بر حسب دسی بل با میکروفون

مدار برای این پروژه( سطح صدای آردوینو) خیلی ساده است که ما ازیک تقویت کننده LM386 استفاده کردیم تا سیگنال ها را از میکروفن تقویت کنیم و آنرا به پورت آنالوگ آردوینو بفرستیم.

گین این عامل خاص را میتوان از ۲۰ تا ۲۰۰ با استفاده از مقاومت یا خازن بین پین ۱و ۸ تنظیم کرد.اگر آنها آزاد باشند ,گین آنها به طور پیش فرض به ۲۰ تنظیم خواهد شد. در پروژه مان, ما حداکثر گین ممکن را در این مدار بدست می آوریم .

بنابراین ما از یک خازن به ارزش ۱۰ میکروفاراد بین پین های ۱و۸ استفاده می کنیم , توجه داشته باشید که این پین حساس به قطب مثبت ومنفی است و پین منفی خازن باید به پین ۸ متصل شود . مدارتقویت کننده توسط ۵ ولت آردوینو تغذیه شده است.

خازن c2 برای فیلتر کردن نویز DC از میکروفن استفاده شده است .اساسا میکروفن وقتی صدا را حس میکند امواج صوتی را به سیگنال های AC تبدیل خواهد کرد.این سیگنال های AC ممکن است دارای یک نویز DC باشد که توسط این خازن فیلتر میشود. به طور مشابه,حتی پس از تقویت ,یک خازن C3 برای فیلتر کردن هر نویز DC که در طول تقویت ممکن است اضافه شود, استفاده میشود .

اندازه گیری سطح صدا با آردوینو

استفاده از روش رگرسیون برای محاسبه دسی بل از مقدار ADC:

هنگامی که مدارمان آماده هست ما می توانیم آردوینو را به کامپیوتر وصل کنیم و به طور مثال برنامه (سریال آنالوگ خوانده شده)را بارگذاری کنید در آردوینو , بررسی کنید که آیا مقادیر معتبر ADC را از میکروفن دریافت می کنیم . حالا ما باید این مقادیر ADC را به دسی بل تبدیل کنیم .

بیشتر بخوانید...  کنترل ال ای دی 8 در 8 با استفاده از رزبری پای

بر خلاف مقادیر دیگری مانند اندازه گیری دمای یا رطوبت ,اندازه گیری دسی بل کار ساده ای نیست. از آنجا که مقدار دسی بل با مقدار ADC رابطه خطی ندارد چند راه وجود دارد که در آن میتوانید دهید ولی ممکن است به نتایج خوبی نرسید .

برای این کاربرد , هنگام اندازه گیری مقادیر دسی بل , نیازی به دقت بالا برای اندازه گیری مقادیر db نداشتم و به همین خاطر تصمیم گرفتم  مقادیر ADC  را با استفاده از  یک SPL متر مقایسه و کالیبره کنم . برای این کار ما نیاز به یک SPL متر خواهیم داشت (SPL meter یک ابزار است که میتواند مقدار های دسی بل را بخواند و آنرا نمایش دهد)، اما متاسفانه این وسیله را نداشتم .

بنابراین ما میتوانیم از نرم افزار های اندروید برای سنجش صدا استفاده کنیم که میتوانید به صورت رایگان آن را دانلود کنید . اپلیکیشن های زیادی برای این کار وجود دارد و شما میتوانید هر چیزی را به انتخاب خود دانلود کنید .

این برنامه ها از میکروفن داخلی موبایل برای تشخیص سطح سر و صدا استفاده میکنند و آنرا در تلفن همراه ما نمایش می دهند . داده های آنها دقیق نیستند اما مطمِئنا برای کار ما کافی خواهد بود . بنابراین با نصب برنامه اندروید شروع میکنیم, هنگامی که باز شد چیزی شبیه به زیر را مشاهده می کنید .

اندازه گیری سطح صدا با آردوینو

 

همانطور که قبلا گفتم رابطه بین مقادیر دسی بل و پورت آنالوگ خطی نخواهد بود و بنابراین ما باید این دو مقدار را در فواصل مختلف مقایسه کنیم. مقدار ADC  روی صفحه نمایش داده می شود و مقدار دسی بل متناظر با این مقدار های ADC بر روی موبایل نمایش داده می شود . من ۱۰ بار نتیجه را خواندنم گرفتم که در زیر می بینید .

اندازه گیری سطح صدا با آردوینو

صفحه اکسل را باز کنید و در این مقادیر تایپ کنید. در حال حاضر ما از اکسل برای پیدا کردن مقادیر رگرسیون برای شماره بالا استفاده میکنیم قبل از آن ,نمودار را ترسیم کرده و نحوه ارتباط آن ها را بررسی کنید .

اندازه گیری سطح صدا با آردوینو

 

همانطور که میبینیم مقدار دسی بل به طور خطی با ADC ارتباطی ندارد,به این معنی که شما نمیتوانید یک ضریب مشترک برای تمام ADC داشته باشید تا مقدار دسی بل معادل آن را بدست آورید. در چنین مواردی میتوانیم از روش خطی رگرسیون استفاده کنیم .

اساسا این خط آبی نا منظم را به نزدیک ترین خط مستقیم ممکن(خط سیاه) تبدیل میکند و معادله ی این خط مستقیم را به ما میدهد.این معادله را میتوان استفاده کرد برای پیدا کردن مقدار معادل دسی بل برای هر مقدار از ADC,که جزئی ازابزارهای آردوینو است.

در اکسل ما یک پلاگین برای تجزیه و تحلیل داده ها داریم که به طور خودکار رگرسیون را برای مجموعه از مقادیرمنتشر میکند و داده های آن را منتشر میکند.من نمیخواهم در مورد چگونگی انجام این کار با اکسل صحبت کنم زیرا خارج از محدوده این پروژه است ,همچنین می توانید برای آموزش آن در گوگل سرچ کنید.

هنگامی که رگرسیون را برای این مقدار ها محاسبه میکنید ، اکسل برخی مقادیر مانند زیر را نشان میدهد .

اندازه گیری سطح صدا با آردوینو

هنگامی که این اعداد را دریافت میکنید میتوانید معادله زیر را بنویسید .

ADC = (11.003* dB) – ۸۳٫۲۰۷۳

حال می توانید به رابطه دسی بل برسید .

dB = (ADC+83.2073) / 11.003

 

برنامه آردوینو برای اندازه گیری سطح صدا در دسی بل :

برنامه کامل برای اندازه گیری دسی بل در زیر آمده است,چند خط مهم در زیر توضیح داده شده است .

در این دو خط  زیر ,مقدار ADC پین A0 را می خوانیم و آن را با استفاده از معادله ای که از آن استخراج شده به دسی بل تبدیل میکنیم . این مقدار ممکن است ما را به ارزش واقعی دسی بل به درستی نرساند ,اما تقریبا نزدیک به مقدار نمایش داده شده در برنامه تلفن همراه است .

adc= analogRead(MIC); //Read the ADC value from amplifer
dB = (adc+83.2073) / 11.003; //Convert ADC value to dB using Regression values

برای بررسی اینکه آیا برنامه به درستی کار میکند ما همچنین یک LED را به پین ۳ دیجیتال آردوینو اضافه کردیم که در واقعی که صدایی بلند تر از ۶۰ دسی بل اندازه گیری می شود برای ۱ ثانیه High می شود ( روشن می شود ) .

if (dB>60)
{
  digitalWrite(3, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(3, LOW);
}

نحوه عملکرد پروژه :

وقتی مدار را بستید و برنامه ای را که دانلود کردید ، برنامه را بر روی برد آردوینو آپلود کنید ، حالا سریال مانیتور نرم افزار خود را باز کنید تا مقادیر dB اندازه گیری شده توسط آردوینو را ببینید . من این کد را در اتاقم آزمایش کردم که در آن سر و صدای زیادی وجود نداشت به جز ترافیک بیرون و مقادیر زیر را روی مانیتور سریال من نشان داد و برنامه اندروید نیز چیزی نزدیک به آن را نمایش داد.

بیشتر بخوانید...  ساخت منبع تغذیه متغیر با آردوینو

اندازه گیری سطح صدا با آردوینو

 

 

تقویت کننده با مدار فیلتر :

در اینجا ما با استفاده از تقویت کننده فیلتر های کم پاس و پر قدرت را برای کاهش نویز در این مدار اندازه گیری سطح صدا به کار بردیم تا دقت را افزایش دهیم .

اندازه گیری سطح صدا با آردوینو

در مدار فوق، از تقویت کننده محبوب LM358 برای تقویت سیگنال های میکروفون استفاده می کنیم. همراه با تقویت کننده ما همچنین از دو فیلتر استفاده می کنیم، فیلتر بالاگذر توسط R5 ، C2 تشکیل شده است و فیلتر پایین گذر توسط C1 و R2 استفاده می شود.

این فیلترها برای عبور فرکانس هایی بین ۸ تا ۱۰ کیلوهرتز طراحی شده اند، زیرا فیلتر پایین گذر ، هرچیز کمتر از ۸ کیلو هرتز را فیلتر می کند و فیلتر بالا گذر هر چیزی بالاتر از ۱۵کیلوهرتز را فیلتر می کند.

این محدوده فرکانس به این دلیل انتخاب شده است زیرا میکروفون ما بین ۱۰ تا ۱۵ کیلو هرتز کار می کند . دیتاشیت میکروفون در زیر آمده است .

اندازه گیری سطح صدا با آردوینو

 

اگر فرکانس کاری شما فرق می کند , می توانید از فرمول زیر برای محاسبه مقدار مقاومت و خازن برای فرکانس مورد نیاز خود استفاده کنید .

Frequency (F) = 1/(2πRC)

همچنین توجه داشته باشید که مقدار مقاومت مورد استفاده ، در گین آمپلی فایر تاثیر خواهد گذاشت. محاسبه مقدار مقاومت و خازن مورد استفاده در این مدار در زیر نشان داده شده است.

اندازه گیری سطح صدا با آردوینو

 

دانلود کد پروژه:

دانلود فایل
const int MIC = 0; //the microphone amplifier output is connected to pin A0
int adc;
int dB, PdB; //the variable that will hold the value read from the microphone each time

void setup() {
Serial.begin(9600); //sets the baud rate at 9600 so we can check the values the microphone is obtaining on the Serial Monitor
  pinMode(3, OUTPUT);
}

void loop(){

  PdB = dB; //Store the previous of dB here
  
adc= analogRead(MIC); //Read the ADC value from amplifer 
//Serial.println (adc);//Print ADC for initial calculation 
dB = (adc+83.2073) / 11.003; //Convert ADC value to dB using Regression values

if (PdB!=dB)
Serial.println (dB);

if (dB>60)
{
  digitalWrite(3, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(2000);                       // wait for a second
  digitalWrite(3, LOW); 
}
//delay(100);

}

 

دیدگاه‌ها (0)

*
*