Ultrasonik mesafe sensörü ve 16f877a ile engel tanıyan robot

Başlatan yunusreha, 21 Aralık 2013, 11:45:00

yunusreha

Merhaba arkadaşlar ultrasonik mesfa sensörü HCSR04 ile mesafeyi ölçebiliyorum fakat bunu interruptla yapmam gerekli çünkü kesme gelmediği sürece yani engel olmadığı sürece motorlar sürülmeli sorunu dış kesmeyle çözerim diye düşündüm fakat karşıma şöyle bir sorun çıktı sensör 4mye kadar ölçüm yaptığı için sürekli kesme oluyor. Sizce bunu nasıl çözebilirim?

F.T

sen engelin ne kadar yakınına geldiğini programda belirliyeceksin.zaten sensör sürekli mesafeyi ölçecek.örneğin ölçülen mesafe 50 cm den küçük ise sola dön sağa dön nereye istiyorsan oraya döndüreceksin.
Hakk şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

yunusreha

Hocam ben zaten flowchart olusturdum fakat söylemek istediğim sensörü interrupt fonksiyonunun içinde okuduğum zaman sensör uzak mesafeyide olçebildigi için sürekli interrupt oluyor ve motorları çalışmıyor. Main fonksiyonunda da sensoru okuttugumda motorlar takılarak çalışıyor.

selimkoc

Bu ölçümü en güzel capture işlemi ile yaparsın. CCP girişini ECHO pinine bağla. Ona göre devreni tasarla.

mesaj birleştirme:: 21 Aralık 2013, 14:21:13

Şöyle de yapılabilir;

INT kesme girişine ECHO pinini bağla. Trigger  den tetikleme uygula ve INT kesmesinin (yükselen kenar) oluşmasıyla timer çalıştır. Bu arada INT kesmesini düşen kenar olacak şekilde değiştir. Kesme oluştuğunda timer'ı durdur. ve değerini değişkene aktarıp hesaplamaları yap. mesafeyi ona göre değerlendir.


mesaj birleştirme:: 21 Aralık 2013, 14:36:08

linkte INT kesmesi kullanımı hakkında teferruatlı bilgi var;

http://elektrokod.wordpress.com/2013/10/07/pic16f628-mikrodenetleyicinde-rb0-kesmesi-interrupt/

yunusreha


olemiss

Alıntı yapılan: F.T - 21 Aralık 2013, 13:25:59
sen engelin ne kadar yakınına geldiğini programda belirliyeceksin.zaten sensör sürekli mesafeyi ölçecek.örneğin ölçülen mesafe 50 cm den küçük ise sola dön sağa dön nereye istiyorsan oraya döndüreceksin.
Doğru, sensör sürekli ölçüyor.  Ölçülen mesafeye göre karar vermek programın işi.  Bu sensör'e "sadece 50 cm'e kadar ölç" şeklinde bir komut verilemiyor.

Bu cihaz ile ilgili kabul görmüş başlıca yazılım şu: http://wwew.freecode.com/projects/hc-sr04-ultrasonic-arduino-library
Yazılım Mühendisi, Çevirmen.

yunusreha

Selimkoc hocam sensor onununu 4 metreye kadar gordugu icin surekli yukselen kenar gonderiyor yani surekli interrupta girmez mi yine?

selimkoc

sürekli girer. Girmesi de gerekir. Hızlı olduğu için (PIC 16F877 20MHz kadar kullanılabilir) işlemciyi yormaz. Hesaplama işlerini kesme içinde deği ana programda yap. Kesme oluştuğunda timer değerlerini değişkene ata ve bir bayrağı set et. Ana program içinde o bayrağın set durumunda hesaplamaları yaptır ve bayrağı sıfırla. Böylece kesme de fazla kalmamış olacaksın ve işlemci meşgul olmamış olacak.

mesaj birleştirme:: 21 Aralık 2013, 19:00:26

http://www.mcu-turkey.com/hc-sr04-ultrasonic-sensor-ile-cisim-algilama-ve-mesafe-olcumu/

linkteki yazıyı inceleyebilirsin.

yunusreha


selimkoc

Bu arada unutmadan engel algılayıcı olarak IR led ve IR alıcı gözle yapılan ve mesafesi ayarlanabilen bir hızlı çizgi izleyen robotta kullandığım bir devre var. İşine yararsa ;

http://elektrokod.wordpress.com/2013/03/16/engel-algilama-devresi/