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.
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…
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.
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