RF sorunu

1910urr

Üye
Katılım
8 Nis 2013
Mesajlar
17
Puanları
1
Yaş
34
öncelikle herkese iyi akşamlar.
Bilgisayar mühendisliği 4. sınıf öğrencisiyim. bitirme projemi bilgisayar kontrollü kablsuz vinç aldım. rs232 bağlantısını kurdum. çalıştırdım. gayet güzel çalıştı. fakat RF le yaptığımda ufak bir sıkıntı çıktı. klavyeden led'in yanması için sinyal gönderiyorum. bazen ilk basışımda yanıyor. bazen ise 10. basışımda yanıyor. yani veri alıcıya her zaman gitmiyor. bunun nedeni ne olabilir. bilgilendirirseniz çok memnun olurum.


iki taraftaki piclerde 16f628a. baud=600 ve 4MHz osilatör ile çalışıyorum.

edit: Konuyu yanlış yere açtıysam özür dilerim
 
selam
ilk olarak kodları paylaşsan hızlı bir şekilde yardım alabiridin

rf de iletişimin sağlıklı olabilmesi için kullandığın verici ve alıcıların beslemesinde parazit olmamalı. besleme pinlerine +,- uçalarına paralel 100 nf kondansatör koymalısın.

verici de veri gönderme yaparken farzadelim

$A0,$A0,$A0,$A0,.......göndereceğin veri .....,13

ilk olarak gönderilen $a0 rf modulu uyandırır.ardından kumanda için kullanacağın veriyi gönderirsinve son olarakda iletişimin bittiğini hemde alıcı tarafında doğru iletişim olduğunu sorgulayacağın bir sabit değer (13) gönderirsin
bu dizimi vericide ard ard a 3,5 defa yaparsan bu yeterli olacaktır

pbp da şu şekilde
verici tarafı
serout portb.2,t600,[$A0,$A0,$A0,$A0,$A0,"aRci",tus,13]
serout portb.2,t600,[$A0,$A0,$A0,$A0,$A0,"aRci",tus,13]
serout portb.2,t600,[$A0,$A0,$A0,$A0,$A0,"aRci",tus,13]


aalıcı tarafı


rf:
serin portb.1,t600,[wait("aRci",gelen,onay]

if onay <> 13 then goto rf 'onay değişkenini değeri 13 değilse rf etiketine git
select case tus 'iletişim doğru olarak yapılmış ise tus değerini kullan

case... 'tus değerine göre çıkışlarını değiştir

case...

end select

goto rf
 
selam
ilk olarak kodları paylaşsan hızlı bir şekilde yardım alabiridin

rf de iletişimin sağlıklı olabilmesi için kullandığın verici ve alıcıların beslemesinde parazit olmamalı. besleme pinlerine +,- uçalarına paralel 100 nf kondansatör koymalısın.

verici de veri gönderme yaparken farzadelim

$A0,$A0,$A0,$A0,.......göndereceğin veri .....,13

ilk olarak gönderilen $a0 rf modulu uyandırır.ardından kumanda için kullanacağın veriyi gönderirsinve son olarakda iletişimin bittiğini hemde alıcı tarafında doğru iletişim olduğunu sorgulayacağın bir sabit değer (13) gönderirsin
bu dizimi vericide ard ard a 3,5 defa yaparsan bu yeterli olacaktır

pbp da şu şekilde
verici tarafı
serout portb.2,t600,[$A0,$A0,$A0,$A0,$A0,"aRci",tus,13]
serout portb.2,t600,[$A0,$A0,$A0,$A0,$A0,"aRci",tus,13]
serout portb.2,t600,[$A0,$A0,$A0,$A0,$A0,"aRci",tus,13]


aalıcı tarafı


rf:
serin portb.1,t600,[wait("aRci",gelen,onay]

if onay <> 13 then goto rf 'onay değişkenini değeri 13 değilse rf etiketine git
select case tus 'iletişim doğru olarak yapılmış ise tus değerini kullan

case... 'tus değerine göre çıkışlarını değiştir

case...

end select

goto rf

dediğiniz gibi kondasatör koydum fakat yine aynı.

kodlar ise

alıcı tarafı;

#include <16F628A.h>
#FUSES NOWDT
#FUSES XT
#FUSES NOPUT
#FUSES NOPROTECT

#FUSES NOBROWNOUT
#FUSES NOLVP
#FUSES NOCPD

#use delay(clock=4M)
#use rs232(baud=600, rcv=PIN_B1, parity=N, bits=8)

char z;
void main()

{

set_tris_b(0x00);
output_b(0x00);
output_high(pin_b7);
delay_ms(500);
output_low(pin_b7);
delay_ms(500);
output_high(pin_b7);
delay_ms(500);
output_low(pin_b7);
delay_ms(500);
output_high(pin_b7);



while(1)
{

if(getch()=='x')
{
z=getch();
if(z=='a')
{
output_high(pin_b5);
}
if(z=='b')
{
output_low(pin_b5);
}
}
}
}

verici tarafı ise;

#include <16F628A.h>
#FUSES NOWDT
#FUSES XT
#FUSES NOPUT
#FUSES NOPROTECT


#FUSES NOBROWNOUT
#FUSES NOLVP
#FUSES NOCPD




#use delay(clock=4M)
#use rs232(baud=600,xmit=PIN_B2,rcv=PIN_B1,parity=N, bits=8)
int veri; //ak


void main()


{
output_high(pin_b7);
delay_ms(500);
output_low(pin_b7);
delay_ms(500);
output_high(pin_b7);
delay_ms(500);
output_low(pin_b7);
delay_ms(500);
output_high(pin_b7);

while (1)
{


veri=getch();



if (veri=='s')
{
putc(0b01010101);
putc('x');
putc('a');
delay_ms(50);
}


if(veri=='w')
{
putc(0b01010101);
putc('x');
putc('b');
delay_ms(50);
}


}

}


her yolu denedim bür türlü tam olarak iletişim sağlayamadım. 300 baud ile 2400 arası baud ları denedim ama yine aynı. yardımcı olursanız çok memnun olurum
 
Hala bir çözüm bulamadım. Yardımlarınızı bekliyorum.
 
++++++++++++++++


KontrolKalemi Mobile ile gönderildi.
 
mesaj attım. abi çok memnun olurum yardımcı olursan beceremedim bir türlü
 

Forum istatistikleri

Konular
129,840
Mesajlar
930,680
Kullanıcılar
452,679
Son üye
kenan7777

Yeni konular

Çevrimiçi üyeler

Geri
Üst