Çizgi İzleyen Robot

Çizgi izleyen robotlar robotikle ilgilenmeye baslayanlarin
ilk deneyimleri olmustur.Bizde ilk projemiz olarak Çizgi
izleyen robot'dan basliyoruz.Daha öncede bahsettigimiz gibi
bir tasarim yaparken düsünülen projenin en basit kismindan
baslamak gerekir.Ilk önce devrenin algoritmasi çikartilmali
ve ne is yapacagi belirlenmelidir.Daha sonrada hangi
elemanlarin hangi mikroislemci tarafindan kontrol
edilecegini çikartip devre kismina geçilmelidir.Ve
sonrasinda yazilim..
Devrenin çalismasi :
Devrenin calismasi sensörler cizgiyi
(yaydigi isik dalgalarini) algiladiklari zaman cikisa 1 (high)
ifadesini verirler.
Algilamaz ise cikista 0 (low) ifadesi görülür. Sensör
cikislarina 74hc14 ( schmitt tiriger )entegresi
kullanilmistir.Bunun kullanmim
sebebi noise i ( beyaz cizgilerin zamanla girilestikden
sonra sensörün algilamasini) engellemektir.Schimit tiriger
entegre çikisi yeterli olmaz ise transistör ile pic e
sürülebilir.
Malzeme Listesi :
1 adet pic16F84A mikroislemci
1 adet L293D motor sürücü entegresi
1 adet 74hc14 schimit tiriger entegresi
3 adet CNY 70 sensör
2 adet DC motor
1 adet 4 mHz kiristal osilatör
3 adet 390 ohm direnç (R1,R2,R3)
3 adet 27k ohm direnç (R4,R5,R6)
2 adet 22p F kondansatör (C1,C2)
Sensörler :
Devrede
sensör kisminda cny 70 sensörü kulanilmistir. Bu sensörün
kullanim amaci robotun çizgiyi algiladiginda pic e sinyal
göndermesidir.Çalisma prensibi su sekildedir ;
Sensörün
içerisinde sekil 1 de görüldügü gibi bir IR ( infrared led ) ve
foto transistör bulunmaktadir. Bu iki eleman birbirinden
elektriksel olarak yalitilmistir.IR led in gönderdigi isik
yüzeye çarparak fototransistör tarafindan algilanir.Yüzey beyaz
ise çikis 0 siyah ise 1 olur .Yani sensör de isik iletimi beyaz
yüzeyde gerçeklesir.Sekil 2 de de sensörün devre şeması
görülmektedir.Tabiki bu demek degildir ki tasarladigimiz robot
sadece beyaz çizgiyi izleyecek .. Eger siyah yüzeyi izlemesini
istiyorsaniz sensör çikislarina içerisinde degil kapisi bulunan
(74hc14) yani tersleyici bulunan bir eleman baglarsaniz ,
sensörler beyaz çizgiyi algiladiginda çikisa 1 verirler
tersleyici entegre çikisi da 0 olur böylece siyah çizgide iz
sürmesi de saglanabilir.
Sekil 1
Sekil 2
Mikroislemci :
Kontrol
kartinda kullandigimiz mikroislemci Pic16f84 dür.Bu
mikroislemcinin 18 adet bacagi bulunmaktadir.Bu bacaklardan 13 ü
i/o (giris /çikis) 1 tanesi MCLR ( reset ) 2 tanesi ( besleme )
2 tanesi OSC ( osilatöre ) baglanan pindir.Bu mikroislemciyi
kullanmamizin sebebi kolay bulunabilmesi ve bazi mikroislemciler
gibi extra yazilim gerektirmemesidir.Sekil 3 de pic16f84
mikroislemcisinin bacak baglantilari gösterilmistir.

