Roleon

PWM Kontrollü Çizgi İzleyen Robot


IJRCS ' 09 1. si Roleon

Daha önceki yapmış olduğum çizgi izleyen robot uygulamaları Lojik mantık olan 1 yada 0 ların tepkisine göre çalışıyordu.Yani ya çalışıyordu ya da duruyordu.PWM kontrolünde ise motor hızını 5 volt yada 0 volttan ziyade bu gerilim değerleri arasında kontrol etmek mümkün.

Devre Şeması :

PWM kontrollü çizgi izleyen robotta işlemci olarak yine PIC16F628 kullanılmıştır.Motor sürücü entegrenin 1. ve 2. motorun enable girişlerine picin b.3 portu yani pwm çıkışı bağlanmıştır.

Devrenin Çalışması  :

Robotta sensörlerin hiçbiri algılamadığı zaman robotta iki motor da %100 hızla dönmektedir.Soldaki sensörlerden biri algıladığı zaman sağ motor %50 hızla dönmekte sol motor durmaktadır.Böylece robot yavaşca virajı alır.Sağdaki sensörlerden biri algıladığında sol motor %50 hızla dönmekte sağ motor durmaktadır ve böylece robot yavaşça virajı alır.

Sensör Kartı :

Robotun Sensör kartında 6 adet CNY 70 kullanılmıştır.Soldaki sensörlerin 3 ü ve sağdaki sensörlerin 3 ü paralel bağlanmıştır.Soldaki sensörlerden biri algıladığında tek sensörden tepki geliyor gibi çalışır.Sağ sensörlerin algılama durumunda sağ sensörden tepki gelmiş gibi çalışır.CNY 70 elektriksel olarak yalıtılmış fakat ışık iletimi ile çalışan bir optokuplördür.Çıkışında bilgi algıladığı zaman 0 volt veren bilgi algılamadığında ise 5 volt veren ( ters mantıkla çalışan ) bir sensördür.Çıkışında siyah algıladığında 5 volt beyaz algıladığında 0 volt verir.

Kullanılan İşlemci :

Mikrokontrolör olarak PIC16F628 i seçilmesinin sebebi, tek kanal pwm çıkışının bulunması ve iç yapısında bulunan dahili osilatör sayesinde extradan bir devre gerektirmemesi ve kapasitesinin daha büyük olması.Fakat PIC16F628 i kullanırken, bazı pinlerinin özel fonksiyonlarını kapatmak gerekir.Örneğin a portu analog giriş ve karşılaştırıcı özelliğine sahiptir bunları kapatmadan normal giriş çıkış olarak kullanılırsa bazı hatalar meydana gelebilir.Karşılaştırıcıları ve analog girişleri kapatmak için CMCON=7 yazmak yeterlidir.Dahili osilatörü kullanmak için ise ,@ DEVICE pic16f628,intrc_osc_noclkout yazmak yeterli olacaktır. PIC16F628 in PWM çıkışını aktif etmek için aşağıdaki satırlar yazılmalıdır.
DEFINE CCP1_REG PORTB               
DEFINE CCP1_BIT 1 

Motor Sürücü :

Motor sürücü olarak diğer robotlarda kullanılan L293D motor sürücü entegresi kullanılmıştır.L293D nin enable girişine b portu bağlanarak pwm ile kontrol sağlanmıştır.

Kullanılan Motorlar :

Robotta Mikro Redüktörlü DC Motor olan 12 volt 746 RPM lik Autotroul motor kullanılmıştır.Robotun torku oldukça azdır.Çizgi izleyen robot için ideal bir motordur.

Robotun Programı :

@ DEVICE pic16F628, MCLR_OFF
@ DEVICE pic16F628, INTRC_OSC_NOCLKOUT

CMCON=7
VRCON=0
DEFINE CCP1_REG PORTB
DEFINE CCP1_BIT 1

'Girişler

input PORTB.0 'girişleri tanımladık
INPUT PORTB.1
INPUT PORTB.2
'Çıkışlar

'çıkışları tanımladık.
OUTPUT PORTB.4
OUTPUT PORTB.5
OUTPUT PORTB.6
OUTPUT PORTB.7
output portb.3

'Değişkenler
SYMBOL SOLCNY=PORTB.0 'portlara değişken ismi verdik.
SYMBOL ORTACNY=PORTB.1
SYMBOL SAGCNY=PORTB.2
SYMBOL SOLILERI=PORTB.4
symbol SOLGERI=PORTB.5
SYMBOL SAGGERI=PORTB.6
SYMBOL SAGILERI=PORTB.7
'--------Ana Döngü------------------
BASLA:
IF SOLCNY=0 AND ORTACNY=0 AND SAGCNY=0 THEN GOSUB ILERI
IF SOLCNY=0 AND ORTACNY=0 AND SAGCNY=1 THEN GOSUB SOLA_DON
IF SOLCNY=0 AND ORTACNY=1 AND SAGCNY=0 THEN GOSUB ILERI
IF SOLCNY=0 AND ORTACNY=1 AND SAGCNY=1 THEN GOSUB SOLA_DON
IF SOLCNY=1 AND ORTACNY=0 AND SAGCNY=0 THEN GOSUB SAGA_DON
IF SOLCNY=1 AND ORTACNY=0 AND SAGCNY=1 THEN GOSUB ILERI
IF SOLCNY=1 AND ORTACNY=1 AND SAGCNY=0 THEN GOSUB SAGA_DON
IF SOLCNY=1 AND ORTACNY=1 AND SAGCNY=1 THEN GOSUB ILERI
GOTO BASLA
END
'---------Etiketler------------------

ILERI:
HPWM 1,255,1000
SOLILERI=1
SAGILERI=1
SOLGERI=0
SAGGERI=0
GOTO BASLA
END

SAGA_DON:
HPWM 1,150,1000
SOLILERI=1
SAGILERI=0
SOLGERI=0
SAGGERI=0
GOTO BASLA
END

SOLA_DON:
HPWM 1,150,1000
SOLILERI=0
SAGILERI=1
SOLGERI=0
SAGGERI=0
GOTO BASLA
END

                  
       Site Tasarımı : Onur YAVUZ
2005-2006 ©
www.electrobotic.org