1000 kişiden bir kişi için ! devam.... 320volt blog

Elektronik Devreler Projeler » Microchip PIC devreleri bilgiler »

PIC16F84 Renk Algılayan Robot Kol Projesi Jal ile

JAL (Just Another Language)

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

Robot Flexiglass parçaların gösterimi

Parça 1; Robotun üzerine sabitlendiği ve kontrol devresinin yerleştirildiği parçadır.

robot sabitleme

Parça 2; 1 nolu motorun sabitlendiği parçadır.

robotun sabitlenmesi

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.

robot hareket

Parça 4; Robota ileri geri hareketini yaptıran, 2 ve 3 nolu motorlara sabitlenmiş parçalardır.

robot harekati

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.

robot mekanik

Parça 6; Tutma mekanizmasının üzerine oturduğu parça

tutma mekanizması robot

Parça 7; Tutma mekanizması

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ı

Kontrol devresinin blok şeması

Devre Şeması

robot devresi

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

YAZININ DİĞER SAYFALARI: 1 2 3

sakla feedmail facebook twit  

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;

online elektronik komponent satışı

 
  1. kzm diyor ki:

    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.

  2. onur diyor ki:

    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.

  3. mehmet diyor ki:

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

  4. onur ÇİÇEK diyor ki:

    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.

  5. aksusafak diyor ki:

    Emeğinize sağlık. Bu devreyi proje olarak yapacağız da acaba malzeme listesini tam olarak nasıl temin edebiliriz…

Yorum yapın

Doğrulama: (kutuyu işaretleyiniz)


  • Lütfen Türkçe imla kurallarına dikkat etmeye özen gösteriniz.
  • Yorumunuz yönetici tarafından kontrol edilmeden yayımlanmaz.
  • Paylaşılan devrelerin malzeme listesini istemeyiniz. Olsa zaten paylaşılırdı şema üzerinden listeyi çıkartabilirsiniz
  • Gavatar sitesine avatarınızı yükleyebilirsiniz.
sponsor

sponsor

diptrace

diptrace

sponsor

sponsor

embeddedtrading

embeddedtrading

sponsor

sponsor

seo

Seo Danışmanlığı

feed save face twit  
Translate: TürkçeEnglish

Forum Son İletiler