avatar_ete

DTMF Projeleri

Başlatan ete, 04 Eylül 2011, 19:05:04

mg1980

Hocam,
İyi Günler. Benzer bir çalışmayı ASM programa dilinde yapmıştım. Gelen çağrıyı iki şekilde daha almak mümkün.Birincisi telefonu titreşime alıp titreşim motor uçlarından, bir diğeri de tuşların aydınlatma LED'lerinden.Tabii siz bilirsiniz ama denemek mümkün.Saygılar.

POWER

@mg1980
malesef telefonda titreşim özelliği yok.aydınlatma ledleri benimde aklıma gelmişti. tam  deneyecekken bu otomatik cevaplama özelliğine geçtik bu daha iyi oldu.
hocam malesef mesajımda bahsettiğim gibi çok basit yerde hata yapmışım.yani kulaklık kullanırken ton bilgilerini hoparlörden almaya kalkımışım hep.size cevap yazarken sizin istediklerinizi düşünürken hatamı anladım ve akşam eve gelince ilk olarak denedim proğram sondan bir evvelki mesajınızdaki değişiklikle sorunsuz çalışıyor.ben şimdi kafama göre bir kaç ekleme çıkarma yapıyorum.şimdilik sorun görünmüyor.birde yapılan işlemi onaylamak için ses zayıf olduğundan,bir role daha ekledim.bu role,başarıla şekilde yapılan işlemin ardından 6 tuşunu kısa süreli kısadevre yaptırarak çıkan tonun diğer telefondan dinlenmesi sağlanıyor.ben böyle bir yol izledim.

ete

Yapılan her işte olduğu gibi mantık çalıştırmak sorunları çözmede işin yarısıdır. Bak ne güzel aştın sorunu.
Hadi geçmiş olsun.

Ete

TA5AAT

