Hazırlayan: Yıldırım AK – İnferruj Data Transferleri Protokolleri hakkında detaylı bilgiler örnek uygulamalar. Emeği geçen hazırlayan kişilere teşekkürler.
SIRC Protokolü
40 kHz taşıyıcı üzerinde, 1 / 4 veya 1 / 3 Duty Cycle Oranı
Bu protokol 5 bitlik cihaz kodu + 7 bitlik tuş kodundan oluşan 12 bitlik paket data bilgisi kullanır. Bu 12 bit yollanmadan önce, alıcı 2.4 ms High pozisyonda kalınıp kalınmadığını kontrol eder.
Bu nedenle ilk biti göndermeden bu süreyi High pozisyonunda beklemeliyiz. (Header Time) Daha sonra ilk bitten önce 0.6 ms süreyle göndereceğimiz data Low olmalıdır. Bu iki işlemden sonra alıcı ilk bitin yollanacağını anlar. (Header Time End) Bu iki işlem start bitini oluşturur.
Göndereceğimiz bit eğer 0 sa çıkışı high durumunda 0.6 ms tutarız. Daha sonra 0.6 ms süreyle low pozisyonunda tutarız.
Göndereceğimiz bit eğer 1 se çıkışı high durumunda 1.2 ms tutarız. Daha sonra 0.6 ms süreyle low pozisyonunda tutarız.
Buradan anlaşılacağı üzere 0 olan bitlerde high kalma süresi 0.6 ms, 1 olan bitlerde high kalma süresi 1.2 ms ‘dir. Her iki durumda da 0.6 ms LOW kalma süresi vardır. Yani bir bit süresi bitin 0 veya 1 olmasına göre değişkendir ( 1.2 ms (0 olan bit) veya 1.8 ms (1 olan bit) )
İlk gidecek bit en sağdaki bittir (LSB). Örneğin Televizyon alıcısının cihaz kodu 1 dir. Yani 5 bitlik cihaz kodu olarak “00001”. Burada ilk giden bit en sağdaki 1 ve daha sonra sola doğru sırasıyla 4 tane sıfır biti. Tuş kodunda da data gönderim mantığı aynıdır.
0 olan bitlerde high kalma süresi 0.6 ms, 1 olan bitlerde high kalma süresi 1.2 ms ve her bit arasında bekleme süresi 0.6 ms ‘dir.
Kanal artırma tuşunun kodu 16 dır. Yani 7 bitlik tuş kodu olarak “0010000”. Yine sağdaki bitten başlayarak, en sağdaki 4 tane sıfır, daha sonra bir tane 1 ve sonrasında 2 tane sıfır biti gönderilir.
Dikkat edilecek diğer bir nokta her paket data gönderimi arasında 45 ms beklemek olmalıdır. (Start tan bir Sonraki starta)
Not : Bu protokolde yeni çıkan cihazlarda 15 bitlik ve 20 bitlik paketlerde kullanılmaktadır.
Cihaz Kodları
- 1 Televizyon
- 2 VCR 1
- 4 VCR 2
- 6 Lazer disk çalıcı
- 12 Ses Cihazları
- 16 Mini Kaset/Radyo
- 17 CD Çalıcı
- 18 Ekolayzer
Tuş Kodları
- 0-9 Numerik Tuşlar
- 16 Kanal +
- 17 Kanal –
- 18 Ses +
- 19 Ses –
- 20 Ses Kesme
- 21 Açma
- 22 Resetleme
- 23 Ses Modu
- 24 Kontrast +
- 25 Kontrast –
- 26 Renk +
- 27 Renk –
- 30 Aydınlık +
- 31 Aydınlık –
- 38 Sol Balans
- 39 Sağ Balans
- 47 Kapama
RC5 Protokolü
36 kHz taşıyıcı üzerinde, 1 / 4 veya 1 / 3 Duty Cycle Oranı
Bu protokol 5 bitlik cihaz kodu + 6 bitlik tuş kodundan oluşan 11 bitlik paket data bilgisi kullanır. Bu protokol SIRC protokolunden tamamen farklıdır. Bu Protokolde bir bit uzunluğu sabittir ve süresi 1.8 ms dir. (aslında bir bit süresi 1.778 ms dir.)
Start ;1 (Start) + 1 (Field) + 0 (Control) olmak üzere 3 bitten oluşur.
Alıcı Field bitini kontrol ederek, 6 bitlik tuş kodu ile gönderilebilecek toplamda 64 komutun 0-63 veya 64-127 aralığının hangisi için olduğunu anlar. Bu bit sayesinde 6 bitlik tuş kodu 7 bit olarak kullanılabilir.
Bitin 0 olması, bu 1800 us luk zamanın ilk 900 us luk kısmında datanın high, kalan 900 us luk zaman diliminde ise low olmasından anlaşılır.
Bitin 1 olması ise, bu 1800 us luk zamanın ilk 900 us luk kısmında datanın low, kalan 900 us luk zaman diliminde ise high olmasından anlaşılır. İlk gidecek bit en sağdaki bittir (LSB). Her paket data gönderimi arasında 114 ms bekleme süresi vardır.
RC5 Protokolü ile ilgili önemli not
29 Temmuz 2004 tarihinde tesadüfen görülen durum
Philips RC5 protokolünde, Philips in yayınladığıda dahil olmak üzere tüm teknik bilgiler Start bitinin “1”, Field bitinin tuş takımı sayısına göre “1” veya “0” ve kontrol bitinin “0” olduğunu bildirmesine karşın, Philips 14PT serisi 37 ekran televizyonun orijinal kumandasında kontrol biti bazen “1” bazen “0” olarak gönderiliyor.
Kumandaya bozuk demeye ramak kalmışken, test devremdeki TK19 çıkış sinyalini skopla kontrol ettiğimde durumu farkettim. Acaba benim devredemi bir şey var diye skopla televizyonun orijinal kumandasının inferruj sürücü çıkışını kontrol ettiğimde durum yine aynıydı.
Acaba televizyon yeni model olduğundan eski modellerle uyum sağlamaması için kontrol biti kullanılarak yeni bir özellik mi kullanılmış diye merak ettim ama televizyonda 97 model, yani yeni değil. Kumandanın bozuk olduğunu düşünenler olabilir.
Ancak benim test devrem, kontrol bitinin sürekli “0” geleceğini düşündüğünden ve kontrol bitinin “1” gelmesinden dolayı diğer bitleri kontrol bile etmiyor. Buda kontrol biti “1” olduğunda kodu çözmeyeceği sonucunu çıkartıyor. Test devresi bu durumda bazen çalışıyor, bazen çalışmıyor. Ancak televizyon üzerindeki alıcı devre her tuşa basışta kodu çözüyor. Buda kontrol bitinin sürekli “1” olmadığı sonucunu ve kumandanın sağlamlığını doğruluyor.
Ben bu duruma göre test devremdeki kodu güncelledim. Artık kontrol biti ne olursa olsun her tuş basışını çözüyor. Anlayacağınız üreticisi bile yayınlasa yazan her şeye güvenmemek gerekiyor.
Merak edenler için kumanda üzerindeki etiket :RC8205/01 3104 207 02781 OP009717
SHARP Protokolü
38 kHz taşıyıcı üzerinde, 1 / 4 veya 1 / 3 Duty Cycle Oranı
Bu protokol 5 bitlik cihaz kodu + 8 bitlik tuş kodundan oluşan 13 bitlik paket data bilgisi kullanır. Diğer protokollerden farkı start bitinin olmayışıdır. Ancak paket sonunda iki kontrol biti vardır ve eğer yanılmıyorsam ilki “1” ikincisi “0” bitidir.
Bir bit süresi bitin durumuna göre değişkendir. 0 olan bitlerde 1 ms ve 1 olan bitlerde 2 ms dir. Her iki durumda da sürenin ilk 320 us u high kalan süre low dur.
Data gönderimi ; 0 olan bitlerde 320 us high, 680 us low ve 1 olan bitlerde 320 us high, 1680 us low şeklinde yapılmalıdır. Data gönderme mantığı diğerleri ile aynıdır ve bir sonraki bit ara vermeden yollanmalıdır.
İlk gidecek bit en sağdaki bittir (LSB). Her paket data gönderimi arasında 40 ms bekleme süresi vardır.
NEC Protokolü
38 kHz taşıyıcı üzerinde, 1 / 4 veya 1 / 3 Duty Cycle Oranı
Bu protokol 8 bitlik cihaz kodu(x2) + 8 bitlik tuş kodundan(x2) oluşan 32 bitlik paket data bilgisi kullanır.
Start biti SIRC de olduğu gibidir ancak header time 9 ms ve header time end 4.5 ms dir. Start bitinden sonra, (8 bit cihaz kodu + 8 bit cihaz kodu) + (8 bit tuş kodu + 8 bit tuş kodu) şeklinde aynı datalar 2. defa tekrarlanır.
Bu protokolde bit kullanımı SHARP ı andırır ancak bir bit süresi 0 olan bitlerde 1.12 ms ve 1 olan bitlerde 2.25 ms dir. Her iki durumda da sürenin ilk 560 us u high kalan süre low dur. Data gönderimi ; 0 olan bitlerde 560 us high, 560 us low ve 1 olan bitlerde 560 us high, 1690 us low şeklinde yapılmalıdır. Diğer protokollerden farkı ise “Repeat Start” özelliğidir.
İlk starttan sonraki 110 ms bitiminde 9 ms high ve 2.25 ms low yollamamız durumunda Repeat Start durumu oluşur. Bu durumda alıcı data kontrolü yapmadan (zaten vericide Repeat Start tan sonra data gönderiminde bulunmaz), vericinin bir önceki komutu tekrarladığını anlar ve bir önce aldığı komutu tekrar işler. İlk gidecek bit en sağdaki bittir (LSB). Her paket data gönderimi arasında 110 ms bekleme süresi vardır.
NOKIA Protokolü
38 kHz taşıyıcı üzerinde, 1 / 4 Duty Cycle Oranı
Bu protokol 4 bitlik cihaz kodu + 8 bitlik tuş + 4 bitlik alt cihaz kodundan oluşan 16 bitlik paket data bilgisi kullanır.
Start için ilk olarak 0 biti yollanır. Daha sonra 2500 us boyunca low da beklenir ve 1 biti yollanır. Toplam start süresi 4 ms dir.
Start bitinden sonra sırasıyla 8 bit tuş kodu, 4 bit cihaz kodu ve 4 bitlik alt cihaz kodu yollanır. Bu protokol RC5 i andırır bir bit süresi 1 ms dir. Bitin 1 olması, bu 1000 us luk zamanın ilk 500 us luk kısmında datanın high, kalan 500 us luk zaman diliminde ise low olmasından anlaşılır.
Bitin 0 olması ise, bu 1000 us luk zamanın ilk 500 us luk kısmında datanın low, kalan 500 us luk zaman diliminde ise high olmasından anlaşılır. İlk gidecek bit en sağdaki bittir (LSB). Her paket data gönderimi arasında 100 ms bekleme süresi vardır.
ITT Protokolü
Diğer protokollerden oldukça farklıdır ve en hızlı protokoldür. Toplam data transfer süresi maximum 2700 us dur. Her transfer standart 14 inferruj darbesi ile yapılır.
Bu protokol 4 bitlik cihaz kodu + 6 bitlik tuş kodundan oluşan 10 bitlik paket data bilgisi kullanır. Tablolardaki zamanlar verici tarafındaki RC osilatör ile +/- %20 oranına kadar değiştirilebilir. Alıcı kalibrasyonunu start biti süresine göre yapar.
“0” biti = Start Biti Lead-in = 3 x Start Biti
“1” biti = 2 x Start Biti Lead-out = 3 x Start Biti
Her paket gönderiminden önce Lead-in, paket sonunda Lead-out gönderilir. Bu gönderimler 14 inferruj darbesine dahildir.
Lead-in gönderiminden sonra gönderilen “0” biti startı oluşturur.
Start tan sonra 4 bitlik cihaz kodu, ardından 6 bitlik tuş kodu gönderilir. Paket gönderimi Lead-out ile sona erdirilir. İlk gidecek bit en soldaki bittir (MSB). Her paket data gönderimi arasında 130 ms bekleme süresi vardır.
ITT Protokolü için TBA2800 Infrared Preamplifier Entegresini aşağıdaki bilgiler yardımıyla kullanabilirsiniz.
YAK Protokolü
Yukarıdaki protokollerle işim olduğunda hep düşünmüşümdür “adamlar işi karıştırmak için ne kadar kafa yormuşlar” diye. Kendi geliştirdiğim aşağıdaki bu protokol aslında kablolu hat üzerinden uzaktaki birkaç makineyi kullanmak içindi. Yani işin aslı biraz tembellik.
Evde içişleri bakanımız kabloların “ortalıkta dolaşığı” iddiası ile savaş açınca işi kablosuza dökmek zorunda kaldım. Gerçi bu kararda geçen yıl dünyaya gelen tek oğlum Alp Eren’in yürümeye başladığında bu kabloları kemirmek, koparmak, takılıp düşmek gibi fiillerde bulunacağı daha etkili oldu desem yalan olmaz. Şimdi kabloların yerine evin duvarlarını süsleyen inferruj aktarım istasyonları var.
Buyurun Türkiye‘mizin medarı iftiharı bildiğim kadarıyla ilk inferruj kumanda protokolümüze ;
Bit Tanıtım Tablosu
4 Bit Data Transfer Tablosu ( Tüm alıcılar )
8 Bit Data Transfer Tablosu ( Tek alıcı )
Kısaltmalar
- C0 = Bit Süresi 1539 us.
- A0 = Bit=”0” HIGH kalma süresi 513 us.
- B0 = Bit=”0” LOW kalma süresi 1026 us.
- A1 = Bit=”1” HIGH kalma süresi 1026 us.
- B1 = Bit=”1” LOW kalma süresi 513 us.
- K = Alıcının bit kontrolünü yapabileceği 514-1025 us aralığı.
- a = Start, protokol tipi ve alıcı kodunu belirleyen süre
- aH = Start 4096 us
- aL = Protokol tipi ve alıcı tipini belirleyen değişken süre
- b = aL yi doğrulama ve alıcı hazırlık / bekleme süresi
- bH = aL ile aynı, aL yi doğrulama süresi
- bL = Alıcılar için data alımına hazırlık veya bekleme kontrol zamanı
- mT = Modülasyon da uygulanacak bir palsin süre toplamı 27 us
- mH = Modülasyonda bir palsin HIGH Süresi 7 us
- mL = Modülasyonda bir palsin LOW Süresi 20 us
- mTk = Modülasyonda toplam mT sayısı
Bu protokol 4 veya 8 bitten oluşan data paketleri kullanır. 37 kHz taşıyıcı üzerinde, 1 / 4 veya 1 / 3 Duty Cycle Oranı.
YAK Protokolü Verici Devre Mantığı
1. Mikro kontrol inferruj kontrol çıkışının LOW olması, 555 i reset durumunda tutar. Bu durumda 555 çıkışındaki transistor tetiklenmediği için inferruj led devre dışıdır.
2. Mikro kontrol inferruj kontrol çıkışının HIGH olması 555 i devreye sokar. Bu durumda 555 çıkışındaki transistor iletime geçer ve modülasyonu göndermeye başlar.
3. Mikro kontrol bağlantısını yapmadan 555 in 4 nolu reset ucunu + volta alarak 555 çıkış modülasyonunu kontrol etmeniz tavsiye edilir.
YAK Protokolü Alıcı Devre Mantığı
1. İnferruj alıcı TK19 data gelmediği için çıkışını HIGH de tutar. Bu durumda inferruj alıcı çıkışındaki transistor iletimdedir ve alıcı mikro kontrolünün data giriş ucu LOW dadır.
2. İnferruj alıcı TK19 data geldiği süre boyunca çıkışını LOW da tutar. Bu durumda inferruj alıcı çıkışındaki transistor iletimde değildir ve alıcı mikro kontrolünün data giriş ucu HIGH dedir.
3. Mikro kontrol bağlantısı yapılmamış 555 in 4 nolu reset ucunu + volta alarak 555 çıkış modülasyonu ile inferruj ledi sürmeniz ve ALICI KONTROL noktasını bağlamadan alıcınızın çalıştığını kontrol etmeniz tavsiye edilir.
4. TK19 un çıkışında transistör kullanmadan, +5 volta asarak datayı terslenmiş olarakta alabilirsiniz. Ancak bu terslenmiş data dizaynını aktarıcı devrede kullanamazsınız.
YAK Protokolü Aktarıcı Devre Mantığı
Bu devre uygun noktalara yerleştirildiğinde, inferruj vericinizin yolladığı dataları daha uzak noktalara taşır.
1. İnferruj alıcı TK19, data gelmediği için çıkışını HIGH de tutar. Bu durumda TK19 çıkışındaki transistor iletimdedir ve 555 reset ucu LOW dadır. Bu durumda 555 çıkışındaki transistörler tetiklenmediği için inferruj ledler devre dışıdır yani aktarım yapılmaz.
2. İnferruj alıcı TK19, data geldiği süre boyunca çıkışını LOW da tutar. Bu durumda TK19 çıkışındaki transistor iletimde değildir ve 555 reset ucu HIGH dedir. 555 reset girişi HIGH de kaldığı süre boyunca çıkışındaki transistörler vasıtasıyla inferruj ledleri ayarlandığı modülasyona göre sürer.
3. 4 Adet inferruj led kullanılma sebebi devre plaketi üzerine farklı açılarla yerleştirilerek datanın farklı yönlere dağıtılabilmesi içindir.
4. Aktarıcıdan çıkan inferruj data, kendi alıcısı TK19 u kesinlikle görmemeli ve eşya, duvar gibi nesnelerden geri yansımamalıdır. Verici ledler gerekirse led soketi içerisine alınarak veya başka meteryaller ile döndürüldükleri yöne odaklanmalıdır. Aksi takdirde aktarıcı sonsuz döngüye girer.
YAK Protokolü Verici Data Gönderim Mantığı
Verici her şeyden önce kullanıcının tuş takımı, bilgisayar vb. yollarla data gönderim isteğini beklemek zorundadır.(Alıcılar kullanıcının keyfi yetene dek saf saf beklemektedirler ve can sıkıntısından pil, elektrik vs. yemektedirler.)
Verici, kullanıcı talepte bulunduğunda, çıkışı HIGH yaparak 4096 us bekler veya 555 kullanılmadıysa modülasyona yönlenir.(Alıcılar bu arada girişin “lojik 1” olmasıyla sayaçlarını ayarlarlar ve HIGH de geçen süreyi saymaya başlarlar)
Verici; daha sonra iletişim kuracağı alıcının aL süresini sayacına yükler, çıkışı LOW yaparak bu sürenin geçmesini bekler. 555 kullanılmadan modülasyon yapıldıysa, zaten modülasyon dönüşünde çıkış LOW durumundadır. (Alıcılar LOW ile birlikte sayaçlarını sıfırlar ve aL süresini saymaya başlarlar. Bu aşamada HIGH süresini kontrol ederek 4096 us luk start olup olmadığına karar verirler. Eğer bu zaman dilimi start değil ise aL sayaçlarını durdurarak işlem başlangıcına dönerler.)
Verici daha sonra aynı aL değeri ile doğrulama bilgisini (bH) göndermek üzere çıkışı tekrar HIGH yapar ve bH süresinin dolmasını bekler veya modülasyon rutinine yönlenir.
Modülasyon rutini için örnek ; (örnek tüm alıcılarla iletişim kurulduğu varsayılarak verilmiştir.) mTk = 513 us / 27 us = 19 palsden sonra geri döner.
(Alıcılar HIGH ile birlikte aL süresini kaydederek sayaçlarını sıfırlarlar ve bH süresini saymaya başlarlar)
Verici aynı sayaç ile alıcıların data kontrolünü yapması ve ilgili alıcının data alımına hazırlanması için çıkışı LOW da yaparak bekler. Bu arada kendi bit sayacını sıfırlar.
(Alıcılar LOW ile birlikte aL ve bH sürelerinin aynı olup olmadığını kontrol ederler. Aynı değilse 25 ms bekleme rutininden sonra işlem başlangıcına dönerler. Aynı ise kendi dataları ile aL yi kontrol ederler. Buda tutmuyorsa yine 25 ms bekleme ve işlem başlangıcı. Tutuyor ise iletişimin kendileri ile kurulmak istendiğini anlarlar ve sayaçlarını K noktasını tutturacak şekilde ayarlayarak, bit sayacını da sıfırlayarak 4-8 bitlik paket alımına hazırlanırlar)
İlk gidecek bit en sağdaki bittir (LSB). Verici gönderilecek bitin “0” veya “1” olmasına göre sayaçlarını ayarlayarak çıkışı HIGH yapar ve A0 veya A1 süresinin dolmasını bekler veya modülasyon rutinine yönlenir.
4 bitlik tablodaki ilk bit “1” bu durumda A1=1026 us
mTk = 1026 us / 27 us = 38 palsden sonra geri döner.
HIGH süresi sonunda çıkışı LOW yaparak B0 veya B1 süre dolumu bekler. Bu arada kendi bit sayacını 1 artırır.
(İlgili alıcı K alanında datayı kontrol ederek bitin “1” olduğunu algılar ve bit sayacı=0 olduğu için gelen biti gelen_data_registerinin 0. bitine kaydeder ve bit sayacını 1 artırır. )
Verici kendi bit sayacını kontrol ederek iletişimin tamamlanıp tamamlanmadığını kontrol eder. Tamamlandıysa alıcıların içinde data alındığında işlenecek en uzun program süresi ne kadar ise en az o kadar bekleme rutininden sonra kullanıcının yeni gönderim isteğini bekler. Bu işlemler zinciri her bit gönderiminden sonra yapılmalıdır.
Bizim data transferimiz daha tamamlanmadığı için, vericinin bit sayacı bir olmuştur. Bu yüzden gönderilecek 4-8 bitlik datanın 1. bitinin “0” veya “1” olmasına göre sayaçlarını ayarlar çıkışı HIGH yapar ve A0 veya A1 süresinin dolmasını bekler veya modülasyon rutinine yönlenir.
4 bitlik tablodaki ikinci bit “0” bu durumda A1=513 us
mTk = 513 us / 27 us = 19 palsden sonra geri dönerek çıkışı LOW da bırakır.
HIGH süresi sonunda çıkışı LOW yaparak B0 veya B1 süre dolumu bekler. Bu arada kendi bit sayacını 1 daha artırır.
(İlgili alıcı K alanında datayı kontrol ederek bitin “0” olduğunu algılar ve bit sayacı=1 olduğu için gelen biti gelen_data_registerinin 1. bitine kaydeder ve bit sayacını 1 daha artırır)
Bu şekilde verici ile ilgili alıcı 4-8 bitlik datayı kendi aralarında hallederler.
Sadece tek bir alıcıyı yönlendireceğinizde değişiklik aL, bH ve bL zamanlarında olacaktır. Bu süreler “cihaz kodu” özelliği taşıdığından sizin belirlediğiniz ve alıcınızın anlayacağı şekilde 513 us un katları olarak siz ayarlayacaksınız. Dikkat edilecek nokta çıkışın boşta iken sürekli LOW da kalmasıdır.
YAK Protokolü Alıcı Data Alım Mantığı
4 bitlik transferde aL süresi 513 us dur. 4 bitlik iletişimde tüm alıcılar paket alımına hazırlanır. Alıcılar 4 bitte toplam 16 değişik komutu algılayarak tümü aynı komutu işlerler. Tüm alıcıları aç, Tüm alıcılar stand-by vb.
8 bitlik transferde aL süresi 513 us hariç, 513 us un katları şeklinde değişkendir. aL süresi diğer protokollerdeki cihaz kodu yerine kullanılır. 8 bitlik iletişimde tüm alıcılar aL ve bH sürelerini değerlendirerek iletişimin kendileriyle kurulmak istenip istenmediğine karar verirler. İletişim kurulacak alıcı hariç diğer alıcılar 25 ms bekleme konumuna geçerek iletişimin ilgili alıcıyla yapıldığı süre boyunca data kontrolü yapmazlar. 25 ms bekleme süresi dolumunda data kontrolüne yeniden başlarlar. Alıcılar 8 bitte toplam 256 değişik komutu algılayarak iletilen komutu işlerler.
4 veya 8 bitlik transferde alıcılar aL süresi sonunda sayaçlarını sıfırlayarak bH süresini tekrar sayarlar. aL = bH ise ve bu zaman dilimi kendilerini ilgilendiriyor ise bL içerisinde sayaçlarını ayarlayarak 4-8 biti alım hazırlığını yaparlar.
K aralığında gelen bitin kontrolü yapılır. Bu kontrolde giriş portu “lojik 1 “ olursa data biti “1” dir, olmazsa “0” dır. Bu kontrol toplamda 4-8 defa yapılarak 4-8 bitlik data alınır ve işlenir.
Kontrol K zamanının başlama (514. us) veya bitişine (1025. us) yakın değil de ortalarında yapılır ise, yazılım hatası nedeniyle olabilecek kaymalar sonucu oluşabilecek hatalar engellenebilir.
Diğerleri ile aynı işlemleri yapmayacak alıcılar (4 bitlik data transferine katılmayacak olanlar) aL ve bH sürelerinde 513 us kontrolü yapmayabilirler.
YAK Protokolü Modülasyon Rutini (555 kullanılmadığında verici için)
- Çıkış “lojik 1” yapılır.
- Toplamda 7 us geçene dek beklenir. (mH)
- Çıkış “lojik 0” yapılır.
- Toplamda 20 us geçene dek beklenir. (mL)
- mTk sayacı kontrol edilir.
- mTk sayısı tamamlandıysa geri dönülür.
- mTk sayısı tamamlanmadıysa aynı işlemler için rutine tekrar girilir.
Hesaplamalar, Formüller ve Diğer Açıklamalar
555 bu devre ile astable modunda kullanılmaktadır.
Çıkış frekansı için kullanılacak formül
Duty cycle için kullanılacak formül (mT, mH ve mL %)
İstediğimiz frekans için R2+RV1 toplamını bulmak için kullanılacak formül
Şemadaki elemanların değerlerini aşağıdaki gibi kullandığımızda ;
R1 = 3K3 Ohm
R2 = 1K8
RV1 = 1K
C1 = 4.7 nF
Örneğin 36 kHz çıkış frekansı istersek
Bu durumda çıkış frekansının 36 kHz olması için R2 direnci ve RV1 potu toplam değerinin 2.6053K olması gerekmektedir.
Duty Cycle ise ;
Bu devre ile alınacak Minumum / Maximum değerler
Pot Değeri 0 K iken
f = 1440 / (3K3 + (2 x 1K8) x 4.7nF = 44.4033
D = 1K8 / (3K3 + (2 x 1K8)) = % 26.08
Pot Değeri 1K iken
f = 1440 / (3K3 + (2 x 2K8) x 4.7nF = 34.4250
D = 2K8 / (3K3 + (2 x 2K8)) = % 31.46
Devre, elemanların bu değerleri ile çıkış frekansı R2 ye seri bağlı 1K pot kullanılarak, 34.42 ile 44.40 kHz aralığında ve %31.46 ile %26.08 arasında duty cycle ayarlanabilmektedir. 555 in 4 nolu reset ucu mikrokontrolden gönderilen inferruj datasının giriş ucu, 3 nolu ucu ise inferruj verici ledi tetikleyen ucudur.
Mikrokontrol çıkışında direkt olarak inferruj ledini kullanmayarak 555 entegresini kullanmamızın sebebini ise RC5 protokolünü örnek vererek şöyle açıklayabiliriz;
RC5 protokolü 36 kHz de çalışır. Bu frekans için ;
1.000.000 us / 36.000 us = 27.778 us modülasyon gerekmektedir. (noktadan sonrası ns dir, yani değer 27 us ile 28 us arası, 28 us a yakındır)
Buna göre ise RC5 için 1 / 4 (%25) duty cycle kullandığımızda ;
27.778 us %25 i = 6.944 us high darbesi ve 27.778 us – 6.944 us = 20.834 us low da bekleme gerekmektedir ve bit süresini tutturmak için, her bitte bu palslerin 32 defa tekrarlanması gerekmektedir. 27.778 x 32 = 888.896 us bir bit içerisindeki HIGH süresini verir.
Aynı süre ile de LOW gerekeceğinden, RC5 protokolünde bir bitin gerçek zamanı bu 1,778 ms dir. Bu sonuca göre biz, 555 i kullanarak çıkışı sadece high veya low yaparız. Modülasyon işini 555 yapar. Çıkışta 555 kullanmadan modülasyonu yazılımla da çözebilirsiniz.
İnferruj Ledi Sürmek
Transistör kullanmadan ledi sürmeniz ve / veya birden fazla led kullanmanız mümkündür. R4 Direnci bu konularda size ayar imkanı verir. Ancak çıkışta 555 i kullanmadan ledi sürmek isterseniz mutlaka transistör kullanın.
İnferruj Data Gönderim – Alım Mantığı
İnferruj data tabloda gösterildiği şekilde teslenmiş (inverter) olarak alınır.
Vericinin Hangi Protokolü Kullandığını Bulmak
Vericinin protokolünü bulmanın yolu Start, Lead-in yada Data Biti sürelerini yani ilk data süresini kontrol etmektir. Aşağıdaki HIGH süreleri incelendiğinde birbirini tutacak bir değerin olmayışından LOW süresini kontrol etmenin gereği yoktur.
• ITT Protokolü ( ilk data = Lead-in )
5 us &= Lead-in HIGH Süresi =& 15 us
200 us &= Lead-in LOW Süresi =& 400 us
• SHARP Protokolü ( ilk data = Data Biti )
250 us &= Data HIGH Süresi =& 400 us
600 us &= Data LOW Süresi =& 1750 us
• NOKIA Protokolü ( ilk data = Start Biti )
450 us &= Start HIGH Süresi =& 550 us
2450 us &= Start LOW Süresi =& 2550 us
• RC5 Protokolü ( ilk data = Start Biti )
850 us &= Start HIGH Süresi =& 950 us
850 us &= Start LOW Süresi =&l 950 us
• SIRC Protokolü ( ilk data = Start Biti )
2350 us &= Start HIGH Süresi =& 2450 us
550 us &= Start LOW Süresi =& 650 us
• NEC Protokolü ( ilk data = Start Biti )
8.90 ms &= Start HIGH Süresi =& 9.10 ms
4.40 ms &= Start LOW Süresi =& 4.60 ms
İnferruj Datayı Kopyalamak
Alıcı modülünüzün programını ve donanımını Data kopyalama mönüsü veya tuşuna uygun hale getirdiğinizde inferruj datayı kopyalamanız mümkündür.
Burada programınız data kopyalama modu seçildiğinde kopyalama rutinine yönlenmeli ve Start, Lead-in veya Data biti kontrolü için beklemeye başlamalıdır. Bu bilgilerden herhangi biri alındığında (yani kopyalanacak vericinin herhangi bir tuşuna basıldığında) bu bilginin hangi protokole uyduğunu Start LOW süresi içerisinde tespit ederek data alımına hazır hale gelebilmelidir.
Ancak ilk bilgi geldiğinde bu bu protokolün SHARP ait olduğunu tespit etmesi halinde, bu protokolde start biti olmaması nedeniyle gelen bu ilk bilgiyi cihaz kodunun ilk biti olarak kaydedebilmeli ve son gelen iki bitin kontrol biti olduğunuda bilmesi gerekmektedir.
Dikkat edilecek diğer bir noktada tespit edilen protokolün NOKIA veya RC5 olması durumunda Start biti gelmesine karşın ilk bitin ikinci yarısında HIGH durumu oluştuğunu bilerek NOKIA için 500 us ve RC5 için 900 us LOW bilgisinin HIGH den önce olduğunu anlayabilmesi gerekmektedir.
Bundan sonraki aşama bu vericinin kullandığı protokol bilgisi dahilinde cihaz kodunun toplam sayısı ve ardı sıra gelen bitlerden hangileri olduğu tespit ederek vericinin yolladığı cihaz kodunu tespit edebilmelidir.
Son aşama ise aynı protokol bilgisi dahilinde tuş kodunun toplam sayısını ve yine ardı sıra gelen bitlerden hangileri olduğu tespit ederek vericinin yolladığı tuş kodunu da tespit edebilmelidir.
Program bu şekilde kopyalanacak vericinin her seferinde tek bir tuşunu kopyalayabilme yeteneğine sahipken son aşamanın uygulanması yerine sizin programınız tarafından ilgili protokolün tüm tuş komutları bilinmesi halinde son aşama yapılmadan, kopyalanacak vericinin protokolünün ve cihaz kodunun tespit edilmesi yeterli olacak ve kopyalama devreniz, yazılımınız sayesinde o kumandanın tüm yeteneklerine sahip olabilecektir.
Kısaca sonlandırmak gerekirse kopyalanacak vericinin tek bir tuşuna basılması sizin yazılımınız tarafından vericiye ait tüm bilgilere sahip olunması için yeterli olacaktır. Ancak kopyalanan data yollanırken ITT protokolü için Lead-out ve SHARP protokolü için son iki kontrol bitinin yollanılması da ayrıca gerekecektir.
İnferruj Datayı Bilgisayardan Okumak
İnferruj datayı aşağıdaki şema yardımı ile bilgisayarınızın RS232 portundan izleyebilirsiniz. Visual Basic gibi ileri seviye programlama dilleri ile yazacağınız program, sizi asm ile uğraşmaktan kurtarır. TK19 beslemesini RS232 portundan almakta olup, ayrıca besleme devresine ihtiyaç duymaz.
Dikkat !
RS232 portu devrede yapabileceğiniz hatalı bağlantılar nedeni ile hasar görebilir.
İnferruj Datayı Bilgisayardan Göndermek
İnferruj datayı aşağıdaki şema yardımı ile bilgisayarınızın RS232 portundan hem izleyebilir hem de alıcı ünitelere data yollayabilirsiniz. TK19 ve Led beslemesini yine RS232 portundan almakta olup, ayrıca besleme devresine ihtiyaç duyulmaz.
Dikkat !
RS232 portu devrede yapabileceğiniz hatalı bağlantılar nedeni ile hasar görebilir.
Yayım tarihi: 2008/06/11 Etiketler: data transferleri, inferruj data, inferruj led, infrared data transferleri, kumanda protokolleri, protokoller, rc5 protokol
İnferruj Datayı Bilgisayardan Okumak ve Göndermek hangi programları kullabiliriz
Hocam bu paylaşım nimet değerinde ellerinize sağlık. 🙂
Gevv Hocam. Muhteşem bir paylaşım teşekkürler.
Ellerine sağlık. Güzel hatta çok güzel bir paylaşım.