19 Nisan 2013 Cuma

Çizgi İzleyen Pic Programları


Ç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