9 Ocak 2014 Perşembe

YANGIN SÖNDÜREN ROBOTLAR

Yangın Söndüren Robot Uygulama Notları


Merhabalar. Bu yazımızda yangın söndüren robotumuzun 2012 yılında başlayan ve bugüne dek birçok derecelerle süslenen hikayesini sizlerle paylaşacağız. Robotumuzun donanım, yazılım ve pratiğe dönük tüm bilgilerini bu yazıda bulabilir, elde ettiğiniz bilgileri kendi projelerinizde kullanabilir ve uygulamalarınız sırasında elde ettiğiniz sonuçları burada bizimle paylaşabilirsiniz. Sonuçta bilgi paylaşıldıkça çoğalır…
İşe robotumuza ismini veren El-Cezeri isimli bilim adamını tanıyarak başlayalım...
Robotlar ve El-Cezeri
                                                      
Artuklu Türklerinin Diyarbakır’da hüküm sürdüğü yıllarda yaşayan El-Cezeri’nin (Bediüzzaman Ebü’l İz İbni İsmail İbni Rezzaz El Cezeri) 1136-1206 yılları arasında yaşadığı tahmin edilmektedir. El-Cezeri 32 yıl Artuklu sarayında mühendislik yapmış ve zamanına göre çok ileri düzeyde teknoloji içeren ve otomatik olarak çalışan çok sayıda düzenek kurmuştur. Cezeri' nin mühendislik açısından büyük önem taşıyan eserinin orijinal adı, Kitab-ül Cami Beyn-el -İlmi ve'l-Ameli en Nafi Fi Sınaatil Hiyel (mekanik hareketlerden mühendislikte faydalanmayı içeren kitap) olarak bilinmektedir. Eserin başka isimleri de bulunmaktadır.

BÖLÜM 1.
YANGIN SÖNDÜREN LABİRENT ROBOTUNUN DONANIM BİLEŞENLERİ


 
1. Mikrodenetleyici:

Hemen hemen tüm projelerimde olduğu gibi bu projemde de 16F877 mikrodenetleyicisini düşünmeden kullandım diyebilirim. Dünyanın farklı yerlerinde gerek üniversite gerekse de lise seviyesinde çalışan ve projelerle uğraşan dostlarımla yaptığım sohbetlerde 16F877'nin ne kadar mükemmel bir denetleyici olduğuna karar verdim.
Peki neden bu kadar iyi bu mikrodenetleyici. Aslında çok da açıklanacak birşey yok bu noktada. kısaca anlatmak gerekirse, çok rahatlıkla bulabilirsiniz ve özelliklerine göre fiyatı da çok uygun. Biraz profesyonel çalışan bir elektronikçide dahi rahatlıkla rastlayabilir ve satın alabilirsiniz 16F877 mikrodenetleyicisini diyebiliriz.

2. DC Motorlar

2008 yılından ilk yaptığım yangın söndüren robotta 6V/300rpm’lik motorları kullanmıştım. O robotum pistle ilgili sorunlar nedeniyle diğer tüm robotlar gibi diskalifiye olmuştu.
Bir yıl sonra motorları değiştirme kararı aldım. Herkesin diskalifiye olmasından da cesaret alarak motorları 6V/80rpm kullandım. Robot bu haliyle çok yavaştı ancak bir o kadar da kararlı hale gelmişti.
2010 yılında gelen üçüncülük ve 2011 yılında gelen beşincilikten sonra artık farklı bir şeyler yapmam gerektiğinin farkına vardım ve motorları 6V/350 rpm’lik motorlarla değiştirdim. Yarışmada bu yıl yapılan boş oda kuralına rağmen 3 mum söndürebilen tek robot olarak 2012 yılı şampiyonu olduk. Gerçi ortamın aşırı aydınlık olması noktasında çok fazla itirazlar geldi ama sonunda birinciliğimiz tescil oldu.
 
