Pic ile IR İletişim

Başlatan memores, 12 Ekim 2006, 09:27:33

memores

Merhaba arkadaşlar..
Basitçe bir IR sensör yapmak istiyorum..Verici ve alıcı kısımda sadece pic kullanmayı düşünüyorum..Verici devreden göndereceğim bilgiyi alıcı kartta nasıl okutabilirim..Seri iletişim mantığı ile programımı yazmam sonuç getirimi..
Verici kısımda;
Serout Portb.0,T2400,[bilgi]

Alıcı kısımda ;
Serin Portb.0,T2400,[alinan]

gibi bir mantıkla basitçe bilgi gönderip alabilirmiyim..

Yardımcı olursanız sevinirim..Herkese iyi çalışmalar..

stlg

Sevgili kardesim

Ben programlarımı asm de yazıyorum, fakat sanırım picbasiclede olur, asenkron haberleşme teknigini biliyorsan soyledigin mantıkta programını yazabilirsin ,burada haberleşme hızını cok fazla yapmana gerek yok, 8 bit lik veri yi start ve stop bitleriyle karsıya optik olarak yollarsan ,alıcıda aynı sekilde pice bu veriyi ulaştırırsa sistemin sorunsuzca calısacaktır ,burada optik olarak gonderilen veriye dikkat etmek gerekir ,yani gonderilen 1 karsıdada 1 olarak olusmalıdır , tersi olursa bu yazılımla duzeltilmelidir kolay gelsin
ALLAHA EMANET OLUNUZ Hoştur bana senden gelen,  Ya gonca gül yahut diken,  Ya kaftandır yahut kefen,  Kereminde hoş lütfunda hoş.

mytap

Picbasicde ir alıcı verici yapabilirsin.
Programın başına;
Include "modedefs.bas" dosyasını çağırman gerek yani sistem default ayarını yapmış olcaksın bu;
8 data biti , no parity ve 1 stop biti seklindedir. Genel gösterim 8N1 seklindedir.

-------ALICI DEVRE İÇİN-----------

SERIN Pin,Mode,{Timeout,Label,}{[Qual...],}{Item...}

Standart Asenkron Seri data giris komutudur. Yani baska bir seri data gönderebilen bir üniteden
gelen bilgiyi almak için kullanacagımız komutlardan birisidir. Parametrelerine bakacak olur isek;
SERIN komutundan hemen sonra seri datanın alındıgı pin yer almaktadır. Burada PortA.0 veya
PortB.2 gibi port pinleri kullanılır. İkinci parametre Mode yani asenkron iletişim hızıdır. Burda dikkat edilmesi alıcı ve vericinin aynı Mode hızında olmasıdır.Diger parametre olan ve gerektiginde kullanılmayan Timeout parametresi dir ve 1 ms (milisaniye)
cinsinden belirlenir. Anlamı ise burada verilen süre içerisinde herhangi bir data alınmaz ise
program Label parametresi ile belirlenen konuma atlar. Dolayısıyla Label'i de açıklamıs oluyoruz. Qual yanlış data almayı önleyen güzel bi komuttur. Bu komut burdaki bilgiye bakacak eğer bilgi gelmiş ise işleme tabi tutacaktır. En son parametre ise gelen bilginin depolanacagı degisken simidir ve ITEM olarak gösterilmistir.

Örnek;
SERIN2 , GIRIS , 396 , [WAIT ("ABC"), DEC AL]--------------------------------------------------------------------------------------------------------------------------------------------------------------------------

----------VERİCİ DEVRE--------------

SerOut2 CIKIS,396,[("A"),("B"),("C"),EKLE]

Bu komut EKLE değişkeni içindeki bilginin önüne ABC karakterlerini koyarak CIKIS olarak ayarlanmış pine gönderir.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------

iyi çalışmalar.... Kaynak ETE
-------------------------------------------------------- hayırlı günler, iyi çalışmalar..  --------------------------------------------------------

