avatar_elektro77

Bir pice rf veya ır ile ıcsp gibi veri yüklenebilir mi?.

Başlatan elektro77, 27 Kasım 2020, 17:08:12

elektro77

Bir picten bir pice seri iletişim yolu ile 8bit 9600 baudrate hızla veri göndermek istiyorum. Opto kuplör ile veya ır verici led ve ır alıcı led ile yapılabilir mi?
Eğer evet ise piclerdeki pinlere bağlantı şeması nasıl olmalıdır.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

ete

Biraz sesli düşünebilirsek belki soruna bir cevap bulabiliriz diye düşünüyorum.
Elimizde bir Veri var. Bunu A tarafındaki Pic'den B tarafındaki Pic'e yollamak istiyorum.
Normal şartlarda seri iletişim (HSERIN - HSEROUT) komutlarını kullanarak ve iki pic'i kablo ile bir birine bağlayarak bu işi kolaylıkla yapabiliyorum. Aradaki kabloyu kaldırıp onun görevini IR ile çalışan bir sisteme aktarsak ne olur. Şöyle bir düşünürsek IR infrared sistemle çalışıyor ve maalesef gün  ışığından etkileniyor. Etkilenmemesi için onu genelde 38Khz lik bir modulasyon sinyaline bindiriyoruz. ALıcı tarafında ise bir göz kullanarak 38 Khz aradan çıkartıp geriye kalan net sinyali alıp kullanmaya çalışıyoruz. Peki elimdeki veriyi yine seri komutları kullanarak bir çıkışa versem. O çıkış 38Khz lik modulasyon sinyalini üretse ve veri bit LOW olunca modulasyonu kapatsa (LOW süresi kadar) HIGH geldiği zaman HIGH süresi kadar 38Khzlik modulasyon sinyali yollasa böylece veri bitlerini 38Khz lik modulasyon sinyaline bindirerek Infrared lede versem. Karşısını da diğer led'üzerinde bir 38Khz lik göz kullanıp gözün output çıkışını pic'e girerek sanki kablo ile geliyormuşçasına bu alınan bu veriyi çözerek işlem yaptırsam bu iş olur gibi gözüküyor.
Sorularının bütün cevabı benim açıklamamda yer alıyor. Bana şema falan sorma ne yapılacağını açıkladım dikkatlice okursan kim ne yapacak hepsini görebilirsin.

Ete

elektro77

Hocam üzerinde çalıştığım proje ektedir.
Projede bir rf verici bir rf alıcı ve birde vericiye veri yükleyici kızılötesi bir loader vardır.
Proje simülasyonda çalışmaktadır.
Fakat loader da send butonu ile ilgili bir gecikme sorunum var. uzun süre basılı tutmayınca kodu vericiye yükleyemiyor. Tüm yazılıma bir bakıp mantık sorunlarımı gösterebilir misiniz lütfen?
  Birde yüklemeye çalıştığım bu dataları 38Khz bir sinyale nasıl bindirileceği konusundaki yazınızı anlasam da pratikte bunun nasıl yapılabileceğini çözemedim.
Gönderdiğim 8 bitlik verinin high sureleri kadar modülasyon başlatıp low süreleri kadar bu modülasyonu nasıl kapatırım çözemedim.
  Daha önce kütüphaneme eklediğim çeşitli protokollerdeki ır kumanda projelerinizin de tamamını okumama rağmen bu işi benim şu an yapmak istediğim şekline eviremedim. Örnek bir kod gösterebilirseniz sevinirim.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

ete

Loader programında send butonu gecikmesi serin komutundan kaynaklanıyor.
İşin başında isen hemen söyleyeyşim. Bu iş Serin komutları ile olmaz.
Sesin komutunda Timeout fonksiyonu beklendiği gibi çalışmıyor. Kafasına göre birşey yapıyor ama istenileni yapmadığı kesin. Bu komuta sıra geldiği zaman program oraya çakılıyor ancak 65535 ms sonra program komutu bırakıyor. Bu nedenle bu iş olsa olsa USART komutları ile yapılabilir.

Programın genel mantığına hakim olmak zor. 3 tane program var ve kim ne yapıyor çok açık belli değil.
Satır satır okur ve ne yaptığını anlarım ama işin geneline gelince onu anlamak için simule etmek veya üzerinde epeyce çalışmak gerekir.

