İçindekiler:

Arduino ve DC Motor ile Şarkı Yapmak: 6 Adım
Arduino ve DC Motor ile Şarkı Yapmak: 6 Adım

Video: Arduino ve DC Motor ile Şarkı Yapmak: 6 Adım

Video: Arduino ve DC Motor ile Şarkı Yapmak: 6 Adım
Video: Arduino ile DC Step Servo ve Lineer Motor Kullanımı ve Motor Sürücü Shield 2024, Temmuz
Anonim
Arduino ve DC Motor ile Şarkı Yapmak
Arduino ve DC Motor ile Şarkı Yapmak

Geçen gün Arduino ile ilgili bazı makalelerde gezinirken Arduino kontrollü step motorları kullanarak kısa melodiler oluşturan ilginç bir proje gördüm. Arduino, step motoru müzik notalarına karşılık gelen belirli frekanslarda çalıştırmak için bir PWM (Darbeli Genişlik Modülasyonu) pini kullandı. Hangi frekansların ne zaman çaldığını zamanlayarak, step motordan net bir melodi duyulabilir.

Ancak kendim denediğimde, sahip olduğum step motorun bir ton oluşturacak kadar hızlı dönemediğini gördüm. Bunun yerine programlaması ve Arduino'ya bağlanması nispeten basit olan bir DC motor kullandım. Motoru bir Arduino PWM pininden kolayca sürmek için ortak bir L293D IC kullanılabilir ve Arduino'daki yerel ton() işlevi gerekli frekansı üretebilir. Sürprizime göre, çevrimiçi olarak DC motor kullanan herhangi bir örnek veya proje bulamadım ve bu nedenle bu Instructables bunu düzeltmek için benim yanıtım. Başlayalım!

not Arduino ile zaten biraz deneyiminiz olduğunu ve programlama diline ve donanımına aşina olduğunuzu varsayıyorum. Dizilerin ne olduğunu, PWM'nin ne olduğunu ve nasıl kullanılacağını ve voltaj ve akımın nasıl çalıştığını bilmelisiniz, sadece birkaç şey saymak gerekirse. Henüz orada değilseniz veya Arduino'ya yeni başladıysanız endişelenmeyin: resmi Arduino web sitesindeki bu başlangıç sayfasını deneyin ve hazır olduğunuzda geri gelin.:)

Gereçler

  • Arduino (Ben UNO kullandım ama dilerseniz farklı bir Arduino da kullanabilirsiniz)
  • Standart 5V DC Motor, tercihen bir fan takılı olabilir ("Devrenin Montajı" bölümündeki resme bakın).
  • L293D entegresi
  • Çalmak istediğiniz şarkıda notalar kadar buton
  • ekmek tahtası
  • Jumper Telleri

1. Adım: Genel Bakış

Proje şu şekilde çalışır: Arduino, L293D'ye çıkış veren belirli bir frekansta bir kare dalga üretecektir. L293D, motora Arduino tarafından verilen frekansta güç sağlamak için kullandığı harici bir güç kaynağına bağlanır. DC motor milinin dönmesi engellenerek, ton veya nota oluşturan frekansta motorun kapanıp açıldığı duyulabilir. Arduino'yu düğmelere basıldığında nota çalmak veya otomatik olarak çalmak için programlayabiliriz.

Adım 2: Devrenin Montajı

Devrenin Montajı
Devrenin Montajı
Devrenin Montajı
Devrenin Montajı

Devreyi monte etmek için yukarıdaki Fritzing şemasını takip etmeniz yeterlidir.

İpucu: Motordan gelen ses en iyi şekilde mil dönmediğinde duyulur. Motorumun miline bir fan yerleştirdim ve motor çalışırken fanı sabit tutmak için biraz koli bandı kullandım (resme bakın). Bu, milin dönmesini engelledi ve net, işitilebilir bir ton üretti. Motorunuzdan temiz bir ses elde etmek için biraz ince ayar yapmanız gerekebilir.

Adım 3: Devre Nasıl Çalışır?

Devre Nasıl Çalışır?
Devre Nasıl Çalışır?

L293D, röleler ve motorlar gibi nispeten yüksek voltajlı, yüksek akımlı cihazları sürmek için kullanılan bir IC'dir. Arduino, çoğu motoru doğrudan çıkışından çalıştıramaz (ve motordan gelen arka EMF, Arduino'nun hassas dijital devresine zarar verebilir), bu nedenle L293D gibi bir IC, DC motoru kolayca sürmek için harici bir güç kaynağı ile kullanılabilir. L293D'ye bir sinyal girmek, aynı sinyali Arduino'ya zarar vermeden DC motora verir.

Yukarıda, L293D'nin veri sayfasından bir pinout/fonksiyonel şeması görülmektedir. Yalnızca 1 motor sürdüğümüz için (L293D 2'yi sürebilir), IC'nin yalnızca bir tarafına ihtiyacımız var. Pin 8 güçtür, pin 4 ve 5 GND'dir, pin 1 Arduino'dan PWM çıkışıdır ve pin 2 ve 7 motorun yönünü kontrol eder. Pim 2 YÜKSEK ve pim 7 DÜŞÜK olduğunda motor bir yönde döner ve pim 2 DÜŞÜK ve pim 7 YÜKSEK olduğunda motor diğer yönde döner. Motorun hangi yöne döndüğü umurumuzda olmadığı için, birbirinden farklı oldukları sürece 2 ve 7 numaralı pinlerin DÜŞÜK veya YÜKSEK olması fark etmez. Pim 3 ve 6 motora bağlanır. Dilerseniz her şeyi diğer tarafa (pin 9-16) bağlayabilirsiniz ancak güç ve PWM pinlerinin yer değiştirdiğini unutmayın.

