18F4620 ile Ses Uygulamaları
Bu yazıda 18F4620 ve Proton Basic kullanılarak ses üzerine yapılmış uygulamarı bulacaksınız
|
Özellikle robot uygulamalarında yapılan işleri robotun size sesli olarak bildirmesi güzel bir özellik olur. Bu tip devrelerde ISD veya APR serisi ses kayıt entegrelerini kullanmak aslında daha mantıklı. Fakat bu işin ses kayıt entegrelerini kullanmadan yapılabilirliğinin açıklanması için bu devreyi düşündüm. 18F4620’nin program hafızasını sesle doldurmak çok da iyi bir çözüm değil. Yüksek program hafızası çok daha verimli bir şekilde kullanılabilir. Bu yazıdan sonraki yazılarımda kaydedilen sesi mikro denetleyicinin program hafızası yerine I2C eeprom’a veya SD (MMC) karta kaydedip çalma ile ilgili yazılar hazırlayacağım. İlk yazıyı başlangıç olması açısından direk sesleri mikrodenetleyici hafızasına kaydedip çalmakla ilgili düşündüm.
SESİ (WAV DOSYASINI) HAZIRLAMAK:
Bilgisayarınızdaki ses dosyası değişik formatlarda olabilir, Mikrodenetleyicinin hafızasına sesi kaydetmek için ilk önce 8 bit 8 khz pcm mono wav formatında düzenlemeniz gerekiyor. Bunun için Windows’un ses kaydedici programını kullanabilirsiniz. Yapmanız gereken sesi Windows ses kaydedici programı ile açıp daha sonra farklı kaydet seçeneğiyle 8 bit 8 khz pcm mono olarak kaydetmek. Alttaki hareketli resimden yapmanız gerekenleri takip edebilirsiniz.
Buraya kadar anlatılanlar sesin mikrodenetleyici ile çalınabilmesi için Proton Basic’de size hazır kodlar sağlayacak olan benim yazdığım programın düzgün çalışabilmesi için gerekli olan kısımdı.
Bundan sonraki adımda alttaki linkdeki programı bilgisayarınıza kaydedin. Daha sonra çalıştırın. Sol üstteki ses dosyası aç butonuna basıp daha önceden düzenlediğiniz ses dosyasını seçip açın. Kaydedilen ses dosyalarının başında ve sonunda boşluklar oluşur. Bu boşlukların mikrodenetleyicinin program hafızasında fazladan yer tutmaması için programda başlangıç byte penceresine dosya başlangıcından itibaren kaç byte değerlendirmeye alınmayacağını bitiş byte penceresine dosya bitiş byte değerini yazın. Alttaki hareketli resimden yapılan işlemleri takip edebilirsiniz. Alttaki örnekte görebileceğiniz gibi ses dosyası boyutu 27410 byte. Ben başlangıca 1000 yazarak ses doyası çevriminin 1000 inci byte dan başlamasını ve bitiş byte bölümüne 20000 yazarak ses dosyası çevriminin 20000 inci byte da sonlandırılması gerektiğini bildirdim. Bundan sonraki işlem ses kalitesinin ayarlanması ile ilgili. 18F4620 mikrodenetleyicisi 64K program hafızasına sahip. Yukarıdaki işlemlerde bildiğiniz gibi ses formatı 8khz olarak ayarlandı. Ses dosyasının çalınması için de az bir program hafızası gerekiyor. 64k / 8 yaklaşık 8 saniye ses kaydedebiliriz. Fakat ses kalitesini düşürüp 16 saniye ses de kaydedilebilir. İyi kalite ayarı 8 saniye iyi ses için, kötü kalite ayarı 16 saniye kötü kalite sesi içindir. Kötü kalite çokta iyi olmuyor, fakat ben program hafızasına daha fazla ses kaydedebilmek için bu seçeneği ekledim. Bu ayarlardan sonra yaptığınız ayarların doğru olduğu kontrol edilmesi gerekiyor. Kontrol et butonuna basınız. Eğer yaptığınız ayarlarda herhangi bir yanlışlık varsa program size yanlış yaptığınız bolümle ilgili bilgi verir. Eğer ayarlarınız doğru ise bas dosyası oluştur butonuna basıp Proton Basic dilinde hazırlanmış dosyanın oluşturulacağı yeri seçiniz. Proton Basic program dosyası adı ile kullandığınız ses dosyasının adı ayni olmamalıdır. Oluşturduğunuz dosyayı Proton Basic programı ile derleyip mikrodenetleyiciye kaydederek kullanabilirsiniz. Programda birde inc dosyası oluştur seçeneği var, bu seçenekle inc dosyası oluşturup diğer programlarınıza dahil edip kullanabilirsiniz.
Program çalışırken size yapmanız gereken ayarlarla ilgili bilgide sağlar alttaki açıklamaları takip ediniz.
Program mikrodenetleyicinin program hafızasından değerleri okuyup 8 bitlik porta yazar. Ben denemelerimi ISIS’de yaptım. Gerçek devrede çalışırken delayus değerini değiştirmeniz gerekebilir. Sesin hızına göre otomatik oluşturulan delayus değerini değiştiriniz. Dijital ses bilgilerinin analog sinyallere dönüştürülmesi için r2r metodunu kullandım. Alttaki linkten benim programı test etmek için kullandığım ISIS dosyasının ve program dosyalarının bulunduğu dosyayı kaydedip devreyi gerçek devre olarak kurmadan da bilgisayar ortamında çalıştığını görebilirsiniz. ISIS dosyasında herhangi bir ses yükseltici devre yok. Eğer gerçek ortamda devre olarak kurup çalıştırmak isterseniz LM386 veya benzeri diğer entegrelerle yapılabilecek basit bir ses yükseltici devresi yapınız. Alttaki resimler LM386’nın datasheet’inden alınmıştır. Örnek olarak yapmak isterseniz ISIS test çizimlerinden 2 tane olduğunu göreceksiniz. Bunlardan bir tanesi ISIS’ in eski versiyonlarında çalışması için kaydedilmiştir. Eğer 7.0 ile 7.9 arasında versiyonlarından birini kullanıyorsanız eski versiyon çizim dosyasını açınız. Proton Basic ile yeni oluşturduğunuz hex dosyasını 18F4620’nin ayarlarından seçerek kullanabilirsiniz. Test esnasında gerçek devrenizde duymayacağınız bir kaç gurultu olacaktır. Bunun sebebi bilgisayar ortamında test ederken bilgisayarınızın hızının yavaş olmasıdır. Benim kullandığım 2 ghz işlemcili bilgisayarda bu durumun oluştuğunu gözlemledim. Yüksek hızlı bilgisayarlarda ve gerçek ortamda yapılan devrelerde ise böyle bir sorunla karşılaşmayacaksınız.
Yeni bir projede buluşmak üzere hoşça kalın.
Tarık KONCA