Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Tuner Gitar Otomatis Berbasis Arduino

Komponen dan persediaan

Arduino UNO
× 1

Aplikasi dan layanan online

Simulink

Tentang proyek ini

Salah satu hal terpenting saat bermain gitar adalah memastikan instrumennya selaras. Bahkan pemain gitar terbaik pun tidak akan terdengar bagus dengan gitar yang tidak selaras. Menyetel gitar dengan tangan menggunakan tuner standar selalu umum, tetapi tuner otomatis membuat segalanya lebih mudah, dan lebih menyenangkan! Proyek berbasis Arduino ini akan menyetel gitar Anda untuk Anda.

Berikut adalah video yang menunjukkan proyek sedang beraksi:https://www.mathworks.com/videos/automatic-guitar-tuner-using-simulink-and-arduino-1501787185047.html

Ringkasan

Gambar di atas menunjukkan gambaran umum dari tuner gitar otomatis.

  • Tombol tekan digunakan untuk memilih senar yang akan disetel
  • Tampilan enam LED digunakan untuk menunjukkan string mana yang telah dipilih
  • Gengper yang terhubung ke motor digunakan untuk memutar pasak penyetelan hingga senar selaras.

Input dan output dikendalikan oleh empat sirkuit yang disebutkan di atas:sirkuit input digital untuk tombol tekan, sirkuit input audio analog untuk gitar, sirkuit output digital untuk tampilan LED, dan sirkuit penggerak motor untuk pasak tuning. penggenggam. Keempat sirkuit ini berinteraksi dengan Arduino Due, yang menjalankan algoritma yang dikembangkan menggunakan Simulink.

Sirkuit Masukan Audio

Gitar terhubung ke tuner melalui kabel gitar standar. Ujung kabel gitar memiliki dua sambungan, yang disebut ujung dan selongsong. Salah satu ujung kabel akan dihubungkan ke jack input, yang memiliki ujung kabel untuk ujung dan selongsongnya. Saya menyolder kabel ke kabel ini untuk menghubungkan ujung dan selongsong ke sirkuit input audio.

Saya akan merekomendasikan menggunakan op amp TL972 untuk rangkaian ini. Ini adalah penguat rel-ke-rel dengan kebisingan sangat rendah yang dapat beroperasi pada tegangan suplai yang sangat rendah.

Pegangan Pasak Tuning Bermotor

Saya tidak bisa menggunakan sembarang motor DC untuk proyek ini. Saya membutuhkan motor yang diarahkan dengan kecepatan rendah dan torsi tinggi. Motor yang saya gunakan memiliki kecepatan 6 RPM dan torsi maksimum 613 oz-in. Ini memiliki rentang tegangan 3-12 V, jadi saya menggunakan baterai 9 V sebagai sumber daya.

Pada poros motor, saya merakit mekanisme pegangan sederhana menggunakan hub penjepit, empat sekrup, dan beberapa selotip.

Perangkat Lunak

Saya menggunakan Simulink dan paket dukungannya untuk Arduino untuk mengembangkan algoritma untuk tuner. Simulink adalah lingkungan diagram blok yang digunakan untuk mengembangkan algoritma dan memodelkan sistem dinamis. Paket dukungan memungkinkan saya untuk membaca dari dan menulis ke pin di Arduino menggunakan blok Simulink. Dengan menggunakan kemampuan mode eksternal perangkat lunak, saya dapat mensimulasikan algoritme pada Arduino dengan pembuatan kode otomatis dan parameter penyetelan saat simulasi berjalan, tanpa harus mengkompilasi ulang kode apa pun. Saya kemudian dapat menyebarkan algoritme ke perangkat keras untuk eksekusi mandiri. Model yang saya buat ditunjukkan di bawah ini.

Mode eksternal memungkinkan penggunaan blok lingkup untuk memantau bagian dari algoritme saat sedang berjalan di perangkat keras. Ini sangat berguna untuk memantau input digital dari tombol dan input analog dari gitar. Dari cakupan tombol, kita dapat melihat bahwa input berubah dari 0 menjadi 1 saat tombol ditekan.

Saya ingin perubahan ini dari 0 menjadi 1 untuk memicu perubahan pada string yang dipilih. Ini dikenal sebagai pemicu naik. Saya membuat bagan Stateflow yang disebut "Pilih String" yang memiliki enam status, satu untuk setiap string, dan berubah dari satu status ke status berikutnya berdasarkan input pemicu yang meningkat ini. Berikut adalah tampilan yang lebih mendetail pada bagan Stateflow.

Saat masuk ke setiap status, pin LED untuk string yang sesuai disetel ke tinggi. Setelah keluar dari setiap status, pin disetel ke rendah. Saya memilih senar E rendah, terendah dari enam senar, sebagai default saya. Saat saya pertama kali menyalakan tuner, tuner akan mulai dalam keadaan default ini.

