สารบัญ:

Ukelele Tuner โดยใช้ LabView และ NI USB-6008: 5 ขั้นตอน
Ukelele Tuner โดยใช้ LabView และ NI USB-6008: 5 ขั้นตอน

วีดีโอ: Ukelele Tuner โดยใช้ LabView และ NI USB-6008: 5 ขั้นตอน

วีดีโอ: Ukelele Tuner โดยใช้ LabView และ NI USB-6008: 5 ขั้นตอน
วีดีโอ: University of Arizona - AME487 - Ukulele tuner project 2024, พฤศจิกายน
Anonim
Ukelele Tuner โดยใช้ LabView และ NI USB-6008
Ukelele Tuner โดยใช้ LabView และ NI USB-6008
Ukelele Tuner โดยใช้ LabView และ NI USB-6008
Ukelele Tuner โดยใช้ LabView และ NI USB-6008

ในฐานะที่เป็นโปรเจ็กต์การเรียนรู้ที่อิงตามปัญหาสำหรับหลักสูตร LabVIEW & Instrumentation ของฉันที่ Humber College (เทคโนโลยีวิศวกรรมอิเล็กทรอนิกส์) ฉันได้สร้างจูนเนอร์ของอูคูเลเล่ที่จะรับอินพุตแบบอะนาล็อก (เสียงสตริงของอูคูเลเล่) ค้นหาความถี่พื้นฐาน ตัดสินใจว่าโน้ตใดกำลังพยายาม เพื่อปรับแต่ง และบอกผู้ใช้ว่าจำเป็นต้องปรับสายอักขระขึ้นหรือลงหรือไม่ อุปกรณ์ที่ฉันใช้ในการแปลอินพุตแบบอะนาล็อกเป็นอินพุตดิจิทัลคือ National Instruments USB-6008 DAQ (อุปกรณ์เก็บข้อมูล) และอินเทอร์เฟซผู้ใช้ถูกนำไปใช้กับ LabVIEW

ขั้นตอนที่ 1: การปรับแต่ง Ukelele มาตรฐาน

การปรับจูนอูคูเลเล่มาตรฐาน
การปรับจูนอูคูเลเล่มาตรฐาน
การปรับจูนอูคูเลเล่มาตรฐาน
การปรับจูนอูคูเลเล่มาตรฐาน

ขั้นตอนแรกคือการค้นหาความถี่พื้นฐานของโน้ตดนตรี และโดยปกติแล้วจะปรับสายของอูคูเลเล่ในช่วงใด ฉันใช้แผนภูมิสองแผนภูมินี้ และตัดสินใจว่าฉันจะกำหนดช่วงโทนเสียงระหว่าง 262 Hz (C) และ 494Hz (สูง B) หากน้อยกว่า 252 Hz จะถือว่าต่ำเกินไปสำหรับโปรแกรมที่จะถอดรหัสว่าโน้ตใดพยายามจะเล่น และสิ่งใดที่มากกว่า 500 Hz จะถือว่าสูงเกินไป อย่างไรก็ตาม โปรแกรมยังคงบอกผู้ใช้ว่าพวกเขาอยู่ห่างจากโน้ตที่ถอดรหัสได้ใกล้เคียงที่สุดกี่ Hz และควรปรับสตริงขึ้น (โน้ตต่ำเกินไป) หรือลง (โน้ตสูงเกินไป) เพื่อให้ไปถึงโน้ตที่มีอยู่

