DTMFOUT yerine SOUND2

Başlatan fırat, 02 Ekim 2007, 20:01:47

fırat

DTMFOUT komutu ile bir arama modülü yapma işine giriştim ama  başaramadım. Daha önce 58015 ile gayet güzel sonuçlar almıştım. Amac maliyeti düşürmek ve kart boyutunu küçültmek olunca DTMFOUT komutu benim için mecbur oldu.

    16F628A MCU ve 20Mhz kristal ile yaptığım arama devresinde, paralel bağlı telefondan çevrilen sesi duymama rağmen santralden hat alamıyordum http://sillanumsoft.altervista.org/Download/VAsetup.exe adresinden indirdiğim çok kullanışlı bir audio spectrum analizör programı ile DTMFOUT komutunun üretmiş olduğu çift frekansı inceledim. Örneğin 4 tuşu için 770Hz ile 1209 Hz üretilmesi gerekirken ,
üretilen sinyalin yaklaşık 20-30Hz lik frekans sapmasına uğradığını gözlemledim. Neredeyse bütün standart kristal ve kondansatör değerlerini denedim ama bu komuttan verim alamadım.

    SOUND2 komutunun iki ayrı pinden iki ayrı frekans üretebilen yararlı bir komut olduğu aklıma geldi. Bu komutla 20Mhz kiristal (22pf kond. ) kullanarak 770 ve 1209 Hz frekanslarını üretip spektrum analizörde inceledim. 40-60Hz sapma tespit ettim. Sinyallerde oluşan frekans sapmasını düzelterek yani 809Hz - 1269Hz ile tekrar ürettim ve cuk diye oturdu. Bu yöntemle santralden hat alıp numara çevirmeyi başardım.

Buda arama modülünün sürücü devresi ,


MPSA42 sürücü transistör yerine BC237 kullanmıştım. Arama yaparken gayet güzel çalıştı lakin dışarıdan gelen 110VAC arama darbelerinde yelkenleri suya indirdi bir daha arayamadı. Bu nedenle MPSA42 kullanmak en sağlıklısı.

Tam çalışan yazılım kodlarını burada veriyorum bu örnek programda 12345678901 nolu telefonu çevriyor. İlk önce Hook Up sinyalini PORTB.1 üzerinden high yaparak hattı açıyor, daha sonra for next döngüsü ile tek tek numarayı çeviriyor.
-------------------------------------------------------------------------------------
device 16f628A
      config hs_osc,wdt_off,boden_off,cp_off,lvp_off,pwrte_on,MCLRE_ON
     
      XTAL=20
     
      DIM INDEX AS BYTE
      DIM VAR1 AS BYTE
      DIM TONE1 AS WORD
      DIM TONE2 AS WORD
     
      ALL_DIGITAL TRUE
     
      OUTPUT PORTA
      OUTPUT PORTB
      TONE1=1000
      TONE2=1000
      PORTB=0
      PORTA=0

'-------------------------------------------------------  
      DELAYMS 1000
     
      SET PORTB.1 'hattı aç
      DELAYMS 1500
     
      FOR INDEX=0 TO 10     
            VAR1 = LOOKUP INDEX , [ 1,2,3,4,5,6,7,8,9,0,1] 'çevrilecek numara
         SELECT VAR1
         CASE 0
               TONE1=992 : TONE2=1405
         CASE 1
               TONE1=733 : TONE2=1269
         CASE 2
               TONE1=733 : TONE2=1405   
         CASE 3
               TONE1=733 : TONE2=1554
         CASE 4
               TONE1=809 : TONE2=1269
         CASE 5
               TONE1=809 : TONE2=1405
         CASE 6
               TONE1=809 : TONE2=1555
         CASE 7
               TONE1=899 : TONE2=1269
         CASE 8
               TONE1=899 : TONE2=1405
         CASE 9
               TONE1=899 : TONE2=1555
         END SELECT
        
         SOUND2 PORTB.3 , PORTB.2 , [TONE1 \ TONE2 \ 350  ]
           DELAYMS 150
      NEXT
      DELAYMS 3000
     
     'Telefon çalmaya başladıktan sonra yapılmasını istediğniz
     'işlemleri buraya yazıyorsunuz.
     
      CLEAR PORTB.1 'hattı kapat   
      stop
-------------------------------------------------------------------------------------

DTMFOUT ile sıkıntı yaşan arkadaşlar için bir seçenek olduğunu düşündüğüm SOUND2 komutunun bir çözüm olacağını değerlendirmekteyim. Benim için oldu ...... Çalışmalarınızda başarılar dilerim.
http://firatsenses.googlepages.com/

Maxim

dtmfout komutunu kullanıpta çalışmayan devre şemasınıda verebilirmisiniz ?

slm

files

çok kasmışsınız. DTMFout  gayet iyi çalışmaktadır. bu işten çok ekmek yedik.  sadece dtmfoutu uygun şekilde telefon hattına bağlak gerekir. hattı alırken kısa bir kesintili darbe oluşmamalı, telekom bunu pulse arama olarak yorumluyor, sizin çevirdiğiniz numara geçerli olmuyor. ilk darbe pulse aramanın ilk rakamı sanıyor. ayrıyeten dtmfouta 3 katlı fitre takın. cam gibi çevirirsiniz. 3 tane 1 k 3 tane 100n..
20-30hz farkı olup olmadığını ölçmedim bilmiyorum. ama olsa da farketmez. sorun çıkmıyor.  spektrum analizört programı kaçbit kaç frekansda örneklemiş ona göre bu hata oluşmuştur. Fourier trasnformu hassasiyetinize göre de değişir.

fırat

DTMFOUT ile kullandığım sürücü devresi yukarıda bahsi geçen devreyle aynı.

DTMFOUT komutu ile bu işin gayet güzel yapıldığnı biliyorum, amacım bu komutun hatalı olduğunu yada çalışmadığını tebliğ etmek değil. Pes etmek yerine bir şekilde nasıl sonuca ulaşıldığnı göstermek ve kazanımlarımıda sizlerle paylaşmak.

files

oluşan kısa darbeyi yok etmek için telefon hattına paralel 22k bağlayabilirsiniz. bu sayede telefon hattından daima düşük bir akım akmakta, sizin devrede bir kesinti oluşsa bile pulse arama olarak algılanmamaktadır. Standarda bakacak olursak çekilen bu akım 500uA üzerinde olduğu için kötü sayılabilir. ama Twlekomun kendi ankesörlü telefonları var onlar bile telefon meşgul değilken 2 mA akım çekiyor. .. yani belge almayacaksanız 22k yı bağlayabilirsiniz.

mustafa_cmbz

şemayı görüntüleyemiyorum elinde olan tekrardan yükleyebilirmi acaba?