3. DC Motor Sürücü

Çalışmalara başlarken motor sürücüsünü seçme konusunda çok kararsız kalmıştım. L293 ile L298 entegrelerinde biraz araştırma yaptıktan sonra, L298 kullanmaya karar verdim. Ayrıca L298’in çıkışlarını paralel bağlayarak çıkış akımını ikiye katladım. Böylece anakartımda iki L298 kullanmış oldum.
Ancak 2011 yılından itibaren motor sürücüsünü L293 olarak değiştirdim. Kullandığım motorların çektiği akım değerleri L293’ün bana sağlayacağı değer aralıklarında olması, haricen kaçak akım diyotlarına ihtiyaç duymaması ve L293 fiyatının çok daha düşük olması beni böyle bir değişikliğe itti diyebilirim. Ancak motorlarınız çok fazla akım çekiyorsa L293 ısınabileceğini ve zarar görebileceğini de unutmamalısınız.
Son dönemde aşırı akım çekilecek durumlar için iki L293’ün üst üste lehimlenmesi gibi bazı uygulamalara şahit oldum. Fakat henüz bununla ilgili bir deneme yapmadım.
Eğer yapacağınız projede hassas ve hızlı bir karar verme durumu istiyorsanız size L293 tavsiye etmem. Çünkü L293, anahtarlama süresi uzun ve kötü olan bir sürücü entegresidir.

4. Sensörler: Yangın söndüren robotumuzda iki farklı sensör kullandık. Bu sensörler optik ve mesafe sensörleriydi. Şimdi bu sensörleri ve görevlerini anlatalım…

a. Optik Sensör: Çok genel bir tanımlama yapmak gerekirse siyah ve beyazı algılama sensörleridir. Yangın söndüren yarışma pistinde robotun odaları algılayabilmesi için koyulan beyaz çizgileri bu optik sensörlerle algılattırabilirsiniz. Bizim projemizde kullandığımız optik sensörümüz CNY70 sensörüdür. Piyasada çok ucuza rahatlıkla bulabileceğiniz bu sensör aynı zamanda birçok robot projesinde sıklıkla kabul gören sensördür.
CNY70 çok kullanılmasının yanı sıra çok sorunlu bir sensör olarak da tanımlanabilir. Ortam ışığından ve zemine uzaklktan dolayı çok kolay etkilenmesinin yanı sıra çıkışına bağlanan 74HC14 entegresinin ortaya çıkardığı sorunlarda cabasıdır.
Bu sıkıntıların aşılabilmesi için izlenecek en kolay yol CNY70’in analog olarak kullanılmasıdır.

b. Mesafe Sensörü: Robotumuzun labirent içerisinde hareket edebilmesi için kullandığımız sensörlerdir. Yapılan olarak optik sensörler ile aynıdır ancak bu sensörler robotu engele olan mesafesini ölçmenizde yarar.
Piyasada çok farklı mesafe sensörü seçeneği bulunmamaktadır. Kullanabileceğiniz en mantıklı ve uygun sensörler SHARP firmasının ürettiği sensörlerdir. Bu firmanın ürettiği çeşitli uzaklık aralıklarında ölçümler yapan sensörler bulunabilir. Biz robotumuzda 10-80 cm aralığında ölçüm yapabilen GP2D12 sensörünü tercih ettik. 10 cm’lik kör nokta dezavantajını yok edebilmek için sensörleri robotun 10cm’lik iç taraflarına yerleştirdik. Robotumuz 15x20 ebatlarında olduğu için sensör yerleştirme konusunda sorun yaşamadık.
Biz robotumuzda iki adet mesafe sensörü kullanıyoruz. Bunlar ön ve sağ sensörler durumunda. İlk yaptığımız denemelerde ön, sağ ve sol olmak üzere üç sensör kullanmıştık ancak sonradan gereksiz olduğunun farkına varınca durumu değiştirdik.
Sensörlerimizin hangi mantıkta çalıştığı ile ilgili bilgileri ilerleyen bölümlerde (yazılım) sizlerle paylaşacağız.

