Ultrasonik Sinyali Algılatamıyorum?

selim4141

Üye
Katılım
16 Eki 2011
Mesajlar
17
Puanları
1
Merhaba arkadaşlar

Sorunum vericiden sinyali gönderiyorum fakat alıcıdan sinyali algılatamıyorum ve mesafeyi ölçmüyor sadece lcd de yazı çıkıyor .sonra herhangi bir işlem yapmıyor.

Alıcı devresinde bu sitedeki alıcı devresini kullandım.

yazılımda mı hata yapıyorum?nedeni nedir?

Elektronik Devreler - www.edevreler.com basit elektronik projeler devreler elektronik şemalar devre şemaları


nasıl algılatabilirim.
Yardımcı olur musunuz?benim için çok önemli.

kod:

#include <16F877a.h>

#fuses HS, NOWDT, NOPROTECT, BROWNOUT, PUT, NOLVP
#use delay(clock = 20000000)
#use fast_io(a)
#use fast_io(b)
#use fast_io(c)

#define use_portb_lcd TRUE

#include <lcd.c>


int16 distance, time;

#define trig pin_C1 //trigger pini output yapın
#define echo pin_C2 //echo pini input yapın

void main()
{

setup_psp(PSP_DISABLED);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_ccp1(CCP_CAPTURE_DIV_4);
setup_CCP1(CCP_CAPTURE_RE);
setup_CCP2(CCP_PWM);
setup_timer_2(T2_DIV_BY_16,7,1);
set_pwm2_duty(7);

set_tris_a(0xFF);
set_tris_b(0x00);
set_tris_c(0x04); // RC2 giriş RC1 çıkış
lcd_init();

printf(LCD_PUTC, "\f Sonar Test");
delay_ms(1000);

while(1)
{

output_high(trig);
delay_us(12.5);
output_low(trig);

while(!input(ECHO))
{}

set_timer1(0);

while(input(ECHO))
{}

time=get_timer1();

distance=time/58;

printf(LCD_PUTC, "\fTime : %Lu \nDistance : %Lu",time,distance);

delay_ms(100);
}
}
 
devreyi delikli plakete yaptım .picten 40khz uyguladım ama herhangi bir sürücü devresiyle sürmedim şu an da . sorun oradan kaynaklanır mı?
 
Ben bu programda 40khz ureten bir kod goremiyorum. 40khz i nasıl üretiyorsun
 
setup_CCP2(CCP_PWM);
setup_timer_2(T2_DIV_BY_16,7,1);
set_pwm2_duty(7);

20mhz kristal kullandım pr2 değeri 7 yaklaşık 40khz
bu şekilde yaptım.

ama simulasyonda yaklaşık 40khz gösteriyor.
 
Verici kristal nasıl bağlı. 12.5microsaniyelik pals ne işe yarıyor.
 
verici ve alıcı aynı devrede.bir tane devre olarak yapım.
13 ve 14 numaralı bacaklara 10pf kond. ile saseye bağlı.

araştırdığım kadarıyla belli bir süre aktif sonra pasif duruma geçirerek belli bir sürede 40khz sinyal gönderiyor. ve bu şekildede mesafe ölçülmesi sağlanıyor diye biliyorum onun için yaptım. 12.5 us gördüğüm devrelerde böyle olduğu için ve sensörün datasheet inde onunla ilgili herhangi birşey bulamadım.

benim sensörüm aynı rx ve tx sensörler .
 
Devreyi görmeden yorum yapmak cok zor oluyor ama bence oradaki 12.5 hatalı. bunu 200 yap ve dene.
 
Devreyi görmeden yorum yapmak cok zor oluyor ama bence oradaki 12.5 hatalı. bunu 200 yap ve dene.

while(!input(ECHO))
{}
burda sonsuz dongu oluyor. bunu duzeltmen lazım
 
Silvestir hocam,dediğiniz gibi 200us yaptım ve hatalı sonsuz donguyu
while(input(ECHO))
{

time=get_timer1();

distance=time/58;

printf(LCD_PUTC, "\fTime : %Lu \nDistance : %Lu",time,distance);

delay_ms(100);
}
}
}


yaptım daha önce sadece sonar test yazısı çıkıyordu dediğiniz gibi yaptım sinyali algıladı fakat time değeri 63 bin küsürden geri sayıyor distance da azalarak gidiyor .bunu nasıl düzeltebiliriz.
 

Forum istatistikleri

Konular
128,125
Mesajlar
915,221
Kullanıcılar
449,837
Son üye
betül hüsrevoğlu

Yeni konular

Geri
Üst