Kablo ile seri haberleşior ama RF!! sorun

Başlatan Cetinal, 26 Şubat 2008, 14:04:53

Cetinal

loadcelli analog karşılaştırma yapıp duruma göre alıcı pic e veri gönderecek olan devre proteusta çalışıyor normalde de çalışıyor kablo ile tx ten rx e bağlantı yaptığımda ama rf modülleriyle çalıştıramadım bir türlü
daha önce bu sorunu yaşamış arkadaşlar da var pek fazla bununla ilgili bişeye ulaşamadım yardım ederseniz sevinirim

devreyi ve programı minimal düzeyde hazırladım ama rf sorununu aşamadım bi türlü

uyandırma verisi öncü ver ve gidecek olan data gibi yorumlar gördüm bazı yerlerde onları da denedim bi sonuç alamadım 600 baudrate den 9600 a kadar tümünü denedim 16f628 ile iç 4mhz osilatörü kullanarak yaptım  
verici ve loadcell okuyucu
#include <16f628a.h>
#use delay (clock=4000000)
#use rs232(baud=9600, xmit=PIN_b2, rcv=PIN_b1)

void main(){
setup_comparator(a0_a3_a1_a2);
bas :
while(true){
if(c1out){
output_high(pin_b4);
putc(0b01010101);  //uayndırma 
putc('X');         //öncü veri
putc('A');//göndermek istediğiniz
delay_ms(100);}

if(!c1out){
output_low(pin_b4);
putc(0b01010101); //uayndırma 
putc('X');   //öncü veri
putc('B');//göndermek istediğiniz
delay_ms(100);
}}
goto bas;
}


alıcı
#include <16f628a.h>
#use delay (clock=4000000)
#use rs232(baud=9600, xmit=PIN_b2, rcv=PIN_b1)
char n;
void main (){
bas:
while(true){
if(getc()=='X'){ //öncü veriyi aldıysan
n=getc();
if(n=='A'){output_high(pin_b4);}
if(n=='B'){{output_low(pin_B4); }
}}}
goto bas;}

ferdem

Hocam en sıkıntılı noktaya takılmışsınız, modülleriniz  UDEA'nın yaygın kullanılan arx-atx modüllerinden mi, markası nedir? Eğer UDEA'nınkilerse max baudu 900 kullanıyoruz. Bu tip sorunlar yaşayan arkadaşlara uyandırma işareti hatırlatması yetebiliyordu ama...

Modüllerinizi test edebileceğiniz ölçüm aletleriniz varsa fonksiyon üreteci ve osiloskopla bir taraftan verdiğiniz kare dalgayı alıcı tarafta gözleyebilirsiniz. Udea nın uygulama notlarına göz gezdirebilirsiniz. Zamanında ben de aynı problemi yaşamıştım uyandırma işareti ile çözülmüştü.
Siz benim önerebileceğim durumları göz önüne almışsınız ancak belki bir faydası olur:
http://www.fatiherdem.net/?yer=dty&id=43
Kolay gelsin.

Cetinal

hocam teşekkürler mesajın için

orda 9600 yazdığına bakmayın
Alıntı Yap600 baudrate den 9600 a kadar tümünü denedim
yarın bi bakıyım modüllere biraz dandik gibi sanki udeanın değil galiba ama tam emin değilim sanırım üzerlerlerinde marka yazmıodu gerekirse resmini çekip yollarım buraya

ben daha önce bu modüllerin bread board da çalıştıını grdüm onunla alakalı olabilirmi sizce  ???

hani bread boardın içinde paralel şekilde iletken ler var ya kondansatör etkisi filan yapıor olabilirmi pek sanmıyorum ama hatayı bu tip şeylerde aramaya başladım

Cetinal



modüller bunlar  sadece bu çiftle değil başka çiftlerle de denedim
ama yok yani sonuçç

bu arada biraz dandik sanırım bu modüller sizce ne yapmalıyım

ferdem

Evet, benim modüllerim de bundan, bunların marka "Keymark". Datasheet e ulaşmış mıydınız? Biliyorsunuz verici besleme gerilimi 3V.
Ben de çok zor çalıştırdım bu modülleri, hala da ideal bir yazılım geliştirebilmiş değilim(uyandırma, öncü veri bakımından). En son çalıştırabildiğimde kodun formatı yukarda sizin verdiğiniz gibiydi. Uygun bir zamanda yeniden uğraşıp daha bir netleştirmek istiyorum, sonuçları yazarım. Bu modüller sizi de uğraştıracağa benziyor, isterseniz sisteminizi hiç bozmadan bir de UDEA nın modüllerle deneyiniz.
Şu durumda iyi çalışmalar dilemekten başka elimden bir şey gelmiyor :) Kolay gelsin.

Cetinal

valla bu sefer ii tecrübe oldu benim için ben uzaktan kumanda devresi daha önce baya yaptım verici kısımda hep şu 3.6V luk yeşil renkli ve yüzeye lehimlenen pillerdne kullanıodum ve hep çalışıordu  şimdi nerden aklıma estiyse  5 V la çalıştırmaya çalıştım modülleri   verici ye 3V verince sistem düzgün çalışıor artık

ama bu uyandırma byte ı  önveri byte ı ve asıl veri byte  olayını öğrenmemde etkili oldu herşeyde bi hayır varmış bu amatörlükten ettiğim kazanc bu oldu
ilginiz için teşekkürler

