Mikroislemci Kontrollu Prototip Trafik Lambalari ve Geri Sayici

Mikroislemci Kontrollu Prototip Trafik Lambalari ve Geri Sayici
Mahmut KISACIK ve Doç.Dr. Hasan KÖMÜRCÜGIL
Bilgisayar Mühendisligi Bölümü, Dogu Akdeniz Üniversitesi
Gazimagusa-Kuzey Kibris Türk Cumhuriyeti
E-mail:{[email protected], [email protected]}
ÖZETÇE
Günümüzde trafik, herkesin yasaminda sorunlarin basinda yer almayi korumaktadir. Trafikte kaybedilen zaman
gidilecek olan yere gecikme yaratmaktadir. Sürücüler ise bu zamani enaza düsürmek için araçlariyla sürat
yapmak suretiyle kazalari artirmakta, kisaca yasami felç etmektedirler. Hepimizin de bildigi gibi, bu trafik
kargasasini önlemek için trafik lambalari kullanilmaktadir. Bu çalismada, trafik lambalarinin düzenli çalismasi
ile birlikte lambalarin yesili yanmasini beklerken kaç saniye sonra (geri sayici) hareket edebilecegimizi
görmemizi saglayan mikroislemci kontrollu bir prototip devre önerilmektedir.
1. GIRIS
Trafik lambalarinin en önemli görevi trafigi akici bir hale getirmek, yayalara yol hakki vermek ve trafik düzenini
saglamaktir. Trafigin yogun oldugu zamanlarda trafik lambalari daha uzun mesafeli yanip söner, az yogunlasan
yolda ise bunun tersi görülür. Ülkemizde trafik lambalari, araba sayisinin artmasi nedeniyle günden güne
artmaktadir. Bu çalismada, PIC16F84A mikrokontrolcusu kullanilarak yapilan bir prototip trafik lamba
denetleyici tasarimi ve yayalar için öngörülen geri sayicinin çalismasi açiklanmaktadir.
2. PIC16F84A Hakkinda Bilgi
PIC (Peripheral Interface Controller) serisi mikroislemciler, MICROCHIP [1] firmasi tarafindan
gelistirilmis olan hizli ve ucuz mikroislemcilerdir. PIC 16CXX ailesinin amatör elektronikçiler arasinda en çok
taninan ve dünyada üzerinde ençok proje üretilmis, internetin gözdesi olan bireyi PIC16C84 veya yeni adiyla
PIC16F84 veya PIC16F84A’dir. Microchip firmasinin üretmis oldugu PIC16F84A mikrokontrolcusu bu
projenin ana elementidir. PIC16F84A’nin en belirgin özelligi hizli programlanabilmesidir. PIC 16F84A’nin bu
kadar popüler olmasi onun çok iyi bir islemci olmasindan ziyade program belleginin EEPROM (elektrikle
silinip programlanabilen bellek) olmasindan kaynaklanmaktadir. Seri olarak dört adet kabloyla programlanmasi
da diger önemli avantajidir. Bugüne kadar amatörce bir islemciyle ugrasmis herkesin en büyük sikintisi EPROM
veya EPROM tabanli islemcileri programladiktan sonra UltraViole isik kaynagi ile silip tekrar programlamaktir.
Bu çok zahmetli ve bir amatör için ekipman gerektiren yöntem olmustur. Evde üretilmesi zor olan özel
bir programlayici da madalyonun diger yüzüdür. Amatör bir elektronikçi PIC16F84A ile program gelistirmek
için su ekipmana ihtiyaç duyar
a)
PIC16F84A
b)
MS-DOS tabanli bir PC
c)
ASCII Editör (örnegin:Windows’da kullanilan *.txt)
d)
MPASM Assembler [2]
e)
Programlayici/silici
f)
Programlayici için yazilim (PICall)
3. PIC16F84A Kontrollu Prototip Trafik Lamba Tasarimi ve Geri Sayici
PIC16F84A ile trafik lambalari ve geri sayicinin blok semasi Sekil 1’de gösterilmistir. Sistemin ana kontrolcusu
PIC16F84A mikrokontrolcusudur. PIC16F84A iki yöntemle çalistirilir. Birincisi osilatör resonatör (XT), ikincisi
direnç kapasitör (RC) yöntemleridir. Bu çalismada PIC16F84A direnç ve kapasitor ( R = 4.7KΩ ve C = 22 pF )
kullanmak suretiyle çalistirilmistir.
Burada, bir dörtyol kavsaginda bulunan trafik lambalarinin çalisma düzeni ele alinmistir. Bu düzeni söyle
açiklayabiliriz. Iki karsi yol çalisirken diger iki karsi yolda bulunan araçlar kirmizida bekliyor. Çalisan yollarda
saga veya sola dönmek yok. Fakat yayalara yönelik bir trafik lambasi sistemi meydana geliyor. Çünkü, bekleyen
yolun karsi seridindeki araçlar da hareket etmedigi için yayalar kolayca geçebiliyor. Bunlara ek olarak, her
yoldaki lambanin üstünde iki dijitli geri sayici öngörülmüstür.
17
Mikrokontrolcular:
7’lik segment göstergeleri seçmek
için pnp transistörler (BC640)
4 tane 2 dijit 7’lik
segment gösterge
Bu çalismada bir tanesi
trafik
lambalari
için
digeri de geri sayici için
olmak üzere toplam iki
tane
PIC16F84A
kullanilmistir.
Ledlere seri baglanan 470 Ω ’luk
dirençler
240V AC
50 Hz
Trafik lambalari (Leds)
(Yesil,Turuncu,Kirmizi
+5 V DC
Güç kaynagi
Sekil 1 -PIC16F84A ile yapilan prototip trafik lambalari ile geri sayicinin blok semasi
Ledler (trafik lambalari) PIC16F84A’nin portuna 470 Ω ’luk seri dirençler vasitasiyla baglanmistir. Ledlerin
denetimi için, PIC16F84A’in çikis pinlerinin tamami kullanilmistir. Yayalar için ise akilli bir parallel baglanti
yapip beraber dogru bir sekilde çalismalari saglanmistir. Geri sayici, ilk önce parallel olarak iki lamba için
tasarlanmistir. Çünkü, iki karsi yolun ayni bekleme sürelerinin oldugu varsayilmistir. Daha sonra,
PIC16F84A’nin A portundan seçme yaparak bir ikili parallel geri sayim daha yapmak suretiyle iki karsi yollar
ayni bekleme süreleriyle birlikte trafik lambalariyla beraber çalisir hale gelmis oldu.
4.Prototip Trafik Lambalari ve Geri Sayicinin Kontrol Modülü
Kontrol modülü, olabilecek en basit yapida tasarlanmistir. Her sistem için birer PIC16F84A kullanilmistir.
RA2
RA1
RA3
RA0
RA4/TOCK1
MCLR
4.7K
OSC1/CLKIN
OSC2/CLKOUT
PIC16F84A
VSS
+5V
VDD
RB0/INT
RB7
RB1
RB6
RB2
RB5
RB3
RB4
22 nF
2A
2Y
3Y
2A
1Y
2A
1A
4Y
1A
1A
4A
4A
3Y
4Y
Sekil 2 - Prototip trafik lambalari kontrol birimi
18
3A
3A
3A
2Y
4A
1Y
Sekil 2’de, prototip trafik lambalari kontrol birimi gösterilmistir. Burada, 1A birinci araba lambasini, 2A ikinci araba
lambasini, 3A üçüncü araba lambasini, 4A ise dördüncü araba lambasini temsil etmektedir. Ayni sekilde, 1Y birinci yaya
lambasi, 2Y ikinci yaya lambasi, 3Y üçüncü yaya lambasi, 4Y ise dördüncü yaya lambasi olarak öngörülmüstür. Ledlere
bagli olan dirençler 470 Ω dur. Geri sayim göstergesi kontrol birimi Sekil 3’de gösterilmistir. Kisitli yer sebebiyle assembly
program kisminda sadece trafik lambalari kontrol birimine ait olan program verilmistir. Ilgi duyan okuyucular, progamin
geriye kalan kismini bizden temin edebilirler.
RA2
RA1
RA3
RA0
RA4/TOCK1
MCLR
VSS
OSC1/CLKIN
OSC2/CLKOUT
PIC16F84A
VDD
RB0/INT
RB7
RB1
RB6
RB2
RB5
RB3
RB4
+5V
4.7K
22nF
BC640
1-Emiter
2-Base
3-Collector
Gösterge 1
Gösterge 3
Gösterge 1 ile Gösterge 3
parallel çalisir.
Gösterge 2
Gösterge 4
Gösterge 2 ile Gösterge 4
parallel çalisir.
Sekil 3 - PIC16F84A ile geri sayim göstergesi kontrol birimi
ASSEMBLY PROGRAMI
;
1-Traffic Light Control
;
2-MAHMUT KISACIK 991773
;
3-TRAFFIC LIGHT CONTROL USING PIC16F84A
;
4-This program is assembled by MPASMv03.20 and installed into the
;
chip by using the PICALL program
;
5-tyayau1.asm
;
6-8/2/82
;
7-MPASM programming language
LIST p=16f84A ;PIC16F84A is the target processor
#include p16f84A.inc
; Include header file
__CONFIG _RC_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF
; we used resistor/capacitor type oscillator , watch dog timer is off, power up ;timer is on, code protection is off.
19
GOTO Loop54
bcf PORTB,2 ;1ST GREEN OFF
bcf PORTB,4 ;3RD GREEN OFF
bsf PORTB,1 ;1ST ORANGE ON
bsf PORTB,5 ;3RD ORANGE ON
MOVLW 8
MOVWF OuterLoop
Loop3
CALL PAUSE ;Perform the inner portion of
DECFSZ OuterLoop,f ; the loop.
GOTO Loop3
bcf PORTB,1 ;1ST ORANGE OFF
bcf PORTB,5 ;3RD ORANGE OFF
bsf PORTB,0 ;1ST RED ON
bsf PORTB,6 ;3RD RED ON
bsf PORTA,3 ;2ND ORANGE ON
bsf PORTA,0 ;4TH ORANGE ON
MOVLW 8
MOVWF OuterLoop
Loop4
CALL PAUSE ; Perform the inner portion of
DECFSZ OuterLoop,f ; the loop.
GOTO Loop4
bcf PORTA,2 ;2ND RED OFF
bcf PORTA,1 ;4TH RED OFF
bcf PORTA,3 ;2ND ORANGE OFF
bcf PORTA,0 ;4TH ORANGE OFF
bsf PORTB,3 ;2ND GREEN ON
bsf PORTB,7 ;4TH GREEN ON
MOVLW 0X044
MOVWF OuterLoop
Loop5
CALL DELAY
CALL PAUSE ; Perform the inner portion of
DECFSZ OuterLoop,f ; the loop.
GOTO Loop5
MOVLW 0X050
MOVWF OuterLoop
Loop51
CALL DELAY
CALL PAUSE ; Perform the inner portion of
DECFSZ OuterLoop,f ; the loop.
GOTO Loop51
MOVLW 0X050
MOVWF OuterLoop
Loop52
CALL DELAY
CALL PAUSE ; Perform the inner portion of
DECFSZ OuterLoop,f ; the loop.
GOTO Loop52
bcf PORTB,3 ;2ND GREEN OFF
bcf PORTB,7 ;4TH GREEN OFF
bsf PORTA,3 ;2ND ORANGE ON
bsf PORTA,0 ;4TH ORANGE ON
MOVLW 8
MOVWF OuterLoop
Loop6
CALL PAUSE ;Perform the inner portion of
DECFSZ OuterLoop,f ; the loop.
GOTO Loop6
OuterLoop EQU 0x20
;delay loop
Count EQU 0x010
;delay counter
Counthi EQU 0x011
;delay counter
COUNTER11 EQU 0X013 ;delay counter
COUNTER22 EQU 0X014 ;delay counter
ORG 0
START ; Start at the reset vector
clrf PORTB ;clear PORTB, make All Outputs LOW
movlw b'00000000' ;Port B all datas are outputs
bsf STATUS,RP0 ;select Bank 1
movwf TRISB ;enable all outputs on PORTB
bcf STATUS,RP0 ;select Bank 0
movlw b'00000000' ;All Outputs LOW
clrf PORTB ;Make All Outputs LOW
clrf PORTA ;clear PORTA, make All Outputs LOW
movlw b'00000000' ;Port A all datas are outputs
bsf STATUS,RP0 ;select Bank 1
movwf TRISA
;enable all outputs on PORTA
bcf STATUS,RP0 ;select Bank 0
movlw b'00000000' ;All Outputs LOW
movwf PORTA
;Make all outputs low
MAINLOOP
bsf PORTB,0 ;1ST RED ON
bsf PORTA,2 ;2ND RED ON
bsf PORTA,1 ;3RD RED ON
bsf PORTB,6 ;4TH RED ON
bsf PORTB,1 ;1ST ORANGE ON
bsf PORTB,5 ;3RD ORANGE ON
MOVLW 8
MOVWF OuterLoop ;outerloop=8
Loop1
CALL PAUSE ;we call 8 times PAUSE
DECFSZ OuterLoop,f
GOTO Loop1
bcf PORTB,0 ;1ST RED OFF
bcf PORTB,6 ;3RD RED OFF
bcf PORTB,1 ;1ST ORANGE OFF
bcf PORTB,5 ;3RD ORANGE OFF
bsf PORTB,2 ;1ST GREEN ON
bsf PORTB,4 ;3RD GREEN ON
MOVLW 0X057
MOVWF OuterLoop
Loop2
CALL DELAY
CALL PAUSE ;Perform the inner portion of
DECFSZ OuterLoop,f ; the loop.
GOTO Loop2
MOVLW 0X070
MOVWF OuterLoop
Loop55
CALL DELAY
CALL PAUSE ;Perform the inner portion of
DECFSZ OuterLoop,f ; the loop.
GOTO Loop55
MOVLW 0X070
MOVWF OuterLoop
Loop54
CALL DELAY
CALL PAUSE ;Perform the inner portion of
DECFSZ OuterLoop,f ; the loop.
20
bcf PORTA,3 ;2ND ORANGE OFF
bcf PORTA,0 ;4TH ORANGE OFF
goto MAINLOOP
PAUSE
; One Second Delay
movlw 0x099
movwf Count
movlw 0x099
movwf Counthi
Dlay_Loop
decfsz Count, f;when f=0, pass the loop and continue
GoTo Dlay_Loop
decfsz Counthi, f ;when f=0, pass the loop and continue
GoTo Dlay_Loop
Return ;retrurn to where you call PAUSE
DELAY
MOVLW h'0B'
MOVWF COUNTER11
LOOP9
MOVLW h'FF'
MOVWF COUNTER22
LOOP99
DECFSZ COUNTER22,F
GOTO LOOP99
DECFSZ COUNTER11,F
GOTO LOOP9
RETURN
end
5. SONUÇ
Sistem
tasariminda,
mikrokontrolcular
kullanilmasi
gelisen
teknolojinin
vazgeçilmez
gerçegidir. Bu çalismada önerilen dörtyol trafik lambalari ve geri sayicinin basarili bir sekilde
çalistigi görülmüstür. Bu düzenek, istege göre farkli durumlar için de çalisabilir. Örnegin,
hangi isigi söndürüp hangisini yakacaginizi bildiginiz zaman bir yonca kavsagi bile çok
kolaylikla kontrol edilebilir. Bu çalismaya ek olarak yapilan fakat burada belirtilmeyen
dörtyol ortasinda dört tarafli dijital saati ve tarihi de gösteren bir baska düzenek yapmak
mümkündür. Saatin ve tarihin de var oldugu düzenek burada önerilen çalismaya eklendigi
zaman ortaya çikacak olan sistemin kazalarin azalmasina, insanlarimizi bazi konularda
biliçlendirmeye, ve daha derli toplu bir trafik olusmasina neden olacaktir.
6. KAYNAKÇA
[1]
[2]
http://www.microchip.com
http://www.users.globalnet.co.uk/~jchap/tvpropi.htm
21