Gelişen mikrokontrol teknolojileri ve artan bilgi birikimi sayesinde geliştirici düzeyinde daha yaygın kullanımına olanak tanımıştır. Burada elimden geldiği kadar bazı örnekler sunmaya çalışacağım...

23 Aralık 2009 Çarşamba

Atmega8 ile Seri Port üzerinden Bilgisayar Ses Kontrol


Giriş

Çoğumuzun bir bilgisayarı vardır. Çoğu kişinin de bu bilgisayarın yanında bir hoparlörü, belki bazıları için hoparlör demek belki biraz hakaret olabilir. Bu bilgisayarın ses sistemini kontrol eden bir uzaktan kumandası yoksa, müzik dinlenirken veya film izlerken ses seviyesini ayarlamak için bilgisayarın yanına kadar gitmek gerekebilir. Hani şöyle rahat bir koltukta oturur veya yatakta sere serpe uzanırken bilgisayarın sesini ayarlamak için sen kalk ta bilgisayarın başına git. Olur mu olur. Peki buna bir çözüm sunarsak, mesela bir RS485 iletişimi ile ses seviyesini ayarlama olanağına ne dersiniz?

Şu ana kadarki çoğu projede kullanılan RS485 iletişimini kullanan Atmega8 işlemcisi ile bir ses kontrol sistemi oluşturacağız.
Bilgisayar Ses Sistemi

Normalde bilgisayar üzerindeki ses sistemi bir ses işlemcisi (kontrol) üzerinden bilgisayar yazılımlımları ile kontrol edilir. Tabii ki işletim sisteminin kontrolu altında. Eskiden ek bir kart olarak takılan bu sistem artık günümüzde ana karta tümleşik olarak gelmekte, hatta özel kartlarda dudak uçuklatacak ses sistemleri ile gelmekte.

Bu ses sistemleri bir hoparlör sistemi ile desteklenerek bilgisayar programları ile kullanıcı arasında ses arayüzünü rahatlıkla ulaşabilir. Ayrıntılı bilgi için internet üzerinde araştırma yapabilirsiniz.

Şekil-1:Bilgisayar üzerindeki TV ekranında gösterilen ses seviyesi

Devre

Sistem aslında bir potansiyometre üzerine kurulu. Potansiyometrenin bir ucu Vcc, yani beslemeye, diğer ucu GND ve ortadaki ucunda ki ayar ucu oluyor, işlemciye bağlanıyor. Bu elemanın direnç değeri değiştiğinde işlemcinin ADC5 üzerinde bir gerilim değişimini sağlıyor. Bu noktada zaten iş işlemciye devrediliyor. İşlemci bu değeri okuyup RS485 üzerinden bilgisayara gönderiyor. Çok mu basit oldu? Zaten öyle. İşlemcinin tek yaptığı belirli aralıklarla potansiyometre üzerindeki gerilim değerini okuyup, bu değeri RS232 portu üzerinden RS485 iletişimi için kullanılan elemana iletmektir. (Şu hali ile 8 bitlik kontrol sağlıyor. Unutmamak gerekir ki ses kontrolu 16 bitliktir- en azından XP sistemi üzerinde öyle.)

Şekil-2:Atmega8 işlemcisi, RS485 ve potansiyometre ile kart görünümü

RS485 elemanı kendi üzerine düşeni yaparak bunu bilgisayara bağlı RS485 dönüştürücü kartına bilgiyi iletmektir. RS485 hakkında ayrıntılı bilgi için internet iyi bir bilgi kaynağı olabilir.

Aref ve GND arasına bağlı olan kondansatör bu işlemci için iç referans kaynağı kullanılabileceği anlamını taşımakta. AVCC üzerindeki kondansatör ve bobin ise besleme hatları üzerinde oluşabilecek olası parazitleri süzecektir.

Besleme artık her projede kullanılan köprü, 7805 ve kondansatörlerden oluşuyor.

Şekil-3:Potansiyometre ve bağlantısı

Şekil-3 üzerinde potansiyometre bağlantısı görülmektedir.Kenarlardaki VCC ve GND yeri değiştirildiğinde sadece potansiyometre dönüş yönüne göre ses seviyesi ayarı tersine döner.
Sistemin Çalışması

Çalışmasını basitçe şöyle özetleyebiliriz:

Potansiyometre üzerindeki konum orta ucundan VCC ve GND' göre bir gerilim bölücü olarak bir gerilim olarak alınır

Bu değer işlemcinin ADC ucuna uygulanır (ADC ayarı; Referans Gerilimi VCC olmak üzere atanmıştır)

İşlemcinin iç zamanlayıcı belirli aralıklarla bir tetikleme oluşturarak, ADC'nin (Potansiyometrenin bağlandığı bacağın) okunmasını sağlar.

Okunan değer 10 bitliktir. Bu iki 8 bitlik veri halinde gönderilir

Alt baytın 7. biti Üst baytın 0.biti olarak düzenlenir ve alt baytın 7.biti=0 Üst baytın 7.biti=1 olarak atanır(bilgisayara gelen verinin ne olduğu anlaşılması için)

RS485 üzerinden bilgisayara bağlı RS485/RS232 dönüştürücü yardımıyla bilgisayara gelir.

Bilgisayara gelen veri konunu çözer ve ses kartı 16 bitlik olduğundan

Ses kartı bilgisi=(((Veri(üst)-128)*128)+Veri(alt))*64 şeklinde bir ifade ile hesaplanır

