- المواد المطلوبة:
- مخطط الرسم البياني:
- باستخدام طريقة الانحدار لحساب ديسيبل من قيمة ADC:
- برنامج Arduino لقياس مستوى الصوت بالديسيبل:
- عمل مقياس مستوى الصوت اردوينو:
- مكبر للصوت مع دائرة المرشحات:
بدأ التلوث الضوضائي يكتسب أهمية بالفعل بسبب الكثافة السكانية العالية. يمكن للأذن البشرية العادية أن تسمع مستويات الصوت من 0 ديسيبل إلى 140 ديسيبل حيث تعتبر مستويات الصوت من 120 ديسيبل إلى 140 ديسيبل بمثابة ضوضاء. عادةً ما يتم قياس ارتفاع الصوت أو مستويات الصوت بالديسيبل (ديسيبل) ، ولدينا بعض الأدوات التي يمكنها قياس الإشارات الصوتية بالديسيبل ولكن هذه العدادات باهظة الثمن بعض الشيء وللأسف ليس لدينا وحدة استشعار خارج الصندوق لقياس مستويات الصوت بالديسيبل. وليس من المجدي أن تشتري ميكروفونات باهظة الثمن لمشروع Arduino صغير يجب أن يقيس مستوى الصوت في غرفة صفية صغيرة أو غرفة معيشة.
لذلك في هذا المشروع ، سنستخدم ميكروفون Electret Condenser مع Arduino ونحاول قياس مستوى تلوث الصوت أو الضوضاء في dB في أقرب وقت ممكن من القيمة الفعلية. سنستخدم دائرة مضخم صوت عادية لتضخيم إشارات الصوت وإدخالها إلى Arduino حيث سنستخدم طريقة الانحدار لحساب إشارات الصوت بالديسيبل. للتحقق مما إذا كانت القيم التي تم الحصول عليها صحيحة ، يمكننا استخدام تطبيق android "Sound Meter" ، إذا كان لديك مقياس أفضل ، يمكنك استخدامه للمعايرة. لاحظ أن هذا المشروع لا يهدف إلى قياس ديسيبل بدقة وسيعطي فقط قيمًا قريبة قدر الإمكان من القيمة الفعلية.
المواد المطلوبة:
- اردوينو UNO
- ميكروفون
- إل إم 386
- 10 كيلو متغير وعاء
- المقاومات والمكثفات
مخطط الرسم البياني:
تعد الدائرة الخاصة بمقياس مستوى صوت Arduino هذا بسيطة للغاية حيث استخدمنا دائرة مكبر الصوت LM386 لتضخيم الإشارات من ميكروفون مكثف وتزويده بمنفذ تناظري في Arduino. لقد استخدمنا بالفعل LM386 IC لبناء دائرة مضخم صوت منخفض الجهد وتبقى الدائرة تقريبًا كما هي.
يمكن تعيين كسب جهاز op-amp هذا من 20 إلى 200 باستخدام المقاوم أو المكثف عبر السن 1 و 8. إذا تركوا مجانًا ، فسيتم تعيين الكسب على 20 افتراضيًا. بالنسبة لمشروعنا ، نحصل على أقصى ربح ممكن من خلال هذه الدائرة ، لذلك نستخدم مكثفًا بقيمة 10 فائق التوهج بين السنون 1 و 8 ، لاحظ أن هذا الدبوس حساس للقطبية ويجب توصيل دبوس السالب للمكثف بالدبوس 8. مكبر الصوت الكامل يتم تشغيل الدائرة بواسطة دبوس 5V من Arduino.
يستخدم Capacitor C2 لتصفية ضوضاء DC من الميكروفون. بشكل أساسي عندما يستشعر الميكروفون صوتًا ، سيتم تحويل الموجات الصوتية إلى إشارات تيار متردد. قد تحتوي إشارة التيار المتردد هذه على بعض ضوضاء التيار المستمر المقترنة بها والتي سيتم ترشيحها بواسطة هذا المكثف. وبالمثل ، حتى بعد التضخيم ، يتم استخدام مكثف C3 لتصفية أي ضوضاء للتيار المستمر يمكن إضافتها أثناء التضخيم.
باستخدام طريقة الانحدار لحساب ديسيبل من قيمة ADC:
بمجرد أن نكون جاهزين مع دائرتنا ، يمكننا توصيل Arduino بالكمبيوتر وتحميل برنامج مثال "Analog Read Serial" من Arduino للتحقق مما إذا كنا نحصل على قيم ADC صالحة من الميكروفون الخاص بنا. الآن علينا تحويل قيم ADC هذه إلى ديسيبل.
على عكس القيم الأخرى مثل قياس درجة الحرارة أو الرطوبة ، فإن قياس ديسيبل ليس مهمة مباشرة. لأن قيمة dB ليست خطية مع قيمة ADC. هناك عدد قليل من الطرق التي يمكنك الوصول إليها ولكن كل خطوة ممكنة قمت بتجربتها لم تحقق لي نتائج جيدة. يمكنك قراءة منتدى Arduino هنا إذا كنت تريد تجربته.
بالنسبة لطلبي ، لم أكن بحاجة إلى الكثير من الدقة أثناء قياس قيم الديسيبل ، وبالتالي قررت استخدام طريقة أسهل لمعايرة قيم ADC مباشرةً بقيم ديسيبل. بالنسبة لهذه الطريقة ، سنحتاج إلى مقياس SPL (مقياس SPL هو أداة يمكنها قراءة قيم dB وعرضها) ، ولكن للأسف لم يكن لدي واحدًا ، وبالتأكيد لن يفعل معظمنا. حتى نتمكن من استخدام تطبيق Android المسمى Sound meter والذي يمكن تنزيله من متجر play مجانًا. هناك العديد من هذه الأنواع من التطبيقات ويمكنك تنزيل أي شيء تختاره. تستخدم هذه التطبيقات ميكروفون الهاتف المدمج في الهاتف لاكتشاف مستوى الضوضاء وعرضه على هاتفنا المحمول. إنها ليست دقيقة للغاية ، لكنها بالتأكيد ستعمل من أجل مهمتنا. لذلك لنبدأ بتثبيت تطبيق Android ، بدا لي عند الفتح شيئًا كهذا أدناه
كما قلت سابقًا ، لن تكون العلاقة بين قيم dB والقيم التناظرية خطية ، وبالتالي نحتاج إلى مقارنة هاتين القيمتين على فترات مختلفة. ما عليك سوى ملاحظة قيمة ADC المعروضة على الشاشة لمختلف الديسيبل المعروض على هاتفك المحمول. أخذت حوالي 10 قراءات وبدت هكذا أدناه ، قد تختلف قليلاً
افتح صفحة Excel واكتب هذه القيم ، في الوقت الحالي سنستخدم Excel للعثور على قيم الانحدار للرقم أعلاه. قبل ذلك ، دعنا نرسم رسمًا بيانيًا ونتحقق من مدى ارتباطهما ، بدا لي كما يلي.
كما نرى ، لا ترتبط قيمة dB خطيًا بـ ADC ، مما يعني أنه لا يمكنك الحصول على مُضاعِف مشترك لجميع قيم ADC للحصول على قيم dB المكافئة. في مثل هذه الحالة يمكننا استخدام طريقة "الانحدار الخطي". بشكل أساسي ، سيحول هذا الخط الأزرق غير المنتظم إلى أقرب خط مستقيم ممكن (خط أسود) ويعطينا معادلة هذا الخط المستقيم. يمكن استخدام هذه المعادلة لإيجاد القيمة المكافئة لـ dB لكل قيمة ADC يقيسها Arduino.
في برنامج Excel ، لدينا مكون إضافي لتحليل البيانات يقوم تلقائيًا بحساب الانحدار لمجموعة القيم الخاصة بك ونشر بياناتها. لن أتطرق إلى كيفية القيام بذلك باستخدام برنامج excel لأنه خارج نطاق هذا المشروع ، كما أنه من السهل عليك الوصول إلى Google وتعلمه. بمجرد حساب الانحدار للقيمة ، سيعطي Excel بعض القيم كما هو موضح أدناه. نحن مهتمون فقط بالأرقام الموضحة أدناه.
بمجرد الحصول على هذه الأرقام ، ستتمكن من تكوين المعادلة أدناه مثل
ADC = (11.003 * ديسيبل) - 83.2073
من خلالها يمكنك اشتقاق ديسيبل ليكون
ديسيبل = (ADC + 83.2073) / 11.003
قد تضطر إلى قيادة المعادلة الخاصة بك لأن المعايرة قد تختلف. ومع ذلك ، حافظ على هذه القيمة آمنة لأننا سنحتاج إليها أثناء برمجة Arduino.
برنامج Arduino لقياس مستوى الصوت بالديسيبل:
البرنامج الكامل لقياس ديسيبل معطى أدناه ، وبعض الخطوط المهمة موضحة أدناه
في هذين السطرين أعلاه ، قرأنا قيمة ADC للدبوس A0 وقمنا بتحويلها إلى ديسيبل باستخدام المعادلة التي اشتقناها للتو. قد لا تكون قيمة dB هذه دقيقة بالنسبة لقيمة dB الحقيقية ، ولكنها تظل قريبة جدًا من القيم المعروضة في تطبيق الهاتف المحمول.
adc = analogRead (MIC) ؛ // اقرأ قيمة ADC من مكبر الصوت dB = (adc + 83.2073) / 11.003 ؛ // تحويل قيمة ADC إلى ديسيبل باستخدام قيم الانحدار
للتحقق مما إذا كان البرنامج يعمل بشكل صحيح ، أضفنا أيضًا مؤشر LED إلى الرقم الرقمي 3 والذي تم تصميمه للارتفاع لمدة 1 ثانية عندما يقيس Arduino ضوضاء عالية تزيد عن 60 ديسيبل.
إذا (ديسيبل> 60) {digitalWrite (3 ، عالية) ؛ // قم بتشغيل LED (HIGH هو مستوى الجهد) تأخير (1000) ؛ // انتظر كتابة رقمية ثانية (3 ، منخفضة) ؛ }
عمل مقياس مستوى الصوت اردوينو:
بمجرد أن تصبح جاهزًا باستخدام الكود والأجهزة ، ما عليك سوى تحميل الكود وفتح الشاشة التسلسلية لإلقاء نظرة على قيم الديسيبل التي تم قياسها بواسطة Arduino. كنت أختبر هذا الرمز في غرفتي حيث لم يكن هناك الكثير من الضوضاء باستثناء حركة المرور في الخارج وحصلت على القيم أدناه على الشاشة التسلسلية الخاصة بي وعرض تطبيق android أيضًا شيئًا قريبًا من هذا
يمكن العثور على العمل الكامل للمشروع في الفيديو المقدم في نهاية هذه الصفحة. يمكنك استخدام العرض لاكتشاف الصوت في الغرفة ومعرفة ما إذا كان هناك أي نشاط أو مقدار الضوضاء التي يتم إنشاؤها في كل فصل دراسي أو شيء من هذا القبيل. لقد صنعت للتو مؤشرًا ضوئيًا للارتفاع لمدة ثانيتين إذا كان هناك صوت مسجل فوق 60 ديسيبل.
العمل مرضي بشكل غريب ، ولكن يمكن بالتأكيد استخدامه للمشاريع والنماذج الأولية الأخرى. مع القليل من البحث ، وجدت أن المشكلة كانت في الواقع مع الأجهزة ، والتي كانت لا تزال تعطيني ضوضاء بين الحين والآخر. لذلك جربت الدوائر الأخرى المستخدمة في لوحات الميكروفون ذات شرارة المرح التي تحتوي على مرشح تمرير منخفض وعالي. لقد شرحت الدائرة أدناه لكي تجربها.
مكبر للصوت مع دائرة المرشحات:
استخدمنا هنا مرشحات تمرير منخفضة وعالية مع مكبر للصوت لتقليل الضوضاء في دائرة قياس مستوى الصوت هذه بحيث يمكن زيادة الدقة.
في هذه الدائرة أعلاه ، استخدمنا مكبر الصوت الشهير LM358 لتضخيم الإشارات من الميكروفون. إلى جانب مكبر الصوت ، استخدمنا أيضًا مرشحين ، يتم تشكيل مرشح التمرير العالي بواسطة R5 و C2 ويتم استخدام مرشح التمرير المنخفض بواسطة C1 و R2. تم تصميم هذه المرشحات للسماح بالتردد فقط من 8 هرتز إلى 10 كيلو هرتز ، نظرًا لأن مرشح التمرير المنخفض سيقوم بتصفية أي شيء أقل من 8 هرتز وسيقوم مرشح High Pass بتصفية أي شيء فوق 15 كيلو هرتز. يتم تحديد نطاق التردد هذا لأن ميكروفون المكثف الخاص بي يعمل فقط من 10 هرتز إلى 15 كيلو هرتز كما هو موضح في ورقة البيانات أدناه.
إذا تغير طلب التردد ، فيمكنك استخدام الصيغ التالية لحساب قيمة المقاوم والمكثف للتردد المطلوب.
التردد (F) = 1 / (2πRC)
لاحظ أيضًا أن قيمة المقاوم المستخدمة هنا ستؤثر أيضًا على كسب مكبر الصوت. يظهر أدناه حساب قيمة المقاوم والمكثف المستخدم في هذه الدائرة. يمكنك تنزيل ملف إكسل من هنا لتعديل قيم التكرار وحساب قيم الانحدار.
كانت الدائرة السابقة مرضية بالنسبة لتوقعاتي ، لذلك لم أجرب هذا أبدًا. إذا صادفت تجربة هذه الدائرة ، فأخبرني ما إذا كانت تعمل بشكل أفضل من سابقتها من خلال التعليقات.