สารบัญ:
- ขั้นตอนที่ 1: ส่วนประกอบที่ใช้
- ขั้นตอนที่ 2: ผู้ติดตามซองจดหมาย
- ขั้นตอนที่ 3: PWM สำหรับ Analog Meter
- ขั้นตอนที่ 4: การปรับเทียบไมโครโฟน
- ขั้นตอนที่ 5: แอพ Android
- ขั้นตอนที่ 6: สรุป
วีดีโอ: เครื่องวัด VU แบบอนาล็อกที่เปิดใช้งาน Bluetooth: 6 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:04
นี่เป็นโครงการของฉันสำหรับชั้นเรียนในมหาวิทยาลัยแห่งหนึ่งของฉันที่ชื่อ SMP ในขณะที่เราใช้บอร์ดพัฒนา STM32F103RB ฉันจึงใช้โปรเจ็กต์นี้โดยเริ่มจากมิเตอร์ VU แบบธรรมดา จากนั้นฉันได้เพิ่มคุณสมบัติพิเศษบางอย่าง เช่น การรองรับ Bluetooth เพื่อถ่ายทอดค่าจาก ADC ไปยังแอพ Android เพื่อสร้างแผนภูมิ dB อย่างง่าย
ขั้นตอนที่ 1: ส่วนประกอบที่ใช้
- บอร์ดพัฒนา STM32F103RB
- HC-05 zs040 โมดูลบลูทูธ
- แผงมิเตอร์ VU แบบอะนาล็อก (ลิงก์)
- ไมโครโฟนอิเล็กเตรต
- LM324N ควอดออปแอมป์
- ทรานซิสเตอร์ TIP120 จำนวน 2 ตัว
- 3 1N4148 ไดโอด
- ตัวเก็บประจุและตัวต้านทานต่างๆ
แม้ว่าคุณจะสามารถขับวงจรนี้ออกจากราง 5V ของบอร์ดได้ แต่ฉันก็ยังใช้แหล่งจ่ายไฟ 5V ภายนอกด้วย
ขั้นตอนที่ 2: ผู้ติดตามซองจดหมาย
ส่วนหลักของการออกแบบนี้คือตัวติดตามซองจดหมายซึ่งรับสัญญาณจากไมโครโฟนอิเล็กเตรตและส่งสัญญาณออกตามสัดส่วนของแรงดันไฟฟ้ากับแอมพลิจูดสัญญาณของไมโครโฟน
สัญญาณดิบจากไมโครโฟนจะถูกส่งผ่านเครื่องขยายเสียงด้วยอัตราขยาย 150 ก่อน
จากนั้นสัญญาณจะถูกส่งผ่านไปยังตัวตามเอนเวโลปจริง ซึ่งควรส่งสัญญาณออกเฉพาะส่วนสัญญาณบวกเท่านั้น
ส่วนสุดท้ายกำลังลบแรงดันออฟเซ็ต 1.65V จากเอาต์พุตของตัวติดตามซองจดหมายเพื่อให้สัญญาณ 0 V สำหรับไม่มีเสียง 1.65 V สำหรับเสียงกลางและ 3.3 V สำหรับเสียงดังที่ควรเข้ากันได้กับในตัว ADC ของคณะกรรมการ
ผู้ติดตามซองจดหมายนี้ใช้งานจากคำตอบ StackExchange ที่ยอดเยี่ยมนี้
ขั้นตอนที่ 3: PWM สำหรับ Analog Meter
เพื่อให้ได้เข็มของมาตรวัด ฉันได้กำหนดค่าตัวจับเวลา TIM4 ของบอร์ดไมโครคอนโทรลเลอร์ด้วยความถี่ประมาณ 500 Hz
โดยการลองใช้รอบการทำงานที่แตกต่างกันอย่างต่อเนื่อง ฉันได้ตัดสินด้วยค่าบางค่าที่เพียงพอที่จะทำให้เข็มเปลี่ยนจาก 0 ถึง 100
ฉันจะให้รายละเอียดกระบวนการแสดงค่าที่แน่นอนในขั้นตอนต่อไปโดยใช้คณิตศาสตร์
ขั้นตอนที่ 4: การปรับเทียบไมโครโฟน
เมื่อทำผู้ติดตามซองจดหมายเสร็จแล้ว ฉันก็เขียนโค้ดง่ายๆ เพื่อใช้ ADC และตรวจสอบว่าค่าที่อ่านได้เปลี่ยนแปลงตามความดังภายในห้องจริงๆ
ในการ "แปล" ค่านี้เป็นการอ่าน dB จริง ฉันได้ใช้เครื่องกำเนิดเสียงออนไลน์ที่มีความถี่ 550 Hz และ Android ของฉันเพื่อให้อ่านค่าอ้างอิง
ฉันได้พล็อตค่าเหล่านั้นและใช้เครื่องมือ Curve Fit ของ MatLAB เพื่อรับฟังก์ชันที่จับคู่การอ่าน ADC กับการประมาณค่าจริงของระดับ dB (หรืออย่างน้อยก็ใกล้เคียงกับการอ่านในโทรศัพท์ของฉัน)
เราจะเห็นว่าสิ่งนี้เป็นไปตามมาตราส่วนลอการิทึมของไมโครโฟน
ฉันยังทำสิ่งเดียวกันเพื่อจับคู่ตำแหน่งเข็มกับค่า PWM ฉันรวบรวมค่าเหล่านั้นโดยเพิ่มค่า PWM ขึ้น 10 อย่างต่อเนื่องจนกว่าความต้องการจะอ่านในระดับของมัน
เมื่อรวม 2 ฟังก์ชันนี้เข้าด้วยกัน ฉันก็มีวิธีง่ายๆ ในการแสดงค่าที่อ่านได้จาก ADC เป็นค่าจริงบนตัวระบุมาตรวัด
ขั้นตอนที่ 5: แอพ Android
แอพใช้ไลบรารีสุดเจ๋งนี้เพื่อสื่อสารผ่านบลูทู ธ ซีเรียลเพื่อแลกเปลี่ยนข้อมูลไบต์
ข้อแม้หลักของระบบนี้คือความยาวคำสูงสุดที่ส่งผ่าน Bluetooth คือ 8 บิต และค่า ADC จะแสดงเป็น 12 บิต เพื่อแก้ปัญหานี้ ฉันแยกค่า ADC หนึ่งค่าออกเป็นค่า 6 บิตแยกกัน 2 ค่า (MSB และ LSB) โดยเหลืออีก 2 บิตที่เหลือใช้เพื่อระบุประเภทข้อความ (MSB, LSB, CHK)
ดังนั้น สำหรับค่า ADC เดียวที่เราต้องการออกอากาศ เราแบ่งค่าจริงออกเป็น 2 ข้อความ เพื่อตรวจสอบความสมบูรณ์ของข้อความเหล่านั้น ฉันได้ส่งข้อความที่สามพร้อมกับ XOR ของ 2 ข้อความแรก
หลังจากตรวจสอบความสมบูรณ์ของค่าแล้ว เราสามารถใช้ฟังก์ชันเดียวกันเพื่อรับระดับ dB และลงจุดบนแผนภูมิสดของเราได้
ขั้นตอนที่ 6: สรุป
แม้ว่าส่วนไมโครคอนโทรลเลอร์ของโปรเจ็กต์นี้จะทำงานได้ดีในการแสดงความดังภายในห้อง แต่ฉันพบปัญหาบางอย่างเมื่อส่งข้อมูลผ่านบลูทูธเนื่องจากแพ็กเก็ตสูญหาย
ซอร์สโค้ดสำหรับโครงการนี้สามารถพบได้ที่นี่:
- แอพคู่หู Android - repo
- รหัสไมโครคอนโทรลเลอร์ - repo
อย่าลังเลที่จะมีส่วนร่วมหากคุณพบว่าสิ่งนี้มีประโยชน์ในทางใดทางหนึ่ง
แนะนำ:
เครื่องวัด Vu LED 20 ดวงอย่างง่ายโดยใช้ LM3915: 6 ขั้นตอน
เครื่องวัด Vu LED 20 ดวงอย่างง่ายโดยใช้ LM3915: แนวคิดในการสร้างเครื่องวัด VU อยู่ในรายการโครงการของฉันมาเป็นเวลานาน และในที่สุดฉันก็ทำได้ เครื่องวัด VU เป็นวงจรสำหรับตัวบ่งชี้ความแรงของสัญญาณเสียง วงจรมิเตอร์ VU มักใช้กับวงจรเครื่องขยายเสียงเพื่อให้
เครื่องวัด CO2 โดยใช้เซนเซอร์ SCD30 กับ Arduino Mega: 5 ขั้นตอน
เครื่องวัด CO2, การใช้เซนเซอร์ SCD30 กับ Arduino Mega: พารามิเตอร์มาตรฐานสำหรับ CO2, สภาพแวดล้อมการทำงานและอุณหภูมิ, el SCD30 จำเป็นต้องมีการโต้ตอบกับสภาพแวดล้อมโดยรอบ la calibración ya no sea válida
เครื่องวัด ECG/EKG แบบต่อเนื่องแบบพกพาที่ใช้งานง่ายโดยใช้ ATMega328 (ชิป Arduino Uno) + AD8232: 3 ขั้นตอน
จอภาพ ECG/EKG แบบต่อเนื่องแบบพกพาที่ใช้งานง่ายโดยใช้ ATMega328 (ชิป Arduino Uno) + AD8232: หน้าคำแนะนำนี้จะแสดงวิธีสร้างจอภาพ ECG/EKG แบบ 3-lead แบบพกพาอย่างง่าย จอภาพใช้ AD8232 breakout board เพื่อวัดสัญญาณ ECG และบันทึกลงในการ์ด microSD เพื่อการวิเคราะห์ในภายหลัง อุปกรณ์หลักที่จำเป็น: ชาร์จใหม่ได้ 5V
เครื่องวัด Vu อย่างง่ายโดยใช้ Arduino: 6 ขั้นตอน
เครื่องวัด Vu อย่างง่ายโดยใช้ Arduino: เครื่องวัดระดับเสียง (VU) หรือตัวบ่งชี้ระดับเสียงมาตรฐาน (SVI) เป็นอุปกรณ์ที่แสดงการแสดงระดับสัญญาณในอุปกรณ์เสียง ดังนั้นในบทช่วยสอนนี้ ให้สร้างเครื่องวัด VU โดยใช้ Arduino
เครื่องวัด CO2 แบบอนาล็อกขนาดยักษ์: 6 ขั้นตอน (พร้อมรูปภาพ)
เครื่องวัด CO2 แบบอะนาล็อกยักษ์: บรรยากาศปัจจุบันเหนือภูเขาในฮาวายมีคาร์บอนไดออกไซด์ประมาณ 400 ppm ตัวเลขนี้มีความสำคัญอย่างยิ่งต่อสิ่งมีชีวิตทั้งหมดบนผิวดาวเคราะห์ ขณะนี้เราถูกห้อมล้อมด้วยผู้ปฏิเสธความกังวลนี้หรือผู้ที่บีบคั้น