- วัสดุที่ต้องการ:
- แผนภูมิวงจรรวม:
- ใช้วิธีการถดถอยเพื่อคำนวณ dB จากค่า ADC:
- โปรแกรม Arduino เพื่อวัดระดับเสียงเป็น dB:
- การทำงานของเครื่องวัดระดับเสียง Arduino:
- เครื่องขยายเสียงพร้อมวงจรกรอง:
มลพิษทางเสียงเริ่มได้รับความสำคัญเนื่องจากความหนาแน่นของประชากรสูง หูของมนุษย์ทั่วไปสามารถได้ยินระดับเสียงตั้งแต่ 0dB ถึง 140dB ซึ่งระดับเสียงตั้งแต่ 120dB ถึง 140dB ถือเป็นเสียงรบกวน โดยทั่วไปความดังหรือระดับเสียงจะวัดเป็นเดซิเบล (dB) เรามีเครื่องมือบางอย่างที่สามารถวัดสัญญาณเสียงในหน่วย dB ได้ แต่เครื่องวัดเหล่านี้มีราคาแพงเล็กน้อยและน่าเศร้าที่เราไม่มีโมดูลเซ็นเซอร์นอกกล่องเพื่อวัดระดับเสียงเป็นเดซิเบล และไม่ประหยัดที่จะซื้อไมโครโฟนราคาแพงสำหรับโครงการ Arduinoขนาดเล็กซึ่งควรวัดระดับเสียงในห้องเรียนขนาดเล็กหรือห้องนั่งเล่น
ดังนั้นในโครงการนี้เราจะใช้ไมโครโฟน Electret Condenserธรรมดากับ Arduinoและลองวัดระดับมลพิษทางเสียงหรือเสียงใน dB ให้ใกล้เคียงกับค่าจริงมากที่สุด เราจะใช้วงจรแอมพลิฟายเออร์ธรรมดาเพื่อขยายสัญญาณเสียงและป้อนไปยัง Arduino ซึ่งเราจะใช้วิธีการถดถอยเพื่อคำนวณสัญญาณเสียงในหน่วย dB หากต้องการตรวจสอบว่าค่าที่ได้รับนั้นถูกต้องหรือไม่เราสามารถใช้แอปพลิเคชัน Android "Sound Meter"ได้หากคุณมีมิเตอร์ที่ดีกว่าคุณสามารถใช้เพื่อสอบเทียบได้ โปรดทราบว่าโครงการนี้ไม่ได้มุ่งหวังที่จะวัด dB อย่างแม่นยำและจะให้ค่าใกล้เคียงกับค่าจริงมากที่สุด
วัสดุที่ต้องการ:
- Arduino UNO
- ไมโครโฟน
- LM386
- หม้อตัวแปร 10K
- ตัวต้านทานและตัวเก็บประจุ
แผนภูมิวงจรรวม:
วงจรสำหรับเครื่องวัดระดับเสียง Arduinoนี้เป็นวงจรที่ง่ายมากซึ่งเราได้ใช้วงจรขยายเสียง LM386 เพื่อขยายสัญญาณจากไมโครโฟนคอนเดนเซอร์และจ่ายให้กับพอร์ตอนาล็อกของ Arduino เราได้ใช้ LM386 IC นี้เพื่อสร้างวงจรขยายเสียงแรงดันไฟฟ้าต่ำแล้วและวงจรจะยังคงเหมือนเดิม
อัตราขยายของ op-amp เฉพาะนี้สามารถตั้งค่าได้ตั้งแต่ 20 ถึง 200 โดยใช้ตัวต้านทานหรือตัวเก็บประจุที่ขา 1 และ 8 หากปล่อยให้เป็นอิสระค่าเกนจะถูกตั้งค่าเป็น 20 ตามค่าเริ่มต้น สำหรับโครงการของเราเราได้รับผลตอบแทนสูงสุดจากวงจรนี้ดังนั้นเราจึงใช้ตัวเก็บประจุที่มีค่า 10uF ระหว่างพิน 1 และ 8 โปรดทราบว่าพินนี้มีความไวต่อขั้วและขาลบของตัวเก็บประจุควรเชื่อมต่อกับพิน 8 วงจรใช้พลังงานจากขา 5V จาก Arduino
Capacitor C2 ใช้เพื่อกรองสัญญาณรบกวน DC จากไมโครโฟน โดยทั่วไปเมื่อไมโครโฟนรับรู้เสียงคลื่นเสียงจะถูกแปลงเป็นสัญญาณ AC สัญญาณ AC นี้อาจมีสัญญาณรบกวน DC ร่วมด้วยซึ่งจะถูกกรองโดยตัวเก็บประจุนี้ ในทำนองเดียวกันแม้หลังจากการขยายตัวแล้วตัวเก็บประจุ C3 จะถูกใช้เพื่อกรองสัญญาณรบกวน DC ที่อาจเพิ่มเข้ามาระหว่างการขยาย
ใช้วิธีการถดถอยเพื่อคำนวณ dB จากค่า ADC:
เมื่อเราพร้อมกับวงจรของเราแล้วเราสามารถเชื่อมต่อ Arduino กับคอมพิวเตอร์และอัปโหลดโปรแกรมตัวอย่าง "Analog Read Serial" จาก Arduino เพื่อตรวจสอบว่าเราได้รับค่า ADC ที่ถูกต้องจากไมโครโฟนของเราหรือไม่ ตอนนี้เราต้องแปลงค่า ADC นี้เป็น dB
ไม่เหมือนกับค่าอื่น ๆ เช่นการวัดอุณหภูมิหรือความชื้นการวัด dB ไม่ใช่งานที่ตรงไปตรงมา เพราะค่าของเดซิเบลไม่เป็นเชิงเส้นที่มีค่าของเอดีซีมีไม่กี่วิธีที่คุณสามารถทำได้ แต่ทุกขั้นตอนที่เป็นไปได้ที่ฉันพยายามไม่ได้ผลลัพธ์ที่ดี คุณสามารถอ่านผ่านฟอรัม Arduino นี้ได้ที่นี่หากคุณต้องการทดลองใช้
สำหรับแอปพลิเคชันของฉันฉันไม่ต้องการความแม่นยำมากนักในขณะที่วัดค่า dB ดังนั้นจึงตัดสินใจใช้วิธีที่ง่ายกว่าในการปรับเทียบค่า ADC โดยตรงด้วยค่า dB สำหรับวิธีนี้เราจะต้องใช้เครื่องวัด SPL (เครื่องวัด SPL เป็นเครื่องมือที่สามารถอ่านค่า dB และแสดงได้) แต่น่าเศร้าที่ฉันไม่มีและแน่ใจว่าพวกเราส่วนใหญ่จะไม่มี ดังนั้นเราจึงสามารถใช้แอปพลิเคชัน Android ที่เรียกว่า“ Sound meter”ซึ่งสามารถดาวน์โหลดได้จาก play store ได้ฟรี มีแอปพลิเคชั่นประเภทนี้มากมายและคุณสามารถดาวน์โหลดอะไรก็ได้ตามต้องการ แอปพลิเคชั่นเหล่านี้ใช้ไมโครโฟนในตัวของโทรศัพท์เพื่อตรวจจับระดับเสียงรบกวนและแสดงบนมือถือของเรา พวกเขาไม่ถูกต้องมากนัก แต่ก็ใช้ได้กับงานของเราแน่นอน เริ่มต้นด้วยการติดตั้งแอปพลิเคชัน Android ของฉันเมื่อเปิดแล้วจะมีลักษณะดังนี้ด้านล่าง
ดังที่ฉันได้กล่าวไปก่อนหน้านี้ความสัมพันธ์ระหว่างค่า dB และ Analog จะไม่เป็นเชิงเส้นดังนั้นเราจึงต้องเปรียบเทียบค่าทั้งสองนี้ในช่วงเวลาที่ต่างกัน เพียงจดบันทึกค่า ADC ที่แสดงบนหน้าจอสำหรับ dB ต่างๆที่แสดงบนโทรศัพท์มือถือของคุณ ฉันอ่านประมาณ 10 ครั้งและดูเหมือนว่าด้านล่างนี้คุณอาจแตกต่างกันเล็กน้อย
เปิดหน้า excel และพิมพ์ค่าเหล่านี้ในตอนนี้เราจะใช้ Excel เพื่อค้นหาค่าการถดถอยสำหรับตัวเลขด้านบน ก่อนหน้านั้นเรามาพล็อตกราฟและตรวจสอบว่าทั้งสองเกี่ยวข้องกันอย่างไรของฉันมีลักษณะดังนี้ด้านล่าง
ดังที่เราเห็นว่าค่าของ dB ไม่ได้สัมพันธ์กันแบบเชิงเส้นกับ ADC ซึ่งหมายความว่าคุณไม่สามารถมีตัวคูณร่วมสำหรับค่า ADC ทั้งหมดเพื่อให้ได้ค่า dB ที่เท่ากัน ในกรณีนี้เราสามารถใช้วิธี"การถดถอยเชิงเส้น"ได้ โดยพื้นฐานแล้วมันจะแปลงเส้นสีน้ำเงินที่ผิดปกตินี้เป็นเส้นตรงที่ใกล้เคียงที่สุด (เส้นสีดำ) และให้สมการของเส้นตรงนั้น สมการนี้สามารถใช้เพื่อหาค่าเทียบเท่าของ dB สำหรับทุกๆค่าของ ADC ที่ Arduino วัดได้
ใน excel เรามีปลั๊กอินสำหรับการวิเคราะห์ข้อมูลซึ่งจะคำนวณการถดถอยสำหรับชุดค่าของคุณโดยอัตโนมัติและเผยแพร่ข้อมูล ฉันจะไม่พูดถึงวิธีการทำ excel เนื่องจากอยู่นอกขอบเขตของโครงการนี้นอกจากนี้คุณยังสามารถใช้ Google และเรียนรู้ได้ง่าย เมื่อคุณคำนวณการถดถอยของค่าแล้ว excel จะให้ค่าบางอย่างดังที่แสดงด้านล่าง เราสนใจเฉพาะตัวเลขที่เน้นด้านล่าง
เมื่อคุณได้ตัวเลขเหล่านี้แล้วคุณจะสามารถสร้างสมการด้านล่างได้เช่น
ADC = (11.003 * dB) - 83.2073
ซึ่งคุณสามารถหาค่าเดซิเบลได้
dB = (ADC + 83.2073) / 11.003
คุณอาจต้องขับเคลื่อนสมการของคุณเองเนื่องจากการปรับเทียบอาจแตกต่างกัน อย่างไรก็ตามโปรดรักษาค่านี้ให้ปลอดภัยสำหรับสิ่งที่เราต้องการในขณะที่เขียนโปรแกรม Arduino
โปรแกรม Arduino เพื่อวัดระดับเสียงเป็น dB:
โปรแกรมที่สมบูรณ์ในการวัด dB แสดงไว้ด้านล่างบรรทัดที่สำคัญบางส่วนได้อธิบายไว้ด้านล่าง
ในสองบรรทัดข้างต้นนี้เราอ่านค่า ADC ของพิน A0 และแปลงเป็น dB โดยใช้สมการที่เราเพิ่งได้มา ค่า dB นี้อาจไม่ถูกต้องตามค่า dB ที่แท้จริง แต่ยังคงใกล้เคียงกับค่าที่แสดงบนแอปพลิเคชันมือถือ
adc = analogRead (MIC); // อ่านค่า ADC จาก amplifer dB = (adc + 83.2073) / 11.003; // แปลงค่า ADC เป็น dB โดยใช้ค่า Regression
เพื่อตรวจสอบว่าโปรแกรมทำงานอย่างถูกต้องหรือไม่เราได้เพิ่ม LED ไปยังพินดิจิตอล 3 ซึ่งทำให้สูงเป็นเวลา 1 วินาทีเมื่อ Arduino วัดเสียงดังที่สูงกว่า 60dB
ถ้า (dB> 60) {digitalWrite (3, HIGH); // เปิดไฟ LED (สูงคือระดับแรงดันไฟฟ้า) ล่าช้า (1000); // รอ digitalWrite วินาที (3, LOW); }
การทำงานของเครื่องวัดระดับเสียง Arduino:
เมื่อคุณพร้อมกับรหัสและฮาร์ดแวร์เพียงแค่อัปโหลดรหัสและเปิดจอภาพอนุกรมของคุณเพื่อดูค่า dB ที่วัดโดย Arduino ของคุณ ฉันกำลังทดสอบรหัสนี้ในห้องของฉันซึ่งไม่มีเสียงรบกวนมากนักยกเว้นการจราจรภายนอกและฉันได้รับค่าด้านล่างบนจอภาพอนุกรมของฉันและแอปพลิเคชัน Android ก็แสดงบางสิ่งที่ใกล้เคียงกับสิ่งนี้
การทำงานทั้งหมดของโครงการสามารถพบได้ในวิดีโอที่ให้ไว้ในตอนท้ายของหน้านี้ คุณสามารถใช้เพื่อฉายภาพเพื่อตรวจจับเสียงในห้องและตรวจสอบว่ามีกิจกรรมหรือมีเสียงรบกวนมากน้อยเพียงใดในแต่ละห้องเรียนหรืออะไรทำนองนั้น ฉันเพิ่งสร้าง LED ให้สูงขึ้นเป็นเวลา 2 วินาทีหากมีเสียงที่บันทึกไว้สูงกว่า 60dB
การทำงานเป็นที่น่าพอใจอย่างไม่น่าเชื่อ แต่สามารถนำไปใช้กับโครงการและต้นแบบพื้นฐานอื่น ๆ ได้ ด้วยการขุดอีกสองสามครั้งฉันพบว่าปัญหาเกิดจากฮาร์ดแวร์ซึ่งยังคงส่งเสียงรบกวนฉันอยู่ในขณะนี้ ดังนั้นฉันจึงลองใช้วงจรอื่น ๆ ที่ใช้ในแผงไมโครโฟนของ spark fun ที่มีตัวกรองความถี่ต่ำและความถี่สูง ฉันได้อธิบายวงจรด้านล่างให้คุณได้ลองแล้ว
เครื่องขยายเสียงพร้อมวงจรกรอง:
ที่นี่เราได้ใช้ตัวกรองความถี่ต่ำและความถี่สูงพร้อมเครื่องขยายเสียงเพื่อลดเสียงรบกวนในวงจรการวัดระดับเสียงนี้เพื่อให้สามารถเพิ่มความแม่นยำได้
ในวงจรข้างต้นนี้เราได้ใช้เครื่องขยายเสียง LM358 ยอดนิยมเพื่อขยายสัญญาณจากไมโครโฟน พร้อมกับแอมป์เรายังได้ใช้สองตัวกรองที่สูงผ่านการกรองจะเกิดขึ้นโดย R5, C2 และ low-pass filter ถูกนำมาใช้โดย C1 และ R2 ตัวกรองเหล่านี้ออกแบบมาเพื่อให้ความถี่ตั้งแต่ 8Hz ถึง 10KHz เท่านั้นเนื่องจากตัวกรองความถี่ต่ำจะกรองสิ่งที่ต่ำกว่า 8Hz และตัวกรอง High Pass จะกรองสิ่งที่สูงกว่า 15KHz ช่วงความถี่นี้ถูกเลือกเนื่องจากไมโครโฟนคอนเดนเซอร์ของฉันทำงานได้ตั้งแต่ 10Hz ถึง 15KHZ เท่านั้นดังที่แสดงในเอกสารข้อมูลด้านล่าง
หากความต้องการความถี่ของคุณเปลี่ยนแปลงคุณสามารถใช้สูตรด้านล่างเพื่อคำนวณค่าของตัวต้านทานและตัวเก็บประจุสำหรับความถี่ที่คุณต้องการ
ความถี่ (F) = 1 / (2πRC)
นอกจากนี้โปรดทราบว่าค่าของตัวต้านทานที่ใช้ที่นี่จะมีผลต่อ Gain ของเครื่องขยายเสียงด้วย การคำนวณค่าตัวต้านทานและตัวเก็บประจุที่ใช้ในวงจรนี้แสดงไว้ด้านล่าง คุณสามารถดาวน์โหลดแผ่น excel ได้จากที่นี่เพื่อแก้ไขค่าความถี่และคำนวณค่าการถดถอย
วงจรเดิมทำงานได้ดีสำหรับความคาดหวังของฉันดังนั้นฉันจึงไม่เคยลองวงจรนี้ หากคุณบังเอิญลองใช้วงจรนี้โปรดแจ้งให้เราทราบว่ามันทำงานได้ดีกว่าวงจรก่อนหน้าหรือไม่ผ่านความคิดเห็น