Sharp uzaklık ölçümü problemi

Başlatan nuwanda, 30 Mart 2007, 19:54:43

nuwanda

Bir robot projesinde sharp sensör kullanıyoruz (1.5 metreye kadar ölçebilenlerden) Yani robotun basit olarak yapması gereken duvara 10 cm kala durmasını istiyoruz ( Sensörün kör alanını dikkate alarak yerleştirdik ).

Fakat sensör stabil davranmıyor, bazen 20 cm'den ölçüyor bazen duvara çarptıktan sonra algılıyor. Programda da sensörden okuduktan sonra herhangi bir bekleme yok. Yani şöyle çalışıyor ;

onSensor = sensorOku();
if(sensor>120) {
.
.
.
}


Sizce sorun ve çözüm ne olabilir ? Yardımcı olursanız sevinirim..

d_yol

Sensör hemen ölcüm yapamıyor. Yani ölçüme hazırlanmak için bir zaman gerekiyor. Ben ölçmeden önce 10ms bekliyorum. Ayrıca bu sensörlerdeki ölçüm eğrisi linear değil. Ama hesable bunu linear yapmak mümkün.

nuwanda

evet 40 ms kadar bir sürede örnek alıyor..Ama düz bir yolda ilerlerken önündeki bir engele çarpmamak için sürekli ölçüm almamız gerekiyor olabildiğince. Evet eğri lineer değil ama yine de her zaman aynı uzaklıkta aynı tepkiyi vermesi gerekiyor, ama farklı farklı davranıyor... Sensörün bulunduğu devreye 2 tane de motor bağlı..Acaba bunlardan etkileniyor gibi bişey olabilir mi ?

nuwanda

Şöyle bir bağlantı şekli gördüm, gürültüyü önlemek için...sizce işe yarayabilir mi ? (Gerçi birazdan kalkıp denicem ama :D )


nuwanda

Zaten şu anda pic'in beslemesine 22uF bağlı, ve sensörler de aynı hat üzerinden besleniyor. O hatta farklı boylarda kapasitörler bağladım ama pekte bir işe yaramadı... Var mı bir fikri olan ?  :?

nuray

mrb bizde matris çzöen robot yapıyouz  10-80 cm arası gören sharp sensör var.Fakat ilk 10 cm alanı görmüyor 10cmden sonra görmeye başlıyor kodlarla bu sorunu nasıl gözebiliirz
İnşallah derse yakaran inşa eder Yaradan!!

emrahse

Genel olarak sharp sensörlerde kararsızlığı çözebilmek için 1den fazla okutmak ve ortalamasını almak çok güzel bir çözüm. Ben öyle yapıyorum.
Örnek olarak.


dim i as byte
dim anlg0 as byte
dim toplam as word

   for i=0 to 20
   anlg0=adin 0
   delayus 5
   toplam=toplam+anlg0
   next
   toplam=toplam/20

diğer bir yöntemde üstteki gibi okutmak ve bu okutma işlemini timer içerisinde yapmak. Böylelikle timer içerisinde okutma myapıldığı için fazladan ana döngü içerisinde okutma işlemi ile uğraşılmaz.
saygılarımla...

nuray

Çok teşekkür ederim
bunu bir deneyelim olmasa yine yardımına başvururuz
İnşallah derse yakaran inşa eder Yaradan!!

ykurtcebe

Merhaba.
Konu altında iki başlık olmuş ama ikisini birden kapsayacak genel birkaç bilgi vereyim. 10-80 cm ölçen yada 10-120 cm ölçen sharp demek 10cm altında hata veriyor demek değildir.
bu link'ten görüleceği gibi, sharp 10cm altında da ölçüm yapmakta, size bir değer vermektedir. Grafiğe bakarsanız 1,5V output verirken 2inch veya 7 inch okuyor olabilir. 10cm'nin altında ufak bir mesafe değişimi ölçümlerde sanki büyük değişim olmuş gibi hissedilir. Bunu mekanik dizaynınızla elimine edebilirsiniz. Bir engele 10cm kala durmak istiyorsanız ve uzaklık sensörünüzün minimum ölçümü 10cm ise bu sensörü aracınızın önüne değil de sensör öne bakacak şekilde aracın üst arkasına koyarsanız aracın boyu kadar mesafe kazanmış olursunuz, bu da sizi güvenli bölgeye zaten sokar.
Biraz da kodunuzla oynamanız lazım, aldığınız ölçümlerin manalı olup olmadığını kodunuzda sorgulamalısınız.
Eğer vaktim bol derseniz sharp'ın önüne mercek koymayı deneyebilirsiniz, yada param bol diyorsanız 2cm'e kadar ölçüm yapan uzaklık sensörleri hatırlıyorum, onlardan birisini alabilirsiniz.