21 Mayıs 2013 Salı

SUMO ROBOT'UN DEVAMI



Merhaba arkadaşlar geçen hafta kaldığımız yerden devam edelim...
Elektronik Kısımlar:
Basit Kontrol:

Gövdenin üretimi bittikten sonra motorlarınızın gövdeyi taşıyıp taşımadığına ve robotunuzun hangi hızla gideceğine bakmak için basit bir kontrol yapmanız oldukça faydalıdır. Bunun için yapılması gereken motorların çalışma gerilimini sağlayacak miktarda pili doğrudan motorlara bağlamaktır. Bunun için motorlarınızdan çıkan kabloları pilin kutuplarına değdirmeniz yeterlidir. Her iki motoru da takıp deneyin. Motorları ters ya da düz bağlayıp robotunuzun ileri, geri gitmesini ve sağa ve sola dönmesini gözleyin. Eğer mekanik bir sorun yoksa ve tasarımızdan memnunsanız artık robotunuza bir kontrol kartı üretebilirsiniz.


Baskı Devre:

Robotunuza bir kontrol kartı üretmek için şekil 9'daki baskı devre şemasından faydalanabiliriz. Verilen şemada uzaklık algılayıcısı olarak sharp GP2D02, siyah beyaz algılayıcısı olarak CNY70 kullanılmıştır. Uzaklık algılayıcı rakibin görülmesini, CNY70 algılayıcıları ise pistin dışına çıkılmamasını sağlar. Tüm bu elemanlardan gelen bilgiler mikrodenetleyicide işleme konur ve motorların mikrodenetleyicideki yazılım sayesinde hareket etmesi sağlanır. Verilen örnek program da bu şemaya göre yazılmıştır. Şekil 7'de kullanılabilecek bazı malzemeler gösterilmiştir.

Verilen şemada kullanılan elemanlar:

- PIC 16F84A mikrodenetleyici 1 Adet
- L293D motor sürücü tümleşik devre 1 Adet
- LM7805 5V'luk regulator 1 Adet
- Sharp CP2D02 veya GP2D02 uzaklık algılayıcı 1 Adet
- CNY70 siyah-beyaz algılayıcı 2 Adet
- 4'lü Klemens 1 Adet
- 2'li Klemens 4 Adet
- Herhangi renkte bir LED 1 Adet
- 4 MHz'lik kristal 1 Adet
- 100 K Ohmluk potansiyometre 1 Adet
- 22pF'lık kondansatör 2 Adet
- 470uF'lık kondansatör 1 Adet
- 100nF'lık kondansatör 1 Adet
- 10K Ohmluk direnç 1 Adet
- LED'i 5 Voltta sürecek uygun direnç 3 Adet
- 1N4148 diyotu 1 Adet
- 18'lik dip soket 1 Adet
- 16'lık dip soket 1 Adet

Devrede kullanılan elemanlar baskı devrede (şekil 9) yerlerine oturtulduğunda şekil 8'deki bağlantılar yapılmış olur. Devrede TPR toprak (yani besleme kaynağınızın negatif kutbu), BSM besleme anlamına gelir. L293D Motor sürücü entegresinde ise SagM ve SolM, sağ ve sol motorları, I ileri, G geri ve g ise giriş anlamını taşımaktadır. Baskı devre şemasında görülen kırmızı yollar (3 adet) ise tek yüzlü baskı devrede bağlanması mümkün olmayan yollardır, bunları iki ucundaki deliklerden kablo kullanarak bağlayınız ve kablonun iki ucunu deliklere lehimleyiniz.

Klemensler kabloların kolayca ve sorunsuz çıkarılıp takılması içindir. CNY70 algılayıcısını kullanabilmek için şekil 11'de verilen devre ise ayrıca üretilecektir ve algılayıcı robotun tabanında nereye konacaksa oraya monte edilecektir. Bu devre küçük bir parça pertinaksa yapılabilir. Algılayıcılarınız için gereken fazladan +5V ve toprağı ise sol üst köşede fazladan gözüken ikili klemensin bacaklarından alabilirsiniz.


Sharp GP2D02 Uzaklık Algılayıcısı:
  
  Kızılötesi ışık göndererek ışığın geri dönüş açısını okuyan ve bu şekilde uzaklık tayin eden Sharp GP2D02 algılayıcısının genelde piyasada GP2D02 ve GP2D05 modelleri bulunur.

