Telefon ile röleli kapı kontrolü?

yakuli17

Üye
Katılım
15 Eki 2009
Mesajlar
6
Puanları
1
Yaş
32
DEVRENİN ÇALIŞMA ŞEKLİ
Bu devrenin çalışma şekli telefonun çalma sayısı belirli bir sayıya ulaştıgında
hat açma rölesi çekip hattı devreye bağlıyor ve güvenlik için konulmuş olan şifrenin
girilmesini bekliyor eger şifre yanlış girilmiş ise hattı tekrar geri açıyor. Şifre dogru ise komutları bekliyor 1'e basılsıdında 1. röle kontak kapatıyor 3. basılınca açıyor 2'ye basıldıgında 2. röle çekiyor 4 basıldıgında kapatıyor 3 ve 4. tuşlarda 3. röleyi kontrol ediyor.
Devre önce hattan gelen zil caldırma sinyalinin darbe sayısını bakıyor uygun sayı elde edildiginde hat açma rölesini çektirerek hattı açıyor. Ondan sonra güvenlik için konmuş olan şifrenin girilmesini bekliyor eger şifre dogru ise geecek olan komutları bekliyor.


DEVREDE KULLANILAN MALZEMELER
5 x 1N4001 - DİYOT
1 x BZXB5C24 - ZENER DİYOT
1 x BZXBC5V6 - ZENER DİYOT
4 x BC547 - TRANSİSTÖR
1 x PIC16F4A
1 x CM8770 - ENTEGRE
3 x KLEMENS
1 x 4N25 - OPTAKUPLÖR
1 x HAT TRAFOSU
1 x LED DİYOT
3 x ROLE
1 x HAT ROLESİ
1 x 3,579Mhz OSİLATÖR
1 x 4 Mhz OSİLATÖR
15 x DİRENÇ
6 x KONDANSATÖR


DEVRENİN PIC 16F84A İLE KODLARI

#include <pic.h>
#include <delay.c>
#define StD RB4
#define HAT_ROLE RA1
#define LED RA2
#define PALS RA0
// 4MHz osilator
__CONFIG(XT&WDTDIS&PWRTEN);
unsigned char kontrol=0;
unsigned int CX;
//----------------------------------------------------------
// Timer alt programi
// 15 saniye suresince tusa basilmadiysa hatti kapatmak icin
//----------------------------------------------------------
void interrupt kesme(void){
CX++;
if(CX>15000)kontrol=1;
T0IF=0; // bayragi temizle
TMR0=131;
}
//----------------------------------------------------------
//----------------------------------------------------------
// ANA PROGRAM
//----------------------------------------------------------
main(void){
unsigned char i,komut,sifre[5],sayac;
//----------------------------------------------------------
// Port konfigurasyonu
//----------------------------------------------------------
TRISB=0x1F; // PORTB'nin RB5,6,7 pinleri cikis,digerleri giris
TRISA=0x01; // RA0 giris digerleri cikis
//----------------------------------------------------------
PORTB=0; // cihazlar enerjisiz
PORTA=0; // hat kapali, LED sonuk
//-------------------------------------------------------------
//Timer islemleri (kesme suresi=1ms)
//-------------------------------------------------------------
T0CS=0; // Dahili clock
PSA=0; // Prescaler TMR0 icin ayarli
PS0=0; PS1=1; PS2=0; // Oran 1:8
ei(); // butun kesmeler etkin
T0IE=0; //Baslangicta timer pasif
T0IF=0; // bayrak temizle
//-------------------------------------------------------------
// resetten sonra 1 saniye bekle
for(i=0;i<4;i++)DelayMs(250);
basla:
sayac=0; CX=0;
for(;;){ // zil sayisi belirleme dongusu
while(PALS==1);
sayac++;
if(sayac>50){ // Zil sayisi 2
HAT_ROLE=1; // Hatti ac
sifreoku:
for(i=0;i<5;i++){ // sifreyi al
//--------------------------------------
kontrol=0;
TMR0=131; //
T0IE=1; // TIMER ON
//--------------------------------------
while(StD==0){ // tusa basilmadi ise bekle
if(kontrol==1){ // sure>15s ise hatti kapat
HAT_ROLE=0; goto basla; // basa don
}
else {};
}
T0IE=0; CX=0; // Tusa basildi ise Timer'i durdur, CX'i sifirla
// Boylece yeni bir 15s'lik ek sure kazanilmis olur
sifre=PORTB&0x0F; // sifreyi oku

while(StD==1); // tus basili ise bekle
}
//--------------------------------------
// sifrenin son hanesi * olmalidir
//--------Sifre konrol------------------
if(sifre[0]==1 && sifre[1]==2 && sifre[2]==3 && sifre[3]==4 && sifre[4]==11){
// 11 degeri tus takimindaki * tusuna karsilik gelir.
LED=1; // sifre dogru ise LED'i yak
for(;;){
while(StD==0); // cihazlar icin komut bekle
komut=PORTB&0x0F;
if(komut==1)RB5=1; // cihaz 1 ON
if(komut==2)RB6=1;
if(komut==3)RB7=1;
if(komut==4)RB5=0; // cihaz 1 OFF
if(komut==5)RB6=0;
if(komut==6)RB7=0;
if(komut==12){ // # tusuna basildi ise hatti kapat
HAT_ROLE=0; LED=0; goto basla;
// Cihazlarin ON/OFF durumlari degismeden kalir.
}
}
//--------------------------------------
}
else{
goto sifreoku; //sifre yanlis ise tekrar sifre okumaya git
}
}
else{ // sayac<50 ise
while(PALS==0);
}
} // for dongusu
}

YARDIMINIZI İSTEDİĞİM KONU İSE BU DEVRE ŞEMASINI BASKI DEVRE PLAKETİNE NASIL GEÇİRECEĞİM. BU KONU HAKKINDA YARDIMLARINIZI BEKLİYORUM.
 
Öncelikle kolay gelsin, devreyi baskı devreye geçirmek için;
Kullandığınız program proteus sanırım.. İlk olara isis (devre çizim) kısmında her elemanın kılıflarının seçili olduğunu onaylamanız gerekiyor. Ardından arese aktarıp orada plaket oluşturuyorsunuz elemanları düzenli bir şekilde simulete olarak plakete aktarıyorsunuz, (programı kullanmayı az çok bildiğinizi varsayıyorum) gerekli işlemleri yaptıktan sonra baskı devreyi oluşturmuş oluyorsunuz.

Ardından kuşe kağıdına oluşan baskı devreyi çıkartıyorsunuz. Gerekli büyüklükteki plaketi kesip ütü ile geçirme yöntemiyle plaketinize baskı devreyi basıyorsunuz.. Delikleri açıp, elemanları yerleştirip lehim işlemi ile devreyi tamamlayabilirsiniz.

Kolay gelsin
 
Ben bir devre yapmayı planlıyorum bunu gibi.Acaba onerirmısınız bu projeyii?
 
Teşekkürler güzel çalışma:)
 

Forum istatistikleri

Konular
129,793
Mesajlar
930,150
Kullanıcılar
452,587
Son üye
merdabe

Yeni konular

Geri
Üst