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

Arduino MIDI Stepper Synth

Komponen dan persediaan

Arduino UNO
Anda dapat menggunakan Arduino serupa untuk memperluas IO.
× 1
Driver Stepper A4988
× 4
Arduino CNC Shield V3
Opsional, Anda dapat menyambungkan Driver A4988 secara manual
× 1
Catu Daya 12V 6A
Atau mirip dengan menggerakkan Motor Stepper
× 1
OpenBuilds NEMA 17 Motor Stepper
× 4

Alat dan mesin yang diperlukan

Printer 3D (generik)
Sepenuhnya Opsional!

Tentang proyek ini

Tonton aksinya di sini.

Saya melakukan seperti biasa, menjelajahi YouTube ketika saya melihat beberapa musik floppy drive. Setelah mengetahui bahwa floppy drive dikendalikan oleh motor stepper, saya memutuskan untuk membuat generator suara motor stepper saya sendiri.

Saya telah melihat bahwa orang telah melakukan ini sebelumnya, tetapi setiap contoh tidak membagikan kode atau kode mereka sangat cacat dan/atau terbatas.

Setelah belajar C++ di sekolah, saya memutuskan untuk menggunakan keterampilan saya.

Yang benar-benar ingin saya lakukan adalah membuat kode yang sederhana dan mudah digunakan dan dimodifikasi. Dan itulah yang saya lakukan!

Yang Secara keseluruhan Proses

Untuk memulai, saya memikirkan apa yang perlu dilakukan. Dalam istilah yang paling dasar, saya perlu mengekstrak data MIDI dan mengubahnya menjadi kecepatan yang membuat motor stepper membuat nada yang sesuai.

Mengekstrak Data MIDI

Bagian ini agak mudah. Dengan memanfaatkan perpustakaan MIDI, saya dapat menafsirkan data MIDI, dan mengirimkannya ke fungsi lain untuk mengontrol kecepatan.

Mengontrol Stepper

Driver motor stepper A4988 memiliki dua pin yang secara langsung mengontrol gerakan stepper; LANGKAH dan DIR. DIR mengontrol apakah motor berputar searah jarum jam atau berlawanan arah jarum jam tergantung pada keadaan, dan STEP menggerakkan stepper satu langkah setiap kali ditarik tinggi (berapa banyak tergantung pada resolusi microstepping). Karena suara tidak terpengaruh oleh arah, saya cukup menyetelnya ke rendah (atau cukup sambungkan ke ground). Sekarang saya tinggal menginjak motor menggunakan perintah digitalWrite.

Tantangan

Tantangan utama dalam menangani proyek ini adalah saya ingin menggerakkan beberapa motor stepper sekaligus, jadi menggunakan perintah delay() tidak mungkin (jika tidak, motor tidak akan berjalan secara bersamaan). Sebagai gantinya, saya menggunakan perintah micros() untuk menghitung durasi untuk menggerakkan steppers. Karena akan ada nilai kecepatan yang berbeda untuk setiap motor stepper, saya mengubah variabel kecepatan menjadi array, dengan indeksnya sesuai dengan nomor motor dan saluran MIDI. Saya awalnya menggunakan perintah millis(), tetapi ternyata tidak memiliki resolusi untuk menghasilkan nada yang berbeda.

Menggunakan larik untuk mengontrol kecepatan motor stepper berarti saya dapat menggunakan satu variabel untuk semua motor, dan ini memberikan kemampuan agar arduino mengontrol sejumlah stepper, hanya dengan mengubah ukuran larik!

Perhitungan Kecepatan

Dalam sebuah pengujian, saya mengirim gelombang persegi 440 Hz (menggunakan perintah nada) ke pin langkah dan menemukan bahwa motor langkah menciptakan nada A440. Karena nilai kecepatan yang dikirim ke fungsi stepper adalah periode dalam mikrodetik, saya hanya mengubah frekuensi nada menjadi periode. Saya menempatkan nilai-nilai ini di array lain yang disebut pitchValues, dengan indeksnya sesuai dengan nilai catatan MIDI. Menggunakan array juga memungkinkan saya untuk mengontrol rentang stepper yang dapat dimainkan. Saya membuatnya sehingga nilai kecepatan nol dianggap berhenti.

Menggunakan array alih-alih perhitungan berarti ada kontrol penuh atas kecepatan setiap not, yang secara efektif mengatur rentang untuk instrumen. Juga, ketika motor stepper berada di dekat frekuensi resonansinya, ia menghasilkan suara yang sangat mengerikan (sepertinya berhenti). Anda dapat mengidentifikasi apa itu dan mengubah nilai nada dengan satu oktaf untuk menyelesaikannya. Bagi saya, frekuensi resonansinya sekitar F3, jadi saya harus mengubah E3, F3, dan F#3 satu oktaf untuk memperbaikinya. (Anda dapat memeriksa ini menggunakan kode "Tune Stepper.ino")

Membuat Perangkat MIDI USB

Saya ingin membuat perangkat terlihat sebagai perangkat MIDI jadi saya melakukan sedikit penggalian dan menemukan bahwa Anda dapat mengubah firmware chip AVR di papan. Firmwarenya bisa berupa HIDUINO atau mocuLUFA. Saya memutuskan untuk menggunakan mocuLUFA, karena memiliki opsi dual boot, sehingga saya dapat dengan mudah memprogram ulang Arduino tanpa harus mem-flash ulang chip AVR. Saya cukup menghubungkan jumper pada header ICSP untuk beralih antara USB MIDI dan USB Serial.

Kode

Repo GitHub
Cukup buka GitHub saya. Saya memiliki petunjuk tentang cara mengkonfigurasi dan menginstal Kode pada Arduino Anda.https://github.com/jzkmath/Arduino-MIDI-Stepper-Motor-Instrument

Suku cadang dan penutup khusus

Memegang motor stepper di tempatnyaMenambahkan "jari" ke motor. Murni untuk tujuan estetika.

Skema

Lokasi untuk jumper jika Anda ingin menggunakan Shield ini. Jika Anda ingin memasangnya di papan tempat memotong roti, ini dia Skematis Pengkabelan Papan Tempat Memotong Roti Fritzing. Termasuk beberapa nilai bagian yang tidak diberikan dalam diagram papan tempat memotong roti. Jika Anda ingin menggunakan Jack MIDI DIN, gunakan tata letak ini.

Proses manufaktur

  1. Kuning
  2. Guillotine
  3. Silikon
  4. Ukulele
  5. Ayam
  6. Kompos
  7. Gelatin
  8. Kunci
  9. Vodka
  10. Besi