Sharp GP2D02 algılayıcısı ile 10-80 cm arası uzaklıklar okunabilir. Okunan değerler ise 0 ile 255 arası sayılara karşılık gelir. Ancak arada ters orantı vardır, yani okunan büyük bir değer karşıdaki cismin yakında olduğu anlamına gelir. Bu algılayıcı kullanılırken şekil 7'daki gibi bir adet 1N4148 diyotunu bağlamak gerekir. Aksi taktirde sharp GP2D02 bozulabilir. Ayrıca besleme voltajının 5 Voltun üstüne çıkması da algılayıcıya zarar verir. Beslemenin 5 Voltun altına inmesi ise yapılan ölçümlerin hassasiyetini düşürür.


             Şekil 6 : Daha önce de verilmiş olan programlayıcı şeması

                                       
             Şekil 7 : Sharp algılayıcısının kontrol kartına bağlanması
                       Şekil 8 : Sumo Kontrol Kartı - ISIS Simülasyonu
               Şekil 9 : Baskı devrenin ARES programında çizimi

                                               
              Şekil 10 : Baskı devrenin taban kısmı (Birebir ebatında)
                           Şekil 11 : Örnek CNY70 bağlantısı


Programlama :
Basit Sumo Robot Programı:

PIC Basic dilinde yazılmış ve Micro Code Studio derleyicisinde düzenlenmiş bu örnek program oldukça basittir. Sumo robotunuzu yapıp sorunsuz çalıştırdıktan sonra yaratıcı düşünerek çok çeşitli programlar yazabilirsiniz. Örneğin algılayıcı sayısı arttırılarak ve bulanık mantık kullanılarak oldukça başarılı sumo programları yazılabilir.

INCLUDE "modedefs.bas" ;BU YÖNTEM İLE SHARP ALGILAYICISINI OKUYACAĞIZ


SYMBOL SAGILERI = PORTB.0 ;MOTORLARI TANIMLADIK


SYMBOL SAGGERI = PORTB.1


SYMBOL SOLGERI = PORTB.2


SYMBOL SOLILERI = PORTB.3


SYMBOL CNYSAG = PORTB.4 ;SIYAH-BEYAZ ALGILAYICILARI TANIMLADIK


SYMBOL CNYSOL = PORTB.5


SAAT VAR PORTB.6


;UZAKLIK ALGILAYICININ BACAKLARINA İSİM VERDİK


BILGI VAR PORTB.7


TRISB = %10110000 ;GİRİŞ VE ÇIKIŞLARI AYARLADIK


MES CON 80


UZAKLIK VAR BYTE


UZAKLIK1 VAR BYTE


DONUS VAR BIT


KONTROL VAR WORD


BULDU VAR BIT


BIRIM VAR BYTE


N VAR BYTE

;***** ANA DÖNGÜ

GOSUB DUR ;YARIŞMA KURALINA GÖRE EN BAŞTA BEKLENMESİ GEREKEN


PAUSE 5000 ;5 SANİYELİK SÜRE


GOSUB SAATYONU ;SAAT YÖNÜNDE DÖNEREK YARIŞA BAŞLAMA


PAUSE 10

ANA:


GOSUB OKU


GOSUB DEGERLENDIR


GOTO ANA

DEGERLENDIR:


IF UZAKLIK >= MES THEN ;UZAKLIK DEĞERİ BELİRLİ BİR SAYIDAN BÜYÜKSE


CALL DUZGIT ;RAKİP ROBOTUN YAKIN OLDUĞU ANLAŞILIR


PAUSE 1 ;VE ROBOT HEMEN DÜZ GİTMEYE BAŞLAR ENDIF


RETURN

;***** TEKER HAREKETİ


DUZGIT:

HIGH SAGILERI


HIGH SOLILERI


LOW SAGGERI


LOW SOLGERI

RETURN

SAATYONU:


HIGH SAGGERI


LOW SAGILERI


HIGH SOLILERI


LOW SOLGERI


RETURN

TERSI:


HIGH SAGILERI


LOW SAGGERI


HIGH SOLGERI


LOW SOLILERI


RETURN

GERIGIT:


LOW SAGILERI


LOW SOLILERI


HIGH SAGGERI


HIGH SOLGERI


RETURN

DUR:


LOW SAGILERI


LOW SOLILERI


LOW SAGGERI


LOW SOLGERI

RETURN

;-----------SHARP OKUMA RUTİNİ


OKU:


LOW SAAT ;SAATİ (CLOCK) KAPATARAK BİLGİ GELMESİNİ BEKLER


WHILE BILGI=0 ;BİLGİ GELENE KADAR BEKLER


WEND


SHIFTIN BILGI, SAAT, MSBPOST, (UZAKLIK) ;UZAKLIK BİLGİSİNİ SHIFTIN KOMUTU


HIGH YESIL ;ARACILIĞIYLA MSBPOST YÖNTEMİ İLE


PAUSE 5 ;ALIP UZAKLIK DEĞİŞKENİNE ATAR ARDINDAN BİLGİ ALIŞ VERİŞİNİ


RETURN ;KAPATIR


           Şimdiden kolay gelsin…

Hiç yorum yok:

Yorum Gönder