PIC16F84 Renk Algılayan Robot Kol Projesi Jal ile

JAL (Just Another Language)
PIC’ lere istenilen işlevleri yaptırabilmek için uygun programın herhangi bir editör de yazılıp makine diline çevrildikten sonra programlayıcı vasıtasıyla PIC’e yüklenmesi gerekir. Programlar genellikle assembler dilinde yazılır. Ancak assembler dilinin karmaşıklığı ve hata ayıklamada karşılaşılacak güçlüklerden dolayı diğer derleyiciler tercih edilmektedir. Bu projede JAL (Just Another Language) programlama dili kullanılmıştır. JAL’in son sürümü (04-22) 01.05.2001 itibariyle 16F84 ve 16F877‘yi desteklemektedir.
Projede Kullanılan JAL Komutları
Port Tanımlama İşlemleri
Port_b_direction = all_output -----PortB’nin tüm uçları çıkış yapılır. Port_a_direction = all_input -------PortA’nın tüm uçları giriş yapılır. Pin_b0_direction = output ---------PortB’nin 0.biti çıkış yapılır. Pin_a5_direction = in ---------PortA’nın 5.biti giriş yapılır.
For : Döngü komutudur. İşlemin istenilen sayıda tekrar edilmesi için kullanılmaktadır.
ÖRNEK:
for 20 loop pos4 = 100 pos7 = 90 puls delay_1ms(15) end loop
Forever: Sonsuz döngü oluşturmak için kullanılmaktadır.
ÖRNEK:
forever loop for 20 loop pos4 = 100 pos7 = 90 puls delay_1ms(15) end loop end loop
Assembler: Programın içerisinde Assembler komutları kullanılacaksa bu komut kullanılır.
ÖRNEK1: Eğer bir satır Assembler komutu kullanılacaksa;
asm clrwdt
ÖRNEK2: Eğer Assembler bloğu kullanılacaksa;
assembler local loop, done clrf n loop: btfsc x,0 goto done incfsz n,f rrf x goto loop done: end assembler
if : Karşılaştırma işlemlerinde kullanılır.
ÖRNEK :
if x = = 1 then thepin =1 else thepin = 0 end if PROCEDURELER
Parametresiz Procedure
ÖRNEK:
procedure puls is pulsout(1,pos1) return end procedure
Parametreli Procedure
ÖRNEK1: Ana programdan değer alan procedure
procedure yuruyen (byte in gecikme) is While pin_b7! = high Delay_1ms(gecikme) port_b = port_b >> 1 end loop end procedure
ÖRNEK2: Ana programa değer gönderen procedure
procedure zero (byte out x) is begin x = 0 end procedure
Fonksiyonlar
ÖRNEK:
function reverse (byte in x) return byte is for 8 loop Delay_1ms(x) end loop end function
Renk algılayan robot kol tasarımı
Mekanik: Projemizin mekaniğinde flexiglass malzemesi kullanılmıştır. Bu malzemenin seçilmesinin sebebi kolay işlenebilir olması ve dayanıklılığının fazla olmasıdır. Aşağıda robotun bir resmi ve kullanılan flexiglass parçaların şekilleri ölçüleriyle birlikte verilmiştir.
Robot; Flexiglass parçaların gösterimi
Parça 1; Robotun üzerine sabitlendiği ve kontrol devresinin yerleştirildiği parçadır.
Parça 2; 1 nolu motorun sabitlendiği parçadır.
Parça 3; 1 nolu motorun hareket ettirdiği, 2 ve 3 nolu motorların üzerinde bulunduğu, sağ – sol hareketini yapan parçadır.
Parça 4; Robota ileri geri hareketini yaptıran, 2 ve 3 nolu motorlara sabitlenmiş parçalardır.
Parça 5; Robotun dirsek kısmında bulunan motorun hareket ettirdiği ve aşağı – yukarı hareketinin yapılmasını sağlayan parçalardır.
Parça 6; Tutma mekanizmasının üzerine oturduğu parça

Parça 7; Tutma mekanizması

Ayrıca robotun tüm mekaniğinde toplam 43 adet vida kullanılmıştır. Bu vidaların ayrıntılı özellikleri aşağıda verilmiştir.
- - 2 adet yıldız tornavida kanallı kesik konik silindir başlı M2,5 vida
- - 10 adet yıldız tornavida kanallı kesik konik silindir başlı M2 vida
- - 7 adet düz tornavida kanallı kesik konik silindir başlı M4 vida
- - 24 adet düz tornavida kanallı kesik konik silindir başlı M3 vida
Kontrol Devresi
Kontrol devresinin girişine topların geldiği yerde bulunan 3 adet TSLX257 sensörlerin çıkışı bağlanmıştır. Bu çıkışlar analog dijital çeviricinin (LM324) karşılaştırıcı giriş uçlarında artı (+) uçlarına bağlanmıştır (3,5,10 nolu uçlar). Eksi (-) uçlarına ise sensörlerin çalıştığı ortama göre ayarlanması gereken referans gerilimi verilmiştir. (Projemizde kullandığımız referans gerilimi 2,5V’tur.) Karşılaştırıcı op-ampların çıkışları olan 1,7 ve 8 nolu uçlar sırasıyla PIC’in 18 (RA1), 17 (RA0) ve 1 (RA2) uçlarına bağlanmıştır. 16F84’ün 9 (RB3), 10 (RB4), 11 (RB5), 12 (RB6) ve 13 (RB7) nolu çıkış uçları sırasıyla 1,2,3,4 ve 5 nolu servo motorların data uçlarına bağlanmıştır.
Kontrol devresinin blok şeması