Sekil 3
Schimit Triger :
74hc14
schimit tiriger entegresinin görevi girisine uygulanan lojik
ifadeyi çikisindan tersleyerek elde etmemizi saglar. Iç
yapisinda 6 adet degil ( tersleyici ) kapisi bulunur.sekil 4 de
iç yapisi görülmektedir.Robotta bu entegreyi kullanmamizin
sebebi beyaz çizgiyi izleyeceginden ve cny 70 de beyaz çizgiyi
algiladiginda çikisa 0 verecek fakat programlama sirasinda
karisiklik yaratma ihtimali var yani programlama yaparken 1 leri
aktif durum düsünürüz bunda ise 0 lar i düsünmemiz gerekir
..Cny70 çikisini schimit tiriger entegresinden pic e sürersek
çikis 1 olacaktir.Kullanmamizi gerektiren 2. sebep ise beyaz
çizgilerin zamanla asinarak grilesmesi robotun algoritmasini
yaniltabilir (noise) , asil kullanim sebebi budur .
Sekil 4
L293 D Motor Sürücü Entegre :
L293 D
entegresi nin kullanim sebebi motorlar bazen yüksek akim
çekebilirler ve bu durumda kontrol kartinin yanmasina sebep
olabilir , o yüzden bir sürücü entegre kullanilmasi daha iyi
olur. L293D entegresinin 4 giris (in) 4 çikis (out) 4 sasi
(toprak) 3 besleme (vcc) 1 de motora uygulanacak besleme pinleri
bulunmaktadir.Bu sürücü entegre ile 2 motor birbirinden bagimsiz
olarak kontrol edilebilir.Sekil 5 de bacak bagantilari
görülmektedir.
Sekil 5
Motorlar :
Devrede 9
– 12 v gerilim araliginda çalisabilen dc motorlar tercih
edilmistir.Çift yönlü kontrol saglanabilir.Redüktörlü motor yada
disli sistem kullanilirsa güç artacaktir.O yüzden ben yaklasık
200 rpm redüktörlü motor tercih ettim şuan hız yeterli
olmayabilir fakat şasi ağır olduğundan dolayı kullanabileceğim
max. değer buydu :/

Mekanik Aksam :
Robotun
mekaniginde kontrol karti düz bir sunta yada sert bir plastik
üzerine yerlestirilebilir.Mekanik aksamda en çok dikkat edilmesi
gereken nokta sensörlerin dogru yerlestirilmis olmasi ve
motorlarin iyi sabitlenmesidir , aksi taktirde robot hiç
beklenmeyen çalisma durumu sergileyebilir .Tekerlekler genel
olarak kauçuk yada plastik kullanilir , bulunabilir ise eger
kauçuk teker daha çok tercih edilir normalde oyuncak bir arabayi
parçalayarakda birçok mazemesinden yararlanilabilir disli ,
motor , teker gibi ...Arka kisimda 2 motora bagli tekerlek ve ön
ksimda da bagimsiz hareket edebilen yani arkadaki motorlarin
dönüs durumlarina göre yön degistirebilen tekerlek
kullanilmalidir bu durumda da en uygun sarhos teker
kullanimidir.Robotun mekanik ve elektronik aksami bitirildikten
sonra üzerinde programsal ve elektroniksel gelistirmeler ve
farkli degisiklikler yapilabilir.
Programsal Kısım :
Robotun Algoritmasi :
Bir robot
un algoritmasi yapacagi ise yönelik belirlenir. Algoritma ;
robotun islem yaparken izledigi mantiksal yol dur. Çizgi izleyen
robotta ise algoritma çikarilirken CNY çikislari ile motorlarin
kontrolünü saglayacak bir program yazilmasi gerekir.Yani CNY
lerin çikisa verdigi mantiksal ifadeler pic de degerlendirilip
motorlarin kontorlünün saglayacak bir program yazacagiz.CNY ler
beyaz çizgi okuyor ise 1 siyah çizgi okuyor ise 0 bilgisi
verilir , ve CNY lerin verdigi çikisara göre motorlar çalisir
...
Sadece sag CNY high (1) orta ve sol CNY low (o) ise robot
çizginin sol tarafinda kalmis ve sag tarafa dönmelidir.Sol CNY
high (1) orta ve sag CNY low (0) ise robot çizginin sag
tarafinda kalmistir ve sola dönmelidir.Bu durumlar düsünülerek
bir algoritma hazirlanmalidir...
PBASIC
Dilinde Program :
'
www.electrobotic.oRg
trisb=%00000111
portb=0
while(1)
'1
if portb.0=1 and portb.1=1 and portb.2=1 then
portb=0
portb.4=1
portb.5=1
endif
'2
if portb.0=1 and portb.1=1 and portb.2=0 then
portb=0
portb.4=0
portb.5=1
endif
'3
if portb.0=1 and portb.1=0 and portb.2=1 then
portb=0
portb.4=0
portb.5=0
endif
'4
if portb.0=1 and portb.1=0 and portb.2=0 then
portb=0
portb.4=0
portb.5=1
endif
'5
if portb.0=0 and portb.1=1 and portb.2=1 then
portb=0
portb.4=1
portb.5=0
endif
'6
if portb.0=0 and portb.1=1 and portb.2=0 then
portb=0
portb.4=1
portb.5=1
endif
'7
if portb.0=0 and portb.1=0 and portb.2=1 then
portb=0
portb.4=1
portb.5=0
endif
'8
if portb.0=0 and portb.1=0 and portb.2=0 then
portb=0
portb.4=0
portb.5=0
endif
wend
e.force'un
resimleri ;


|