นอกจากนี้ ฉันยังสร้างช่วงสำหรับโน้ตแต่ละตัว ไม่ใช่แค่ความถี่เดียว เพื่อให้โปรแกรมค้นหาโน้ตที่กำลังเล่นได้ง่ายขึ้น ตัวอย่างเช่น โปรแกรมจะบอกผู้ใช้ว่ากำลังเล่น C หากโน้ตมีความถี่พื้นฐานระหว่าง 252 Hz (ครึ่งทางถึง B) และ 269Hz (ครึ่งทางถึง C#) แต่เพื่อตัดสินใจว่าจำเป็นต้องปรับแต่งหรือไม่ หรือต่ำกว่านั้นก็ยังคงเปรียบเทียบโน้ตที่กำลังเล่นกับความถี่พื้นฐานของ C ซึ่งก็คือ 262Hz

ขั้นตอนที่ 2: การสร้างแบบจำลองทางทฤษฎีทางดิจิทัลล้วนๆ

การสร้างแบบจำลองทฤษฎีดิจิทัลล้วนๆ
การสร้างแบบจำลองทฤษฎีดิจิทัลล้วนๆ
การสร้างแบบจำลองทฤษฎีดิจิทัลล้วนๆ
การสร้างแบบจำลองทฤษฎีดิจิทัลล้วนๆ

ก่อนดำดิ่งสู่ด้านแอนะล็อกของโปรเจ็กต์ ฉันต้องการดูว่าฉันสามารถสร้างโปรแกรม LabVIEW ที่อย่างน้อยจะทำการประมวลผลหลักของตัวอย่างเสียงได้หรือไม่ เช่น การอ่านตัวอย่างเสียง.wav การค้นหาความถี่พื้นฐาน และการสร้าง การเปรียบเทียบที่จำเป็นกับแผนภูมิความถี่เพื่อค้นหาว่าควรปรับเสียงขึ้นหรือลง

ฉันใช้ SoundFileSimpleRead. VI ที่มีอยู่ใน LabVIEW เพื่ออ่านไฟล์.wav จากเส้นทางที่ฉันกำหนด ใส่สัญญาณลงในอาร์เรย์ที่จัดทำดัชนี และป้อนสัญญาณนั้นลงใน HarmonicDistortionAnalyzer. VI เพื่อค้นหาความถี่พื้นฐาน ฉันยังรับสัญญาณจาก SoundFileSimpleRead. VI และเชื่อมต่อเข้ากับตัวบ่งชี้แผนภูมิรูปคลื่นโดยตรง เพื่อให้ผู้ใช้เห็นรูปคลื่นของไฟล์ที่แผงด้านหน้า

ฉันสร้างโครงสร้างเคส 2 แบบ: โครงสร้างหนึ่งเพื่อวิเคราะห์ว่ากำลังเล่นโน้ตอะไร และอีกโครงสร้างหนึ่งเพื่อพิจารณาว่าจำเป็นต้องเปลี่ยนสตริงขึ้นหรือลง สำหรับกรณีแรก ฉันสร้างช่วงสำหรับโน้ตแต่ละตัว และหากสัญญาณความถี่พื้นฐานจาก HarmonicDistortionAnalyzer. VI อยู่ในช่วงนั้น มันจะบอกผู้ใช้ว่ากำลังเล่นโน้ตอะไรอยู่ เมื่อกำหนดโน้ตแล้ว ค่าโน้ตที่เล่นจะถูกลบด้วยความถี่พื้นฐานที่แท้จริงของโน้ต จากนั้นผลลัพธ์จะถูกย้ายไปยังกรณีที่สองซึ่งกำหนดสิ่งต่อไปนี้: หากผลลัพธ์มีค่ามากกว่าศูนย์ จะต้องปรับสตริงลง หากผลลัพธ์เป็นเท็จ (ไม่เกินศูนย์) กรณีจะตรวจสอบว่าค่าเท่ากับศูนย์หรือไม่ และหากเป็นจริง โปรแกรมจะแจ้งให้ผู้ใช้ทราบว่าโน้ตอยู่ในการปรับแต่ง ถ้าค่าไม่เท่ากับศูนย์ แสดงว่าต้องน้อยกว่าศูนย์และต้องปรับสตริง ฉันใช้ค่าสัมบูรณ์ของผลลัพธ์เพื่อแสดงให้ผู้ใช้เห็นว่าห่างจากโน้ตจริงกี่ Hz

ฉันตัดสินใจว่าตัวบ่งชี้มิเตอร์จะดีที่สุดในการแสดงให้ผู้ใช้เห็นสิ่งที่ต้องดำเนินการเพื่อให้โน้ตตรงกัน

ขั้นตอนที่ 3: ถัดไป วงจรแอนะล็อก

ต่อไป วงจรแอนะล็อก
ต่อไป วงจรแอนะล็อก
ต่อไป วงจรแอนะล็อก
ต่อไป วงจรแอนะล็อก
ต่อไป วงจรแอนะล็อก
ต่อไป วงจรแอนะล็อก

ไมโครโฟนที่ฉันใช้ในโครงการนี้คือไมโครโฟนอิเล็กเตรตคอนเดนเซอร์ CMA-6542PF แผ่นข้อมูลสำหรับไมโครโฟนนี้อยู่ด้านล่าง ต่างจากไมโครโฟนคอนเดนเซอร์ส่วนใหญ่ประเภทนี้ ฉันไม่ต้องกังวลเรื่องขั้ว แผ่นข้อมูลแสดงให้เห็นว่าแรงดันไฟฟ้าในการทำงานของไมโครโฟนนี้คือ 4.5 - 10V แต่แนะนำให้ใช้ 4.5 V และกระแสไฟที่ใช้คือ 0.5mA สูงสุด ดังนั้นจึงเป็นสิ่งที่ต้องระวังเมื่อออกแบบวงจรปรีแอมป์สำหรับไมโครโฟน ความถี่ในการทำงานคือ 20Hz ถึง 20kHz ซึ่งเหมาะสำหรับเสียง

ฉันใช้การออกแบบวงจรปรีแอมป์อย่างง่ายบนเขียงหั่นขนมและปรับแรงดันไฟฟ้าอินพุต ตรวจสอบให้แน่ใจว่ามีไมค์ไม่เกิน 0.5mA ตัวเก็บประจุใช้เพื่อกรองสัญญาณรบกวน DC ที่อาจควบคู่ไปกับสัญญาณไฟฟ้า (เอาต์พุต) และตัวเก็บประจุมีขั้ว ดังนั้นต้องแน่ใจว่าได้เชื่อมต่อปลายขั้วบวกกับพินเอาต์พุตของไมโครโฟน

หลังจากวงจรเสร็จสมบูรณ์ ฉันเชื่อมต่อเอาท์พุตของวงจรกับพินอินพุตแบบอะนาล็อกแรก (AI0, พิน 2) ของ USB-6008 และเชื่อมต่อกราวด์ของเขียงหั่นขนมกับพินกราวด์แอนะล็อก (GND, พิน 1) ฉันเชื่อมต่อ USB-6008 กับพีซีด้วย USB และถึงเวลาต้องปรับเปลี่ยนโปรแกรม LabVIEW เพื่อรับสัญญาณอะนาล็อกจริง

ขั้นตอนที่ 4: การอ่านสัญญาณแอนะล็อกด้วย DAQ Assistant

การอ่านสัญญาณแอนะล็อกด้วย DAQ Assistant
การอ่านสัญญาณแอนะล็อกด้วย DAQ Assistant
การอ่านสัญญาณแอนะล็อกด้วย DAQ Assistant
การอ่านสัญญาณแอนะล็อกด้วย DAQ Assistant

แทนที่จะใช้ SoundFileSimpleRead. VI และ HarmonicDistortionAnalyzer. VI ฉันใช้ DAQ Assistant. VI และ ToneMeasurements. VI เพื่อจัดการกับอินพุตแบบอะนาล็อก การตั้งค่า DAQ Assistant ค่อนข้างตรงไปตรงมา และ VI จะนำคุณผ่านขั้นตอนต่างๆ ToneMeasurements. VI มีเอาต์พุตมากมายให้เลือก (แอมพลิจูด ความถี่ เฟส) ดังนั้นฉันจึงใช้เอาต์พุตความถี่ซึ่งให้ความถี่พื้นฐานของโทนอินพุต (จาก DAQ Assistant. VI) เอาต์พุตของ ToneMeasurements. VI ต้องถูกแปลงและใส่ลงในอาร์เรย์ก่อนที่จะใช้ในโครงสร้างเคสได้ แต่โปรแกรม/ตัวบ่งชี้ LabVIEW ที่เหลือยังคงเหมือนเดิม

ขั้นตอนที่ 5: บทสรุป

บทสรุป
บทสรุป

โครงการประสบความสำเร็จ แต่มีข้อบกพร่องมากมาย ตอนที่ฉันใช้งานเครื่องรับสัญญาณในห้องเรียนที่มีเสียงดัง โปรแกรมจะระบุได้ยากว่าเสียงอะไรและน้ำเสียงที่เล่นคืออะไร เป็นไปได้ว่าวงจรปรีแอมป์นั้นธรรมดามาก และไมโครโฟนก็มีราคาถูกมาก เมื่อมันเงียบ โปรแกรมทำงานด้วยความน่าเชื่อถือที่ดีเพื่อตรวจสอบโน้ตที่พยายามจะเล่น เนื่องจากข้อจำกัดด้านเวลา ฉันไม่ได้ทำการเปลี่ยนแปลงใดๆ เพิ่มเติม แต่ถ้าฉันทำโปรเจ็กต์นี้ซ้ำ ฉันจะซื้อไมโครโฟนที่ดีกว่านี้และใช้เวลามากขึ้นในวงจรปรีแอมป์

แนะนำ: