E

ufm m11

Başlatan elekeng, 31 Mart 2012, 23:36:13

elekeng

Arkadaşlar merhaba,
şu günlerde udea'nın ufm m-11 modülleriyle haberleşme deniyorum.Elinde bununla ilgili ccs c de yazılmış bir program var mı?
ben buraya kendi programımı koyuyorum onun üzerinden tartışırız.

öncelikle modüller ile ilgili biraz bilgi vereyim.Bunlar 3v ile çalışıyor yani doğrudan pic ile bağlantı yapılmıyor bunun için özel regüle devresi yaptım 3v ile modülleri besliyorum.şimdilik sadece verici kısmından butona basıp alıcı kısmında ise bir led yakmaya çalışıyorum.Modüllere has bir protokol mevcut o da şöyle;

$RFgönderilecekdataEND  yani başta $RF gönderip sonra datamızı gönderiyoruz en son olarak END karakterlerini gönderiyoruz.
ara işlemleri(preample,code vs) modül kendisi hallediyor.Birde ben hiç kesme kullanmadım acaba bu tür uygulamalarda kesme mutlaka kullanmalımıyız?Şu an modülleri kaldırıp kabloyla denediğim zaman çalışıyor ama kablosuz ne yaptıysam olmadı.

alıcı için;
#include <16F877A.h>
#device adc=8

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES XT                       //Crystal osc <= 4mhz for PCM/PCH , 3mhz to 10 mhz for PCD
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NODEBUG                  //No Debug mode for ICD
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection
#FUSES WRT_50%                  //Lower half of Program Memory is Write Protected

#use delay(clock=4000000)
#use rs232(baud=1200,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,stop=1)



#include <stdio.h>
char buffer[9],kanal;
#define led pin_d2
fast_io(d);
fast_is(c);
int k,l;
void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);

   // TODO: USER CODE!!
delay_ms(500);

while(1)
{

for( k=0; k<=8;k++)
{

buffer[k]=getc();


}


if(buffer[3]=='A'  )
{
output_high(led);
delay_ms(1000);
output_low(led);

}
verici için;
#include <16F877A.h>
#device adc=8

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES XT                       //Crystal osc <= 4mhz for PCM/PCH , 3mhz to 10 mhz for PCD
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NODEBUG                  //No Debug mode for ICD
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection
#FUSES WRT_50%                  //Lower half of Program Memory is Write Protected

#use delay(clock=4000000)
#use rs232(baud=1200,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,stop=1)


#include <stdio.h>
#define buton pin_E0
#define led pin_D2
char buffer[9]={ '$','R','F','A','E','N','D',0x0D,0x0A};
int i;
char kanal1;
fast_io(e);
fast_io(d);

void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
// TODO: USER CODE!!

delay_ms(2000);
putc(0x24);
putc(0x43);
putc(0x31);
delay_ms(100);


while(1)
{



if(input(buton))
{


for(i=0;i<=8;i++)
{

putc(buffer);

}

output_high(led);
delay_ms(1000);
output_low(led);
}}}}

ete

Daha önce bu modülleri kullanmış ve iyi sonuç almıştım. Ancak yaklaşık 1 ay önce bir başka proje için aynı modülleri aldım ancak sonuç olumsuz çıktı. Bir türlü modüller haberleşemediler. Sonra UFM12 modelini aldım benzer özelliklere sahipler. Onlarda haberleşemedi. Sonra bir çift daha aldım onlarda haberleşemedi. Sonunda UDEA modüllerinin arızalı olduğuna karar verdim.
Daha sonra HOPER in modüllerinden kullanım sorunsuz iş holloldu.
Bana kalırsa her şey normal ve modüller haberleşemiyor ise onları geri yollayın ve test etmelerini isteyin.

Ete

elekeng

hocam ne yaptıysam haberleşmedi.istersen daha detay vereyim.belki sizde besleme problemiyle karşılaşmışsınıdır.gerilim bölücülerle yaptığında bağlı olmadan 3v elde ediyorsun bağlandıktan sonra 1.6v seviyelerine düşüyor.bundan dolayı ben pic bacaklarıyla beslemenin yerine harici bir regüleden besliyorum.ancak rx tx bacakları için  dirençlerle gerilim bölmekten başka bir yol yok.acaba bunlardan mı kaynaklanıyor sorun?datasheette modülün tx bacağı kullanılmıyorsa 10k ile 3v pull-up yapılır deniyor.onuda yaptım aldım 10k direnci tx ile besleme 3v arasına yerleştirdim.modüllerin arasında 3m koydum.17 cm lik zil teli ile anten koydum gene yok:)

ete

5V ile beslenen sistemlerde 3V modül kullanılması genelde sorun çıakrtıyor. Hele bu tranceiver olursa hem alış hem veriş sinyallerinde seviye düzeltmesi gerekiyor.
UDEA bunun nasıl yapılacağını vediği açıklamalarda göstermiş. Ben LM317 ile gerilim ayarlaması yapıyordum.
Hatta bir projede pic'ide 3v ile besledim ancak sorunu yine aşamamıştım. Sorunun modüllerde olduğunu düşünüyorum.
Yada iki modül arasında frekans uyuşmazlığı vardır.
Şimdi aklıma geldi bu modüller standart 9600baud ile haberleşmesi gerekir. Sen 1200 Baud olarak ayarlamışsın. Buda bir sorun olabilir. Bu nedenle denemeni 9600 olarak yapmanı öneririm.
Çünki modül fabrika ayarı olarak 9600 baud da haberleşecek şekilde ayarlanmış Sen onunla haberleşeceğine göre ayarın 9600 olması gerekir.

Ete

elekeng

aslında bir çok baud da denedim ilk 9600 la başladım sonra olmadı diye 600 ,1200 leri denedim ama şimdi interrupts kullanarak yazılımı değiştireceğim 9600 da denemeler yapayım o zaman.eğer yinede olmazsa udea ya gönderip test etmelerini isticem artık son çare.

Powered by EzPortal