Çizgi izleyen robotun PIC programı DC motor kontrol ve
sürücü devresine göre yapılacaktır. Çizgi izleyen robot uygulaması ilk robot uygulaması olduğundan PIC
programları aşama aşama verilmiştir...
PİC’in E Port’unda Yürüyen Işık
Şekil 5.30’da görüldüğü gibi DC motor kontrol ve sürücü
devresinin E port’unda 3 adet LED ve buton bulunmaktadır. E port’u giriş
yapıldığında butonların durumları okunabilmektedir. E port’u çıkış yapıldığında
ise LED’lere çıkış verilebilmektedir. Aşağıda E port’undaki LED’lerin yürüyen
ışık şeklinde çalışmasını sağlayacak JAL programı bulunmaktadır. Bu programın DC
motor kontrol ve sürücü devresinde bulunan PIC ve buna bağlı osilatör ve ICSP
soketinin düzgün bir biçimde çalıştığının test edilmesi için kullanılır..
include 16f877_4
include jlib --
\\cizgi1.jal
port_e_direction = 0xF8
forever loop
port_e = 0xFE
delay_500ms — E0 LED’ini yak
port_e = 0xFD
delay_500ms — El LED’ini yak
port_e = 0xFB
delay_500ms — E2 LED’ini yak
end loop
Şekil 5.30’daki DC motor kontrol ve sürücü devresinde E
port’una yerleştirilen LED’lerin anotları birleştirilip +5V’a bağlanmıştır.LED’lerin
yanabilmesi için LED’lerin katoduna bağlı E port’larının pin’leri low yapılmalıdır.
E port’unda bulunan LED’lerin teker teker yakılabilmesi için önce 0xFE sayısı E
port’una gönderilmiştir. Bu sayının 0. bit’i 0 olduğundan PlC’in E0 pin’ine
bağlı LED yanmaktadır. Bir süre beklendikten sonra E port’una 0xFD sayısı
gönderilmiştir. Bu sayının sadece 1, bit’i 0 olduğundanPlC’in E1 pin’ine bağlı
LED yanmaktadır. Bir süre beklendikten sonra E port’una 0xFB sayısı gönderilmiştir.
Bu sayının sadece 2. bit’i0 olduğundan PlC’in E2 pin’ine bağlı LED yanmaktadır.
Bu işlemler sonsuz döngü içerisinde gerçekleştiğinden E port’una bağlı olan
LED’ler devamlı yürüyen ışık şeklinde çalışırlar.
__________________________________________________________
Not: PlC’in E port’una bağlı olan butonlara E port’u çıkış
olduğu durumlarda basılmamalıdır. Aksi durumda PlC’in E port’unun pinleri hasar
görebilir.
----------------------------------------------------------
5.3.2. Çizgi Algılayıcısının LED’lerde Görüntülenmesi
Şekil 5.30’da görüldüğü gibi siyah yolu algılama devresi J7
soketine bağlanmaktadır. J7 soketi PlC’in C0, C1 ve C2 pinlerine bağlanmaktadır
PlC’in C port’unun ilk 3 pin’inin değeri E port’una gönderildiğinde siyah yolu
algılama devresinden gönderilen biigiler PIC’inE port’undaki LED’lerde görünmüş
olmaktadır.
include 16f877_4
include jlib --
\\cizgi2. jal
disable_a_d_functions
port_e_direction = 0xF8
port_c_direction = 0xFF
forever loop
port_e = ! ( port_c & 0x07 )
end loop
Yukarıdaki JAL programında PlC’in E port’unun ilk üç pin’i
çıkış ve C port’u giriş yapılmıştır. Sonsuz döngüde ise PlC’in C port’unun ilk
üç pin’inin değeri E port’una aktarılmaktadır. Şekil 5.30’daki devrede E
port’una bağlı LED’ler low yapıldığında yandıklarından,C port’unun değeri !
operatörü ile terslendikten sonra E porj’una gönderilmektedir. C port’unun ilk
3 pin’inin değerini E port’una aktarmak için PlC’in C port’u 0x07 sayısıyla AND
işlemine tabi tutulmuş ve C port’unun diğer bit’leri maskelenmiştir. Algılayıcılar
beyaz bir yüzeyde iken PlC’e high değerini, siyah bir yüzeyde iken low değerini
göndermektedirler.
DC Motorların Butonlar İle Çalıştırılması
DC motor sürücü devresinin test edilmesi için PlC’in E
port’una bağlı butonlara basıldığında PlC’in D port’undan kontrol edilen DC
motora hareket etmesi için gerekli sayılar gönderilmektedir.
Şekil 5.31: DC motorların alttan görünüşü
Şekil 5.31’de görüldüğü gibi DC motorlar gövdeye birbirleri
ile 180 derece açı ile bağlanmaktadırlar. DC motorların enerji kabloları aynı yönde
bağlansa ve aynı yönde gerilim uygulansa motorlardan birisi robotu ileri,
diğeri robotu geri götürecek şekilde dönmekte dir. Dolayısı ile robotu aynı
yönde götürebilmek için motorlardan birine diğeri ile ters yönde gerilim
uygulanmalıdır. DC motorun yönünü değiştirmek için motorun kablolarını ters
çevirmek yeterlidir. Tablo 5.1’de PlC’in D port’una gönderilecek sayılar ile robotun
hareket şekli görülmektedir.
include 16f877_4
include jlib --
\\cizgi3.jal
disable_a_d_functions
port_e_direction = 0xFF
port_d_direction = 0xF0
port_d = 0
forever loop
if pin_e0 == low then port_d = 0x09 end if
if pin_e1 == low then port_d = 0x06 end if
if pin_e2 == low then port_d = 0x05 end if
end loop
Şekil 5.30’da görüldüğü gibi PlC’in D port’unun ilk dört
pin’i DC motoru kontrol etmek için kullanılmaktadır. PlC’in E port’una bağlı 3
buton ise normalde high, butona basıldığında low konumundadırlar. PlC’in E0
pin’indeki butona basıldığında robotu ileri yöndehareket ettirmek için PlC’in D
port’una 0x09 sayısı gönderilmiştir. PlC’in E1 pin’indeki butona basıldığında
robotu geri yönde hareket ettirmek için PIC’in D port’una 0x06 sayısı
gönderilmiştir. PIC’in E2 pin’indeki butona basıldığında robotu kendi etrafında
döndürmek için PİC’in D port’una 0x05 sayısı gönderilmiştir. Robotun farklı
yönde hareket ettirilmesi için gereken sayılar tablo 5.1’deki gibidir.
Siyah Yolu İzleme Programı
Çizgi izleyen robotun yapımının basit olduğu gibi JAL
programı da oldukça basittir. Robotun motorlarının çalışması siyah yolu
algılama devresine bağımlıdır. Şekil 5.32’de çizgi izleyen robotun önden
görünüşü görülmektedir. Bu robotta PİC’in D0 pin’i high ise sağ motor ileri, D3
pin’i high ise sol motor ileri gitmektedir. Sağ motor PİC’in C0 pin’ine bağlı
algılayıcıya göre, sol motor ise PİC’in C2
pin’ine bağlı algılayıcıya göre çalışmaktadır. PİC’in C port’unun ilk üç
bit’ine bağlı algılayıcılar beyaz bir yüzeyde iken PİC’e high değerini, siyah
bir yüzeyde iken low değerini göndermektedirler.
Şekil 5.32: Çizgi
izleyen robotun motorları, algılayıcıları ve kullanılan pin’ler
include 16f877_4
include jlib -- \\cizgi4.jal
port_e_direction = 0xF8
port_d_direction = 0xF0
port_c_direction = 0xff
port_d = 0
forever loop
if pin_c0 == high then pin_d0 = high else pin_d0 = low end
if
if pin_c2 == high then pin_d3 = high else pin_d3 = low end
if
port_e = ! ( port_c & 0x07 )
end loop
Yukarıdaki JAL programında E port’unun ilk 3 bit’i LED’leri
kullanabilmek için çıkış, D port’unun ilk dört bit’i motorları kontrol
edebilmek için çıkış ve C port’unun ilk 3 bit’i siyah yolu algılama devresini
okuyabilmek için giriş yapılmıştır. Robot ilk anda durması için PIC’in D
port’una 0 değeri gönderilmiştir. Siyah yolu algılama devresinden gelen
değerleri PİC’in E port’unda görmek için port_e= i (port_c& 0x07) program
satırı kullanılmıştır. Çizgi izleyen robotun çalışabilmesi için şekil 5.32’deki
gibi siyah yol algılama devresindeki iki algılayıcıyı kullanmak yeterlidir.
Robotun siyah yolu takip edebilmesi için algılayıcıdan high değeri geldiği
sürece algılayıcı ile aynı taraftaki motorun ileri gitmesi yeterlidir.
Algılayıcılardan herhangi biri örneğin sol algılayıcıdan low bilgisinin gelmesi
yolun robotun soluna doğru kıvrıldığını göstermektedir. Bu durumda robotun sola
doğru dönebilmesi için sol motor durdurulur ve sağ motor çalışmaya devam eder.
Sol algılayıcı high olana kadar bu işleme devam edilir. Yol düzleşip sol
algılayıcı high olduğunda robot ileri gitmeye devam etmektedir. Çizgi izleyen
robotun sola dönüşü şekil 5.33’deki gibidir.
Hiç yorum yok:
Yorum Gönder