Ultrasonic Sensör İle Mesafe Ölçüm Sorunu

Başlatan Electroman, 07 Mayıs 2013, 00:08:56

serhat1990

Alıntı yapılan: Fkarizmatik - 17 Mayıs 2013, 12:06:28
Örnek biraz ağır kaçtı ama elma armut meselesi.Anladım teşekkürler yorum için.

Ne demek Hocam , iyi çalışmalar dilerim ...

Saygılarımla ...

Kabil ATICI

Aslında yapılan işlem

time=TMR1H*256+TMR1L

ama bu işlemde işlemci
TMR1H*256= time << 8
aynı anlama geliyor tek farkla
time << 8 daha hızlı yapılıyor ve daha az işlemci kaynağı gerektiriyor...
ambar7

Mr.Java

Alıntı yapılan: ambar7 - 17 Mayıs 2013, 12:11:57
Aslında yapılan işlem

time=TMR1H*256+TMR1L

ama bu işlemde işlemci
TMR1H*256= time << 8
aynı anlama geliyor tek farkla
time << 8 daha hızlı yapılıyor ve daha az işlemci kaynağı gerektiriyor...

Bu daha da açıklayıcı oldu çok teşekkürler.

yoakgul

İyi günler arkadaşlar,
bu devrenin şeması nasıldır? nasıl devre kuracağım??

isorman

unsigned int mesafe_1, mesafe_2, zaman_1, zaman_2, zaman_1_bos,
zaman_2_bos, a,b;
char h_1[7];
char h_2[7];
sbit trig_1 at RB6_bit;
sbit ECHO_1 at RB7_bit;
sbit trig_2 at RB1_bit;
sbit ECHO_2 at RB0_bit;
void main() {
TRISB=0b10010000; //giriş-çıkış ayarları
PORTB=0x00;
TRISA = 0b00000000;
T1CON=0b00000101; //TIMER1 Ayarları
while(1){
trig_1=1;
delay_us(20);
trig_1=0;
a=0;
while(a==0){
if(a==0) {
zaman_1_bos = TMR1H;
zaman_1_bos = zaman_1_bos << 8;
zaman_1_bos = zaman_1_bos | TMR1L;
}
if(ECHO_1=1 || zaman_1_bos > 20000){
TMR1L=0;
TMR1H=0;
a=3;
}
}
if(ECHO_1==1){ delay_us(30);
while((ECHO_1)) {
zaman_1 = TMR1H;
zaman_1 = zaman_1 << 8;
zaman_1 = zaman_1 | TMR1L;
} mesafe_1=((zaman_1)*0.0172); } //2*(34400cm/4000000us)
else {
mesafe_1=120;
}
b=0;
trig_2=1;
delay_us(15);
trig_2=0;
TMR1L=0;
TMR1H=0;
while(b==0){
if(b==0){
zaman_2_bos = TMR1H;
zaman_2_bos = zaman_2_bos << 8;
zaman_2_bos = zaman_2_bos | TMR1L;
}
if(ECHO_2=1 || zaman_2_bos > 20000){
TMR1L=0;
TMR1H=0;
b=3;
}}
if(ECHO_2==1){ delay_us(30);
while((ECHO_2)){
zaman_2 = TMR1H;
zaman_2 = zaman_2 << 8;
zaman_2 = zaman_2 | TMR1L;
}
mesafe_2=((zaman_2)*0.0172);} //2*(34400cm/4000000us)
else {
mesafe_2=120; }
if(((mesafe_1) < 50) || ((mesafe_2 )<50 )){
porta.ra2=1; delay_ms(10);
}
else {
porta.ra2=0; delay_ms(10);
}
TMR1L=0;
TMR1H=0;
}
}


Buda benden olsun 16f628a ile iki ultrasonik sensör ile tez yapmıştım onun kodları kolay gelsin millet kodlarda bazı yerler gereksiz olmuş olabilir düzeltilmiş halini bulamadım ayrıca porta.ra2 bacağıyla motor sürmüştüm bunu 3 e 4 e uyarlamak size kalmış kaç günümü almıştı herkes bi tane yapıyor kodu koyuyor geçiyor ama spesifik olması lazım neyse çok konuştum mesafe 50 santimin altındaysa çıkış veriyor. timer ile yaptım. takıldığınız yerlerde pm atabilirsiniz yada buraya yazabilirsiniz. bi açıklama daha koda bakınca aklıma geldi. 20000 değeri yaptım bnm kullandığım mesafe sensörü 150 cm aşınca sapıtıyordu bu  kısmı direk döngüden cıkması için kullandım yani eko gelmiyorsa belli bi süre gelmezsen gelme beklemem bile diyip trip attım :)