กลับไปหน้ารวมไฟล์
arduino-based-automatic-guitar-tuner-088d4e.md

คณิตศาสตร์ FFT และตัวขับเคลื่อน Stepper: เครื่องตั้งสายกีตาร์อัตโนมัติ

โปรเซสเซอร์เสียงทั่วไปจะบอกคุณว่าเพลงดังหรือไม่ แต่ เครื่องตั้งสายกีตาร์อัตโนมัติ ต้องใช้การคำนวณทางคณิตศาสตร์เพื่อบอกความถี่ที่แน่นอน (Hertz) อย่างชัดเจน ด้วยการใช้ประโยชน์จากความสามารถในการคำนวณทางคณิตศาสตร์มหาศาลของ Analog-to-Digital Converter ของ Uno การส่งผ่านการสั่นสะเทือนของสายกีตาร์ผ่าน Operational Amplifiers (Op-Amps) ที่ซับซ้อน และเชื่อมโยงความคลาดเคลื่อนของระดับเสียงที่แม่นยำเข้ากับ Stepper motor ขนาดใหญ่ที่ยึดติดกับลูกบิดสายกีตาร์ Arduino จะทำการตั้งสายโลหะด้วยกลไกให้สมบูรณ์แบบที่สุด!

ad8232_ecg_sensor_macro_1772706791753.png

กับดัก Zero-Crossing ของ LM386 Op-Amp

คุณไม่สามารถอ่านสัญญาณกีตาร์ไฟฟ้าโดยตรงเข้าสู่ Arduino Analog Pin ได้อย่างแน่นอน สัญญาณอ่อนมาก (10mV) และลอยอยู่ต่ำกว่า Ground อย่างสมบูรณ์แบบ (AC Voltage - +10mV to -10mV)!

  1. Pin A0 ของ Uno อ่านค่าได้ตั้งแต่ 0V ถึง 5V หากมีแรงดันไฟฟ้าติดลบเข้ามา Pin จะไม่รับรู้ทางกายภาพ!
  2. คุณ ต้อง ส่งสัญญาณกีตาร์ผ่าน LM386 Operational Amplifier (Op-Amp)!
  3. วงจรจะ "ไบแอส" สัญญาณเสียงขึ้นไปที่ 2.5V อย่างแม่นยำ ตอนนี้คลื่นเสียงกีตาร์จะแกว่งอย่างรุนแรงระหว่าง 2.0V และ 3.0V
  4. กลไกการอ่านค่าด้วยซอฟต์แวร์: อัลกอริทึมจะค้นหา Zero-Crossings คลื่นเสียงที่ขยายแล้วจะตัดผ่านเส้นฐาน 2.5V กี่ครั้งต่อวินาทีกันแน่?
  5. สาย E ต่ำ = 82 Hz Uno จะคำนวณ If (Hertz < 82.4): แสดงว่าสายเพี้ยนต่ำ (FLAT)!

การขับเคลื่อน Gearbox (Geared Stepper)

หากระดับเสียงเพี้ยนต่ำ (flat) Uno จะต้องขับเคลื่อนระบบหุ่นยนต์ทางกายภาพเพื่อขันสายกีตาร์โลหะให้ตึงขึ้น

  • คุณไม่สามารถใช้ DC Motor ทั่วไปได้ มันจะหมุนไม่สามารถควบคุมได้และทำให้สายขาด!
  • คุณ ต้อง ใช้ 28BYJ-48 หรือ NEMA 17 Stepper Motor
if (currentHertz < 82.0) { // เพี้ยนต่ำมาก!
  // ขันสายให้ตึงขึ้นอย่างมาก!
  tuningStepper.step(100); // หมุนตามเข็มนาฬิกา 100 สเต็ปที่ควบคุมได้อย่างสมบูรณ์แบบ!
} else if (currentHertz >= 82.0 && currentHertz < 82.3) { 
  // ใกล้แล้ว! ปรับละเอียด!
  tuningStepper.step(2); // หมุนแค่ 2 สเต็ป!
} else {
  Serial.println("IN TUNE!"); // หยุดกลไกทั้งหมด!
}

ฮาร์ดแวร์พื้นฐานสำหรับการคำนวณระดับเสียง

  • Arduino Uno/Nano (ความเร็วในการประมวลผลมาตรฐานเพียงพออย่างสมบูรณ์แบบ แม้ว่าบอร์ด Teensy จะเหมาะกว่าสำหรับการใช้งานไลบรารี FFT แบบดิบ)
  • LM386 Audio Amplifier Chip + ตัวต้านทานไบแอสและตัวเก็บประจุคัปปลิ้งทางกายภาพ (การจัดวงจรบน breadboard ที่ซับซ้อนเป็นสิ่งจำเป็นอย่างยิ่ง มิฉะนั้นฟิสิกส์ของเสียงจะล้มเหลวทันที!)
  • Standard Electric Guitar 1/4-inch Mono Jack Cable Breakout
  • Geared Stepper Motor (เชื่อมต่อเข้ากับลูกบิดสายกีตาร์อย่างแม่นยำโดยใช้อะแดปเตอร์หกเหลี่ยมที่พิมพ์ 3D แบบกำหนดเอง!)

ข้อมูล Frontmatter ดั้งเดิม

title: "Arduino-Based Automatic Guitar Tuner"
description: "Physical acoustic robotics! Overcome massive Fast Fourier Transform algorithmic bottlenecks by utilizing pure, zero-crossing hardware analog signal analysis specifically tracking exact musical pitch Hertz and actuating geared NEMA tuner motors."
category: "Audio & Sound"
difficulty: "Advanced"