Modulasyon işi iki şekilde yapılabiliyor.
Birincisi ve en kolayı, bir bacaktan (HPWM ile CCP1 bacağından) çıkartılan 38 Khz lik bir sinyal iki girişli AND kapısına girilir. Kapının diğer girişine de Veri girişi yapılır. And kapısının çıkışı da Ledi süren transistöre bağlanır. Yada direk led bu çıkışla sürülür.
Çıkışı transistörle sürersen sinyali ters çevirmiş olursun buna dikkat et. Alıcıda da bir transistör kullanıp alınan sinyali ters çevirirsen transistör çıkışından doğru sinyali alırsın.

İkinci modulasyon usulü pek seri iletişime uygun gözükmüyor. Temeli CCP1 pininden veri HIGH olduğunda modüleli HIGH çıkarmak LOW olduğunda çıkışı GND ye çekmek şeklinde açıklanabilir. Ama bu sistemde HIG ve LOW bitlerinin veri sürelerini bilmek gerekir. BU nedenle sen bşirinciye odaklansan daha doğru olur.

Ete

elektro77

#4
Hocam yazılımların işlevi kısaca şöyle:
Simülasyon devresinde kullanılan 12f675 rf bir vericidir.
Devreye enerji verilir verilmez  Her 5 saniyede bir 8 bitlik veri gönderir. Başka işi yoktur. Vericinin 5 saniyede bir gönderdiği bu veri yine simülasyondaki loader ile yüklenir.

Loader ise kızılötesi yolla vericiye, göndereceği veriyi yüklemekte kullanılır. Her verici için sadece bir kere kullanılır.
Loader aynı zamanda üzerindeki başka bir pine bağlı rf alıcı ile de vericiye yüklediği kodu vericinin rf  çıkışından alır ve ekranda gösterir. Bu sayede vericiye yüklediğimiz kodu test etmiş oluruz. 

Verici mikro denetleyicisi girişlerinden birindeki ır alıcı sensor ile loaderden gönderdiğimiz bu kodu alır ve yine aynı denetleyici, çıkışlarından birindeki rf verici ile de aynı kodu simülasyondaki alıcı demodülatöre gönderir. Demodülatörden de bir esp modülü ile servere gönderilecektir.
Alıcı demodülatör devresindeki lcd ekran sadece simüle etmek içindir. Gerçekte olmayacaktır.

Kısaca bu şekilde.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

ete

Sistem senin kafanda 3 boyutlu duruyor. Bende ise tek boyut halinde bu nedenle bazı şeyleri neden yapıyorsun anlamam mümkün değil. Bu nedenle sistemi anlamaya çalışmıyorum.
Aşağıdaki linkte bahsini ettiğim sisteme ait bir örnek engel algılamada kullanılmış.
Ancak sen veri aktarımında kullanacaksın. İşine yarayacak olan kısım şema yanlızca programa kafa yorma.
Şemadaki bağlantı şekli ile yollanan HIGH bilgisi IR gözden direk alınır ise LOW olarak alınır. Bu nedenle IR gözün Out çıkışını bir NPN transistöre bağlayıp transistörün Collectörünü 10K ile pullup olarak bağlarsan ve Collector pininden veri çıkışı da alırsan yollanan sinyali birebir olarak almış olursun sen öyle yap. 4 Mhz OSC frekansında CCP1 çıkışı olanbir işlemcide;
T2CON registerindeki bölme oranını 1/1 alırsan, PR2 ye 25 değerini verirsen ve Duty değerini 52 yapıp PWM yi bu değerler ile çıkartırsan CCP1 çıkışından %50 duty oranına sahip 38Khz lik bir sinyal çıkartmış olursun. Şemada AND kapısı oluşturmak için çift transistör kullanılmış. Üstteki 38Khz veriyor sürekli veriyor hemde. Alttaki ise veri veriyor. Her iki transistör Base lerindeki sinyal HIGH olursa ledler (çiftled) yanıyor değilse yanmıyor. Dolayısıyla veri olarak HIGH gönderildiğinde high süresi kadar 38Khz lik sinyal IR ledlere uygulanmış oluyor.
Senin sisteminde IR alıcı göz diğer işlemcide olacak. Yanlızca onun çıkışına bir NPN ekleyeceksin hepsi bu.

link:  https://elektrokod.files.wordpress.com/2013/03/engel_628.jpg?w=300&h=242&zoom=2


Ete

elektro77