serhat_selo

Alıntı yapılan: "RoMeO123"loadcelli analog karşılaştırma yapıp duruma göre alıcı pic e veri gönderecek olan devre proteusta çalışıyor normalde de çalışıyor kablo ile tx ten rx e bağlantı yaptığımda ama rf modülleriyle çalıştıramadım bir türlü
daha önce bu sorunu yaşamış arkadaşlar da var pek fazla bununla ilgili bişeye ulaşamadım yardım ederseniz sevinirim

devreyi ve programı minimal düzeyde hazırladım ama rf sorununu aşamadım bi türlü

uyandırma verisi öncü ver ve gidecek olan data gibi yorumlar gördüm bazı yerlerde onları da denedim bi sonuç alamadım 600 baudrate den 9600 a kadar tümünü denedim 16f628 ile iç 4mhz osilatörü kullanarak yaptım  
verici ve loadcell okuyucu
#include <16f628a.h>
#use delay (clock=4000000)
#use rs232(baud=9600, xmit=PIN_b2, rcv=PIN_b1)

void main(){
setup_comparator(a0_a3_a1_a2);
bas :
while(true){
if(c1out){
output_high(pin_b4);
putc(0b01010101);  //uayndırma 
putc('X');         //öncü veri
putc('A');//göndermek istediğiniz
delay_ms(100);}

if(!c1out){
output_low(pin_b4);
putc(0b01010101); //uayndırma 
putc('X');   //öncü veri
putc('B');//göndermek istediğiniz
delay_ms(100);
}}
goto bas;
}


alıcı
#include <16f628a.h>
#use delay (clock=4000000)
#use rs232(baud=9600, xmit=PIN_b2, rcv=PIN_b1)
char n;
void main (){
bas:
while(true){
if(getc()=='X'){ //öncü veriyi aldıysan
n=getc();
if(n=='A'){output_high(pin_b4);}
if(n=='B'){{output_low(pin_B4); }
}}}
goto bas;}

Veriyi bir kez değilde 2-3 kez gönder. Bi de alıcı kısmında uyandırma verisinin gelip gelmediğini test etmemişsin.  Bunu da dene.

Cetinal

Alıntı yapılan: "RoMeO123"valla bu sefer ii tecrübe oldu benim için ben uzaktan kumanda devresi daha önce baya yaptım verici kısımda hep şu 3.6V luk yeşil renkli ve yüzeye lehimlenen pillerdne kullanıodum ve hep çalışıordu  şimdi nerden aklıma estiyse  5 V la çalıştırmaya çalıştım modülleri   verici ye 3V verince sistem düzgün çalışıor artık

ama bu uyandırma byte ı  önveri byte ı ve asıl veri byte  olayını öğrenmemde etkili oldu herşeyde bi hayır varmış bu amatörlükten ettiğim kazanc bu oldu
ilginiz için teşekkürler

burda yazdığım gibi sorun kalmadı tesekkürler mesajın için
devre bu haliyle çalışıor sorunsuz ama baud hızı düşürdüm biraz daha 600 e indirdim

badcatbad

arkadaşım kodlar pek sağlıklı gelmedi bana arkadaşında dediği gibi, uyandırma bitleri ilk gidiyo bu yüzden okunan ilk değerin x olması imkansız. Kodların son halini gönderirmisin

Cetinal

#include <16f628a.h>
#use delay (clock=4000000)
#use rs232(baud=600, xmit=PIN_b2, rcv=PIN_b1)
char n;
void main (){
bas:
while(true){
if(getc()=='X'){ //öncü veriyi aldıysan
n=getc();
switch(n){
case 'A' : output_high(pin_b4); break;
case 'B' : output_low(pin_b4); break ;
}}
goto bas;}}


alıcı kısmı bu verici kısmı yukarıdaki programla aynıdır sadecebaud hızı 9600 den 600 e aldım

atladığımız bişey varsa söyleyin de bizimde bilgimiz olsun
devre sorunsuz çalışıor bu haliyle

ferdem

Alıntı yapılan: "badcatbad"arkadaşım kodlar pek sağlıklı gelmedi bana arkadaşında dediği gibi, uyandırma bitleri ilk gidiyo bu yüzden okunan ilk değerin x olması imkansız. Kodların son halini gönderirmisin

Standart seri iletişim gibi düşünmeyin, RF alıcı modülün veriyi alması için önce uyanması gerekiyor. İnternette ilgili pek çok yazı var. İyi çalışmalar.

badcatbad

Alıntı yapılan: "ferdem"
Alıntı yapılan: "badcatbad"arkadaşım kodlar pek sağlıklı gelmedi bana arkadaşında dediği gibi, uyandırma bitleri ilk gidiyo bu yüzden okunan ilk değerin x olması imkansız. Kodların son halini gönderirmisin

Standart seri iletişim gibi düşünmeyin, RF alıcı modülün veriyi alması için önce uyanması gerekiyor. İnternette ilgili pek çok yazı var. İyi çalışmalar.

Evet arkadaşım udea nın sitesinde de araştırdım, gerçektedende alıcının uyandırılması için 0x55 yada 0xaa önden göndermek gerekiyomuş. Ama dediğim gibi udeanın alıcı vericisi için gerekli bu, yani arx atx çifti için