Trafik Sinyalizasyonu Devremde 4 yol ağzındaki trafik ışıklarının koordinasyonlarını bir 89c51rc2 mikro denetleyicisiyle başarmış bulunmaktayım.
Program iki kademeden oluşmaktadır. Birincisi ışıkların yanma sürelerini belirlemek amacı ile gecikme yaratmak için oluşturulmuş zaman(n) fonksiyonudur. Bu fonksiyonda “n” yerine yazılan değer kadar (n=saniye) programda gecikme oluşur. İkinci kısım ise main() ana programın yazılı olduğu kısımdır. Bu kısımda ledlerin yanıp sönme sıraları ve bekleme süreleri (“zaman(n)” fonksiyonu ile) gerçekleştirilmiştir.
Kullanılan Malzemeler
- 89c51RC2
- LCC-SKT44 (soket)
- Kristal : 12MHz
- Kapasitör : 22pF x2 – 10uF
- Direnç : 10K – 330 x12
- Kırmızı Led : x8
- Sarı Led : x8
- Yeşil Led :x8
- Delikli Pertinaks
- Klemens(ikili) : x7
- L7805
- Zil teli
Trafik Sinyalizasyon Devre Şeması
LCC-SKT44 Soket Bacak bağlantıları
89c51RC2 PLCC Bacak bağlantıları
Programın Çalışması
Öncelikle programda kullanılacak olan kütüphanelerin tanımlamaları yapılmıştır.
#include < t89c51Rx2.h > (Kullanılan mikro denetleyicinin kütüphanesi)
#include < stdio.h > (standart input output)
Daha sonra programdaki portların her bitinin ayrı bir şekilde kullanılmasından kaynaklanacak karışıklığı gidermek amacıyla portlara ilgili yolun kırmızı-sarı-yeşil ışıklarına ait atamaları yapılmıştır.
#define yol4yesil P2_5 #define yol4sari P2_4 #define yol4kirmizi P2_3 #define yol3yesil P2_2 #define yol3sari P2_1 #define yol3kirmizi P2_0 #define yol2yesil P3_5 #define yol2sari P3_4 #define yol2kirmizi P3_3 #define yol1yesil P3_2 #define yol1sari P3_1 #define yol1kirmizi P3_0
a-) “zaman(n)” Fonksiyonunun çalışması
Zaman fonksiyonu devrenin çalışması esnasında devreyi herhangi bir konumda istenilen süre bekletilmek amacıyla gerçekleştirilmiştir. Fonksiyonun çalışma prensibi şu şekildedir.
Mikro Denetleyici osilatör olarak 12MHzlik kristal kullandığı için ve bu mikro denetleyicinin zamanlayıcıları da kristalin 1/12 si kadar hızla saydıkları için zamanlayıcıyı mod1 de -50000 e kadar 20 defa saydırmamız bir saniyelik bir gecikmeye yol açmaktadır. Bu gecikmeyi de kullanıcının fonksiyonu çağırırken girdiği sayısal değer (n) kadar tekrarlatırsak istenilen gecikme fonksiyonu elde edilmiş bulunmaktadır.
b-) “main()” Ana programın çalışması
Öncelikle programda kullanılacak değişkenler tanımlanmıştır.
int sari=1,kirmizi=1,yesil=5;
“sari” değişkeni programın işleyişindeki bütün sarı ışıkların yanma sürelerini belirlemektedir.
“kirmizi” değişkeni programın işleyişindeki bütün kırmızı ışıkların yanma sürelerini belirlemektedir.
“yesil” değişkeni programın işleyişindeki bütün yeşil ışıkların yanma sürelerini belirlemektedir.
Saymasını istediğimiz değer 2 bytelık bir değer içerisindedir dolayısıyla mikro denetleyicinin zamanlayıcısı 16 bitlik geri yüklemesiz olan mod1’e kurulmuştur.
TMOD=0x01;
Ledlerin sağlamlık kontrolü amacıyla programın başlangıcında bütün ledler 5 saniye yanık durup daha sonra çıkışlar temizlenip ve bütün yollara kırmızı ışık vererek 2 saniye bekledikten sonra “while(1)” kısır döngüsüne girmektedir.
P2=255; //bütün ışıklar kontrol amacıyla yanar P3=255; zaman(5); //5 saniye bekler P2=0; //çıkışlar temizlenir P3=0; yol1kirmizi=1; //bütün yollara kırmızı ışık yanar yol2kirmizi=1; yol3kirmizi=1; yol4kirmizi=1; zaman(2); //2 saniye bekler
Bu durumda bütün yollara kırmızı ışık verilmektedir. Bundan sonra yapılan işlem ışıkların istenilen konuma getirilip ilgili bekleme fonksiyonunun (“zaman(n)”) çağırılmasıdır.
Örnek: Birinci yola yeşil ışık vermek için;
yol1kirmizi=0; yol1yesil=1; //1.yol için yeşil ışık zaman(yesil);
NOT: Bu Programda unutulmaması gereken çok önemli noktalardan birisi işlemler sırasında bir sonraki basamağa geçerken önceki işlemde değiştirilmiş olan ışığın eski konumuna getirilmesidir.
Örnek :
yol1yesil=0; yol1sari=1; //1.yol için sarı ışık zaman(sari); yol1sari=0; yol1kirmizi=1; //1.yol için kırmızı ışık zaman(kirmizi);
“while(1)” kısır döngüsünün içinde bütün yollara birer kez geçiş hakkı verilmiş ilgili ışıkların süreleri kadar yakılıp söndürülmüştür. Program bu döngünün içinden hiçbir koşulda çıkmayacağı için program kapatılana kadar kendisini tekrarlayacaktır.
Projeyi Hazırlayan: Abdullah Onur Baysal Emeği geçen Kişilere Teşekkürler
Şifre-Pass: 320volt.com
Yayım tarihi: 2008/10/17 Etiketler: 89C51RC2, atmel avr projeleri, c programı, LCC SKT44, PLCC, Sinyalizasyon
arkadaşlar bana acil tırafik ışıklarının çalışma pırensibi lazım nerden bula bilirim acaba
Ellerinize sağlık çok güzel bir çalışma olmuş 🙂
Çok teşekkürler