Ada tujuh keluaran pada bagan Stateflow:satu untuk LED untuk masing-masing dari enam senar, dan satu yang disebut "periodRange", yang akan saya bahas nanti. Keenam output LED langsung menuju ke blok output digital Arduino untuk menyalakan atau mematikan LED yang sesuai.

Sekarang mari kita lihat bagian pemrosesan audio dari model. Sinyal gitar masuk melalui blok input analog. Saya mengatur waktu sampel blok menjadi 0,0002 detik untuk laju pengambilan sampel 5 kHz. Saat saya memainkan gitar dan membuka blok audio scope, saya bisa melihat bentuk gelombang seperti di bawah ini.

Blok lingkup membantu saya menyetel potensiometer di sirkuit audio untuk mengubah penguatan input. Penguatan harus ditetapkan setinggi mungkin tanpa puncak gelombang mencapai nilai maksimum 1023. Ini akan memungkinkan pembacaan sinyal yang paling tepat.

Saat gitar tidak dimainkan, sinyal input harus berupa garis datar antara 500 dan 700. Dalam kasus saya, sekitar 550. Penting untuk mengetahui nilai ini karena tuner harus memproses audio hanya jika ada nada sedang dimainkan. Saya memilih nilai 575, tepat di atas garis datar ini, sebagai ambang batas saya. Audio akan diproses hanya ketika sinyal berada di atas nilai ambang batas ini. Karena Simulink memungkinkan saya menyetel parameter saat simulasi berjalan, saya dapat dengan mudah menyetel nilai ambang.

Ketika satu nada dimainkan pada gitar, bentuk gelombang yang dihasilkan adalah periodik. Periode bentuk gelombang sesuai dengan nada musik tertentu. Algoritme penyetelan memperkirakan nada senar dengan menentukan periode bentuk gelombang. Saya menulis fungsi MATLAB yang melakukan estimasi nada ini, dan memasukkannya ke dalam model Simulink saya menggunakan blok fungsi MATLAB. Untuk menentukan apakah string selaras, fungsi MATLAB memerlukan input yang menunjukkan rentang periode yang dianggap selaras untuk setiap string. Ini adalah output "periodRange" dari bagan Stateflow. Fungsi tersebut menentukan apakah nada senar terlalu tinggi, terlalu rendah, atau selaras berdasarkan rentang periode, dan menghasilkan output untuk motor yang sesuai.

Keluaran dari fungsi MATLAB adalah tiga pin yang mengontrol motor. Keluaran ini langsung menuju ke blok keluaran digital Arduino.

Setelah saya memastikan semuanya benar dengan algoritme saya, saya dapat menerapkannya ke perangkat keras sehingga dapat berjalan secara mandiri, tanpa terhubung ke PC dan tidak bergantung pada Simulink.

Sekarang saya bisa menyetem gitar saya secara otomatis!

Semua file yang diperlukan untuk proyek ini tersedia di sini:

https://www.mathworks.com/matlabcentral/fileexchange/63697-automatic-guitar-tuner-using-simulink-and-arduino

Skema

Rangkaian untuk tombol tekan adalah sakelar sederhana dengan resistor pull-down. Rangkaian tampilan LED melibatkan 6 LED dan resistor pembatas arus. Saya menggunakan pin input analog 'A0' pada Arduino untuk membaca sinyal audio yang berasal dari gitar. Arduino Due membaca tegangan antara 0 V dan 3,3 V. Sinyal yang datang dari gitar, bagaimanapun, amplitudonya sangat rendah dan berosilasi sekitar 0 V, yang berarti mengandung beberapa tegangan negatif yang tidak dapat dibaca oleh Arduino. Untuk memperbaikinya, rangkaian input perlu memperkuat sinyal dan menambahkan offset DC. Sirkuit juga perlu menyediakan filter lolos rendah untuk menghilangkan komponen frekuensi tinggi dari sinyal. Setiap sinyal sampel tidak boleh mengandung frekuensi di atas setengah dari laju sampling. Karena tuner mengambil sampel audio pada kecepatan 5 kHz, sirkuit saya menghilangkan frekuensi di atas 2,5 kHz. Saya merakit sirkuit seperti yang ditunjukkan di bawah ini. Saya mengontrol gripper pasak tuning bermotor menggunakan tiga pin output digital dari Arduino yang terhubung ke chip H-bridge L293D . Chip ini memungkinkan kita untuk memutar motor ke salah satu arah atau menghentikan motor berdasarkan status ketiga pin ini. Salah satu pin disebut pin aktifkan, dan motor hanya akan berputar jika pin aktifkan disetel ke tinggi. Dua pin lainnya menentukan arah motor. Saya menghubungkan sirkuit seperti yang ditunjukkan di bawah ini.

Proses manufaktur

  1. Gitar Elektrik
  2. Spork
  3. Titanium
  4. Biokeramik
  5. gips
  6. Lem
  7. Utas
  8. Asetilen
  9. Asbes
  10. Timah