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);
}
}
 
Konu Sah

selim4141

Üye
Katılım
16 Eki 2011
Mesajlar
17
Puanları
1
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ı?
 

silvestir

Profesyonel Üye
Katılım
10 Ağu 2011
Mesajlar
2,769
Puanları
656
Ben bu programda 40khz ureten bir kod goremiyorum. 40khz i nasıl üretiyorsun
 
Konu Sah

selim4141

Üye
Katılım
16 Eki 2011
Mesajlar
17
Puanları
1
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.
 

silvestir

Profesyonel Üye
Katılım
10 Ağu 2011
Mesajlar
2,769
Puanları
656
Verici kristal nasıl bağlı. 12.5microsaniyelik pals ne işe yarıyor.
 
Konu Sah

selim4141

Üye
Katılım
16 Eki 2011
Mesajlar
17
Puanları
1
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 .
 

silvestir

Profesyonel Üye
Katılım
10 Ağu 2011
Mesajlar
2,769
Puanları
656
Devreyi görmeden yorum yapmak cok zor oluyor ama bence oradaki 12.5 hatalı. bunu 200 yap ve dene.
 

silvestir

Profesyonel Üye
Katılım
10 Ağu 2011
Mesajlar
2,769
Puanları
656
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
 
Konu Sah

selim4141

Üye
Katılım
16 Eki 2011
Mesajlar
17
Puanları
1
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
122,207
Mesajlar
861,973
Kullanıcılar
438,708
Son üye
Muharrem çetin

Yeni konular

Üst