remzi

Merhaba

IR kumandaların vericisini kendin yapmaya kalkarsan işin içinden çıkamazsın. Vericisini hazır alıp alıcısını kendin yaparsan daha iyi olur.
Bende kendi yaptığım alıcıda 1-1.5m yi geçememiştim. ama Philips tv kumandasının kodlarını çözerek alıcı yapmıştım. 10m gibi bir mesafeye çıktım. Sanada bu yolu uygulamanı tavsiye ederim...

Kolay gelsin...

memores

Arkadaşlar,bilgiler için hepinize teşekkürler..

Daha önce hazır RF modüller ile bilgi alış verişi yapmıştım..Şimdi bu işi IR led ve IR alıcı göz ile yapmak istiyorum..
@mytap hocam; anlattığın yöntemi IR ye uyguladığımda sorun çıkarmı,yoksa  IR led ile bilgiyi göndermek için bilgiyi 40 Khz ile birleştirip gönderilmesi gerekirmi..

Eagle_Tim

IR alıcı verici için bilgiyi 38-40 khz arasında palsler şeklinde ouşturmalısın..

lojik sıfır için 38-40 khz lik bir sinyal yollamana gerek yok. hiçbir bilgi göndermediğinde zaten lojik sıfırdır.. ancak alıcı sensörün çıkışı normalde lojik 1 konumdadır, bunu bir transistörle terslersen sistem daha basit bir hale gelecektir. bu durumda start bitini lojik 1 olarak yapmak zorunda olursun lojik bir dediğimizde kendi belirlediğin bir zaman aralığı boyunca 38-40 khz arası palsler üreteceksin. fakat belirlediğin bu aralık tüm lojik 1 ler için aynı olmalı alıcıda aynı şekilde bu zaman aralığına göre çalışmalı..
Software and Hardware Design...

mytap

Anlattığım seri iletişim protokolu ile alıcı verici yapabilirsin fakat alıcı ve verici hızları mutlaka senkron olması gerek. Diğer yandan 40khz e nasıl birleştirip gönderceksin onu anlayamadım. 40khz dediğimiz frekansla alakalıdır. Yani start biti ve stop biti arasındaki bizim istediğimiz bilginin oda 8 bitlik verinin herbiri 40000 kere darbeyle gitmesi gerek. Bu darbe olayı alıcı devrenin gönderdiğimiz datayı kaçımadan hızlı bir şekilde algılaması için şarttır. En basitinden kumandalar üzerlerindeki çalışma frekanslarıyla birbirinden ayırt edilirler. Örneğin 37khz bir kumanda ünitesinin alıcı kısmıda aynı frekansa ait olması gerekir yoksa veriler ya kaçar yada hiç çalışmaz. Burda yine diyorum alıcı verici hızları senkron olması gerek muhakkak. Hız olayını baund şeklinde açıklamıştım.

Mode & hız       Data sekli
T2400                   Düz
T1200                   Düz
T9600                   Düz
 T300                     Düz
N2400                  invert
N1200                  invert
N9600                  invert
N300                    invert
-------------------------------------------------------- hayırlı günler, iyi çalışmalar..  --------------------------------------------------------

ilkeracarlar

bu 38 khz frekans kullanmanın mantığı şudur: Her elektromanyetik sinyalde olduğu gibi bizim ışık bilgimizin de üzerine gürültü binebilir örneğin Odaki bir ışık kaynağı ve bu girişim biligiyi bozar .Bu yüzden bazı frekanslarda işlemler yapılır .Yapman gereken bilgiyi bir kanaldan seri şekilde gönderirken  bu sinyali 555 timer devresinden aldığın 38 khz lik sinyal ile birleştir (NAND kapısı ile) ve bu çıkışı transistör ile tetiklediğin lede ver .Alıcı için hazır modüller var bu modüller 38 khz lik veriyi süzer ve sadece senin verici microdenetleyiciden gönderdiğin sinyal yorumlanır