Alıntı yapılan: ete - 30 Kasım 2020, 10:00:59Sistem senin kafanda 3 boyutlu duruyor. Bende ise tek boyut halinde bu nedenle bazı şeyleri neden yapıyorsun anlamam mümkün değil. Bu nedenle sistemi anlamaya çalışmıyorum.
Aşağıdaki linkte bahsini ettiğim sisteme ait bir örnek engel algılamada kullanılmış.
Ancak sen veri aktarımında kullanacaksın. İşine yarayacak olan kısım şema yanlızca programa kafa yorma.
Şemadaki bağlantı şekli ile yollanan HIGH bilgisi IR gözden direk alınır ise LOW olarak alınır. Bu nedenle IR gözün Out çıkışını bir NPN transistöre bağlayıp transistörün Collectörünü 10K ile pullup olarak bağlarsan ve Collector pininden veri çıkışı da alırsan yollanan sinyali birebir olarak almış olursun sen öyle yap. 4 Mhz OSC frekansında CCP1 çıkışı olanbir işlemcide;
T2CON registerindeki bölme oranını 1/1 alırsan, PR2 ye 25 değerini verirsen ve Duty değerini 52 yapıp PWM yi bu değerler ile çıkartırsan CCP1 çıkışından %50 duty oranına sahip 38Khz lik bir sinyal çıkartmış olursun. Şemada AND kapısı oluşturmak için çift transistör kullanılmış. Üstteki 38Khz veriyor sürekli veriyor hemde. Alttaki ise veri veriyor. Her iki transistör Base lerindeki sinyal HIGH olursa ledler (çiftled) yanıyor değilse yanmıyor. Dolayısıyla veri olarak HIGH gönderildiğinde high süresi kadar 38Khz lik sinyal IR ledlere uygulanmış oluyor.
Senin sisteminde IR alıcı göz diğer işlemcide olacak. Yanlızca onun çıkışına bir NPN ekleyeceksin hepsi bu.

link:  https://elektrokod.files.wordpress.com/2013/03/engel_628.jpg?w=300&h=242&zoom=2


Ete
Anladım Hocam.
Peki bu 38Khz modülasyon sinyalini pic ten bağımsız bir çip ile üretemez miyiz?
Böyle bir yüzey montaj çip var mıdır? Yada şu kendiliğinden yanıp sönen led mantığında, 38khz ini kendi üreten bir ır led var mıdır?
Aslında yoksa bile fena fikir değil yani.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

ete

Farzet ki sana bir Chip verdim bir pininden led sürüyor ve 38Khz ile sürüyor!. Ne işine yarayacak ? bir IR ledin 38Khz üretmesi ve bu sinyal ise sürülmesi bir işine yaramaz. O sinyale Veri bindirilerek o ledin sürülmesi gerekir ki onunda çaresi PIC kullanmaktan geçiyor. CCP1 çıkışı olan her pic bunu yapabilir. 8 bacaklılardan 12F683-12F1822 bunu yapar. Buların SMD olanlarıda mevcut üstelik.

Ete

elektro77

Alıntı yapılan: ete - 30 Kasım 2020, 12:28:12Farzet ki sana bir Chip verdim bir pininden led sürüyor ve 38Khz ile sürüyor!. Ne işine yarayacak ? bir IR ledin 38Khz üretmesi ve bu sinyal ise sürülmesi bir işine yaramaz. O sinyale Veri bindirilerek o ledin sürülmesi gerekir ki onunda çaresi PIC kullanmaktan geçiyor. CCP1 çıkışı olan her pic bunu yapabilir. 8 bacaklılardan 12F683-12F1822 bunu yapar. Buların SMD olanlarıda mevcut üstelik.

Ete

demek istediğim ır ledin içinde 38Khz üreten bir osilatör olsa ve veri girildiğinde hıgh süresi kadar bunu aktif etse idi. Yapılabilirliği var gibi geldi bana.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

ete

Aynı dili konuşuyoruz ama anlaşamıyoruz her nedense.
Ete

Burak

Alıntı yapılan: elektro77 - 30 Kasım 2020, 13:11:21demek istediğim ır ledin içinde 38Khz üreten bir osilatör olsa ve veri girildiğinde hıgh süresi kadar bunu aktif etse idi. Yapılabilirliği var gibi geldi bana.
Modülasyon konusunu inceleyin forumda Infrared haberleşme ile ilgili konular var . İlgili konuları inceleyerek eksik bilgilerinizi giderebilirsiniz .

https://etepic.com/index.php/topic,2553.0.html

Burak
Ω Gens Una Sumus Ω

Powered by EzPortal