Bu yıl yarışmada sohbet ettiğim ODTÜ’lü gençler bir ön ve iki adet sağ sensör kullanmışlardı. İki sağ sensör arasındaki fark değerine göre robota konumlandırma yapıyorlardı. Robotları yarışmada başarısız oldu ama iyi ve uygulamaya değer bir fikir olduğu düşünüyorum.

5. Bataryalar:
Önemsiz gibi gözükse de aslında bir robotun en can alıcı donanım parçalarından biri de bataryalarıdır. 2009 şampiyonu olan El-Cezeri de iki farklı batarya grubu kullandım. İlki motorların beslemesi olan 6V 2400 mA’lik kuru akü, diğeri de devre beslemesini sağladığım 4 adet kalem pildi. Bu sistem şimdi olduğu gibi o dönemde de çok iyi bir sistem değildi ancak hem ekonomik sıkıntılar hem de alternatif düşünebilecek zamanımızın olmaması bizi böyle uygulama yapmaya zorladı.
2013 yılından itibaren yapacağım robotlarda artık tek kaynak kullanımına geçeğiz. Kullanacağımız kaynak tabii ki Li-ON piller olacak.

6. Tekerlekler:
Tekerlekler konusunda çok fazla açıklama yapma ihtiyacı hissetmiyorum açıkçası. Genellikle elime geçen tekerleri kullanan biri olarak bu konuyu üzerinde durmaya değer bir konu olarak görmüyorum. Sumo ve çizgi izleyen projesi yapmıyorsanız da zaten üstünde durmaya gerek yok. Burada söylenecek tek şey ne kadar büyük çaplı teker kullanırsanız robotunuza ayrıca o kadar hız kazandıracak olmanızdır. Onu da zaten bilmeyen yoktur.

Ayrıca….
Bu yıl değişen kurallar sonucunda artık sadece optik sensörlerin kullanımı yeterli olmamaya başladı. Kurallar robotun odaya girdiğini algılamasının yanı sıra mumu da ayrıca algılaması gerektiğini söylüyor. Çünkü artık boş oda var ve boş odada fan çalışmaya başlarsa ceza puanı alıyorsunuz. Bunun için ya ışık ya alev ya da ısı sensörü kullanmak zorundayız artık. Ben ısı sensörü düşünüyorum fakat henüz çalışmalara başlamadım. Çalışmalara başlayıp sonuçları elde ettikçe burada sizinle paylaşacağım.
Bu yıl bir de ortada ve içerisinde mum olan bir oda sürprizi de vardı. Normal bir şekilde hiçbir robot o odaya giremedi. Çünkü robotların tamamı duvar takibi prensibine göre programlanıyor. Bu yıl ki çalışmalarda ayrıca bu durumu nasıl hallederiz onu da düşünmemiz gerekecek. 



Donanım bileşenleri ile ilgili verdiğimiz bilgiler şimdilik yeterli diye düşünüyorum. Artık robotumuzun fiziksel yapısı ile ilgili konulara geçebiliriz.

Robotumuz üç farklı katmandan meydana gelmiştir. Bunlar;
a.      *   Söndürme kartı
b.      *   Anakart
c.      *   Şase
Şimdi bu kartları ayrıntılı bir şekilde inceleyelim.


a.   Söndürme Kartı:Robot oda girişlerinden geçerken CNY70 sensörü girişteki beyaz çizgileri algılaması sonucunda devreye giren ve mumu söndürmek için kullanılan fan motorunu devreye sokan karttır.

