Proton Basic ve 18F4620 ile I2C EEPROM’a Ses Kaydetmek
Bu ayki projemizde sesleri i2c eeproma kaydediyor ve buradan kaydettiğimiz sesleri dinliyoruz. 18F4620 ve Proton Basic kullanılarak geliştirilmiş bir proje |
Antrak Gazetesi Temmuz 2012 sayısında ses kaydetmek ve dinlemek için mikro denetleyicinin program hafızasını kullanan bir proje yazmıştım. Program hafızasını ses kaydetmek için kullanmak bence en son çözüm olmalı. Değişik hafıza entegrelerini kullanmak daha iyi bir çözüm olacaktır. Bu yazıda sesi i2c eeproma kaydetmeyi ve i2c eepromdan dinlemeyi anlatan devre ile size yardımcı olması için benim yazdığım bilgisayar programını anlatacağım.
Alttaki linkte 18F4620 için yazılmış Proton Basic dosyası var. Bu dosyayı kullanacağınız mikro denetleyiciye göre değiştirip kullanabilirsiniz.
Mikro denetleyicinin bilgisayar ile olan bağlantısı RS232 port’u ile sağlanıyor. Bu yüzden MAX232 kullanmanız gerekiyor. Devrede kullanılan kondansatörlerin hepsi elektrolitik olup, değerleri10 uf dır..
Analog- Ddijital çevrim için r2r metodunu kullandım.
r2r nin çıkışını basit bir ses kuvvetlendiricisine bağlamanız gerekiyor. Bunun için piyasada kolaylıkla bulunan LM386’yı kullanabilirsiniz.
Alttaki linkten programı bilgisayarınıza kaydedip çalıştırınız. Devreyi RS232 portuna bağlayıp porta.1’e bağladığınız butona basınız. Daha sonra reset butonuna basıp bırakarak mikrodenetleyiciyi resetleyiniz. 1 saniye sonra porta.1 deki butonu bırakınız. Bu şekilde mikro denetleyici programlama moduna geçer.
If PORTA.1=1 Then
GoTo programla
End If
Programlama alt programı bilgisayardan 13 sayısını bekler. 13 sayısı geldiği zaman 10 sayısını gönderir. Bu şekilde bilgisayarınızda çalışan program ile, devredeki kontrol butonuna basarak RSs232 portunda bağlantının olup olmadığını anlayabilirsiniz.
programla:
SerIn PORTB.2 ,84, [deger]
If deger=13 Then
DelayMS 100
PORTB.3=1
SerOut PORTB.3 ,84 , [ 10 ]
PORTB.3=1
DelayMS 100
Control= %10100000
GoTo i2cyaz
End If
GoTo programla
Bundan sonra devrede sorun yoksa dosya seç butonu aktif olur. Antrak Gazetesi Temmuz 2012 sayısında ses dosyasını hazırlamak ile ilgili bölümde anlatılanları uygulayarak oluşturduğunuz wav dosyasını programa gösteriniz. Dosya boyutu 196605 byte’dan büyük olmamalıdır. Bu boyut yaklaşık 8 bit 8 khz pcm mono formatinda 24 saniyelik bir sesin kapladığı alandır. Ses dosyası 196605 byte boyutundadır, fakat i2c eeprom 65536 byte boyutundadır. Buradaki sorunu program dosya formatını değiştirerek otomatik olarak düzeltir. i2c eeproma yaz butonuna bastığınızda bilgisayardaki ses dosyasını RS232’den mikro denetleyici’ye gönderir. Mikro denetleyici gelen bayt’ları sırayla adresleyerek 24C512 ye yazar ve her baytı yazdıktan sonra yazma işleminin bittiğini belirten 8 değerini gönderir.
i2cyaz:
SerIn PORTB.2 ,84, [deger]
BusOut Control , Address , [deger ]
DelayMS 10
Address = Address + 1
PORTB.3=1
SerOut PORTB.3 ,84 , [ 8 ]
PORTB.3=1
GoTo i2cyaz
Bilgisayar üzerindeki programda i2c eeproma yazma bitti yazana kadar bekleyiniz. Yazı çıkınca programı kapatıp devreyi çıkartıp tekrar resetleyiniz. Devre seslendir alt programına geçip i2c eepromdan değerleri sırayla okuyup Port “D” ye gönderir. Port “D”deki r2r devresiyle dijital bilgi analog bilgiye dönüşür. Buradan LM386’lı anfiniz le sesi yükselterek dinleyebilirsiniz.
seslendir:
BusIn Control , Address , [deger]
PORTD = deger
DelayUS 50
Address = Address + 1
If Address = 65535 Then
GoTo dur
End If
GoTo seslendir
dur:
GoTo dur
Yazıda anlatılan devre ile ilgili herhangi bir pcb çizmedim. Bunun sebebi kullanacağınız devreye göre değişiklik gösterebileceğindendir. Devrenin ses kalitesi fazla iyi değil, fakat basit robot projelerinde kullanılabilir. 24C512 nin a0 a1 a2 adres pinleri şaseye bağlı olmalıdır. Devreyi sanal port oluşturarak ISIS’de denemeyiniz. ISIS’in hataları yüzünden çelişmiyor. Fakat gerçek devre sorunsuz çalışıyor. Devremizi deney setimde denedim.
Yeni bir projede buluşmak üzere…
Yazar: Tarık KONCA