rf modul ile ADC deger göndermek

Başlatan point_blank, 02 Nisan 2013, 08:45:22

point_blank

merhaba arkadaşlar ben PIC16F877A nın ADC sini kullanarak rf verici modul ile bunu rf alıcıya göndermek ve bu degeri lcd ekranda göstermek istiyorum adc degeri nasıl gönderebilirim ve karsı taraftan alabilirim bi fikir verebilirmisiniz.

polleme

PIC ADC portundan analog veri okununca 0-1023 arasında dijital bir veriye PIC tarafından dönüştürülür. Ondan sonra yapmanız gereken, bu veriyi seri porta (UART) göndermek ve RF modülü de bu seri porta bağlamaktır.


point_blank

#2
söyle birsey söyleyeyim simdi adc durmadan degişen deger o yuzden rf ile gönderirken yaptıgım sey sadece adc yi okutuyorum ve putc(deger); diyior gönderiyorum karsı taraftanda olcum=getc(); diyorum bu sekilde gönderip alıyorum  bu kodlarda normalde 0 ile 120 arasında ise ekranda göster diyorum ama nedense hiç stabil kalmıyor durmadan degişiyor örnegin adc degeri 50 ise bu hiç 50 degerinde stabil kalmıo

mesaj birleştirme:: 02 Nisan 2013, 19:22:24

size elimdeki kodları göndereyim

alıcı kodu :

if(getc()=='Z')
{
olcum=getc();
olcum=olcum*4;
if(olcum>0&&olcum<120){
printf(lcd_putc,"\f ADC\n%d",olcum);

}


Verici kodu :

putc('Z');
set_adc_channel(2);
olcum=read_adc();
delay_us(5);
putc(olcum);

picpicpic

adc okumada problem vardır, güncellemeyi ortalama aldırarak yaptır örneğin 10 değeri al aritmetik ortalamasını aldırarak ekrana yansıt, kapasitör kullanarakta dalgalananmaların önüne bir nebze geçilebilir diye düşünüyorum

eehsyn

Öncelikle kolay gelsin. Şimdi senin yaşadığın sorunu ben de daha önceden yaşamıştım. Sıcaklık bilgisini kablosuz olarak göndermek istiyordum, ama gönderdiğim değer alıcımda çok değişik bir şekilde çıkıyordu. Öncelikle şunu sormak istiyorum sen ne bilgisini göndermek istiyorsun ?

point_blank

ışık şiddetini ölçmek için fotodiyottan alınan dalgayı opampla yukselttim sonra pıcın analog girişine bagladım adc cevirdim ama rf ile bunu karsı tarafa gönderdiğimde alıcı devrede bulunan lcd ekranda sacma sapan degerler çıkıyor mesela diyelimki ekranda görmem gereken 40 ise deger bi 120 oluyor sonra bi 7 oluyor

jrcapa

#6
Aşağıda 3 basamaklı sıcaklık gönderimi var. Bu şekilde yapabilirsiniz.

VERİCİ:


unsigned long int bilgi;
float sicaklik;
byte data[3];
int i;
int16 a;


******************************************
bilgi=read_adc();
sicaklik=(0.00488281125*bilgi)*100;
a=sicaklik*10;
delay_ms(20);


data[0]=(a/100)%10; //Sıcaklık rakamları teker teker diziye aktarılıyor.
data[1]=(a/10)%10;
data[2]=a%10;

***************************************************
for(i=0;i<3;i++) putc(data); //Sıcaklık değeri gönderiliyor.

ALICI:

int16 data[3];
int i;
int16 a;
*******************
for(i=0;i<3;i++) data=getch();
a=100*data[0]+10*data[1]+data[2]; //LCD'ye yazdırmak için
printf(lcd_putc,"\f Sicaklik %3.1w ",a);


elmariacci

Alıntı yapılan: jrcapa - 04 Nisan 2013, 13:57:53
Aşağıda 3 basamaklı sıcaklık gönderimi var. Bu şekilde yapabilirsiniz.

VERİCİ:


unsigned long int bilgi;
float sicaklik;
byte data[3];
int i;
int16 a;


******************************************
bilgi=read_adc();
sicaklik=(0.00488281125*bilgi)*100;
a=sicaklik*10;
delay_ms(20);


data[0]=(a/100)%10; //Sıcaklık rakamları teker teker diziye aktarılıyor.
data[1]=(a/10)%10;
data[2]=a%10;

***************************************************
for(i=0;i<3;i++) putc(data); //Sıcaklık değeri gönderiliyor.

ALICI:

int16 data[3];
int i;
int16 a;
*******************
for(i=0;i<3;i++) data=getch();
a=100*data[0]+10*data[1]+data[2]; //LCD'ye yazdırmak için
printf(lcd_putc,"\f Sicaklik %3.1w ",a);


bende nabiz değerini gönderme çalişiyorum dedikleriniz kendi devreme uyguladim ama olmadi.bu devrenin tam hali varsa paylaşabilir misiniz ara işlemlerde neler yapilmiş acaba?

jrcapa

Alıntı yapılan: elmariacci - 06 Nisan 2013, 17:36:39
bende nabiz değerini gönderme çalişiyorum dedikleriniz kendi devreme uyguladim ama olmadi.bu devrenin tam hali varsa paylaşabilir misiniz ara işlemlerde neler yapilmiş acaba?

Ara işlemlerde uyandırma kodları ile RS232 ayarlarından başka birşey yok.

hangman2088

hocam bize adc veri haberleşme programını gönderebilirmisin