Ve bu bilgi yardımıyla ses seviyesi ayarlanır

Şekil-4:Ses kartının başka bir görünümü

Şema

Sistemin kalbi IC1 Atmega8 oluşturuyor. Bu işlemcinin bilgisayar ile iletişimini RS485-RS232 dönüştürücü IC2 üstlenmiş durumda. İşlemcinin çalışması D2,R2'den oluşan LED direnç grubu ile izleniyor. L1,C10 grubu işlemcinin ADC beslemesi için filtre görevini yerine getiriyor. C5,C6 ve XTL1 işlemci için gereken saat frekansını üretiyor. IC2 bacaklarına bağlı R1 direnci aslında bir sonlandırıcı olarak görev yapıyor. D1,IC3,C2, C3,C7 ve C8 besleme devresi grubunu oluşturuyor. Nede olsa işlemci besleme gerekiyor. (+5V) Pot1 Şu anda devre için bir yerde algılayıcı olarak işlem görüyor. Çünkü sistem bu elemanın orta ucundaki gerilimi ölçüyor. Geriye kalan kondansatörler aslında sadece filtreleme yani hatlarda olabilecek elektriksel parazitik etkileri ortadan kaldırmaya yaramakta.

Not: RS232/RS485 dönüştürücü sistemi çalışması zaten "RS232/RS485 dönüştürücü arabirim" bölümü altında anlatıldı.

Şekil-5:Blok şeması


Şekil-6:Devrenin şeması

Devre Yapımı

Devre yapımında kritik bir eleman yok. Baskı devre kartı üzerinde geçekleştirildiğinde standart eleman yerleşimi göz önüne alınarak devre kurulabilir. Bu noktada diğer devre montaj teknikleri kullanıldığında bacakların doğru bağlanması önemlidir. Tabii ki kristal topraklanmalıdır. Devrede 7805 5V gerilim regülatörü üzerinden geçen akım göreceli olarak küçük olduğu için ek bir soğutucu kullanımına gerek duyulmamamıştır.
Tüm dirençler çeyrek wattır.
Besleme konusunda bir sorun oluşturmayacağınızı düşünüyorsanız girişteki köprüyü devre dışı bırakabilir veya tek bir diyotla değiştiribilirsiniz. (Kendi besleme kaynağınız varsa ve devreyi kendiniz kullanacaksanız). Bacak bağlantıları uyan başka bir LED kullanılabilir. Entegreler için soket kullanılması sonradan oluşabilecek sorunların çözümünde size yardımcı olabilecektir. Belki daha sonra tümdevreleri başka bir devre üzerinde kullanmak isteyebilirsiniz. Sizin imkan ve tercihlerinize kalmış bir durum...

Şekil-7:Devrenin baskı planı(eleman yüzünden göründüğü gibi)


Şekil-8:Devrenin yerleşim şekli


Şekil-9:Devrenin yerleşim planı


Şekil-10:Kartın alttan görünümü. Devre görüldüğü gibi fazla karışık değil.

Devre Elemanları

10µHL1
120RR1
1KR2
27pFC5,C6
100nFC1,C3,C4,C7,C9,C10,C11
10µFC2,C8
B125C1500 veya benzeriD1
3mm Kırmızı LEDD2
ATMEGA8IC1
MST485IC2
7805IC3
3,6864Mhz kristalXT1
6p2c RJ12 prizP1
6 Header (ISP6)ISP
4K7 potansiyometrePot1


Malzeme listesi. Burada işlemci için soket ve 9V adaptör verilmemiştir. Kaliteli 8 ve 28 bacaklı soketler oluşabilecek problemlerin önüne geçecektir.

Burada RS232/RS485 dönüştürücü malzeme listesi "RS232/RS485 dönüştürücü arabirim" proje bölümünden erişilebilir
Bilgisayar Programı

Bilgisayar üzerinde kullanılan program Delphi 7 ile yazıldı.Aslında ses kontrol bölümü ile ilgili temel kodları başka yerden aldım ama tam yerini hatırlamıyorum. Sadece RS485 ile ilgili erişim ve projeye uyarlamayı yaptım.

Program penceresi ilk açıldığında ses kontrol bölümü ve bir seri port seçme açılır kutusu görülür. Ses kontrolu bu pencere üzerinden de yapılabilir. Kaydırma çubuğu kullanılarak istenen ses seviyesi ayarlanabilir.

Şekil-11:Ses seviye kontrol programı


Şekil-12:Ses seviye kontrol programı

Sistem çalışması gerekli bağlantılar yapıldığında sistem sadece potansiyometre konumu değiştirilerek ses şiddetinin değiştiği görülür..

Şekil-13: Kartın potansiyometre ile başka bir görünümü

Film izlenirken görüleceği üzere kırmızı led yanıp sönmektedir. Bu yanma anlarında sistem ölçüm yapıp bilgiyi gönderir. Film üç bölümden oluşuyor: Potansiyometre ayarı, ayarın kontrol programı üzerindeki değişimi ve TV programı üzerindeki ses seviyesindeki değişimi.

video
Ekler:

ATMEGA8 hakkında bilgi

Atmega8 ile Seri Port üzerinden Bilgisayar Ses Kontrol için dosyalar- birleşik


Devreye potansiyometre bağlantısı

Bu devrenin yapım sorumluluğu size aittir. Devre yapıldı ve çalışıyor. K.A...

Hiç yorum yok:

Etiketler

İzleyiciler