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

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

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

ad8232_ecg_sensor_macro_1772706791753.png

LM386 Op-Amp Zero-Crossing Trap

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

  1. Pin A0 ของ Uno อ่านค่า 0V ถึง 5V หากมีแรงดันลบเข้าถึง, Pin จะละเว้นสัญญาณนั้นไปทางกายภาพ!
  2. คุณต้องส่งสัญญาณกีตาร์ผ่าน LM386 Operational Amplifier (Op-Amp)!
  3. วงจรจะ "Biases" สัญญาณเสียงขึ้นไปที่ 2.5V อย่างแม่นยำ ตอนนี้คลื่นเสียงกีตาร์จะแกว่งอย่างรุนแรงระหว่าง 2.0V และ 3.0V
  4. กลไกการอ่านซอฟต์แวร์: อัลกอริทึมจะค้นหา Zero-Crossings มีกี่ครั้งต่อวินาทีที่รูปคลื่นที่ขยายแล้วจะตัดผ่านเส้นพื้นฐาน 2.5V?
  5. สาย E ต่ำ = 82 Hz Uno คำนวณ ถ้า (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 step อย่างแม่นยำ!
} else if (currentHertz >= 82.0 && currentHertz < 82.3) { 
  // ใกล้มาก! ปรับละเอียด!
  tuningStepper.step(2); // ขยับแค่ 2 step!
} else {
  Serial.println("IN TUNE!"); // หยุดการทำงานของกลไกทั้งหมด!
}

ฮาร์ดแวร์พื้นฐานสำหรับการคำนวณ Pitch

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

ข้อมูล 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"