Devre Şeması
Yazılım
Robot Kol projemizde PIC16F84 mikro denetleyicisini programlayabilmek için JAL ( Just Another Language ) programlama dili kullanılmıştır. Bu dil yüksek seviyeli bir dil olup assembler diline göre daha kolay bir program diline sahiptir. Bu bölümde robot kol programının temel mantığı ve kullanılan prosedurlerin açıklaması yer almaktadır. Kullanılan JAL versiyonu 0.4.59.win32 dir.
Ana Program :
include 16f84_4 include jlib include pulsout_4 include proje_4 port_a_direction = all_input port_b_direction = all_output port_a = 0 port_b = 0 forever loop if ( pin_a0 == low ) & ( pin_a1 == high ) & ( pin_a2 == low ) then git kirmizi elsif ( pin_a0 == high ) & ( pin_a1 == low ) & ( pin_a2 == low ) then git mavi elsif ( pin_a0 == high ) & ( pin_a1 == low ) & ( pin_a2 == high ) then git yesil else ilkkonum end if end loop
Kullanılan Prosedürler:
Proje_4 Uniti: include 16f84_4 include jlib include pulsout_4 port_b_direction = all_output var byte pos4,pos5,pos6,pos7,pos8 procedure puls is pulsout(4 ,pos4 ) pulsout(5 ,pos5 ) pulsout(6 ,pos6 ) pulsout(7 ,pos7 ) pulsout(8 ,pos8 ) return end procedure procedure git is for 30 loop pos4 = 90 pos5 = 94 pos6 = 94 pos7 = 94 pos8 = 58 puls delay_1ms(15) end loop for 30 loop puls delay_1ms(15) end loop for 30 loop pos4 = 119 puls delay_1ms(15) end loop for 30 loop puls delay_1ms(15) end loop for 30 loop pos7 = 103 puls delay_1ms(15) end loop for 30 loop puls delay_1ms(15) end loop for 30 loop pos8 = 72 puls delay_1ms(15) end loop for 30 loop puls delay_1ms(15) end loop for 30 loop pos5 = 105 pos6 = 105 puls delay_1ms(15) end loop for 30 loop puls delay_1ms(15) end loop end procedure procedure mavi is for 30 loop pos4 = 90 puls delay_1ms(15) end loop for 30 loop puls delay_1ms(15) end loop for 30 loop pos5 = 75 pos6 = 75 pos7 = 75 puls delay_1ms(15) end loop for 30 loop puls delay_1ms(15) end loop for 30 loop pos8 = 58 puls delay_1ms(15) end loop for 30 loop puls delay_1ms(15) end loop end procedure procedure yesil is for 30 loop pos4 = 63 puls delay_1ms(15) end loop for 30 loop puls delay_1ms(15) end loop for 30 loop pos5 = 78 pos6 = 78 pos7 = 90 puls delay_1ms(15) end loop for 30 loop puls delay_1ms(15) end loop for 30 loop pos8 = 58 puls delay_1ms(15) end loop for 30 loop puls delay_1ms(15) end loop end procedure procedure kirmizi is for 30 loop pos4 = 77 puls delay_1ms(15) end loop for 30 loop puls delay_1ms(15) end loop for 30 loop pos5 = 80 pos6 = 80 pos7 = 90 puls delay_1ms(15) end loop for 30 loop puls delay_1ms(15) end loop for 30 loop pos8 = 58 puls delay_1ms(15) end loop for 30 loop puls delay_1ms(15) end loop end procedure procedure ilkkonum is for 30 loop pos4 = 90 pos5 = 120 pos6 = 120 pos7 = 110 pos8 = 58 puls delay_1ms(15) end loop end procedure
Robotun Çalışması
Robotun herhangi bir cisim algılamadığı andaki konumu

Robot herhangi bir cisim algılamadığı zaman mikrodenetleyici içerisindeki yazılımda bulunan “ilk konum” prosedürü çalışır ve yukarıda görülen şekildeki konumda bekler. Bu prosedürün içerisindeki açı değerleri değiştirilerek istenilen konumlarda beklemesi sağlanabilmektedir.
Robotun algıladığı cismi tutması