ETE hocam devremize artık (SEKRETER) eklemek istiyorum piyasada bulunan ISD 1730 SES KAYIT entegre ile iki devreyi baglantı kurarak telefon açıldıgında.( HOŞGELDİNİZ  (1) ci RÖLE için #1 tuşlayın 2 ci RÖLE için #2 tuşlayın) demesini isteyebilirmiyiz en kısa zamanda uygulamaya geçmek istiyorum bu konuda sizin fikirlerinizi almak istedim..

TELEFON açıldıgında SEKRETER sesli olarak uyarı vericek sonra kullanıcı işlemlerini yapıcak..

saygı ve sevgilerimle..  (TA5AAT) 

ete

Ses kayıt entegreleri yada devreleri diyelim zaten bu tür işler için yapılmıştır.
İyice incelersen entegreye hakim olduğun anda istediğini yapabilirsin.
Ete

hkalaycioglu

ete hocam bu dtmf devresınde arama yapıyorum role de cekıyor ayarladıgım çagrı sayısında fakat devrenın açıldıgını bır turlu arayan telefon anlamıyor hat trafosunu fax modem kartından soktum ama nerede sorun olabilir bir turlu bulamadım sızce nereye bakmalıyım

ete

Arayan telefon hattın açıldığını anlamaz zaten. Hat açıldığına dair gelen ses (biraz zayıf gelebilir) mesajlarından anlaman gerekir.
Bana kalırsa devre yanında iken deneme yapmaya çalış. O zaman anlayacaksın.

Ete

hkalaycioglu

devre zaten yanımda denıyorum role cekıyor hattı devreye sokuyor gıbı  fakat arayan telefon caldırmaya devam edıyor optodan calma sınyalını ledden takıp edıyorum hat acılmıyor gıbı yanı telefon calmaya devam edıyor

ete

Zil çalmaya devam ediuyor ise hat açılmıyordur. Bu durumda şunu sorayım. Bu sistem normal kablolu telefon hattınamı bağlıdır?
Öyle ise aşağıdakileri kontrol etmen gerek;

- Telefon hattının bir ucu direk Köprü diyota girmekte diğer ise hat rölesi çektiği zaman köprü diyota bağlanmaktadır. Öncelikle hat rölesi çekiyormu onu kontrol etmen gerek. Bir röle çekiyor diyorsun ama sanırım ya hat rölesi değil yada röle çekmesine rağmen hattın diğer ucu röle kontakları üzerinden köprü diyota ulaşmıyor. Bu hat ucunun rölenin dpğru bacaklarına bağlandığından emin olman gerek.

- Diyot uçları doğrumu bağlıdır kontrol et.

- Hat trafosundan önce BC serisinden transistörler vardır. Bunlar doğru bağlanmışmı kontrol et. Hat trafosunda sorun olacağını sanmıyorum. Sorun telefon hattı girişlerinin hat trafsouna ulaşamamış olmasından kaynaklanıyor. Bu aralığı kontrol etmelisin.

Ete

hkalaycioglu

ete hocam tesekkurler dedıklerınıze yarın bakıcam kontrol edıcem devrenızı bır arkadasım yaptı calısıyor çalıstıgını gordum ama benım yaptıgımda neden boylr bır sorun yasadım anlamadım
her tarafınıda kontrol ettım ama sorunu bır turlu cozemedım

ete

Çalıştığı kesin çünki ben dahil yüzlerce kişi yaptı.
Seninkinde mutlaka bir terslik vardır. Dediklerimi iyice kontrol et.

Ete

POWER

hocam tekrar iyi çalışmalar.
sizin dtmf projenizi cep telefonu için yapmıştım.o zaman şimdi yazacağım hataların farkına varmamışım.bu hataları düzeltmek için yaptığım çalışmalarda her seferinde pic'e proğram yüklemek  zahmetli olduğundan isisde yapmak istedim.fakat burdada simülasyon imkanı olmadığından kendimce bir yöntem yaptım ve denemeleri burda yaptım.iki adet sorunum var bir türlü onların üstesinden gelemedim hocam.lcd yide değişkenlerin aldığı değerleri görebilmek,proğrama hakim olabilmek için ekledim.
1-doğru şifre girmeden başka şifre girilir ve arkasından doğru şifre girilirse doğru şifreyi kabul etmiyor taki zaman aşımı meydana gelinceye kadar.(örnek:şifre:1111 olsun, önce 4512 girilir arkasından 1111 girilirse şifre doğru ledi yanmıyor.zaman aşımını bekleyip ondan sonra 1111 doğru şifre girilirse şifre doğru ledi yanıyor.)
2-hiç bir şekilde roleyi kontrol edemiyorum.(burda roleyi led temsil ediyor.)
kodlar aşağıda
'****************************************************************
'*  Name    : DTMF.BAS                                          *
'*  Author  : [E.T.E]                                           *
'*  Notice  : Copyright (c) 2005 Ete]                           *
'*          : All Rights Reserved                               *
'*  Date    : 02.06.2005                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
PORTA=0
PORTB=0
TRISB=%00000000   'PortB.0 giriş diğerleri çıkış yapıldı.
TRISA=%00011111   'A portu 0-4 arası girişi,6digerleri çıkış yapıldı.
@ DEVICE pic16F88               'işlemci 16F88
@ DEVICE pic16F88, WDT_OFF      'Watch Dog timer kapalı
@ DEVICE pic16F88, PWRT_ON      'Power on timer açık
@ DEVICE pic16F88, MCLR_OFF      'mclr on
@ DEVICE pic16F88, LVP_OFF      'Low voltage off
@ DEVICE pic16F88, PROTECT_OFF  'Kod Protek kapalı
@ DEVICE pic16F88, INTRC_OSC_NOCLKOUT
''-----------------------------------------------------------------
Define  LCD_DREG    PORTB   'LCD BAĞLANTILARININ TANIMI       
Define  LCD_DBIT    4 
Define  LCD_RSREG   PORTB
Define  LCD_RSBIT   3
Define  LCD_EREG    PORTB
Define  LCD_EBIT    2
'-------------------------------------------------------------------------------
CMCON=7         '16F628 de komparatör pinleri iptal hepsi giriş çıkış
ANSEL=%11100000 '0-dijital,1-analog
ADCON1=%10000000 'analog pinleri kullanıma aç ???????
DEFINE OSC 4
OSCCON=%01100000 '4 MHz ayarlandı.
'-------------------------------------------------------------------------------
SIFRE  VAR WORD
RAKAM  var WORD
TEMP   VAR WORD
SURE   VAR word
SAYI   VAR BYTE
DURUM  VAR BYTE
BIRLER VAR BYTE
ONLAR  VAR BYTE
YUZLER VAR BYTE
BINLER VAR BYTE 
X      VAR BYTE
CIK    VAR BIT
YAZ    var BIT

SYMBOL LED1=PORTB.0
SYMBOL ROLE=PORTB.1
SYMBOL LED3=PORTA.7
SYMBOL VALDAT=PORTA.0
SYMBOL TEL_AC=PORTA.5


''DATA @ 0,1,2,3,4
''data @ 0,255,255,255,255,255
DATA @ 16,5
PAUSE 200
CLEAR
read 0,SAYI
PAUSE 10
IF SAYI=$FF THEN
   SIFRE=1111
   GOSUB SIFREYAZ
endIF
READ 0,BINLER
READ 1,YUZLER
READ 2,ONLAR
READ 3,BIRLER
SIFRE=BINLER*1000+YUZLER*100+ONLAR*10+BIRLER
read 10,durum
IF DURUM=255 then
DURUM=0
GOSUB ROLEYAZ
ENDIF
PORTB=durum 

HIGH TEL_AC'şebeke elektriği kesilip tekrar geldiği zaman telefonun tekrar açılması sağlandı
PAUSE 1000
LOW TEL_AC
             
BASLA:   
       lcdout $FE,$80,"RAKAM:  ",dec4 RAKAM
       lcdout $FE,$C0,"SIFRE:  ",DEC4 SIFRE
'       lcdout $FE,$C0,"SAYI :  ",DEC4 SAYI
'       lcdout $FE,$C0,"SURE :  ",DEC5 SURE
         
          RAKAM=0
    GOSUB SIFREAL
           IF CIK=1 THEN BITIR 'süre aşımı olmuş ise
           IF RAKAM=2006 THEN  'yedek şifre olan 2006 buradan değiştirilecek.
              SIFRE=1234       'şifre değiştirilirken buradaki 1234 yerine yenisi yazılacak.
              GOSUB SIFREYAZ
              GOTO  ROLEKONTROL
           ENDIF   
'''------------------------------------------------------------------------------
              IF RAKAM=SIFRE THEN
              LED1=1
              PAUSE 1000
              LED1=0               
              ELSE
              GOTO ROLEKONTROL
            ENDIF
     GOTO BASLA           
'------------------------------ROLE KONTROL-------------------------------------
ROLEKONTROL:   
   IF YAZ=1 then gosub ROLEYAZ
     GOSUB ALBILGI
    IF CIK=1 THEN BITIR
      IF SAYI=12 THEN ACMA      '#  12
        IF SAYI=11 THEN KAPAT   '*  11
           GOTO ROLEKONTROL
'------------------------------ROLE AÇMA BÖLÜMÜ---------------------------------
ACMA:     
   ROLE=1
   GOSUB ALBILGI       'önce # tuşuna basılmış ise program buraya gelir
IF CIk=1 THEN BITIR
   DURUM=PORTB 
      IF SAYI=3 THEN
         IF durum.3=0 THEN
               FOR X=1 TO 3
               NEXT
               YAZ=1
               ROLE=1
             goto ROLEKONTROL
         ENDIF   
      ENDIF
'-------------------------------ŞİFRE DEĞİŞTİRME--------------------------------
'           IF SAYI=9 THEN        '#9 şifre değiştirme
'              GOSUB SIFREAL
'              IF CIK=1 THEN BITIR
'                IF RAKAM=SIFRE THEN
'                  GOSUB SIFREAL
'                  IF CIK=1 THEN BITIR
'                  SIFRE=RAKAM
'                  gosub SIFREYAZ
'                ENDIF
'           ENDIF
'        GOTO ROLEKONTROL   
'------------------------------ROLE KAPATMA BÖLÜMÜ------------------------------
KAPAT:   
   GOSUB ALBILGI        'önce * tuşuna basılmış ise program buraya gelir
IF CIK=1 THEN BITIR
   durum=PORTB
      IF SAYI=1 THEN                 
         IF durum.1=1 THEN
               FOR X=1 TO 3
               NEXT         
               YAZ=1 
               ROLE=0
             goto ROLEKONTROL
         ENDIF
      ENDIF                                     
  GOTO ROLEKONTROL   
'-------------------------------------------------------------------------------
SIFREAL:
    GOSUB ALBILGI
    IF CIK=1 THEN RETURN
    RAKAM=SAYI*1000
    GOSUB ALBILGI
    IF CIK=1 THEN RETURN
    RAKAM=RAKAM+SAYI*100
    GOSUB ALBILGI
    IF CIK=1 THEN RETURN
    RAKAM=RAKAM+SAYI*10
    GOSUB ALBILGI
    IF CIK=1 THEN RETURN
    RAKAM=RAKAM+SAYI
    RETURN     
   
ALBILGI:
    SURE=0
  WHILE VALDAT=0
    SURE=SURE+1
    PAUSEus 270
  IF SURE=65000 THEN
    CIK=1              'zaman aşımı iptali
    HIGH LED3
    RETURN
  ENDIF
  WEND       
'-------------------------------------------------------------------------------
SAYIAL:
    SAYI=0
    WHILE VALDAT=1
    SAYI.0=PORTA.4
    SAYI.1=PORTA.3
    SAYI.2=PORTA.2
    SAYI.3=PORTA.1
       LOW LED3 
    WEND
    IF SAYI=10 THEN SAYI=0
       RETURN
'-------------------------------------------------------------------------------
SIFREYAZ:
    TEMP=SIFRE         
    BINLER=TEMP DIG 3
    YUZLER=TEMP DIG 2
    ONLAR =TEMP DIG 1
    BIRLER=TEMP DIG 0
    WRITE 0,BINLER
    PAUSE 10
    WRITE 1,YUZLER
    PAUSE 10
    WRITE 2,ONLAR
    PAUSE 10
    WRITE 3,BIRLER
    PAUSE 10
    RETURN
ROLEYAZ:
    DURUM=PORTB & %01111110
    WRITE 10,durum
    YAZ=0
    return         
BITIR:
    GOSUB EXIT
    GOTO BASLA
    RETURN         
EXIT:
    SURE=0
    CIK=0
    RAKAM=0
     RETURN     
   
END
                   

ete

Programın nasıl çalıştığını iyi anlamayınca böyle hatalar yapılması doğal.
Uzun uzadıya nerelerde hata var anlatmayacağım. Yalnızca düzeltilmiş satırları vereceğim hatalrı sen bul.

Başlangıç kısmında yanlış şifre girildiğinde program ELSE komutunun yönlendirmesi ile başka satıra gidiyordu. Onu iptal ettim.
BASLA:   
       
       lcdout $FE,$80,"RAKAM:  ",dec4 RAKAM
       lcdout $FE,$C0,"SIFRE:  ",DEC4 SIFRE
         
       RAKAM=0:CIK=0   
       GOSUB SIFREAL
           IF CIK=1 THEN BITIR 'süre aşımı olmuş ise
           IF RAKAM=2006 THEN  'yedek şifre olan 2006 buradan değiştirilecek.
              SIFRE=1234       'şifre değiştirilirken buradaki 1234 yerine yenisi yazılacak.
              GOSUB SIFREYAZ
              GOTO  ROLEKONTROL
           ENDIF   
'''------------------------------------------------------------------------------
            IF RAKAM=SIFRE THEN
              LED1=1
              PAUSE 1000
              LED1=0               
              GOTO ROLEKONTROL
            ENDIF
     GOTO BASLA


Röle kontrolünde de bazı anlamsız satırlar yer almış. Sanki rastgele yazılmışlar.
Önceki programda bir anlamları vardır elbette ama programda sadeleştirme yapılınca havada kalmışlar.
Dolayısıyla programın ACMA ve KAPATMA kısımlarınıda aşağıdaki şekilde düzelttim.
ACMA:     
   GOSUB ALBILGI       'önce # tuşuna basılmış ise program buraya gelir
IF CIk=1 THEN BITIR
   DURUM=PORTB 
      IF SAYI=1 THEN
         durum.3=1
         LED1=1
         ROLE=1
         yaz=1
         GOTO ROLEKONTROL
      ENDIF
      GOTO ROLEKONTROL
KAPAT:   
   GOSUB ALBILGI        'önce * tuşuna basılmış ise program buraya gelir
IF CIK=1 THEN BITIR
   durum=PORTB
      IF SAYI=1 THEN                 
         durum.3=0
         LED1=0               
         YAZ=1 
         ROLE=0
         goto ROLEKONTROL
      ENDIF                                     
      GOTO ROLEKONTROL

Bu hali ile istediğin gibi çalışmaktadır.

Ete

TA5AAT

Merhaba:   hocam bu sistem evde 2 aydır kurulu ev telefonu ile otomasyon hatasız çalışmakta
klimayı lambaları kontrol ediyorum elinize saglık.

Hocam bu yazılımdan hafızayı yani eproma kayıt iptal edebilirmiyiz  sistemi çalıştıralım elektrik kesildiginde sistem kapanacak tekrar elektrik geldiginde çalışmıyacak kısa bilgi verirseniz uygulamak istiyorum TEŞEKKÜRLER..SAYGILAR..

VEYA :    elektrik kesilip geldiginde sistem kendini 1 dakika sonra açsa..

bu şunun için gerekli gördüm. bizim buralar elektrik kesilip geldiginde ilk 10 20 30 saniye YÜKSEK
geliyor..sonrasında elektrik 220 volt normale düşüyor

ete

Programı aç ve ne kadar WRITE ile başlayan komut varsa sil.
Ayrıca ne kadar READ ile başlayan komut varsa da sil. Böylece eprom iptal edilmiş olur.

Ete

Powered by EzPortal