สารบัญ:
- ขั้นตอนที่ 1: ปัญหา
- ขั้นตอนที่ 2: การแก้ปัญหา
- ขั้นตอนที่ 3: EasyFIR
- ขั้นตอนที่ 4: การกรอง
- ขั้นตอนที่ 5: สนุก
วีดีโอ: การกรอง FIR เพื่อการตรวจจับความถี่ที่เชื่อถือได้มากขึ้น: 5 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:03
ฉันเป็นแฟนตัวยงของ akellyirl ที่สามารถให้คำแนะนำเกี่ยวกับการตรวจจับความถี่ที่เชื่อถือได้โดยใช้เทคนิค DSP แต่บางครั้งเทคนิคที่เขาใช้ก็ไม่ดีพอหากคุณมีการวัดที่มีสัญญาณรบกวน
วิธีแก้ไขง่ายๆ อย่างหนึ่งในการรับอินพุตที่สะอาดขึ้นสำหรับตัวตรวจจับความถี่คือการใช้ตัวกรองบางประเภทรอบๆ ความถี่ที่คุณต้องการตรวจจับ
น่าเสียดายที่การสร้างตัวกรองดิจิทัลไม่ใช่เรื่องง่ายและมีคณิตศาสตร์ค่อนข้างมาก ดังนั้นฉันจึงคิดเกี่ยวกับการสร้างโปรแกรมบางอย่างเพื่อลดความซับซ้อนในการสร้างตัวกรองดังกล่าว เพื่อให้ทุกคนสามารถใช้ตัวกรองเหล่านี้ในโครงการของตนได้โดยไม่ต้องเจาะลึกรายละเอียด
ในคำแนะนำนี้ ฉันจะตรวจจับคลื่นไซน์ 50Hz ในการวัดที่มีเสียงดังด้วย Arduino Uno (ไม่จำเป็นต้องใช้ Arduino จริงๆ)
ขั้นตอนที่ 1: ปัญหา
ลองนึกภาพข้อมูลอินพุตที่วัดได้ดูเหมือนเส้นโค้งด้านบน - ค่อนข้างดัง
หากเราสร้างตัวตรวจจับความถี่อย่างง่ายเช่นเดียวกับใน Instructable ของ akellyirl ผลลัพธ์จะเป็น "-inf" หรือในกรณีของโค้ดด้านล่าง: "ใช่ เสียงรบกวนมากเกินไป …"
หมายเหตุ: ฉันใช้รหัสของ akellyirl เกือบทั้งหมด แต่เพิ่มอาร์เรย์ rawData ที่ด้านบนซึ่งมีการวัดที่มีเสียงดัง
ด้านล่างนี้ คุณจะพบโค้ดทั้งหมดในไฟล์ชื่อ "unfiltered.ino"
ขั้นตอนที่ 2: การแก้ปัญหา
เนื่องจากข้อมูลที่ป้อนเข้ามีสัญญาณรบกวน แต่เราทราบความถี่ที่เราต้องการ เราจึงสามารถใช้เครื่องมือที่ฉันสร้างขึ้นที่เรียกว่า easyFIR เพื่อสร้างตัวกรอง Bandpass และนำไปใช้กับข้อมูลอินพุต ซึ่งส่งผลให้อินพุตเครื่องตรวจจับความถี่สะอาดขึ้นมาก (รูปข้างบน)
ขั้นตอนที่ 3: EasyFIR
เครื่องมือ easyFIR นั้นค่อนข้างใช้งานง่าย เพียงดาวน์โหลดที่เก็บ GitHub และเรียกใช้ไฟล์ easyFIR.py พร้อมตัวอย่างการวัดของคุณหนึ่งตัวอย่าง (ในรูปแบบ CSV)
หากคุณเปิดไฟล์ easyFIR.py คุณจะพบพารามิเตอร์ 5 ตัว (ดูภาพด้านบน) ที่คุณทำได้และควรเปลี่ยนตามผลลัพธ์ที่คุณต้องการ หลังจากที่คุณปรับแต่งพารามิเตอร์ทั้ง 5 ตัว และรันไฟล์ python แล้ว คุณจะเห็นค่าสัมประสิทธิ์ที่คำนวณได้ในเทอร์มินัลของคุณ ค่าสัมประสิทธิ์เหล่านี้มีความสำคัญสำหรับขั้นตอนต่อไป!
ข้อมูลเพิ่มเติมเกี่ยวกับการใช้งานที่แน่นอนสามารถพบได้ที่นี่:
ขั้นตอนที่ 4: การกรอง
ตอนนี้ ถ้าคุณคำนวณค่าสัมประสิทธิ์การกรองที่ต้องการแล้ว มันค่อนข้างง่ายที่จะนำ filer จริงไปใช้กับเครื่องตรวจจับความถี่
ดังที่คุณเห็นในภาพด้านบน คุณเพียงแค่เพิ่มค่าสัมประสิทธิ์ ฟังก์ชัน applyFilter แล้วกรองการวัดอินพุต
ด้านล่างนี้ คุณจะพบโค้ดทั้งหมดในไฟล์ชื่อ "filtered.ino"
หมายเหตุ: ขอบคุณมากสำหรับ Stack Overflow Post สำหรับอัลกอริธึมแอปพลิเคชันตัวกรองที่ยอดเยี่ยม!
ขั้นตอนที่ 5: สนุก
อย่างที่คุณเห็น ตอนนี้เราสามารถตรวจจับสัญญาณ 50Hz ได้แม้ในสภาพแวดล้อมที่มีเสียงดัง ?
โปรดปรับเปลี่ยนความคิดและรหัสของฉันตามความต้องการของคุณ ฉันจะขอบคุณมากที่จะรวมการปรับปรุงของคุณ!
ถ้าคุณชอบงานของฉัน ฉันจะขอบคุณมากถ้าคุณสนับสนุนงานของฉันกับ star บน GitHub!
ขอบคุณสำหรับการสนับสนุน!:)
แนะนำ:
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: 5 ขั้นตอน
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: การตวัดเป็นวิธีง่ายๆ ในการสร้างเกม โดยเฉพาะอย่างยิ่งเกมปริศนา นิยายภาพ หรือเกมผจญภัย
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: 3 ขั้นตอน
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: ในคำแนะนำนี้ เราจะทำการตรวจจับใบหน้าบน Raspberry Pi 4 ด้วย Shunya O/S โดยใช้ Shunyaface Library Shunyaface เป็นห้องสมุดจดจำใบหน้า/ตรวจจับใบหน้า โปรเจ็กต์นี้มีจุดมุ่งหมายเพื่อให้เกิดความเร็วในการตรวจจับและจดจำได้เร็วที่สุดด้วย
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: 3 ขั้นตอน
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: ในบทช่วยสอนนี้ ฉันจะแสดงขั้นตอนสำคัญในการติดตั้งปลั๊กอิน WordPress ให้กับเว็บไซต์ของคุณ โดยทั่วไป คุณสามารถติดตั้งปลั๊กอินได้สองวิธี วิธีแรกคือผ่าน ftp หรือผ่าน cpanel แต่ฉันจะไม่แสดงมันเพราะมันสอดคล้องกับ
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): 8 ขั้นตอน
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): ตัวแปลงสัญญาณเสียงล้ำเสียง L298N Dc ตัวเมียอะแดปเตอร์จ่ายไฟพร้อมขา DC ตัวผู้ Arduino UNOBreadboardวิธีการทำงาน: ก่อนอื่น คุณอัปโหลดรหัสไปยัง Arduino Uno (เป็นไมโครคอนโทรลเลอร์ที่ติดตั้งดิจิตอล และพอร์ตแอนะล็อกเพื่อแปลงรหัส (C++)
เครื่อง Rube Goldberg 11 ขั้นตอน: 8 ขั้นตอน
เครื่อง 11 Step Rube Goldberg: โครงการนี้เป็นเครื่อง 11 Step Rube Goldberg ซึ่งออกแบบมาเพื่อสร้างงานง่ายๆ ในรูปแบบที่ซับซ้อน งานของโครงการนี้คือการจับสบู่ก้อนหนึ่ง