Bu kartın çalışması için harici (B0) kesmesi kullanılmıştır. CNY70 ve 74HC14’ün çıkışı, PIC16F877’nin B0 pininne bağlanmıştır. CNY’nin beyaz çizgiyi ilk algılaması ile söndürme kartı aktif hale gelmektedir. Bu aktiflik CNY’nin beyaz çizgiyi tekrar görmesine kadar sürmektedir. İkinci kez beyaz çizgi algılandığında söndürme kartı deaktif olur ve fan motoru durur.

Robotun yazılımında bu durum bir değişkenle sağlanır. Robot ilk çalıştığında ilgili değişken sıfırlanır. İlk çizgi algılamada değişken değeri bir artırılır ve fan devreye girer. İkinci algılama da ise değişkenin değeri tekrar artırılır. Koşullamada “değişken değeri iki olursa fanı devreden çıkart ve değişken değerini sıfırla” şeklinde bir komutla sistem istenilen şekilde çalıştırılabilir. Bu duruma örnek bir ccs c fonksiyonu aşağıda gösterilmiştir.

void harici_kesme_fonksiyonu
{
            cizgi_sayisi++;
            if(cizgi_sayisi==1) fan_calistir();
            if(cizgi_sayisi==2)
            {
                        fan_durdur();
                        cizgi_sayisi=0;
            }

 Anakart: Adından da anlaşılacağı üzere tüm kontrollerin yapıldığı ve tüm donanım malzemelerininbağlantılarının yapıldığı karttır.
Söndürme kartının anakartla bağlantısı A portundan, mesafe sensörleri E portundan, optik sensörümüz B protunun 0. pininden yapıldı.  Anakarttan ayrıca motorların ve besleme uçlarının bağlantıları için konektör uçları çıkarılmıştır.


Şase: Bataryalar, motorlar, sarhoş teker, mesafe sensörleri ve optik sensörün bağlantısının yapıldığı karttır.
Bu kartta bir çok noktanın göz önünde bulundurulması gerekir.

--Şase kartının keskin uçlara sahip olamaması gerekir. Köşe duvarlardan geçişlerde robotun takılmadan yoluna devam edebilmesi için robotun şasesinin tüm keskin uçları yuvarlatılmalıdır.
--Tekerler şase içerisine gömülmelidir. Köşelerden dönüşlerde genellikle teker çıkıntıları takılabilir. Bunun engellenmesi tekerlerin şaseye gömülmesi kaçınılmazdır.
--Şase büyüklüğünün labirent yol genişliklerine göre ölçülendirilmesi gerekir. Bizim robotumuz bu durum dikkate alınarak 18x13 ebatlarında hazırlandı.
--Şasenin şekli kare ve dikdörtgen olmamalıdır. En uygun şase şekilleri yuvarlak yada balık şeklidir. Bizim robotumuzun şekli balık şekli olarak belirlenmiştir.    

ROBOTUN MALZEME LİSTESİ:

a. PIC 16F877 mikrodenetleyici
b. 6V / 350 RPM DC motor x2
c. GP2D12 10-80cm mesafe sensörü x2
d. Ters akım koruma diyotları x8
e.Tekerlek x2 (çap ve ebat isteğe ve ihtiyaca bağlı olarak değişir.)
f. Sarhoş teker
g. L293 DC motor sürücü (Bir adet anakart bir adet söndürme katı için)
h. CNY 70 optik sensör
ı. 6V 2350mA Lipo batarya
i. 6V / 3000 RPM DC motor (söndürme katı için fan motoru)
j. DIL10 soket erkek ve dişi (data kablosu)

5 yorum:

  1. projenin yazılım kodlarını paylaşmanız mümkün mü acaba? şimdiden teşekkürler

    YanıtlaSil
  2. robot kodlarını vere bilirmisiniz

    YanıtlaSil
  3. örnek bir kod paylaşabilir misiniz

    YanıtlaSil
  4. Sanirim yazinin basinda belirttiginiz dokumanlari paylasmamissiniz insanlari kandirmayin

    YanıtlaSil
  5. peki 16F628A pic ini kullansak olur mu?

    YanıtlaSil