Dökümanlar - Makaleler ve Projeler => Ete Projeleri => Konuyu başlatan: ete - 04 Eylül 2011, 19:05:04
Başlık: DTMF Projeleri
Gönderen: ete - 04 Eylül 2011, 19:05:04
Telefon yardımı ile haberleşme sistemini, konu alan bu başlıkta iki ayrı işlemci için hazırlanmış dosyaları bulabilirsiniz. Tabiiki tavsiyem 16F628 ile yapılmış olan projeyi yapmanız yönündedir. Sistemin bir açılış şifresi birde genel şifresi bulunmaktadır. Genel şifre diğer şifrenin unutulması halinde girilecek emniyet şifresi anlamına gelmektedir.
Şifre girişlerinde zaman çalışmakta olup belirli süre içinde giriş yapılmaması durumunda sistem resetlenir ve yeniden giriş yapılmayı bekler.
Sistem şebeke de zil sesini algılar ve belirlenen çalma adedinden sonra hattı otomatik olarak açar. Hattın açılmasını müteakip kullanıcı şifresini girer ve ardından 6 adet röleyi açma için önce "#" işaretine sonrada röle numarasına basar ve ilgili röleyi aktif eder. Kapatma için önce "*" işareti ve ardından ilgili röle numarasını girer ve röleyi kapatır. Röleler tek tek açılabilir ancak önce * ve ardından 0(sıfır) girilerek hepsi birden kapatılabilmektedir. Programda; - zil çalma adedi, ( #8 ile) - Şifre değiştirme ( #9 ile) işlemleride yapılabilmektedir.
ETE hocam yaptığınız DTMF pojesinin değişik versiyonlarını birçok sitede görmekteyiz sormak istediğim elinizde denenmiş üzerinde buzzer bulunan bir devreniz mevcutmudur izniniz olursa denmek isterim ilginize teşekkürler.
Baskı devrede olmayabilir. Sen programa ve şemaya bak asıl. Onlarda vardır. Buzzeri sonradan ilave etmiştim. PCB ye direk kablo ile bağlayıverirsin. AYrıca PCB yapmadım çünki. AMa bu sistemi o kadar çok yapan olduki neredeyse bir standart oldu sanki. Başkalarının yaptığı PCB leri bulabilirsin nette belki.
Ete hocam benzer projeyi CCS C de gerçekleştirmeye çalışıyorum bende ama sürekli sorunlar var kodun bir kısmını göndersem sadece yazılım hakkında görüşlerinizi öğrenkem isterim hat acmada ve sayaç kısımları büyük sorun yaşıyor. Devrede ISD ses entegresi ile cevap şeklinde kullanmaya çalışıyorum saygılarımla.
ETE hocam öncelikle devreyi denediğimizi söylemek isterim gayet güzel bir çalışma fakat devremde röleler açık konumdan kapalıya geçemiyor led bağlantısı yapıldı ledler kapanıyor fakat aynı etkiyi rölelerde göremedik sebeni nedir sizce neden olabilir?
Komut vererek Ledleri kapatabiliyorsunuz ama röleler kapanmıyor öylemi?. Benim programda #1 - #2 gibi "#" işareti yanında hangi numaraya basılırsa ona ait röle açılır, *1 - *2 gibi "*"işareti ve yanında yer alan numara tuşları da aynı röleleri kapatmak için kullanılıyor. siz nasıl yaptınız?
Evet. röleler sürekli olarak açık kalıyor. Sistemden gücü kesince kapanıyorlar yani açık olanlar tekrar güç verildiğinde istediğimiz konumlara gelmiş oluyorlar. Kullanılan sistem sizin sistem aynı kontrol ediliyor ilginize hocam
Benim sistemi kullananlarda böyle bir kusur şimdiye kadar görülmedi. Hatta bir kaç ilave ile ticari olarak kullanlarda var. Bu şekilde bir kusuru olsa kullanılabilirmi?
Üstelik kendim için yapmış olduğum devrede elimde özellikle çalıştırdım bir sorun yok. Sorun senin devrende yada yaptığınız yazılımda.
Onları buraya açarsan ben veya bir başkası ilgilenir bakarız. Röle sürme devrenize bakın. Hangi transistörü ne şekilde kullandınız röleleri sürmek için. Anladığım kadarı ile röle sürücü transistörleri doyuma gidiyor ve kendi kendilerini set ediyorlar. BU durumda sen sinyali kessende iletimde kalıyorlar. Röle sürme devrenizde bir kusur var mutlaka.
En azından hex dosyanız ile varsa simulasyon dosyasını buraya koyun isis de bakmaya çalışalım.
TA5AAT, Sabit telefon için yazılmış bir programı ve devreyi cep telefonuna adapte etmek için ne gibi değişiklikler yaptın? Açıkla ki ona göre düşünüp varsa kusurlarını tespit etmeye çalışalım. Ayrıca , Çalıştıramadım derken ne gibi sorun yada sorunlar çıktı . Hiçmi çalışmadı yoksa devre çalıştıda cep telefonu ile sisteme kumanda mı edemedin? Biraz detay vermende yarar var.
16f84 ile olan açılıyor fakat 628 yazan dosya bende açılmıyor:(aşağıdaki uyarı geliyor. (https://etepic.com/proxy.php?request=http%3A%2F%2Fd1201.hizliresim.com%2Ft%2Fk%2F1w597.png&hash=b87a0b1d0dab803d9f5bdbf344a965cb6901b9fa) (http://bit.ly/c25MCx)
BASLA: Sayac=0 '-------------------------------PORTB.0=HIGH------------- ILK: IF HAT=1 THEN ILK '------------------------------PORTB.0=LOW--------------- BAK: SAYAC=SAYAC+1 BIR: IF HAT=0 THEN BIR '------------------------------PORTB.0=LOW----------------- IF SAYAC=ZIL THEN PAUSE 1800 HIGH ROLE pause 800 low role GOTO BIRINCI ENDIF SURE=0 WHILE HAT=1 SURE=SURE+1 IF SURE=300 THEN ILK PAUSE 1 WEND IF SURE<100 THEN BIR GOTO BAK
Bunun dışında başka bir şey gerekmiyor. Gerekmiyor derken hattın alınması telefon hoparlöründen yapılıyor. Bu bağlantıları yapman gerek. Programda bir zaman sayacı var. Belirli süre içinde şayet herhangi bir komut girilmez ise sistem kendini otomatik kapatır. Buda 18-20 sn olması gerek ama biraz daha az olabilir. Sen 16 sn diyorsun demekki sende 16 sn olarak çalışıyor otomatik kapanma. Bunu iptal etmek istersen aşağıdaki komut satırlarını bul; ALBILGI: SURE=0:ZAMAN=0 WHILE VALDAT=0 SURE=SURE+1 PAUSEus 270 IF SURE=65500 THEN CIK=1:RETURN ENDIF WEND Buradan " IF SURE=65500 then CIK=1:RETURN" komutunu sil yada kapat. Böylece otomatik kapanma iptal edilmiş olacaktır.
çalışır dururmda şu an. sadece ilk elektrik verildiginde biraz bekliyoruz 15-20 saniye sonrasında bir beep sesi geliyor 1 2 3 4 şifresi girirliyor ve devremiz hazır hale geliyor....
hocam söylediginiz noktadaki degişikleri yaptım son hali ile süper çalışmakta. hocam kusura bakmayın rahatsız ediyorum sizi..
bu devremize klima baglıyorum röle kontaklarına. klimaya gerekli ayarları verdikten sonra klimayı yapılan degişiklikleri hafızada tutması için ŞALTERDEN kapatıyorum klimayı. uzaktan klimayı kontrol edebiliyorum fakat hocam ELEKTRİK KESİNTİLERİNDEN ETKİLENMESİN diyerekten yani şu şekilde elektrik kesilip geldiginde kaldıgı yerden RÖLE çalışması için yazıllımdan neler yapabilirim hocam.. teşekkürler..
Programı aslında senin istediğin gibi yazmıştım. Sende çalışmıyormu?. Normal şartlarda hangi röle açık ise onun durumu kayıt ediliyor ve ilk çalıştırmada aktif olan röle var ise yeniden aktif ediliyor.
Yeniden dene istersen. Ama şimdi yukarıdaki programa baktımda bu iş için yazdığım kodları silmiş birileri. Programın başlarında READ 10,DURUM komutu olması gerek. PORTB=DURUM komutu altında yer almalı. Ayrıca her bir röle kontrol kısmında YAZ=1 diye bir komut var ve Role KOntrol ksımında ise IF YAZ=1 then GOSUB ROLEYAZ diye bir komut daha olması gerek. Sen en iyisi projeler kısmından DTMF-YENI isimli programı yeniden yükle ve yukarıdaki değişiklikleri uygula onu kullan. İstediğin böylece olacaktır.
Evet hocam bu program eski halindede hafızada tutmuyor yani ev telefon sistemindede gerekdigi gibi çalışıyor fakat enerjiyi kesip açtıgım zaman roleler kapalı dururmda kalıyorlar.
Devrenin orjinalinde A portundaki o bacaklara HT9170 pinleri bağlı. Aslında karmaşık bir işlem gerektiriyor. Bunu yapabilecek durumda olsanız bana ne yapmalıyız diye sormaz direk yapardınız. Bu iş öyle tarifle falan olmaz. Ama illaki yaparım ben dersen aşağıdakileri uygula; a) SYMBOL HAT=PORTB.0 SYMBOL CIKIS1=PORTB.1 SYMBOL CIKIS2=PORTB.2 SYMBOL CIKIS3=PORTB.3 symbol CIKIS4=PORTB.4 SYMBOL CIKIS5=PORTB.5 SYMBOL CIKIS6=PORTB.6 SYMBOL ROLE=PORTB.7 SYMBOL VALDAT=PORTA.0 SYMBOL BUZZER=PORTA.7 satırlarını bul değişenlere yeni port isimlerini ver. Toplam 6 adet röle kullanmışız iptal edilenler var ise onları sil çıkar. A portu röle çıkışı olarak kullanılacak ise TRIS registerini TRISA=0 olarak değiştir.
2. PORTB nin ilk 4 biti giriş olacağı için TRISB=%00001111 şeklinde değiştir.
3. Aşağıdaki satırları bul ve onları PortB karşılıkları ile değiştir.
SYMBOL VALDAT=PORTA.0 yerine PORTB.0 olacak SAYIAL: SAYI=0 WHILE VALDAT=1 SAYI.0=PORTA.4 yerine PORTB.4 SAYI.1=PORTA.3 portb.3 SAYI.2=PORTA.2 portb.2 SAYI.3=PORTA.1 portb.1
2 röleli nasıl yaptın daha doğrusu röleleri hangi komutlarla açıp kapatıyorsun. Biri açılırken diğerininkapanmaması için bütün portun okunması ve okunan değerde yalnızca açılacak röleninbağlı olduğu bitin set edilmesi ve bütün değerin geri porta yazılması gerekir. Tek tek pin bazında kontrolde çalışması gerekir. Ete
hocam iki adet devre yaptım biri 2 röleli digeri 4 rölelei 4 röleledie sıkıntı yok.fakat iki röleli kartdan entegreyi sokentinden alıyorum 4 röledide çalışıyor tabii iki röleyi açıyor kapatıyor sorunsuz.. iki röleli kartda bu olay oluyor.. saygılar
hocam gönderdigim hex dosyaı picde yüklü. 4 röleli kartda süper 2 röle açıp kapıyor 2 rölleli kartda rölenin biri açılıyor digerini tuşladıgımızda digeri sönüyor kart üzerinde bir işlemmi yapıcaz direç mercimek kondansatör şeklinde felan ben yazımıma rölelrin tümü aç ekledim..
Yaşadığın sorun A portunu aktif eden komutu 5 bit olarak kullanmandan kaynaklanıyor olabilir. TRISA=%00000 şeklindeki komut yanlıştır. Onun TRISA=%00000000 şeklinde olması gerekir. Neden dersen Dahili OSC kullanılınca PortA.6 ve PortA.7 normal giriş çıkış pini haline geliyor bunları TRis registerinde belirlemen gerekir. AYrıca MCLR_OFF denilince de PortA.5 giriş pini haline gelir bunuda Tris registerinde belirlemen gerekir. Aynı şekilde Röleleri açıp kapattığın komutda da 5 bit yerine 8 bit tanımlama yapman gerekir. Yazının sonunda nasıl olması gerektiğini yazdım. Onud mutlaka denemelisin.
Sen en iyisi birde şu komutu dene. Çünki Röleler için sembol isimleri kullanmışsın . IF SAYI=1 THEN IF durum.0=0 THEN GOSUB SES1:YAZ=1 CIKIS1=1 '1 tuşuna basılınca 1 nolu çıkışı aç goto ROLEKONTROL ENDIF ENDIF
IF SAYI=2 THEN IF durum.1=0 THEN GOSUB SES1:GOSUB SES1:YAZ=1 CIKIS2=1 '2 tuşuna basılınca 2. ci çıkışı aç goto ROLEKONTROL ENDIF ENDIF
Bu çıkışları kapatırkende CIKIS1=0 veya CIKIS2=0 şeklinde komut kullanman yeterli olacaktır. Çok merak ediyorsan mevcut komutu şöyle bir yaz bakalım olacakmı; PORTA=DURUM | %00000001 (1 nolu çıkış için) PORTA=DURUM | %00000010 (2 nolu çıkış için)
hocam LED animasyon kontrol devresi yaptım devremiz hazır fakat HEX çeviremedim MicroCode kullanıyorum nerde problem olabilir hocam (WARNİNG - EROR) felan diyor TEŞEKKÜRLER..
Programda verilen açıklama satırları " ` "ayrıracı ile ayrılmış Halbuki " ' " ayıracı ile ayrılması lazım. Doğru program aşağıdadır.
Ete
'**************************************************************** '* Name : UNTITLED.BAS * '* Author : [select VIEW...EDITOR OPTIONS] * '* Notice : Copyright (c) 2012 [select VIEW...EDITOR OPTIONS] * '* : All Rights Reserved * '* Date : 07.02.2012 * '* Version : 1.0 * '* Notes : * '* : * '**************************************************************** PORTA=0 TrisA=%00000000 TrisB=%00000000 '----------------------------------------------------------------- @ DEVICE pic16F628 'islemci 16F628 @ DEVICE pic16F628, WDT_ON 'Watch Dog timer açık @ DEVICE pic16F628, PWRT_ON 'Power on timer açık @ DEVICE pic16F628, PROTECT_OFF 'Kod Koruma kapalı @ DEVICE pic16F628, MCLR_OFF 'MCLR pini kullanlımııyor. @ DEVICE pic16F628, INTRC_OSC_NOCLKOUT 'Dahili osilatör kullanılacak '----------------------------------------------------------------- CMCON=7 '16F628 de komparatör pinleri iptal hepsi dijital '----------------------------------------------------------------- I var WORD Z VAR BYTE W VAR BYTE T VAR BYTE Y var byte SON VAR BYTE '128 - 192 -224 - 240 - 248 - 124 '----------------------------------------------------------------- 'A portundan baslayarak ledleri birer birer yakıyoruz. Sonra B portuna 'atlıyoruz. Hepsi yandıktan sonra teker söndürüyoruz. Bu sefer ikiser 'yakıyoruz ve söndürüyoruz. Üçer yakıyoruz söndürüyoruz. Bu sefer Dıstan 'içe dogru yakıp söndürüyoruz. Sonra içten dısa dogru. SOnra kara simsek yapıyoruz. '------------------------------------------------------------------ PORTA=0 PORTB=0 I=1:Z=2:W=1 '---------------------------ANA PROGRAM BÖÜMÜ----------------------------------- BASLA: PORTA=I '1. bit den baslayarak ledleri yakıyoruz PAUSE 100 I=I*2 'bir sonraki bit yakıldı IF I<254 THEN BASLA PORTA=0 'tüm bitler yandıktan sonra portun tamamını söndür I=W BIR: PORTB=I 'Aynı isi B portu içinde yap PAUSE 100 I=I*2 IF I<254 THEN BIR PORTB=0 T=I/2 'bu sefer geriye dogru yakıyoruz ledleri I=T IKI:PORTB=I PAUSE 100 I=I/2 IF I>0 THEN IKI PORTB=0 I=T UC:PORTA=I 'Geriye dogru A portunu yakıyoruz PAUSE 100 I=I/2 IF I>0 THEN UC Z=Z+1:I=2*W+1:W=I IF Z<8 THEN BASLA PORTA=0 I=128 Z=1 '------------------BURAYA KADAR 1-5 SIRA ÇFT YÖN YAKILDI----------------------- DORT: PORTA=I PORTB=Z PAUSE 100 I=I/2 Z=Z*2 IF I>0 THEN DORT ARA: I=1:Z=128:W=I:T=7:y=z BES: PORTA=I PORTB=Z PAUSE 100 I=I*2 Z=Z/2 IF Z>1 THEN BES z=w:I=y ALTI: PORTA=I PORTB=Z PAUSE 100 I=I/2 Z=Z*2 IF I>1 THEN ALTI T=T-1:I=W*2+1:Z=DCD T+Y:W=I:Y=z IF I<33 then BES porta=0:portb=0 I=1:Z=2:W=1:T=7 goto basla END
Bu işi timer ile yapmak programa epeyce yük getirir. İşlem basit ve en azından o esnada programın başka iş yapması gerekmiyor. O halde #1 ile röleyi aktif ettikten sonra aynı yerde; PAUSE 2000 ROLE=0 şeklinde bir komut yerleştirerek 2 sn sonra rölenin kapanmasını sağlayabiliriz. Tek kusur programın 2sn müddetle orada bloke edilmesi olurki çok da önemli değil diye düşünüyorum. Ne dersin?
hocam sistem güzel çalışmakta ARAÇ uzaktan çalışıyor ve hatda KAPANIYOR bu çalışma sisteminde sadece # KARE yazılımdan kaldırabilirmiyiz sadece (1) basınca çalışsa sistem. TEŞEKKÜRLER saygılar..
Çoğu zaman bir programı tadil etmek yerine yeniden yazmak tercih ettiğim bir yol oluyor. Sebebide mevcut programın mantığını anlamak için çok fazla zaman harcan ması gerektiğidir. Yapacağınız değişikliği nasıl nereye uygulayacağınızı anlamak epeyce uzun sürüyor. Senin istediğinde aynı şey. Bu kendi yazdığım programlarda başıma gelen bir olay ki programı başkası yazmış ise bu daha da zor oluyor benim için. Çünki herkesin kendine göre bir program yazma mantığı vardır. Kendi mantığımı her yerde tanırım. Ama başkalarının yazdığı üzerinde epeyce düşünmek gerekir. Uzaktan kolay gibi gözükebilir. Ama gözüktüğü gibi değil maalesef. Bu değişiklikleri şu anda yapmam mümkün değil. Boş bir zamanımda üzerinde düşünürüm. Yapabilirsem yapar koyarım.
Hadi açma işini anladım" ** " önce ilk yıldız kodu (11) beklenecek alınmış ise ikincisine bakılacak. Ama kapatmayı anlamadım Nedir "d" tuş takımında "d" diye bir tuş yok. Nedir bunun karşılığı.?
Sayın TA5AAT, takip ettiğim kadarıyla cep telefonuna uyarlanan devre son haliyle güzel çalışıyor demişsiniz.
Anladığıma göre ETE hocanın da yardımlarıyla devreyi cep telefonu ile çalışır hale getirmişsiniz.
İzninizle bilgi edinmek istediğim kısımlar ve şu ana kadar anladıklarımdan doğruluğunun kontrol edilmesini istediğim bazı noktalar var;
1) Devre cep telefonu ile çalıştığına göre ETE hocanın verdiği "ev telefonu ile çalışan devredeki" bazı malzemeleri devreden çıkarttınız mı? (hat açma rölesi, yalıtım trafosu vs. gibi) yada "Telefon_Kon628.DSN" dosyasını olduğu gibi mi çizdiniz?
2) ETE hocanın verdiği devrede telefon girişi olarak iki uç var. Cep telefonuna buzzer ses onayını nasıl veriyorsunuz? Mikrofonlu kulaklıkla mı? Öyleyse cep telefonunun mikrofon girişi, buzzer hattına mı bağlanıyor yoksa buzzera yakın mesafede mi duruyor?
3) Cep telefonuna uyarlandıktan sonra B portunda bazı ayaklar boşa çıktı denilmiş. Boşa çıkanlar, malzeme eksiltildiği için mi, yada neden? Portlarla ilgili değişiklik yapmaya gerek var mı? Sanırım o bir özel istekti değil mi?
Sayın TA5AAT ve ETE hocam; İlk mesajımda böyle emrivaki yapmış gibi hissediyorum. Ama sizi birkaç forumda takip eden biri olarak cep telefonu ile çalışan devrenin en net bilgilerini burada bulduğuma inanıyorum. Cep telefonuyla çalışan devrenin dosyalarını TA5AAT arkadaşın paylaşmasını rica ediyorum.
Sangarius, Aslında cep telefonu ile bu sistemin çalıştırılmasına karşıyım. İsteyen kendi projesini yapar çalıştırır beni ilgilendirmez ama ben bu tür sistemlerin cep telefonu ile kullanılmasına karşıyım. Bu nedenle gereken açıklamaları bir daha vermeyeceğim. Bu konuyu baştan sona okursan ne yapman gerektiğini anlarsın. Anlamazsan da şansına küs derim. Sistemin cep telefonu ile olan versiyonu yok aslında ama yalnızca bir iki satır değiştirilerek yapılan bir iş için koca programın yeniden verilmeside yanlış. Forum kapasitemizi hızla dolduruyoruz. Bu nedenle olur olmaz şeylerle formu kirletmemeye çalışıyoruz. Sen en iyisi konuyu baştan sona oku ne yapman gerektiğini anlayacaksın.
Sizi de anlayışla karşılıyorum. İnce ayrıntılar konusunda TA5AAT ile özel iletişime geçiyorum.
Bu arada projenin cep telefonu ile yapılması hocamın isteği :) . Yani aslına bakacak olursak ben de karşıyım hazır ev telefonuyla çalışan devreyi kesip biçmeyi, tutarsız hale getirmeyi. Ama anlayın işte.
Hazır aklımdayken böyle bir projeyi paylaştığınız için de teşekkür ederim.
@ DEVICE pic16F628A 'işlemci 16F628 @ DEVICE pic16F628A, WDT_OFF 'Watch Dog timer açık @ DEVICE pic16F628A, PWRT_ON 'Power on timer açık @ DEVICE pic16F628A, PROTECT_OFF 'Kod Protek kapalı @ DEVICE pic16F628A, MCLR_OFF 'MCLR pini kullanılıyor. @ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT 'Dahili osilatör kullanılacak
satırları, programı derlerken hataya sebep oluyor.
Ancak "http://etepic.com/index.php?topic=300.0" sayfasında verilen sigorta ayarları yazılınca sorun yok. (@ __config _XT_OSC & _WDT_ON & _MCLRE_ON & _LVP_OFF & _CP_OFF)
Tabi ben bunları aşağıdaki şekilde yazdım (pwrt yerine pwrte, protect yerine cp' ye dikkat ederek tabi, çünkü mpasm'nin içindeki p16f628a.inc dosyasında öyle tanımlanmış) @ __config _WDT_OFF & _PWRTE_ON & _CP_OFF & _MCLRE_OFF & _INTRC_OSC_NOCLKOUT
Ancak gördüğünüz gibi yukarıda sizin yazdığınız yazımdan uzak şeyler yazarak derledim ama çalıştı. Sormak istediğim, DEVICE komutunun çalışmamasının sebebi nedir ve benim yazımdaki tek eksik olan PIC16F628A yazısını nerede ve nasıl kullanmalıyım yada kullanmasam da olur mu (çünkü microcodestudio'da 16F628A'yı seçmemizin yeterli olduğunu düşünüyorum ama önerinizi de bekliyorum)?
(Bu arada kullandığım MPLAB v8.84, 64 bit Win7 kullanıyorum ve 64 bit için yukarıdaki linkte yazdığınız ayarları da yaptım.)
arkadaşlar ilk sayfada ISD ses mesaj Tarafımızdan yapılmış ve denemiş tir. malumunuz ISD SMD olmadığından çok yer kaplıyor devre kaba bir hal almıştır. Tarımsal Sulama için projemiz hazır olup Yazın Çiftçi dostlarımıza teste sunacağız. Saygılar.
Sangarius, Daha once pbp derleyiciye ait assembler biriminin 32 bit olarak hazırlandığını bu nedenle 64 bit makinalarda çalışmadığını bunun yerine derlemenin Mpasm ile yapılması gerektiğini açıklamış idim. Programlarda verdiğimiz normal config ayarları pbp derleyicisi formatına uygundur. Mpasm kullanınca config formatını ona uygun değistirmek gerekiyor sende oyle yapmışsın. İslemci mcs de yukarıdakı kutudan seçiliyor. Bu nedenle illaki configde yer alması gerekmiyor. Ete
Bu konunun ilk 1. sayfasında arkadaşım ısd ile bir soru yöneltmiş onun cevabını verdim, ilk sayfayla son sayfa arasında konu biraz açı değiştirmiş ama farklı bir yere konu açmak iistemedim. ISD ses kayıt entegresinin başarılı bir şekilde sesli yanıt sistemini yaptık oluşturduk. sahaya teste gönderecez. SMD olmadığından mevcut ISD entegreleri çok yer kaplıyor. fuzuli kalabalık yapıyor. Testlerden sonra saha aplikasyonlarının bilgisini paylaşacam.
Hocam Merhabalar bu ev telefonu ile DTMF devremiz hazır dı zaten bu devremizle KLİMA ( 1 ) SAAT boyun caçalışsın sonrasında kapansın aşagıda kopyaladıgımız satırırn pause kısmında 2000 yazan yer 60000 oldugunda 1 daki sonrasında kapanıyor 1 saat için 2000 yerine sayısal olarak ne yazmam gerekir....
klimayı kendim #1 olarak açıcam sonrasında 1 saat sonra röle düşücek saygılarımla..
IF SAYI=1 THEN IF durum.1=0 THEN GOSUB SES1 PORTB=DURUM | %00000010 PAUSE 2000 PORTB=DURUM & %11111101 goto ROLEKONTROL ENDIF ENDIF
Örenek: ( 3 600 000 ) 1 saat yapıyor bu satırırn daha kısa ve mantıklısıs olabilirmi yopksa bu şekildemidir bu şekilde denedim sistem güzel çalışmakta fakat diger röle çalışmamaktadır şimdiden çok teşekkürler..
NOT: Sevgili arkadaşlar bu sistemde hazırladıgınız devrenizin telefon için HAT trafosu bazı hurda telefonların içinde mevcuttur EV TELEFONU İLE EV OTOMSAYON DEVRESİ..
Oraya yazılabilecek en kısa komut; Pause 2000 yerine SLEEP 3600 yazmaktır. Ancak 1 saat boyunca program o kısımda bloke olur ve başka hiç bir iş yapamaz. Bu şekilde istersen olur. Ama program bloke olmasın dersen mutlaka bir şekilde saat sinyali edinmen gerekir. Saat sinyali de iki şekilde elde edilir. Ya TMR0 kullanarak kesme oluşturur ve oradan SN, DAK ve SAAT bilgisini alırsın, yada devreye bir adet RTC (mesela DS1307) ilave ederek saat bilgisini RTC den alırsın. Saat bilgisini elde ettikten sonra yapılacak iş basittir. Zamanlamayı başlatmak için SN=0:DAK=0:SAAT=0: yapıp süreyi başlatmış olursun
IF SAYI=1 THEN IF durum.1=0 THEN GOSUB SES1 PORTB=DURUM | %00000010 SN=0:DAK=0:SAAT=0 goto ROLEKONTROL ENDIF ENDIF
'Artık klimanın kapatılması kısmı Role kontrol kısmında yapılacak demektir. Orada ; IF PORTB.1=1 and SAAT=1 then PORTB.1=0
O satır tek satır halinde verilecek. Yeri ise; ROLEKONTROL: isimli etiket altında her hangi bir yer.
Elbette bu komutu kullanınca sana Saniye , Dakika ve Saat bilgisi lazım olacak. Onuda RTC den alman gerekiyor. Ya DS1302 yada DS1307 kullanman gerekecek.
Der tabiiki . Çünki kullanabileceğin en büyük rakam 65535 dir. O yüzden pause ile değil Sleep ile yapılmasını söylemiştim. Ancak döngü kurarak yapabilirsin bunu. FOR I=0 to 36000 PAUSE 100 NEXT sana yaklaşık 1 saatlik gecikme sağlayacaktır.
SLEEP 60 yapıyorum PAUSE yerine 60 saniye bekliyorum fakat hiç işlem olmuyor yani kapanmıyor RÖLE hocam sleep de satırda bir yanlışlıkmı yapıyorum ÖRNEK şekil aşagıdadır..
DURUM=PORTA
IF SAYI=1 THEN IF durum.0=0 THEN GOSUB SES1:YAZ=1 PORTA=DURUM | %00000001 '1 tuşuna basılınca 1 nolu çıkışı aç
Sleep komutu sanırım WDT kullanarak bu süreleri gerçekleştiriyor. Şayet Sigorta ayarlarında WDT_OFF ise sistem çalışmayabilir. Bu nedenle WDT_ON yaparak denemelisin.
Döngülü gecikmeyi tam olarak SLEEP 60 yerine yazacaksın.
evet güzel şekilde çalışmakta hocam dilinize saglık..
ama bu süre zarfında canımız istediginde sistemi kapatamıyoruz illaki 60 dakikanın bitmesi lazım buna bir ÇARE varmıdır hocam saygılar..
Başlık: Ynt: DTMF Projeleri
Gönderen: POWER - 09 Nisan 2012, 20:58:24
ete hocam sizin bu projenizi bende yapmaya çalışıyorum cep tel ile.benim problemim şu: pice bağlı cep telefonuna bir çağrı geldiği zaman bu telefon çağrıyı otomatik cevaplıyor.bir zil sesinden sonra çağrıyı kabul ediyor.bu telefonun özelliği.böyle olunca proğramın ilk bölümündeki hattın durumuna bakan ve zil sayma kısıkmlarıyla ilgili satırları iptal ederek direk şifre kısmına gitmesi için uğraştım.ama olmadı.böyle bir olay proğramın mantığı açısından uygunmu?yok bu iş için tamamen ayrı bir proğrammı yazılmalı?
Bana yazan pek çok kişiden öğrendiğim kadarı ile onlarda otomatik cevaplama iözelliğini kullanmışlar. Bence iyi bir yöntem. Ama programda da tadilat yapıp ilk zil çalmasından sonra telefonu açmak ve zil saymaktan vaz geçmek bir çözüm olabilir.
Ete
Başlık: Ynt: DTMF Projeleri
Gönderen: POWER - 10 Nisan 2012, 14:31:48
hocam iyi çalışmalar, proğramdan zil sayma ve telefonu açma kısmını iptal edemedim bir türlü.proğramdan proğramsal anlamda ne yaptımsa olmuyor. telefon, gelen çağrıyı kabul ettikten sonra şifreyi giriyorum kabul etmiyor.proğramda ne gibi değişiklik yapmam gerekiyor hocam? şimdiden teşekkürler..
Power, programa bakarsan etiket isimleri şu sırada gidiyor: BASLA ILK BAK BIR BIRINCI birinciye kadar olanları silip Birinciyide BASLA diye adlandırırsan sistem zil sayma ve hat açma işleminden kurtulmuş olur. Bu şekilde bir dene bakalım.
Başlık: Ynt: DTMF Projeleri
Gönderen: POWER - 12 Nisan 2012, 00:36:16
hocam söylediğiniz gibi BIRINCI ye kadar olan kısmı iptal ettim.BIRINCI yide BASLA yaptım hex çevirdim denemedim olmadım.olması gerikirdi ama atladığımız bir nokta var herhalde.
Bende denemeden söyledim ama teori olarak düşünürsek , BİRINCI etiketi hattın açılmasından sonra çalışmaya başlayan kısım. Hattı hep açık farzedersek buradan itibaren sistemin çalışması gerekirdi. Bu durumda telefonun otomatik hattı açması gerekiyor. Zira telefon açık değil ise tuş takımı dtmf kodu üretmeyecektir. Yada telefon hiç bu kodları üretmiyorsa sistem yine çalışmayacaktır ne şifre girebilir nede röle seçebilirsin. Ama hat açılıyor ise her şeyi yapabilmen lazım gelir.
Aslında normal bir telefon kullandığın zaman telefon çaldığı zaman yeşil tuşa (veya her hangibir tuşa) bir kere tıklaman hattı açmana yetiyor. Bu sistemi yapanlardan bir kısmıa bu özelliği kullanmıştı. Yes (yada cevapla) tuşundan uç çıkartıp hat açtırma rölesine bağlamışlardı. Orjinal programda röle devamlı çekili kalıyor idi sende bir kere çekip bırakması gerkeecek.Bu şekilde zil sayacı ile birlikte de kullanabilirsin.
Normal şartlarda kulaklıktan hat bilgisi aldığına göre telefon hattı açmadan orada ne gibi bir voltaj var?, Telefon çaldığı zaman neler oluyor voltaj inip çıkıyormu çıkıyorsa nerelere çıkıyor? hat açıldığı zaman kulaklık uçlarındaki voltaj ne oluyor. Bu bilgileri toparlayıp bana bildir ona göre bir şeyler düşünelim.
Ete
Başlık: Ynt: DTMF Projeleri
Gönderen: POWER - 12 Nisan 2012, 09:05:37
hocam, ben hic sabit telefonla denemedim.fakat cep telefonu ile sabit telefonda kullanmanın tek farkı,sabit telefonda role sürekli çekili kalıyor,cep telefonunda ise kısa süreli çekip bırakıyor.yani yes tuşuna basıp bırakıyor.bunlar zaten bilinen şeyler.benim denemelerimde,çağrıyı role vasıtasıyla yes tuşuna basarak kabul etme konusunda bir sıkıntı yok.o zaman proğram olması gerektiği gibi çalışıyor.fakat burdaki benim yaşadığım sıkıntı,çağrıyı cevaplama yani kısa süreli rolenin çekip bırakması konusunda bir kararsızlık var.bazen gelen çağrı kabul edilmiyor.bende bu durumdan kurtulmak için.,telefonun otomatik çağrıyı kabul etmesi özelliğini devreye soktum.fakat bu seferde çağrı geliyor bir sefer çalmadan sonra çağrı kabul ediliyor sonrasında şifreyi giriyorum fakat roleyi kapatıp açamıyorum.sıkıntım burda.benden istediğin bilgileri akşam evde deneyim yazacağım.yanlız ben kulaklıkta kullanmıyorum kulaklık yerine 27 ohm direnç taktım.otomatik çağrıyı kabul edebilmesi için bu şart.hat bilgisini hoparlrden alıyorum.şimdi aklıma geldi.benim sorunum burda galiba.ben hat bilgisi kulaklıktan almam gerekiyor.kulaklık özelliğini kullanıyorum ama ton seslerini hoparlörden almaya çalışıyorum.neyse çok uzadı akşam deneyerek sonucu yazacağım.
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.
Başlık: Ynt: DTMF Projeleri
Gönderen: POWER - 12 Nisan 2012, 21:24:07
@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 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..
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
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
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.
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
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 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
Çalıştığı kesin çünki ben dahil yüzlerce kişi yaptı. Seninkinde mutlaka bir terslik vardır. Dediklerimi iyice kontrol et.
Ete
Başlık: Ynt: DTMF Projeleri
Gönderen: POWER - 06 Mayıs 2012, 23:05:40
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
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
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.
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
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
Hafıza özelliği başından beri var. Ses kısmını ise hatırlayamadım. Ete
Başlık: Ynt: DTMF Projeleri
Gönderen: POWER - 09 Mayıs 2012, 23:29:22
hocam; uzun denemeler sonucunda zaman zaman bazı tutarsızlıkların olduğunu farkettim.sorun şu.kolay anlaşılsın diye örnek vererek açıklayacağım. 1-proğram ilk çalıştırıldığında hiç bir tuşa basmadan direkt doğru şifre girilirse(şifre:1111) problem yok.fakat proğram ilk çalıştırıldığında misal,önce 2-4 tuşlarına basılır arkasından da 1111 doğru şifre girilirse bunu doğru şifre olarak algılamıyor.dolayısıyla ilk 4 basamakta doğru şifrenin girilmiş olması gerekiyor aksi takdirde zaman aşımının meydana gelmesini beklemek gerekiyor.buda doğru şifre girilerek roleyi kontrol etmede sıkıntılara yol açıyor.dosyalırı deneme gereksinimi duyarsanız kolaylık olsun diye yüklüyorum.
Soruna bir soru ile cevap vereyim. Diyelimki şifren 1234 bende sifre girmeye 23 ile başladım hemen yanlis oldugun anladım ve pesinden 1234 rakamlarını girdim. Simdi soruyorum program senin iki digiti yanlis yazdığını ve sonradan gelenlerin dogru oldugunu nasil anlasın. O yalnizca 4 hane girilmesini bekliyor ve alınca da hafizadaki sifre ile karşılaştırıyor. Bu tür hatalar oldugunda ya yanlışda olsa 4 hane rakam girip sonra dogrularını girmek yada bekleyip zaman aşımına ulaşmak gerekir. Yada programa bir özellik ilave edip hata oldugunda bir Tus ile girilen leri sifirlamak gerekir. Ete
Başlık: Ynt: DTMF Projeleri
Gönderen: POWER - 10 Mayıs 2012, 20:52:13
evet hocam haklısınız.o zaman,4 haneli şifre girildikten sonra # tuşuyla şifreyi okeyleme mantığını kullansak daha iyi olacak diye düşünüyorum.girilen şifreyi doğru şifreyle # tuşuna basıldıktan sonra karşılaştıracak doğru yada yanlış olmasına göre hareket edecek.bunu yapmaya çalışacağım inşallah başarılı olurum
Bence bu hali ile kullansan daha doğru olur. Zira yapman gereken yalnızca 4 haneli bir rakam girmek. Yanlışta olsa onu 4 hane yaptıktan sonra dorusunu girebilirsin. Ayrıca bir onay rakamıda gireceksen sen bilirsin tabiiki. Ete
power DTMF devresinin zaman aşımını bekleme yerine sen DTMF kodlarını ne kadar zamanda girebileceğin konusunda işlem yapar isen sorun çözülür aksi halde karşına farklı problemler çıkar bende aynı sorunu yaşadım şifre yanlış girdiysen vay haline mecburen süre bitimini bekliyeceksin burada yapman gereken PAUSE 275 =100'e sayı değişkeninin süresini=65000 =yerine 20000 olarak ayarladım gayet güzel çalışıyor yanlış şifre girdin ise 4sn beliyorsun tabiki dahada düşürebilirsin süreyi çünki bu süre her tuş için yeniden sıfırlandığı için burada önemli olan senin tuşlara ne kadar sürede bastığındır. ben böyle bir yöntem kullandım tabiki ete hocamızın sayesinde hocamızın fikirlerine her zaman ihtiyac duyuyoruz sağ olsunlar saygılarımla medes
Başlık: Ynt: DTMF Projeleri
Gönderen: POWER - 21 Mayıs 2012, 13:47:39
sağolasın,söyediğin yöntemin aynısını yaptım zaten.bunu devreyi kullanacak kişinin durumunu gözönünde bulundurarak 8 sn seçtim.bi sonraki aşamada şifre girildikten sonra # tuşuyla okeylenmesi yöntemi olacak inşallah.en mantıklısıda bu bence.
Merhaba: sevgili hocam bu telefonla röle kontrol devresini uzun zaman önce yaptım çok güzel çalışmakta elinize yüreginize saglık. Devre evde kurulu şu ana kadar çalışmakta burası kasaba elektrik akımılarının düzensiz oldugu bir yer şu sıralar elektrik kablolarını yerin altına alıyolar ve sık sık elektrik kesintisi olmakta. röle kontaklarına baglı bulunan bazı cihazlar mevcut örnegin lamba motor v.s geçen hafta elektrik kesildi tekrar geldi ve akım yüklü geldi 220 volt degilde 245 250 volt civarı mahlde nekadar tv buzdolabı çamaşır makinası varsa hasar gördü buna baglı olarak röle kontagına bagladıgım cihazımda hasar gördü bunun neticesinde aklıma gelen şu oldu sizizn örnek olarak yayınladıgınız yazılm var en son versiyon pic işlemcide onu kullanıyorum bu yazılımda elektrik kesilip geldiginde 10 saniye geç gelmesi için neyapmalıyım yazılma hangi komudu eklemeliyim.. ortalama 3 5 saniye içerisinde akım normal degerlere geliyor ben 10 saniye gecikmeli yapabilirmiyim saygılarımla teşekkürler...
Program elektrik kesildiğini anlamaz. Ama başlangıç satırından evvel 10 sn lik bir gecikme koyarsan sistem 10 sn sonra çalışmaya başlar. Bu durumda sana ne faydası olacakmanlamadım. Ete
sevgili hocam: dediğiniz üzere gerekli satıra gecikme ekledim 10 saniye şeklinde ayarladım çok güzel oldu devre çalışıyor deneme amaçlı elektrik bağlantısını kesiyorum bir mütdet sonra akımı veriyorum röle kaldığı yerden 10 saniye sonra çalışıyor 10 saniye gecikmeli çalışıyor.. şöyle bir durum oldu devrede devre normal şekilde ilk akım uygulandığında devre 10 saniye sonra çalışmakta yani devreye dtmf tonları giricem hemen algılamıyor.. kısacası istediğimiz oldu fakat devre busefer ne olrsa olsun 10 saniye gecikmeli çalışıyor pause şeklindeki bu gecikmeyi başka satıra sanırırm yazamayız gibi görünüyor hocam..siz nedersiniz..
Başka bir satıra yazılmaz da kesmeye bağlanabilir. Ancak uzun bir program tadilatı gerektirir. Kendin yapabilirsen kesme ile (TMR0 kesmesi kullanarak) saniye saydırıp 10 sn dolunca sistemi açtırabilirsin.
Hocam DTMF sinyali üretebilirmiyiz derken böyle bir uygulama başlattım devre hazır konumda masamda deneme devresini hazırladım ütü baskısı ile işlemciye proogramdan gerekli komutları ve gerekli H.P çıkışını gösterdim.. Örnek aşagıda oldugu gibi..
DTMFOUT PORTB.2 (2,1,2) Şeklinde komut uyguladım şu an için akım uygulandıgında gerekli DTMF sinyali vermekte fakat ses çok farklı çıkmakta örnegin sanki ses frekansı kayıkmış şeklinde. ............. fiziksel uygulamaları gözden geçirdim ses çıkışına filitre v.s uyguladım.. xtal kullandım 4-20 mhz şeklinde olmadı yazılımla alakalı sanırırm sesin frekansı oturmadı sanırırm
burdan ürettigim sinyalii CM 8870 DTMF decoder devresine uyguladım buna baglı olan LED yanmamakta fakat cep telefonu kulaklıgı verdigimde bu LED çok güzel bir şekilde yanmakta..
Bir çok yerde okuduğuma göre ve özelliklede PBP help açıklamasında belirtildiği üzere bu komut 20 Mhz kristal ile iyi çalışmaktaymış. Bana kalırsa sende 20 Mhz ile dene. Daha önce hiç DMFOUT komutu denemedim. Bu nedenle deneme tecrübem yok. Sen dene de bizde fikir edinelim en iyisi. Aslında yine help açıklamalarında sinyale filtre uygulayıp biraz daha yuvarlatılması lazım geldiğide belirtilmiş. En güzeli skop ile telefondan gelen sinyale bakıp pic den geleni ona benzetmeye çalışmak gerekir. Benzetmeye çalışmak demekle sinyale uygulanacak filtre açısından olaya bakmayı kast ediyorum. Yoksa komut sinyali mutlaka çıkartıyordur.
Hocam denedim 20 mhz xtal ses hızlanıyormu diyim inceliyormu diyeyim var degişiklik fakat ses düzeni yine farklı tabi evet ARGE yaptım genelde 20 mhz den bahsediliyor bu tür konular.. xtal olarak frekansı girmeyi denicem khz cinsinden buseferde.. teşekkürler hocam..
slm bu projeyi yapan arkadaşlara bir sorum olacaktı, cep telefonunun kulaklığından alınan DTMF bilgiyi MT8870 e verirken illa ki hat trafosumu olması gerekiyor? ben direk deneme yaptım ama başarısız oldum. trafosuz bağlantı şekli varmıdır? gerçi bir tane hat trafosu edindim deneme yapacağım ama varsa başka türlü bağlantı şekli öğrenmek isterim.
Başlık: Ynt: DTMF Projeleri
Gönderen: POWER - 05 Temmuz 2013, 12:09:49
hayır cep telefonu ile yaparken hat trafosuna gerek yok.
peki usta ben direnc.netten HT9170 almıştım, MC8870 ile aynı olduğunu düşündüğümden, yanılıyormuyum? ayrıca cep tel. ile bu entegrenin bağlantı şekli hakkında örnek bir şema verebilirmisiniz? yani cep telefonunun kulaklığında 2 uc var ve her ikiside GND değil, her ikisi ile de denedim, hatta birisini gnd ye ilişkilendirdim vs. ama çıkış alamadım, bağlantı şekli ise aşağııdaki gibi, bağlantıda bir problem varmı sizce? ayrıca yazılım hatasının olup olmadığını anlamak için DV çıkışına 39R + led bağladım ama çıkışta bir tepki yakalayamadım acaba nerede hata yapıyorum?
Sayın Ete hocam ben yeni üyeniz fantom1951. 13.5 volt 5A kapasiteli ve kısa devre korumalı bir güc kaynagım var. Bana 3 ve 6 voltta 2A sabit çıkış verecek bir devre lazım idi . Çıkışına bağladıgım yük 2 Ohm -5 ohm arası yükler . 2 Ohm luk yuku bağladıgımda 3voltluk pilden1.35 amp çekiyor ama 1.35 Amp çekilirken pil voltajı 2.5 volt civarına düşüyor ve 6v da 1.70 amp cekerken pil voltajı 4 volt civarına düşüyor ki bende 3 volt veya 6 volt sabit kalsın istiyorum. Bunun için L200 entegresi 2A i desteklediği için L200 lü voltaj ve akım ayarlı devreyi yaptım ancak girişine güc kaynagından 13.5 volt verince boşta ancak 5.68 volt maximum görüyorum yükü bağlayınca ise 0 volt civarı görünüyor ve tabii ki akım cekemiyorum.L200 lü dverede 1 . pin giriş + sı 3.pin ortak şase 4.pin 1k la şaseye ve 10k potla + çıkışa yani 2. pine gidiyor 5. pin 1k potla + cıkışa bağlı. Potların tüm pozisyonlarında boşta voltaj maximum 5.68 volt oluyor ki aslında 13.5 volta kadar ayarlanabilmesi gerekiyor diye düşünüyorum ancak olmuyor ve yükü bağlayınca potların tüm pozisyonlarında çıkış voltajı = ve amper çekilemiyor.Hocam sebebi ne olabilir veya ben nerede hata yapıyorum?L200 de kısa devre koruması varsa sebeb yük omajının küçüklüğü olabilir mi ?Lütfen yardımcı olabilirmisiniz?
Güç kaynağı 3 volt veriyor iken çıkışına 2 ohm luk yük bağlarsan; I=3/2=1,5 amper akım çeker ve voltaj 3 volt olarak sabit kalır yada kalması gerekir. Güç kaynağı 6 volt veriyor iken çıkışa 2 ohm luk yük bağlarsan ; I=6/2=3 amper akım çekilir ve akım kapasitesi. 2 amper olduğundan güç kaynağı voltajı sıfırlanır yada 2 amper verecek şekilde voltaj 4 volta düşer.
Bunun başka yolu yok. Üstelik L200 de kısa devre koruması var ise maksimum akımı geçen akım çekilmelerinde çıkışını sıfırlayacaktır.
Ete
Başlık: Ynt: DTMF Projeleri
Gönderen: POWER - 05 Temmuz 2013, 16:27:19
ben bu entegreden kullanmadım.kabaca baktığımda cm8870 ile biraz fark var gibi ama farketmez bu entegrede bu iş için yapıldığına göre devrede hata yoksa çalışır.cep.telefonunda stereo olduğu için 4 uç var.sen bunlardan ikisini kullanacaksın.dikkat edeceğin noktalar:kristal yanlış olmasın benim başıma geldi çünkü.ikincisi dtmf sinyalin gerçekten telefondan çıkıp devreye gittiğinden emin ol.kulaklığı tel.taktıkdan sonra tuşlara bas çıkan seleri telefondan değilde kulaklıktan duymalısın. kulaklık kısmını kes ve direk devreye uygula.çalışır muhakkak bir hata vardır.ayrıca çıkışı ledlerle takip edebilirsin tabiki.
Alıntı yapılan: POWER - 05 Temmuz 2013, 16:27:19 ben bu entegreden kullanmadım.kabaca baktığımda cm8870 ile biraz fark var gibi ama farketmez bu entegrede bu iş için yapıldığına göre devrede hata yoksa çalışır.cep.telefonunda stereo olduğu için 4 uç var.sen bunlardan ikisini kullanacaksın.dikkat edeceğin noktalar:kristal yanlış olmasın benim başıma geldi çünkü.ikincisi dtmf sinyalin gerçekten telefondan çıkıp devreye gittiğinden emin ol.kulaklığı tel.taktıkdan sonra tuşlara bas çıkan seleri telefondan değilde kulaklıktan duymalısın. kulaklık kısmını kes ve direk devreye uygula.çalışır muhakkak bir hata vardır.ayrıca çıkışı ledlerle takip edebilirsin tabiki.
slm usta; elimdeki entegre cm8870 imiş, ancak ben hala çıkış alamadım, elimdeki cep telefonunun kulaklığından giriş yaptım, dediğin gibi 4 uc var 2 si gnd kalan 2 uc ise kulaklık hoparlörüne gidiyor, ben kulaklık hop. birisini koparıp denedim, diğeri ile tonları gayet net duyabiliyorum, cep telefonundan dtmf fonuna alıyorum zira 2-3 seçeneği var telefonda, çıkış alamayınca çıkışı skoba bağladım ama skopta da bir değişim yakalayamadım, cm8870 in datasheetinde rakamların karşılığı olan frekansı görebilirmiyim diye düşündüm ama göremedim, bir püf noktası var sanırım ama çözemedim gitti, acaba çıkış çok mu zayıf kalıyor? bir opampla güçlendirmek vs mi gerekiyor?
@EDİT
arkadaşlar hop. çıkışını LM386 (200 kat gain) ile verdim CM8870 e sonunda çıkışı almayı başardım, sanırım bazı cep tellerinde gelen sinyal zayıf geldiğinden güçlendirmek gerekiyor, ben bu şekilde aştım sorunumu umarım bu tip bir çalışma yapan arkadaş yazdığım bu yazıyı okuyarak faydalanır
Ben de küçük trafo ile sonuç almıştım. Cep telefonu kulaklığı çıkışına sinyal seviyesini ayarlayacak şekilde bir trimpot koyup arada trafo ve çıkışı 8870'e bağlı olarak.Saygılar.mg1980
Başlık: Ynt: DTMF Projeleri
Gönderen: POWER - 06 Temmuz 2013, 10:19:49
ben bu uygulamayı çok yaptım fakat böyle bir sorunla karşılaşmamıştım.
Alıntı yapılan: mg1980 - 06 Temmuz 2013, 07:01:41 Ben de küçük trafo ile sonuç almıştım. Cep telefonu kulaklığı çıkışına sinyal seviyesini ayarlayacak şekilde bir trimpot koyup arada trafo ve çıkışı 8870'e bağlı olarak.Saygılar.mg1980
arkadaşlar 3 gün uğraştım ama direk cep telefonundan MC8870 i çalıştıramadım, elektroniğin en sevdiğim yönü çözümün çok olması, ben bu şekilde aştım sorunu. elbette ki farklı yöntemlerle de aşılabilir belki ben bir yerlerde hata yaptığım için sonucu alamadım ama önemli olan sorunu çözmek değil mi?
Başlık: Ynt: DTMF Projeleri
Gönderen: POWER - 06 Temmuz 2013, 22:40:16
peki yukarıda verdiğin devreyi mi yaptın?cm8870 devresi birazcık farklı çünkü.
usta MC8870 devresi değil mi bu, elimdeki entegrede MC8870 (direnc netten almıştım)
yukarıda verdiğim devreyi yaptım ama sonradan farkettim ki osc. ye ait cond. olmasada oluyor, sonuc olarak direk datasheetteki uygulamayı da yaptım, devre kısmen çalışıyor. kısmen dedim şöyleki tuş takımından 1-4-7-*-# ler çalışmıyor, diğer rakamlar çalışıyor, 100K lık trimpotla çıkışı yakalayabiliyorum, hatta 16-17, pin arasındaki 330K ya paralel 4148+100k takınca biraz daha iyi oldu, benim anlayamadığım neden bazı tuşların çalışmadığı, skoptan sinyali görebiliyorum ama sağlıklı değil, bu arada çalışan kısım aslında bana yeter ama çalışmamasına taktım ben. ayrıca kendi cep. telim ve 2 adet eski model tellerle denedim, kendi telefonumda hepsi sorunsuz çalışıyor, birisinde LM386 olmayınca hiç çalışmıyor, diğer cep telefonu (ki devreyi bununla kurmayı planlıyorum) kısmen çalışıyor. yaw bu sorun yazılımla olsaydı şimdiye ete hocanın kafasını şişirirdik ama analog yapıya mecbur kendimiz tırmalayacağız. bu arada ete hocam mailinizi aldım, balık için teşekkür ederim. derdim kendimizi geliştirelim. hazırcı olsaydık ete hocamda çaldığım ve 2 senedir kullandığım ısı ayarlı havya gibi yapardık ;D
Başlık: Ynt: DTMF Projeleri
Gönderen: POWER - 08 Temmuz 2013, 14:31:41
senin isis şemasını verdiğin devre, cm8870 nin devresi değil.sen en iyisi cm8870 datasheed bilgisini indir.ordaki uygulama devresini yap kesinlikle çalışır.ben bu uygulamadan defalarca yaptım problem çıkmadı.
Alıntı yapılan: POWER - 08 Temmuz 2013, 14:31:41 senin isis şemasını verdiğin devre, cm8870 nin devresi değil.sen en iyisi cm8870 datasheed bilgisini indir.ordaki uygulama devresini yap kesinlikle çalışır.ben bu uygulamadan defalarca yaptım problem çıkmadı.
usta verdiğim şema ile CM8870 datasheetindeki uygulama aynı değil mi? sadece benim hatam kristale bağlı cond. fazlalık ayrıca girişte sinyalin parazitini ve biasını yapmak için ilave trimpot ve direnç atılmış, yanlışmıyım?
BU arada herkese hayırlı ramazanlar diliyorum.
Başlık: Ynt: DTMF Projeleri
Gönderen: POWER - 08 Temmuz 2013, 21:15:49
bakıldığı zaman farklı yerleri var söylediğin gibi.bu sonucu nasıl etkiler bilemiyorum.ben hep cm8870 uygulama devresinden yaptım.sorunla karşılaşmadım.birde bu verdiğin devreyi uygula bakalım ne olacak?
Böyle soruları garip buluyorum. Madem 8870 bu kodları zaten sayı olsrak veriyor ise , 628 de bu kodu oradan okuyorsa geriye lcd ye yaz demek kalmazmı. O halde sorunun cevabı görebilirsin değilmi. Ete
ete hocam mrb ht9200a ile bi cihaz yaptım dtmf cıkısını hoparlerden duyabiliyorum ancak telefon santrali hicbişekilde tepki vermiyor daha önce ugrasmıssınız .Ht9200 cıkısını hatta vermede sıkıntı yasıyorum sanırım örnek olabilecek bi şeme verebilirmisin varsa hocam :(
hocam bu devreyi kullanıyorum suan ama sonuç alamadım cok araştırdım ancak işime yarar bişey bulamadım genelde herkez aynı sıkıntıyı yasamıs ptt santrali dtmf tonları algılamıyor sorun nerde olabilir
HP den ses duyabilirsin ancak DTMF kodları istenilen frekansta çıkmıyordur mutlaka. PBP manuali derki DTMF kodları üretecekseniz işlemci frekansınız en az 20 MHz olmalı aksi halde sorun yaşarsınız der.
KOdlarını görmedim. Devrende kristal falanda gözükmüyor muhtemelen sebep budur.
hocam bu semadaki ht9200a bolumunun cıkısını kullanıyorum benim işlemcim 18f2520 LCD vs var devremde yazılım olarakta ccs kullanıyorum yalnız kristal frekansım 4mhz ,ama anlamadığım nokta dataları seri olarak ht9200 a basıyorum datashetende belirttikleri şekilde işlemci kristal frekansı hangi konuda etkiler sistemi ht9200a ilk datayı aldıktan sonra dtmf üretmeye baslıyor
Ben karıştırdım sanırım. Kodu zaten entegre üretiyor. Bu nedenle 4 Mhz de de çalışması gerekir. Başka bir sorunun var demekki ama maalesef hiç bir yorum yapamıyorum çünki bu konuda hemen hemen hiç tecrübem yok. Gelen DTMF kodlarını çözdürme konsunda çok çalıştımda DTMF kod üretmeyi hiç yapmadım desem yalan olmaz. Sorun olabilecek şeylerden biriside hat trafosu da denilen arada kullanılan trafodur. Bu trafo 1:1 oranında sarıma sahip olmalıdır. Ama her bir taraf sargısı 600 ohm olmalıdır. Bu empedans hat ta sinyalin kaybolmaması için gereklidir. Trafon uygun değil ise sorun buradan da kaynaklanabilir. Eski modemlerde bu trafonun çok kalitelilerini bulmak mümkün. Onlardan birisini kullanmaya çalış bence.
Verdiğin şema edaboard sitesinde verilmiş. Orada yapanlarda aynı sorunu yaşamışlar. Ama bir çözüm üretilmemeiş maalesef.
s.a. bu projede ete hocamızın bir çalışması vardı, onu geliştirmek için bundan 7-8 ay önce bir çalışma yapmıştım, entegre olarak CM8870 kullandım sorunum şu idi, 8870 çıkışından 4-6-7-8-9 rakamlarını alıyor ancak 1-2-3-5-0 ları alamıyordum, bunun sebebini bulamadım.
pro-TR DTF okuyucusu olan 8870 ent'sinin bazı kodları okuyup bazılarını okumama gibi bir lüx'ü yoktur ben bu entegreyi yaklaşık 10 yıldır kullanıyorum böyle bir durumla karşılaşmadım . yalnız bu entegrenin devresini yaparken dikkat edilmesi gereken pdf'sinde veya daha önceden denenmiş bir devre ile dizayn edilir ise herhangi bir problem çıkmaz . devrede hata yok ise seninde anlattığına bakılır ise vede benim anladığım kadarıyla 8870 ent'sinin ton girişine uygulanan ton ses yüksekliği fazla ise bu gibi dengesizlik yapabilmektedir onun için bu devreyi ilk olarak kulanılacak devrelerde ton girişine bir adet ayarlı direnç konarak kodların en güzel okunduğu yerde bırakılmalıdır. ve ton girişine konması gereken direnç böylece seçilmelidir.
arkadaşlar ben dtmf kod çözme değil kod gönderme devresi yaptım alarm panellerine bağlanan alarm durumunda kayıtlı numaraları arayan devre ancak sorunum su numarayı aratıyorum karsı tarafın tepkisini anlayamıyorum yani karsı taraf telefonu acmısmı yada hat mesgulmu yada cevap verilmiyormu.Burda tıkandım kaldım piyasada satılan hazır modelullerde optocuplerlı bi devre var devre aşağıdaki gibi buna ekstra olarak herhangi bi kod çözücü entegre vs yok sadece dtmf kod uretme entegresi ht9200a var,yardımlarınızı bekliyorum devreyi denedim ama hiçbir sonuç alamadım.Yapmak istediğim numara arandıktan sonra karsı taraf telefonu açtığında apr içindeki sesi dinletmek...
hattı kontrol etmek zor iştir ,ülkemizde çevir sesi ile ve ilçelere göre değişiklik gösteriyor.genelde Istanbul tonları 450hz sinus sinyal. bunu çözecek bir PLL kurman gerekir.klasik olarak LM567 entegresi ile yapılıyor.PLL öyle ayarlanıyorki ,450hz varken çıkışı logic 1 olyor.tabi meşgul çalar ise türk telekom ton standartlarını araştırıp ton aralıklarını ve peryotlarını iyice öğrenip bunları işlemcinle algılamak gerekiyor.kısacası gözünü korkutmak istemem ,fakat basit bir işlemde değil.
Ben şöyle bir çözüm bulmuştum:Bir süre sonra ahizenin kaldırılacağını var sayıp anonsu başlatmış, bir süre bir kaç kez anonsu tekrarlatmıştım.Telefonun belli bir sürede açılmama ihtimaline karşı ahizeyi tekrar kapatıp bir süre sonra tekrarlatmıştım.Beş numarayı sırayla aratıyordum.Belki çok mantıklı değil ama sonuçta iş görüyordu.Bir keresinde evdeki hareket sensörünün yanlış çalışması sonucu ANKARA'da polisler hırsız alarmı uyarısıyla adrese gitmişlerdi.
Alıntı yapılan: medes - 19 Aralık 2013, 16:36:48 pro-TR DTF okuyucusu olan 8870 ent'sinin bazı kodları okuyup bazılarını okumama gibi bir lüx'ü yoktur ben bu entegreyi yaklaşık 10 yıldır kullanıyorum böyle bir durumla karşılaşmadım . yalnız bu entegrenin devresini yaparken dikkat edilmesi gereken pdf'sinde veya daha önceden denenmiş bir devre ile dizayn edilir ise herhangi bir problem çıkmaz . devrede hata yok ise seninde anlattığına bakılır ise vede benim anladığım kadarıyla 8870 ent'sinin ton girişine uygulanan ton ses yüksekliği fazla ise bu gibi dengesizlik yapabilmektedir onun için bu devreyi ilk olarak kulanılacak devrelerde ton girişine bir adet ayarlı direnç konarak kodların en güzel okunduğu yerde bırakılmalıdır. ve ton girişine konması gereken direnç böylece seçilmelidir.
hmm ustam hiç dikkat etmedim ama mantıklı geliyor. nasip olursa bunu bir deneyeceğim. yalnız ben hat trafosu eklememiştim. bundan kaynaklanabilir diye düşünmüştüm
RAR dosyası içinde yer alan Telefon_Kon628.DSN devresinde buzzer çıkışından ayrıca bir uç alınarak bir kondansatör üzerinden hatta bağlanmıştır. Bu şekilde buzzere verilen sesin aynısı hatta da bir miktar verilmektedir. Ses kimisine göre yeterli kimisine göre yetersiz geldi. Bu sistem hiç olmazsa bir miktar sesi hattan iletmektedir. Sesi artırmak için değişik metodlar var ama hepside komplike ilaveler gerektiriyor. Bunlardan en kolayı ses çıkışı ile hat arasında bir başka hat trafosu kullanmak tır. Ne yazıkki aklımda yada elimde çi,zilmiş bir şema yok. Denemeler yaparak uygun bir çözüm bulunabilir.
İyi günler. Paylaşmış olduğunuz dökümanlardan yararlanarak bende bu devreyi yapmaya çalıştım.Sizin tasarladığınız devreden farklı olarak piyasada bulamadığım için TIL-111 yerine 4N25,HT9170 yerinede HT9170B kullanmak durumunda kaldım.Ayrıca 12V AC güç kaynağım olmadığı için ordaki köprüdiyot 'u iptal edip direk 12V DC bağladım. Sonuç olarak devre çalışmadı. :) Açıkcası nerde veya nerelerde hata yaptığımı bulabilicek bilgiye sahip değilim. Devreyi tekrar malzeme alıp en baştan kurmayı düşünüyorum ama bundan önce size danışmak istedim. Teşekkürler.
Yapmış olduğun tadilatlar yada değişiklikler sistemin çalışmasını etkileyecek şeyler değil. Özellikle HT9170 zaten DIP kılıf için 9170B olarak alınması gerekiyor idi. Bu durumda devrende başka bir kusur var demek oluyor. Bunu gerçekten bulacak durumda değil isen ya benim yada bir başka arkadaşının kartı kontrol etmesi gerekir. Bir yenisini yapsan bile aynı sonucu alman kuvvetle muhtemel. Hangi şehirde oturuyorsun.? Yada devreyi kargo ile yolayabilecek durumdamısın. Yollaması en azından 5-7 TL geri almasıda bir o kadar tutacak nerdeyse yenisinin maliyeti kadar. En iyisi adım adım gidip sorunu bulmak aslınd.a Öncelike işlemciye doğru program atabiliyormusun test etmek gerek. Bu test sonucunda işlemcininde yerinde çalışıp çalışmadığını anlamak mümkün olur. Aslında bunu anlamanın bir yoluda telefondan arama yapmak olur. Şayet sistem çalışıyor ise arama LED i yanması gerekir. Sen en iyisi biraz daha detay ver ne oluyor ne olmuyor bilelim.
Hocam merhaba nasılsınız iyisinizdir umarım hocam bu devrede röle sayısıs artırsak örnegin 10 röle bu yazılımı 18f4550 ye uyum saglarmı bu yazılım teşekkürler..
Bu soru bana pek mantıklı gelmedi ya neyse yinede cevaplayayım. Röle sayısı tamamen röleyi sürecek olan boş port pini ile alakalı. Bunu sende biliyor olmalısın. Pin varsa röle sayısında sorun yok demektir .
İşlemci uyumu ise tamamen farklı bir konu. Her işlemcinin kendine has özellikleri var o özellikleride data sheetten bulup çıkarmak gerek. Yapabiliyorsan uyumsuzluk diye bir sorun oluşmaz. Özellikler neden lazım onuda belirteyim. İşlemcide kullanmadığın özellikleri kapatman gerekiyor. Neler olduğuna bakıp nasıl kapatıldıklarını öğrenip uygulaman gerekiyor.
1 haftadır ugraşıyorum 18f4550 ile yapamadım 877 çalışmakta devre 877 ile 4550 aynı bacak baglantıları var dataşeet baktıgımızda 4550 ile ugraşmamaın sebebii ise usb port eklemek devrefye farklı bir özellik için çalışma yapmaktayım pc üzerinden kontrol örnegin fakat şimdi pc biyana 4550 ile ne yaptıysam olmadı ayaklar aynı 877 ile..
Program koymadığın için üzerinde inceleme yapamıyorum. Data sheet den gördüğüm kadarı ile yalnızca ADC ayarlamasında bir fark var. ADC modülünü iptal etmek için 877 de, Adcon1=%00000111 Komutunu veriyoruz, 4550 de ise Adcon1=%00001111 komutunu vermek gerekiyor. Onun dışındakiler hepsi aynı olarak gözüküyor. Ancak sigorta ayarları tamamen farklı olacaktır.
Etel
Başlık: Ynt: DTMF Projeleri
Gönderen: Mahmut Eşit - 29 Nisan 2016, 09:23:01
selamun aleyküm hayırlı ramazanlar. Saygı değer ete hocam öncelikle yardımlarınız için teşekkürler ALLAH RAZI OLSUN
Merkezi ezan sisteminin kodlarını okumak için önceleri bir pic li bir devre yapmıştım. onunla okuyabiliyordum. bu devreyi kaybettim. Yenisini yaparken de fazla uğraşmayayım diye dtmf entegresinin çıkışına direk led bağladım. fm alıcıda bu devre kodları göstermedi. bilgisayarın ses çıkışını kullanarak bilgisayardan dtmf enkoder programı ile denedim. kod gönderdiğim zaman ledlerin bazıları yanık kalıyor. beslemeyi kapatıp açtığım zaman sönüyor. Ama tekrar kod gönderdiğim zaman yanık kalıyor. dtmf enregresinin gücü led yakmaya yetmiyor. mu acaba.
daha öncede bu merkezi ezan sistemi alıcısının kod çözücü kısmı çalışmıyor du. 3,58 mhz kristali 6 mhz yaptım çalıştı. Vericideki kristal le alıcıdaki kristal aynı mhz olması gerekiyor diye bir kanıya vardım. doğru mu bilmiyorum.
Bu sorduğun soruların bütün cevapları encoder entegresinin data sheetinde yazıyor olması gerek. Açıkçası bu amaçla ne kullandım nede olabilirmi diye düşündüm. Hangi decoder entegresini kullanıyor isen onun data sheetine bakıp cevaplarını kendin bulabilirsin.
8870 kod çözücü ve türevleri Streering Logic komparatorü olduğu için çıkış portları Latch'tir,aynen dediğiniz gibi en son gelen 4 bitlik data çıkışlarda kalır ve gerilimi kesmedende gitmezler. 8870 Switched Capacitor Filter yani SCF donanımına sahiptir kristal'den elde ettiği Clock sinyali ile dijital filtreleme yapar. her ikisininde Clock frekansının aynı olması şarttır. uluslar arası ton standartı için kristalin 3.579.545 olması gerekmektedir. bu cami belediye anons sistemlerinde elinde telsizi olanlar müdahele edemesinler diye karşılıklı kristal frekanslarını standardın dışında kullanılıyor.ayrıca çipin birde DV Data Valid yani geçerli bir çift ton sinyali ayağı vardır.bu ayak sadece DTMF sinyali aldığında tepki verir,sinyalin durması esnasında eski durumuna geri döner..
dtmf üzerine biraz çalışma yaptım. sizinle paylaşmak istedim. İlmiz kütahyada merkezi ezan sistemi ve dtmf ile ezan aç kapa uygulaması yapılmaktadır. Bir gün bizim caminin ezan açma dtmf kartı arızalandı. Yapan firmayla görüştüm. belirbir müddet sönra alıcının arızalandığını dtmf ködlarını ökuyamadığını yenisinin alınmasını söyledi. Bizde şiparış verdik. yenisi geldi ö da çalışmadı. Firmaya tekrar geri gönderdik. adamlar yapıp tekrer geri gönderdiler. Baktım üzerinde 3.57 lik kristaller sökülmüş 6 mhz lik kristaller takılmış. 8870 ve pice ben de eski alıcının kristallerini de değiştridim. aynı şekilde 6 mhz yaptım eskisi de çalıştı. adamlar zaten eski arızlanan kiristallerin üzerine 3.57 yazmışlar kalemle ama gerçekte 6 mhz imiş. Neyse aradan birkaç sene geçti. Bizim menzin bizim yedekteki cihazı alıyör meslektaşının birinin arızalı cihazının yerine takıyör bizim cihaz yine çalışmıyör Bana cihazı geri getirdi çalışmıyör diye. Biraz araştırma yaptım. herkezin cihazı arızalanmış yaptırıyörlramış. yaptıranlara baktım 8870 in kristali 4 mhz ye dönmüş bizim eski cihaza direk 4 mhz kristale döndürdüm çalıştı. fakat yeni cihazı 4 mhz ye çevirdim çalışmadı. bu iş beni baya uğraştırdı. ezan dtmf ködlarını kaydettim. bilgisayardan ses çıkışı ile ezan sisteminin dtmf kartına ses girişi yapıp sesi bilgisayardan gönderiyörum bilgisayardan açıp kapatıyör ama alıcıya bağlıyörum çalışmıyör. çalıştıramadığım cihazın pic i arızalanmıştı. cöde prötek yapılmamış prögramı ökuyup yeni pice yükledim fakat epröm dösyasını kaydetmiyör bunun zararı ölabilr mi acaba. yalnız bahsettiğim gibi dtmf ködlarını biligisayarın ses çıkışından gönderdiğim zaman açıp kapatıyör. fm alıcıdan gelen sesi 8870 çözemiyör mu diye çıkışına led bağladım önlar da yanıp sönüyör 8870 iİLE YENİ BİR KÖD ÇÖZÜCÜ DEVRESİ YAPTIM BİLGİSAYARIN SES ÇIKIŞINDAN BAĞLANTI YAPTIM VE BİNARY KÖDLARI ökudum media playeri yavaşlararak. KÜTAHYA DTMF EZAN açma ködu 1100,0011,0110,0100 kapama ködu 1100,0011,0110,0101 pic e kendim prögram yazayım dedim prögramlama könusunda da iyi ölduğumu zannediyördum ama böyle basit bir prögram dahi beni baya uğraştırdı. ilk yazdığım pröğram çalışmadı. önlarıda inceleyip hatalarımı söylerseniz sevinirim. TRISB=%11110001 TRISA=%00000000
portA = 0
high porta.4 pause 1000 low porta.4 basla:
if portb = %01000001 then 'en düşşük bit rb4 high porta.4 endif goto basla
if portb= %01010001 then low porta.4 endif pause 10 goto basla end
bu prögram çalışmadı rb0 std ucu yani dtmf öluştuğunda 1 ölan uc pört b nin sön 4 biti de data uçlarımız
TRISB=%11110001 TRISA=%00000000
portA = 0
high porta.4 pause 1000 low porta.4 basla:
if portb.6 = 1 and portb.0 = 1 then 'en düşşük bit rb4 high porta.4 endif if portb.0 = 1 and portb.6 = 1 and portb.4 = 1 then 'en düşşük bit rb4 low porta.4
endif pause 10 goto basla
end bu pröğram bilgisayardan çalıştı bu gün öğlen namazında fm den de deneyeceğim. yalnız kapattıktan sönra 1 saniye kadar açıp tekrar kapatıyör hım bu arada dtmf ködlarının sadece birisiyle açıp kapama yaptırıyörum sön ködlarla yani 0100 ile açma 0101 ile kapama yaptırıyörum. biraz uzun öldu vaktinizi aldım. hakkınızı helal edin. ALLAHA EMANET ÖLUN . ve namazlarınızı aksatmayın.
Programa bakınca iki yerde yeni şifrenin yazılması gerektiğini görüyorum. Birinci yer;
PAUSE 200 CLEAR read 0,SAYI:PAUSE 10 IF SAYI=$FF THEN SIFRE=2580 'şifre değişirken buradaki şifre yerine yenisi yazılacak GOSUB SIFREYAZ endIF
Burada yer alan SIFRE=2580 yerine yeni şifre yazılacak.
İkinci yer;
YINE: 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=2580 'şifre değiştirilirken buradaki 2580 yerine yenisi yazılacak.
Burada da aynı işlem yapılmalı. Diğer taraftan şifre rakamlarını teker teker çıkartıp eproma yazdıran o verdiğin bölümde Proton TEMP isimli değişken adına itiraz ediyor ise adını değiştirmen gerekirdi. TEMP yerine KAMP yaz yada başka bir isim ver. Ama o verdiğin ismi nerede TEMP görüyorsan orada da TEMP yerine kullanman gerekir. Sen o satırları kapatarak Sifreyi bir yerde alamaz hale geliyorsun tabiiki çalışmaz o program.
If SAYI=5 Then '#5 GoSub SIFREAL '5 rakamı girilirse GoSub SES1:GoSub SES2:GoSub SES3 If CIK=1 Then BITIR If RAKAM=SIFRE Then 'önce eski şifreyi gir GoSub SES1:GoSub SES1:GoSub SES2 GoSub SIFREAL 'sonra yeni şifreyi gir If CIK=1 Then BITIR SIFRE=RAKAM GoSub SES1:GoSub SES2 GoSub SIFREYAZ 'yeni şifreyi eproma kayıt et. EndIf EndIf GoTo ROLEKONTROL [code]
usta bu bolumde normalde sıfrenın degıstırılecegı bolum degılmı
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
sukru abının devre kartını yapıp ete hocamızın yazılımını kullanarak cep telefonu ıle calısır duruma getırdım.soyle bır sıkıntı mevcut.roleler kodları gırınce acılıyor.burda sıkıntı yok.mesela #1 dedıgımde 1 nolu role acılıyor.ama role sanıyeler ıcerısınde bu sure cok kısa role ac kapa yapıyor sureklı role degıstırdım olmadı.ters dıyot 1n 4007 kullanıyorum.role enerjı uclarına 100 nf taktım olmadı.roleye baglı olan led yanıyor.ondada sıkıntı yok.ama sankı role enerjısı kesılırmıs gıbı anlık tık tık diye calısıyor yazılımı eklıyorum konu ıle ılgılı yardımcı olabılırmısınız
Device = 16F628A
@ CONFIG_REQ
@ __config CP_OFF & DATA_CP_OFF & WDT_OFF & XT_OSC & MCLRE_OFF & LVP_OFF & BODEN_OFF & PWRTE_OFF
Xtal 4
CMCON=7
PORTA=0:PORTB=0
TRISB=%01011111
TRISA=%11110000
Dim SIFRE As Word
Dim RAKAM As Word
Dim TEMP As Word
Dim BASKA As Word
Dim ZAMAN As Word
Dim SURE As Word
Dim SAYAC As Byte
Dim SAYI As Byte
Dim DURUM As Byte
Dim BIRLER As Byte
Dim ONLAR As Byte
Dim YUZLER As Byte
Dim BINLER As Byte
Dim ZIL As Byte 'ÇALACAK ZİL ADEDİ
Dim X As Byte
Dim CIK As Bit
Dim YAZ As Bit
Dim sayı As Word
Symbol CIKIS1=PORTA.0
Symbol CIKIS2=PORTA.1
Symbol CIKIS3=PORTA.2
Symbol CIKIS4=PORTA.3
Symbol ROLE =PORTB.6
Symbol VALDAT=PORTB.0
Symbol BUZZER=PORTB.7
PORTA=0:PORTB=0
DelayMS 200
Clear
SAYI=ERead 0:DelayMS 10
If SAYI=$FF Then
SIFRE=1234 'şifre değişirken buradaki şifre yerine yenisi yazılacak
GoSub SIFREYAZ
EndIf
BINLER=ERead 0 :DelayMS 10
YUZLER=ERead 1 :DelayMS 10
ONLAR =ERead 2 :DelayMS 10
BIRLER=ERead 3 :DelayMS 10
SIFRE=BINLER*1000+YUZLER*100+ONLAR*10+BIRLER
;ZIL=ERead 16
;If ZIL=255 Then
; ZIL=5
;EWrite 16,[ZIL]
;EndIf
;DURUM=ERead 10
;If DURUM=255 Then
; DURUM=0
;GoSub ROLEYAZ
;EndIf
;PORTA=DURUM
'--------------------------------------ANA--------------------------------------
BASLA:
SAYAC=0
GoSub SES1
YINE: RAKAM=0 : GoSub SIFREAL
; If CIK=1 Then BITIR 'süre aşımı olmuş ise
If RAKAM=3232 Then 'yedek şifre olan 2006 buradan değiştirilecek.
SIFRE=1234 'şifre değiştirilirken buradaki 2580 yerine yenisi yazılacak.
GoSub SES2
;GoSub SES1
;GoSub SES2
;GoSub SES1
GoSub SIFREYAZ
GoTo ROLEKONTROL
EndIf
If RAKAM=SIFRE Then
GoSub SES4:DelayMS 50
GoTo ROLEKONTROL
EndIf
SAYAC=SAYAC+1
If SAYAC=3 Then '3 defa yanlış şifre girilebilir fazlasında bloke olur
ATLA:
GoSub CIKIS
; Sleep 600 '600 sn bloke olacak.
GoTo BASLA
EndIf
GoSub SES2
GoSub SES1
GoSub SES3
GoTo YINE
ROLEKONTROL: If YAZ=1 Then GoSub ROLEYAZ
GoSub ALBILGI
If CIK=1 Then BITIR 'süre aşımı olmuş ise
If SAYI=12 Then ACMA '# '# tuşuna basılmış ise açma ya git
If SAYI=11 Then KAPAT '* '* tuşuna basılmış ise kapatmaya git.
GoSub SES2:GoSub SES3
GoTo ROLEKONTROL
ACMA:
GoSub ALBILGI
If CIK=1 Then BITIR
If SAYI=0 Then 'sıfır tuşuna basılmış ise çık ve tekrar başa git
GoSub SES3
GoSub CIKIS
GoTo BASLA
EndIf
If SAYI=1 Then
If DURUM.1=0 Then
GoSub SES1:YAZ=1
PORTA=DURUM | %00000001 ;%00000010 '1 tuşuna basılınca 1 nolu çıkışı aç
; High PORTA.0
GoTo ROLEKONTROL
EndIf
EndIf
If SAYI=2 Then
If DURUM.2=0 Then
GoSub SES1:GoSub SES1:YAZ=1
PORTA=DURUM | %00000010 '%00000100 2 tuşuna basılınca 2. ci çıkışı aç
;High PORTA.1
DelayMS 2000
; Low PORTA.1
PORTA=DURUM & %11111101
GoTo ROLEKONTROL
EndIf
EndIf
If SAYI=3 Then
If DURUM.3=0 Then
For X=1 To 3:GoSub SES1:Next
YAZ=1
PORTA=DURUM | %00000100 '3 %00001000 tuşuna basılınca 3. çıkışı aç
; High PORTA.2
GoTo ROLEKONTROL
EndIf
EndIf
If SAYI=4 Then
If DURUM.4=0 Then
For X=1 To 4:GoSub SES1:Next
YAZ=1
PORTA=DURUM | %00001000 '4 %00010000 tuşuna basılınca 4. çıkışı aç
; High PORTA.3
GoTo ROLEKONTROL
EndIf
EndIf
If SAYI=5 Then '#5
GoSub SIFREAL '5 rakamı girilirse
GoSub SES4 :GoSub SES1
If CIK=1 Then BITIR
If RAKAM=SIFRE Then 'önce eski şifreyi gir
GoSub SES2:GoSub SES4
GoSub SIFREAL 'sonra yeni şifreyi gir
If CIK=1 Then BITIR
SIFRE=RAKAM
GoSub SES4
GoSub SIFREYAZ 'yeni şifreyi eproma kayıt et.
EndIf
EndIf
GoTo ROLEKONTROL
KAPAT: GoSub ALBILGI 'önce * tuşuna basılmış ise program buraya gelir
If CIK=1 Then BITIR
DURUM=PORTA
If SAYI=0 Then 'sıfır tuşuna basılmış ise her şeyi kapat
GoSub SES3
Low PORTA '*0 %10000001
EndIf
If SAYI=1 Then '1 tuşuna basılmış ise 1. çıkışı kapat
If DURUM.1=1 Then
GoSub SES2:YAZ=1
PORTA=DURUM & %11111110 ;%11111101
; Low PORTA.0
GoTo ROLEKONTROL
EndIf
EndIf
; If SAYI=2 Then '2 tuşuna basılmış ise 2. çıkışı kapat
; If DURUM.2=1 Then
; GoSub SES2:GoSub SES2
; YAZ=1
; PORTA=DURUM & %11111101
; GoTo ROLEKONTROL
; EndIf
; EndIf
If SAYI=3 Then '3 tuşuna basılmış ise 3. çıkışı kapat
If DURUM.3=1 Then
For X=1 To 3:GoSub SES2:Next
YAZ=1
PORTA=DURUM & %11111011 ;%11110111
; Low PORTA.2
GoTo ROLEKONTROL
EndIf
EndIf
If SAYI=4 Then '4 tuşuna basılmış ise 4. çıkışı kapat
If DURUM.4=1 Then
For X=1 To 4:GoSub SES2:Next
YAZ=1
PORTA=DURUM & %11110111 ;%11101111
; Low PORTA.3
GoTo ROLEKONTROL
EndIf
EndIf
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:ZAMAN=0
While VALDAT=0
SURE=SURE+1
DelayUS 900
If SURE=22000 Then
GoSub CALIS
EndIf
Wend
SAYIAL:
SAYI=0
While VALDAT=1 ;STD
SAYI.0=PORTB.4 ;Q1
SAYI.1=PORTB.3 ;Q2
SAYI.2=PORTB.2 ;Q3
SAYI.3=PORTB.1 ;Q4
Wend
If SAYI=10 Then SAYI=0
Return
SIFREYAZ:
TEMP=SIFRE
BINLER=Dig TEMP,3
YUZLER=Dig TEMP,2
ONLAR=Dig TEMP,1
BIRLER=Dig TEMP ,0
EWrite 0,[BINLER]:DelayMS 10
EWrite 1,[YUZLER]:DelayMS 10
EWrite 2,[ONLAR] :DelayMS 10
EWrite 3,[BIRLER]:DelayMS 10
Return
ROLEYAZ:
DURUM=PORTA & %11110000 ; %01111110
EWrite 10,[DURUM]
YAZ=0
Return
SES1: Sound BUZZER,[110,12]:DelayMS 130:Return
SES2: Sound BUZZER,[95,12] :DelayMS 130:Return
SES3: Sound BUZZER,[85,25] :DelayMS 130:Return
SES4: Sound BUZZER,[50,25] :DelayMS 130:Return
BITIR:
GoSub CIKIS
GoTo BASLA
Return
CIKIS:
SURE=0
CIK=0
SAYAC=0
RAKAM=0
GoSub SES2
GoSub SES2
GoSub SES3
GoSub SES3
Return
CALIS:
If ROLE=0 Then
; While ROLE=1 :Wend
;PORTA=DURUM & %00000000
Low PORTA
Else
GoTo ROLEKONTROL
EndIf
Return
;End
Program üzerinde çok oynanmış ve denemeler yapılmış gözüküyor. Sorunun röle açma kısmında olduğunu düşünüyorum. Bu nedenle önceden nasıl yazmışım hatırlamıyorum ama bugün yazsam aşağıdaki şekilde yazardım. Aşağıda 4 adet rölenin açma şekli yer alıyor eskisi ile değiştir bunları. Temel düşünce bir röle açık ise yeniden açmaya çalışmanın anlamı yoktur hatta zararlıda olabilir. Sürekli aç kapa yaptırabilir bu işlem. Açıksa dokunmuyoruz çünki gelen emir açma yönünde aynı şeyi kapatma içinde yapmak lazım. Programda bir sürü şu anda kafama yatmayan olumsuzluklar mevcut ama bütün programı düzeltmeye kalkışmak da hata olur. Aksayan yerleri düzeltmek daha uygun olacak.
ACMA:
GoSub ALBILGI
If CIK=1 Then BITIR
If SAYI=0 Then 'sıfır tuşuna basılmış ise çık ve tekrar başa git
GoSub SES3
GoSub CIKIS
GoTo BASLA
EndIf
If SAYI=1 and CIKIS1=0 Then
CIKIS1=1
DURUM=PORTA & %00001111
GoSub SES1:YAZ=1
GoTo ROLEKONTROL
EndIf
EndIf
If SAYI=2 and CIKIS2=0 Then
CIKIS2=1
GoSub SES1:GoSub SES1:YAZ=1
DURUM=PORTA & %00001111
DelayMS 2000
CIKIS2=0
DURUM=PORTA & %00001111
GoTo ROLEKONTROL
EndIf
EndIf
If SAYI=3 AND CIKIS3=0 Then
For X=1 To 3:GoSub SES1:Next
YAZ=1
CIKIS3=1
DURUM=PORTA & %00001111
GoTo ROLEKONTROL
EndIf
If SAYI=4 AND CIKIS4=0 Then
For X=1 To 4:GoSub SES1:Next
YAZ=1
CIKIS4=1
DURUM=PORTA & %00001111
GoTo ROLEKONTROL
EndIf
EndIf
Bu arada unutmayın, Eproma yazma işlemi 10 ms gecikme iseter. Ama okuma işleminde bir gecikme koyma ihtiyacı yoktur. Her türlü bilgi ard arda okunabilir gecikmesiz oarak. Yazma işlemi zor olandır. Fiziksel olarak voltaj ve akım uygulanıyor eproma ve bu işlemin gerçekleşmesi en az 10 ms sürüyor. Yazma işinde gecikme olmadan ikinci bri yazma emri gelirse ilkini yazamaz. Bu nedenle gecikme koyuyoruz. Bir eprom adresine ardışık bilgi yazılabilir ve her bilgi yerine tüm bilgi (diyelimki 5-6 byte) için tek bir 10ms gecikmede yeterli olacaktır. Mesela, Write 10, Veri1:pause 10 Write 11, Veri2:pause 10 Write 12, Veri3:pause 10 yerine Write 10, Veri1, Veri2, Veri3:pause 10 şeklinde bir komut kullanmanız halinde 20 ms lik tasarruf etmiş olursunuz. Her iki örnektede veriler güvenli şekilde eproma yazılmış olur.
Aşağıdaki kodları farklı yazardım;
SAYIAL:
SAYI=0
While VALDAT=1 ;STD
SAYI.0=PORTB.4 ;Q1
SAYI.1=PORTB.3 ;Q2
SAYI.2=PORTB.2 ;Q3
SAYI.3=PORTB.1 ;Q4
Wend
If SAYI=10 Then SAYI=0
Return
yerine
SAYIAL:
SAYI=0
IF VALDAT=1 THEN
SAYI.0=PORTB.4 ;Q1
SAYI.1=PORTB.3 ;Q2
SAYI.2=PORTB.2 ;Q3
SAYI.3=PORTB.1 ;Q4
While VALDAT=1:Wend
If SAYI=10 Then SAYI=0
ENDIF
Return
şeklinde yazmak daha doğru olurdu. Bana kalırsa bu yazılımın iyice kontrol edilmesi gerek. Çünki stack problemide olabilir. Stack taşıyorsa işlemci reset atar röle bırakır çeker (muhtemelen). Nerden çıkartıyorum ? kodu incelediğimde diyelimki program ALBILGI etiketine geldi. Buraya GOSUB ile geliniyor. Return ile dönülmesi gerek. ALbilgi içinde süre aşımı olursa GoSub CALIS komutu çalışıyor program bu sefer oraya gidiyor iki adet return gerekecek şimdi. Orada röle çekili değil ise LOW PORTA denilmiş. Buda yanlış PORTA=0 desen daha doğru olurdu. Ama röle zaten çekili durumda ise GOTO ROLEKONTROL denilerek stack işi çuvallamış oluyor. Şayet Rolekontrol dan GOTO BITIR yada THEN BITIR komutları ile çıkarsa program GOTO BASLA ile başa dönecek ve bir müddet sonra bu stack taşacaktır. Programı inceledikçe sürekli bu mesajda ekleme yapıyorum. En baş kısımda BASLA etiketinden sonra GOSUB SIFREAL diye bir komut var. Bu DTMF den gelen sayıları alan kısım. Her zaman sayı gelecek diye beklemek yanlış olacağı için oraya gidip belirli bir süre bekleyim sayı gelmedi ise geri dönmek gerekirdi. Sayı alan kısım ise ALBILGI etiketi altındaki kodlar. Burada VALDAT pininin 1 olması beklenior ama aynı zamanda bir sayaç da çalışıp zamanı sayıyor. Zaman yeterince geçti ise CIK=1 yapılıp geri dönülmesi gerekirken kodu değiştirip oraya GOSUB CALIS eklenmiş. Orada da GOTO ROLEKONTROL komutu olunca işler sarpa sarıyor. Diyeceğim odurki kod orjinal halinden çıkmış artık. Bilmeden yada düşünmeden yapılan değişiklikler program için sorun oluyorki olmuş burada görüldüğü gibi. Orada GOSUB CALIS komutu yerine CIK=1:RETURN komutu olması gerkirdi. Zira süre bitmiş ve sayı gelmemiş demek oluyor. Boşuna sayı gelmeden CALIS etiketine gitmenin bir anlamıda yok. Dediğim gibi program baştan aşağı yeniden kontrol edilmeli yada orjinal yazılımı kullanmak gerek. Ete
gosub calıs etıketını eklememın sebebı picin 12 nolu bacagına + sınyal geldıgınde roleler sureklı calıssın.bu bacaktakı sınyal kesildiginde sistem basa donsun ıstemıstım.soylekı bu kontrolu arac kontrol olarak kullanmak ıcın dusunmustum.CALIS komutunu o yuzden oraya ekledım.süre sonunda sınyal gelmedı ıse roleler kapanıyor.orda bır problem olmadıgını dusunmustum ben.uzaktan aracı calıstırdım.ama arabaya gıtmekten vazgectım.belırlenen sure sonunda calıs komutuna bakacak sınyal olmadıgını gördugunden basa donecek sekılde olmasını ıstedıgımden gosub calıs etıketıne dallanıp ordanda goto rolekontrol ıle basa donduruyordum.yanlısmı yapmıs oluyorum hocam o zaman ben?
orjınal yazılımınızı cep telefonu ıle kontrol edılebılır hale getırdıgımden kaynaklı sıkıntılar hocam bunlar.acma ve kapatma da cep telefonu ıle sıkıntım sadece acma bolumunde roleler acılınca sankı besleme cokermıs gıbı sanıyenın altındakı hızda roleler ac kapa yapıyor.bagladıgım sıstemın enerjısı kesılmıyor ama rolelerın mekanık ac kapa omurlerı hızla tukenmıs olmazmı bu sekılde
Bunun dışında başka bir şey gerekmiyor. Gerekmiyor derken hattın alınması telefon hoparlöründen yapılıyor. Bu bağlantıları yapman gerek. Programda bir zaman sayacı var. Belirli süre içinde şayet herhangi bir komut girilmez ise sistem kendini otomatik kapatır. Buda 18-20 sn olması gerek ama biraz daha az olabilir. Sen 16 sn diyorsun demekki sende 16 sn olarak çalışıyor otomatik kapanma. Bunu iptal etmek istersen aşağıdaki komut satırlarını bul; ALBILGI: SURE=0:ZAMAN=0 WHILE VALDAT=0 SURE=SURE+1 PAUSEus 270 IF SURE=65500 THEN CIK=1:RETURN ENDIF WEND Buradan " IF SURE=65500 then CIK=1:RETURN" komutunu sil yada kapat. Böylece otomatik kapanma iptal edilmiş olacaktır.
Önceden yazılmış programlarda değişiklik yaparken stack kontrolüne dikkat etmek gerekiyor. Rastgele yerler gosub vs eklemek kapsamlı projelerde (sinucunu direk göremediğiniz) ekstra dikkat gerektirir. Stack denilen şeyin ne olduğunu tekrar açıklamak ve kriterlerini ortaya koymak istiyorum. Stack işlemcinin kendisinin kullandığı (ama programcının ulaşamadığı) bir ara hafızadır. Geçici tampon hafıza gibi düşünün. Temel kaidesi şudur hafızaya en son giren mutlaka ilk çıkar. BU hafıza genellikle GOSUB komutlarında kullanılıyor. Program GOSUB komutunu görünce hemen o komutun fiziksel RAM adresini stack hafızasına atar. Ataratmaz stack boş yer göstergeci hafızaya yerleşen byte sayısı kadar artırılır. Örnek vereyim göstergeç 00 gösteriyor iken 2 bytelık bir adres oraya yazıldı diyelim göstergeç hemen 02 adresini gösterir. Bir sonraki gelen bilgi bu adrese yazılır. Bu şekilde adres göstergeci sürekli artar. Bu ara hafıza sınırsız değildir. 20-30 aralığında bir hafıza gibi düşünün.Program ilk gördüğü return komutu ile hemen gidip Stack den en son kayıtlı olan adresi alır ve o adrese geri döner. Stack göstergeci 2 adres eksilir. Bu şekilde şayet program düzenli ise stack hiç bir zaman taşmaz. Taşmanın da ne demek olduğunu açıklayayım. Diyelimki 20 stack adresi var ve sürekli stack'a bilgi ekleniyor. Sonunda adres limitinin sonuna gelinir ve daha yazılacak adres kalmayınca stack taşması meydana gelir ve program reset atar yada kilitlenir. Şimdi gelelim kriterlere. Basic derleyicisi şöyle diyor. İç içe geçmiş olarak ortalama 5 adet GOSUB dan fazlasını kullanmayın. Bu özellik işlemci hafızası ile bağlantılı olsada söylenen şey genel kaidedir ve bazı işlemcilerde bu 6-7-8 adet olabilir. Bir alt programa GOSUB ile gittin. Oradan RETURN ile dönmeden başak bir GOSUB ile başka bir yere gittin bu iş içe iki gosub demek oluyor. Bir üçüncüsünü orada da uygularsan stack den 6 adres kullanmış olursun. SOnunda oradan GOTO ile programın başına dönersen o kayıtlı olan adresler stack da ilelebet kalır ve stack kapasiten 3 adres eksilmiş olur. Doğrusu, gittiğin yerlerden önce RETURN ile döneceksin ve ilk GOSUB ile ayrıldığın yere geleceksin orada gerekirse GOTO basla diyebilirsin artık. Umarım artık gereksiz yere GOSUB ve GOTO komutlarını kulanmazsınız. Yada kontrollü olarak kullanırsınız. İç içe geçmiş 5 GOSUB kaidesini unutmayın. GOSUB ile gittiğiniz yerden mutlaka RETURN ile dönün ve gerekirse işaret biti kullanın ve dönüşte o biti kullanarak nereye gidecekseniz gidin.
o zaman programda yanlıslık yok hocam.ALBILGI dekı zamanı gosub CALIS etıketıne gore rolenın kontrolu ıcın kullanmıstım.sure sonunda rolede sınyal var ıse devam eder sure bıtımınde rolede sınyal yok ıse role kontrol etıketıne gıder.
hocam role acma komutlarını verdıgınız gıbı duzelttım.ama sorun yıne devam edıyor.kulaklık kablosu telefona takılı kaldıgı surecede sıkıntı aynı ama ne zamankı kulaklıgı cekersem roleler tıkırdamıyor.belkıde hata bende ?
Hatanın sende olduğu kesin. BU programda yalnızca bir sorun yok bir çok sorun var. Sen birini düzelttin belki ama detaylı inceleme yapmak gerekiyor. Bu iş de konsantre olan tarafından yapılabilir yani oda sen oluyorsun. Ara biraz daha . Bir rölenin çekmesi için gerekli olan adımları takip et. Bulursun sorunu. Ete
Başlık: Ynt: DTMF Projeleri
Gönderen: jun - 01 Mart 2022, 10:54:11
merhaba ete hocam bu projenizin buzzer olmayan baskı devresini yaptım.telefon araken çalma ledi titreşim vaziyetinde yanıp sönüyor 8 çalmadan sonra 5v röle açmasına rağmen otomatik hat açılmıyor.bunun sebebi ne olabilir
DTMF projesini bizzat kartını yaparak denemiştim. Aradan çok zaman geçti. Şu anda o programa hiç hakim değilim. Ancak yinede programa baktım. Başlangıç aşamasında hat=1 ise beklemede kalıyor. Hattın LOW olması anladığım kadarı ile gelen arama ile oluyor. Bu durumda program gelen zilleri sayıyor. Programda default zil sayısı 5 gözüküyor sen 8 diyorsun burada bir uyuşmazlık var. Her neyse değiştirilmiş olabilir. Sistem hatta arama geldiğini algılayabiliyor ve zilleri sayabiliyor ise doğru yolda olduğunu gösteriyor. Ardından Röle yi aktif edip hattı açması gerekir. Dikkat edersen röle çekinceye kadar sistemin doğru çalışıyor. O halde rölenin çektiği konumda hangi kontağın birleşip hangisinin ayrıldığına tekrardan bakman gerekir. O rölenin NO kontaklarına hat bağlı olması lazım ki röle çektiğinde hat açılsın. Muhtemel sebeplerden birisi PCB de sorun olması başka bir şey olamaz. Bence devreyi karşına alıp PCB de doğruluk kontrolü yapman lazım.
Ete
Başlık: Ynt: DTMF Projeleri
Gönderen: jun - 01 Mart 2022, 12:19:30
Hocam cevabınız için teşekkürler çalmada ve röle açmada problem yok lakin röle açtığında telefon açılmıyor rölede problem olabilirmi diye uçları cımbızla kısa devre yapmama rağmen hat açılmıyor devreyi defalarca kontrol ettim problem hat trafosundan kaynaklanabilir mi hat trafosunu adsl splitteri içinden söküp kullandım.problem sistemin çalışmasında değil çalma sayısından sonra rölenin devreye girmesine rağmen hattın açılmaması.