Bir cisim algılandıktan sonra “git” prosedürü devreye girer ve şekildeki gibi cisim tutulur. Sensörlerden gelen sinyale göre cismin rengine göre “yesil”, “mavi” veya “kirmizi” prosedürlerinden biri çalışarak aşağıdaki şekilde görüldüğü gibi cisim rengine ait kutuya bırakılır.
Cismin rengine ait kutuya bırakılması

Sensörün çalışma prensibi

Sensörler üzerine düşen renkli ışığın şiddetine göre 0 ile 5 V arasında bir voltaj üretmektedir. Bu çalışmada, sensörleri tetikleyebilmek için cismin altına sensörlerin göremeyeceği şekilde beyaz bir ışık kaynağı yerleştirilmiştir. Bu ışık kaynağının üzerine gelen cismin renginin yeşil olduğu farzedilirse, cisimden yansıyan ışığın rengi yeşil olacaktır. Böylece yeşil sensör diğer sensörlere göre daha fazla çıkış voltajı verecektir. Bu da yeşil renginin ayırt edilmesini sağlamaktadır.
|
CİSİMLER |
SENSÖRLER |
||
|
Kırmızı Sensör |
Yeşil Sensör |
Mavi Sensör |
|
|
Kırmızı Cisim |
4,51 |
1,47 |
1,95 |
|
Yeşil Cisim |
0,93 |
4,20 |
1,31 |
|
Mavi Cisim |
1,65 |
0,82 |
3,98 |
7.Sonuç ve Değerlendirme
Yukarıda özellikleri anlatılan robot kol sabit bir konumdaki cisimleri tutma mekanizması ve renk sensörleri yardımıyla cisimleri rengine göre sınıflamaktadır. Robot en fazla 4 cm çapındaki cisimleri tutabilmekte ve 250 gr ağırlığındaki cisimleri kaldırabilmektedir
Kullanılan sensörler, üzerlerine düşen ışığın şiddetine göre çıkış verdikleri için robotun bulunduğu ortamın ışığı renklerin ayırt edilmesinde problem yaratmaktadır. Bunu önlemek için sensörlerin gün ışığından iyi bir şekilde yalıtılması gerekmektedir. Programlanabilir renk sensörleri kullanılmış ve robot kola bir bilek eklenmiş olsaydı çalışma kararlılığı ve hareket kabiliyeti daha yüksek olurdu.
Kaynaklar
1. http://www.robotics.com/trilobot/index.html
2. http://www.geocities.com/CapeCanaveral/Station/2981/index.html
3. http://www.frc.ri.cmu.edu/robotics-faq/TOC.html
4. http://labweb.mech.nwu.edu/mechatronics/design_ref/actuators/Theory on DC
motors.html
5. http://labweb.mech.nwu.edu/mechatronics/actuators/servo_motor_modify.html
6. Robot Institute of America, 1979
7. Antrak El Kitabı, 1996
8. Antrak Gazetesi, www.antrak.org.tr/gazete
9. MPASM and MPLINK User Guide, Microchip Technology Inc. 2003
10. PIC16F877 Micro Controller Data Book, Microchip Technology Inc. 2003
11. Otomatik Kontrol Sistemleri, Benjamin C.Kuo
12. http://www. Lynxmotion.com
13. http://www.Taosinc.com
Etiketler: algılama, jal robot, mekanik, motor, PIC16F84, robot, robot kol, robot yapımı, sensörler, servo motorlar
Yazar: gevv
Yazarımızın 320volt.com Blog üzerinde şu an okuduğunuz yazı dahil 1893 yazısı bulunmaktadır. Yazarımız hakkında bilgileri ve diğer yazılarını görmek için bakınız; gevv


















Yazılar e-postanıza gönderilsin
Gerçekten çok harika bir çalışma emeği geçenlerin ellerine sağlık.Üniversitede bitirme ödevinde bilgi olarak kullanabileceği güzel bir şey.Çok teşekkürler.
Abi çok süper bir şey bana bunun tam detaylı çizimi ve mazemelerini, baskı devresini gerekli olan şeyleri versen rica etsem ben meslek lisesi öğrencisiyim hocamız çok özlü bir çalışma istedi yardım edresen çok minettar kalacağım emeğin için çok teşekür ederim iyi çalışmalar saygılarımla.
gercekten elinize sağlık.bende böyle bir çalışma yapıyorum. renk algılatma islemini yaptım ama robotun mekanik kısmında takıldım .eğer yardımcı olursanız sevinirim..
Arkadaşlar biz lisedeyken daha güzelini yapmıştık pnomatik olarak hemde ödüllüydü türkiyeden avrupaya gidecek 5 projeden birisiydi öteki dört projede üniversite projesiydi zaten şimdi üniversitedeyim böyle bişeyleri tekrar farklı bir yoldan yapmayı düşünüyom ilham verdiniz teşekkür ederim.
Emeğinize sağlık. Bu devreyi proje olarak yapacağız da acaba malzeme listesini tam olarak nasıl temin edebiliriz…