Not: Her düğme için yeterli pime sahip olmayan bir Arduino kullanıyorsanız, tüm anahtarları bu talimatta olduğu gibi bir analog pime bağlamak için bir direnç ağı kullanabilirsiniz. Bunun nasıl çalıştığı bu projenin kapsamı dışındadır, ancak daha önce bir R-2R DAC kullandıysanız, onu tanıdık bulmalısınız. Düğme kitaplığı analog pinlerle kullanılamayacağından, bir analog pin kullanmanın kodun büyük bölümlerinin yeniden yazılmasını gerektireceğini unutmayın.

Adım 4: Kod Nasıl Çalışır?

Tüm butonları kullanmayı kolaylaştırmak için madleech'in “Button” isimli kütüphanesini kullandım. Önce kütüphaneyi ekledim. Daha sonra, 8-22. satırlarda Twinkle, Twinkle, Little Star (örnek şarkı) çalmak için gereken notaların frekanslarını, L293D'yi sürmek için kullanacağım pini ve düğmeleri tanımladım.

Kurulum işlevinde, Seriyi, düğmeleri başlattım ve L293D için sürücü pinini çıkış moduna ayarladım.

Son olarak, ana döngüde bir düğmeye basılıp basılmadığını kontrol ettim. Varsa, Arduino ilgili notu çalar ve not adını Seri Monitöre yazdırır (breadboard'unuzda hangi notların hangisi olduğunu bilmek için kullanışlıdır). Bir not bırakıldığında, arduino noTone() ile herhangi bir sesi durdurur.

Ne yazık ki, kitaplığın yapılandırılma şekli nedeniyle, bir düğmeye basıldığını veya bırakıldığını kontrol etmenin, not başına 2 koşul kullanmaktan daha az ayrıntılı bir şekilde kontrol etmenin bir yolunu bulamadım. Bu koddaki diğer bir kusur, iki düğmeye aynı anda basarsanız ve sonra bunlardan birini bırakırsanız, her iki nota da durdurulur çünkü noTone(), hangi notanın onu tetiklediğine bakılmaksızın herhangi bir notun oluşturulmasını durdurur.

Adım 5: Bir Şarkının Programlanması

Notaları çalmak için düğmeleri kullanmak yerine, Arduino'yu sizin için otomatik olarak bir melodi çalmaya programlayabilirsiniz. İşte motorda Twinkle, Twinkle, Little Star oynayan ilk eskizin değiştirilmiş bir versiyonu. Çizimin ilk kısmı aynıdır - nota frekanslarını ve tonePin'i tanımlar. bpm="100" adresinden yeni bölüme geçiyoruz. Dakikadaki vuruşları (bpm) ayarladım ve sonra bpm'nin eşit olduğu vuruş başına milisaniye sayısını bulmak için biraz matematik kullandım. Bunu yapmak için boyut analizi denilen bir teknik kullandım (endişelenme - göründüğü kadar zor değil). Daha önce bir lise kimya dersi aldıysanız, birimler arasında dönüşüm yapmak için kesinlikle boyutsal analiz kullanmışsınızdır. Floats(), doğruluk için denklemdeki hiçbir şeyin sonuna kadar yuvarlanmamasını sağlamak için vardır.

Ms/beat sayısını bulduktan sonra, müzikte bulunan farklı nota sürelerinin milisaniye değerlerini bulmak için uygun şekilde böldüm veya çarptım. Daha sonra her notanın kronolojik sıraya göre bir dizisini ve her notanın süresiyle bir tane daha yaparım. Her notanın indeksinin, süresinin indeksiyle eşleşmesi çok önemlidir, aksi takdirde melodiniz çalacaktır. Twinkle, Twinkle, Little Star için notaları buraya örnek olarak koydum ama istediğiniz şarkıyı veya nota dizisini deneyebilirsiniz.

Gerçek sihir, döngü işlevinde gerçekleşir. Her nota için beat_values dizisinde belirttiğim süre boyunca tonu çalarım. Burada tonun çalınmamasına neden olacak gecikme kullanmak yerine millis() fonksiyonu ile programın başladığı andan itibaren geçen süreyi kaydedip o anki zamandan çıkardım. Süre beat_values dizisinde son olarak nota belirttiğim süreyi aştığında notayı durduruyorum. for döngüsünden sonraki gecikme, notalar arasında bir boşluk eklemek için vardır ve aynı frekansa sahip sonraki notaların birbirine karışmamasını sağlar.

6. Adım: Geribildirim

Bu proje için bu kadar. Anlamadığınız bir şey varsa veya herhangi bir öneriniz varsa, lütfen benimle iletişime geçmekten çekinmeyin. Bu benim ilk Eğitilebilir Dosyam olduğundan, bu içeriğin nasıl geliştirileceğine ilişkin yorum ve önerileri çok takdir ediyorum. Bir dahaki sefere görüşürüz!

Önerilen: