İçindekiler:
Video: Doğrudan Dijital Sentez (DDS) Çipli MIDI Kontrollü Step Motor: 3 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:16
SADECE mini bir projeye dönüşmeniz gerektiği konusunda kötü bir fikriniz oldu mu? AD9833 Doğrudan Dijital Sentez (DDS) modülüyle müzik yapmayı amaçlayan Arduino Due için yaptığım bir eskizle uğraşıyordum… Bugün nasılsın . Ve bu fikir, tam olarak bu küçük breadboard tabanlı projeyi ateşleyen şeydir.
Bu projeye, bir Arduino Due'ı kontrol etmek ve bir AD9833 modülü ile step sürücü arasında kare dalgalar göndermek için MIDI-over-USB kullanmak için bazı kodlar dahil edilecektir. Bunu bir Arduino Due'a bağlamak için bir diyagram ve temel talimatlar da olacaktır.
Gereçler:
Bu proje için ihtiyacınız olacak:
Arduino Ödenmesi
NOT: Kod Vade için yazılmıştır, ancak Sıfır için de çalışması ve/veya uyarlanması gerekir. Arduino'nun yerel bir USB bağlantı noktası gerektiren MIDIUSB kitaplığını kullanır.
Lehimsiz Breadboard + Süveter
AD9833 Koparma Modülü
A4988 Step Sürücü (veya benzeri)
NEMA 17 Step Motor (veya benzeri)
- 24V Güç Kaynağı (not, 24 Volt'luk bu değeri nominal step motor voltajından büyük olduğu için seçtim. Daha büyük bir motor kullanırsanız uygulamanız farklı olabilir)
Adım 1: Breadboarding
Bunun arkasındaki temel fikir, Doğrudan Dijital Sentez IC'nin, step motor sürücüsünün "adım" pimini sürmek için bir kare dalga oluşturacağıdır. Bu step sürücü daha sonra motoru belirtilen sesli frekansta hareket ettirecektir. Doğru frekansta hareket ettiği sürece motorun yönü biraz keyfidir.
Breadboarding ile kullanmayı tercih ettiğim yaklaşım, önce güç pimlerini ve toprakları çalıştırmak ve ardından diğer tüm güç dışı bağlantıları çalıştırmaya başlamaktır.
Zemin:
- AD9833 Modülünün AGND ve DGND Pinlerini breadboard üzerindeki GND Rayına bağlayın.
- Step Sürücüsü üzerindeki iki GND Pinini GND Rayına bağlayın
- Bunu Arduino Due'ın GND Pinlerinden birine getirin
3.3V Güç:
- Step Sürücüsünün VDD Pinini breadboard'un V+ Rayına bağlayın
- AD9833 Modülünün VCC Pinini breadboard'un V+ Rayına bağlayın
- Bunu Arduino Due'ın 3.3V Pinine getirin
24V Güç:
- VMOT pinini 24V DC Güç kaynağına bağlayın (motor seçiminize bağlı olarak daha yüksek veya daha düşük besleme rayını çalıştırmak isteyebilirsiniz)
Modülden Modüle Bağlantı:
- AD9833 modülünden OUT pinini motor sürücüsünün STEP pinine bağlayın
Step Sürücü Bağlantıları:
- Step Motor bağlantılarını 2B/2A/1A/1B Pinlerine bağlayın. Sürücü fazları Step Motorunkilerle eşleştiği sürece polarite o kadar önemli değildir.
- RESET ve SLEEP Pinlerini birbirine bağlayın ve bunları Arduino Due Pin 8'e getirin.
- DIR Pinini 3.3V Rayına bağlayın
AD9833 Modül Bağlantıları:
- SCLK'yı Arduino Due'nin SCK pinine bağlayın. Bu pinin normal harici dişi başlıklarda değil, mikrodenetleyicinin yanındaki 6 pinli erkek ICSP başlığında olduğuna dikkat edin.
- SDATA Pinini Due'nin MOSI pinine bağlayın. Bu pinin normal harici dişi başlıklarda değil, mikrodenetleyicinin yanındaki 6 pinli erkek ICSP başlığında olduğuna dikkat edin.
- FSYNC'i Arduino Due Pin 6'ya bağlayın (bu, bu proje için Chip Select pinidir)
Artık devre tahtası tamamen monte edildiğine göre, koda bakmanın zamanı geldi!
Adım 2: Programlama ve MIDI Kurulumu
Ekli.ino çizimi, Arduino Due'ın Yerel USB bağlantı noktası aracılığıyla USB-MIDI girişlerini alacak ve bunları AD9833'ü sürmek için kullanacaktır. Bu çip, 25 MHz w/ 28 bit frekans çözünürlüğünde çalışan bir DAC'ye sahiptir (burada ihtiyaç duyulanlar için toplam fazlalık) ve buradaki kodun çoğu, bunu bir kare dalga çalıştıracak ve çıkaracak şekilde yapılandırıyor.
Not: İki USB Bağlantı Noktası vardır. Biri kartı programlamak için, diğeri ise USB üzerinden MIDI iletişimi için kullanılacak
Bu çizimin Arduino Uno'da olduğu gibi çalışmayacağını unutmayın - bu proje, Arduino Due veya benzeri cihazlarda Yerel USB ihtiyacına özeldir
Özelleştirme Seçenekleri:
- Önişlemci makro tanımı ile ayarlanabilen 2 mod vardır. "#define STOPNOTES" olduğu gibi bırakılırsa, stepper notalar arasında duracaktır. Bu her zaman istenmez (örneğin, hızlı arpejler çalmak), bu nedenle bu davranışı değiştirmek için, o #define ifadesini silmeniz veya yorumlamanız yeterlidir; stepper bir kez çalındıktan sonra sürekli olarak çalışacaktır.
- Bununla, oktav yukarı/aşağı düğmesi olan ucuz bir 2 oktav MIDI klavye kullanıyorum, ancak bu seçeneğiniz yoksa, aşağıdaki frekans çevirisini 2'nin kuvvetleriyle çarparak veya bölerek oktav-kaydırma yapabilirsiniz.
MIDI-frekans çevirisi playNote işlevinde şu satırla yapılır:int f_out = (int)(27.5*pow(2, ((float)midiNote-33)/12));
- USB MIDI üzerinden arabirim oluşturmak için bilgisayarımı kullanma eğilimindeyim - bunu en sevdiğiniz Dijital Ses İş İstasyonu (DAW) yazılımından yapabilirsiniz. Eğer yoksa, bu sistemi ücretsiz, açık kaynaklı bir platform olan LMMS kullanarak kurmak oldukça kolaydır. Kurulduktan ve çalıştırıldıktan sonra, Arduino Due'ı MIDI Çıkış Aygıtı olarak ayarlayın ve bir USB MIDI klavye kullanıyorsanız, bunu bir giriş olarak ayarlayın.
3. Adım: Test Etme ve Deneme Yapma
Step motorunuzu oynama zamanı!
Belirtildiği gibi, bunun arkasındaki tüm fikir, bir tür manşet dışı deneydi, bu yüzden elbette, kendi deneylerinizi yapın!
Önerilen:
100W LED Çipli Taşınabilir İç Mekan Aydınlatması: 26 Adım (Resimlerle)
100W LED Çipli Taşınabilir İç Mekan Aydınlatması: Bu talimatta / videoda, eski bir dizüstü bilgisayardan 19V 90W güç kaynağı ile çalışan 100W LED çipi ile nasıl portatif iç mekan aydınlatması yaptığımı göstereceğim. GÜNCELLEME 2 (SON): LED çevresindeki sıcaklık (20C'lik bir odada 30 dakika sonra 37C kararlı @85W)
Step Motor Kontrollü Mikrodenetleyicisiz Step Motor!: 6 Adım
Mikrodenetleyicisiz Step Motor Kontrollü Step Motor!: Bu hızlı Eğitimde, bir step motor kullanarak basit bir step motor kontrolörü yapacağız. Bu proje, karmaşık devre veya mikro denetleyici gerektirmez. O halde lafı fazla uzatmadan başlayalım
Step Motor Kontrollü Mikrodenetleyicisiz Step Motor(V2): 9 Adım (Resimli)
Step Motor Kontrollü Mikrodenetleyicisiz Step Motor(V2): Önceki Derslerimden birinde, mikrodenetleyicisiz bir step motor kullanarak bir step motoru nasıl kontrol edeceğinizi gösterdim. Hızlı ve eğlenceli bir projeydi ancak bu Eğitilebilir Tabloda çözülecek iki problemle geldi. Yani, zeka
Step Motor Kontrollü Model Lokomotif - Döner Enkoder Olarak Step Motor: 11 Adım (Resimlerle)
Step Motor Kontrollü Model Lokomotif | Döner Kodlayıcı Olarak Adım Motoru: Önceki Talimatlardan birinde, bir step motorun döner kodlayıcı olarak nasıl kullanılacağını öğrendik. Bu projede, şimdi bir Arduino mikrodenetleyici kullanarak bir model lokomotifi kontrol etmek için step motorlu döner kodlayıcıyı kullanacağız. Yani, fu olmadan
Step Motor Kontrollü Step Motor - Döner Enkoder Olarak Step Motor: 11 Adım (Resimlerle)
Step Motor Kontrollü Step Motor | Döner Kodlayıcı Olarak Step Motor: Etrafta duran ve bir şeyler yapmak isteyen birkaç step motor var mı? Bu Eğitilebilir Tabloda, bir Arduino mikro denetleyici kullanarak başka bir step motorun konumunu kontrol etmek için döner kodlayıcı olarak bir step motor kullanalım. O halde lafı fazla uzatmadan geçelim