DTMF Tonlu Cihaz Kontrolü

Hazırlayanlar: Erkan İslamoğlu ve Berhan Tekdemir Emeği geçen Kişilere Teşekkürler
DTMF sinyalleri telefon hatlarının özelliklerine bağlı olarak gerçekleştirilen aramalarda, aranan ve arayan kişilerin numaralarının kaydedilmesinde, konuşma sürelerinin tespitinde, uzaktan sistem kontrolünde ve telekonferans sistemlerinde kullanılmaktadır.
DTMF (Dual Tone Multi Frequency) sinyalleri DTMF kodlayıcısı tarafından üretilir. Farklı frekansta iki sinüzoidal işaret cebirsel olarak toplanır. Herhangi bir tuşa basıldığında o tuşa ait iki tane farklı frekanslı sinyal üretilir. Bu sinyallerden düşük frekanslı olanı basılan tuşun hangi satırda yer aldığını yüksek frekanslı olanı da hangi sütunda bulunduğunu belirtir. Ton frekansları harmoniklerden ve diğer bozucu girişlerden etkilenmeyecek şekilde seçilmişlerdir.
Sinyallerin telefon tarafından doğru olarak iletilmesi ve merkez santral tarafından doğru olarak algılanması önemlidir. Sinyal frekansları nominal değerin ±%1.5 değerinde olmalıdır. DTMF esas olarak Amerikan ordusu için Bell telefon laboratuarlarında geliştirilmiş bir kodlama sistemidir. Daha sonra telefon şebekelerinde bilgi yollamanın güvenli yolu olarak tercih edilmiş ve telefon abonesinin santrala aradığı abone ile ilgili bilgileri ilettiği standart yöntem olarak günümüzde yaygın olarak kullanılmaktadır.
DTMF kodlama sistemi radyo amatörlüğünde yerini son yirmi yıl içinde yaygın olarak almıştır. Günümüzde telsiz cihazlarının çoğunda DTMF sinyallerini yollamaya ve almaya yarayan modüller ile tuş takımı bulunmaktadır.
Bu imkan sayesinde telsiz yardımıyla DTMF kodlu mesajlar, çağrı kodları yollamak; uzaktan kumanda amaçlı rölelerin kontrolü gibi işler gerçekleştirilebilir.
DTMF sinyallerinin algılanıp kodunun çözülmesinde çok değişik yöntemler kullanılmaktadır:filtre, entegre olarak üretilen kod çözücüler, DSP sayısal işaret işlemcileri.
Entegre olarak üretilen kod çözücü örnek devreleri
5089 entegreli kod çözücü 1

cm8870 entegreli kod çözücü

PİC 16f84 ile DTMF üretimi 1

DTMF Kod Kombinasyon tablosu
|
1209 Hz |
1336 Hz |
1477 Hz |
|
|
697 Hz |
1 |
2 |
3 |
|
770 Hz |
4 |
5 |
6 |
|
852 Hz |
7 |
8 |
9 |
|
941 Hz |
* |
0 |
# |
![]()
Yukarıdaki DTMF Kod kombinasyon tablosundan görüleceği gibi dört adet frekans satır için, dört adet frekansta kolon için tahsis edilmiştir.
Tablonun ortasındaki rakam ve semboller karşılarında bulunan satır ve sütundaki frekans çiftiyle ifade edilirler. Bir örnek vermek gerekirse 4 rakamını 770 Hz ve 1209 Hz lik ton çiftiyle ifade ederiz. Bu ton çiftleri 16 adet ton kombinasyonuna olanak tanır. Bu tonlardan sıra için adanmış olanlar 1 kHz ‘in altında, kolon için tahsis edilmiş olanlar ise 1 kHz ile 2 kHz arasındadır.
Bu frekansların bu sınırlar dahilinde olmasının sebebi telefon ve telsiz sistemlerinde band geçiren filtreler kullanılır ve bu filtreler 300 Hz – 3000 Hz arasındaki konuşma aralığı dediğimiz aralıktaki frekansları geçirirler.DTMF tonlarında bozulma ve kesintilere uğramaması için bu frekans sınırları içinde kalacak şekilde tasarlanmışlardır.
PİC 16F877 Entegresi

PIC16F877 Portlarının Fonksiyonları : PIC16F877′nin tüm portları her biri bağımsız olarak sayısal giriÅŸ veya çıkış olarak kullanılabilme imkanı vermektedir. Bu portlar kendi aralarında beÅŸ ana guruba ayrılmaktadır. (PORTA, PORTB, PORTC, PORTD, PORTE) Åžimdi bu portları inceleyelim.
PORTA: Bu port RA0, RA1, RA2, RA3, RA4, RA5 olmak üzere 6 Bitliktir.Bu bitler analog/ sayısal çevirici olarak konfigüre edilirler.
PORTB: RB0, RB1, RB2, RB3, RB4, RB5, RB6, RB7 olmak üzere 8 bit geniÅŸliÄŸindedir. B portunun tüm bacakları dahili bir dirençle VDD’ye baÄŸlanmıştır. Fakat bu özellik uygulamalarda göz önünde bulundurulmaz. Bu özellik ancak OPTION yazmacının 7. bitini 0 yaparak aktif hale getirilir.
PORTC: RC0, RC, RC2, RC3, RC4, RC4, RC5, RC6, RC7 olmak üzere 8 bit kapasitelidir. SPI,Doğrudan bilgisayarla iletişim yapma, yakalama/ Karşılaştırma ve PWM gibi özel fonksiyonlar yazmaçların ayarlanmasıyla bu portta kullanılır.
PORTD: RD0, RD1, RD2, RD3, RD4, RD5, RD6, RD7 olmak üzere 8 bitliktir. Bütün portlar Schmitt Trigger girişlidir.
PORTE: RE0, RE1, RE2 olmak üzere 3 bit liktir. Bu bacaklarında Schmitt Trigger girişleri vardır.Ayrıca her bir bacak analog / sayısal çevirici olarakta kullanılmaktadır. Eğer PORTD yi TRISE yazmacının PSPMODE bitini 1 yapıp 8bit genişliğinde mikro işlemci portu olarak kullanırsak (parelel slave port) PORTE bacakları PORTD nin bağlandığı mikroişlemci bus nında sırasıyla OKUMA,YAZMA,CHIP SELECT kontrol girişleri olarak kullanılır.
Baskı Devre Çizimleri
DTFM ton kontrolü 8 adet her hangi bir devrenin ya da cihazın uzaktan kontrolünde kullanılabilir. Buradaki amaç telsizle ve ya telefonla uzaktan bir sistemin çalışmasını sağlayabilmektir.
Devrenin çalışması: Telefondan ve ya telsizden çıkan DTMF ton sinyali bir amplifikatör yardımıyla genliÄŸi büyütüldükten sonra 100 n’luk kondansatörden geçerek 100 kW’luk dirençle CM8870 decoder entegresi tarafından 5 bitlik veriye dönüştürülür. Normal telefon DTMF’i için CM8870′e 3.574Mhz’li kristal takılmaktadır. Decoder’den çıkan 5 bitlik veri pic 16F877′nin portlarına aktarılır. Pic 16F877 tarafından klavyeden girilen deÄŸerle karşılaÅŸtırılır ve ilgili röleleri kontaklar.
DTMF Kontrol hex yazılımı erkan_dtmf hex
DTMF asm yazımı
; PicBasic Pro Compiler 2.40, (c) 1998, 2001 microEngineering Labs, Inc. All Rights Reserved. PM_USED EQU 1 INCLUDE "16F877.INC" ; Define statements. #define CODE_SIZE 8 #define LCD_BITS 4 #define LCD_DREG PORTD #define LCD_DBIT 0 #define LCD_RSREG PORTE #define LCD_RSBIT 2 #define LCD_EREG PORTE #define LCD_EBIT 1 RAM_START EQU 00020h RAM_END EQU 001EFh RAM_BANKS EQU 00004h BANK0_START EQU 00020h BANK0_END EQU 0007Fh BANK1_START EQU 000A0h BANK1_END EQU 000EFh BANK2_START EQU 00110h BANK2_END EQU 0016Fh BANK3_START EQU 00190h BANK3_END EQU 001EFh EEPROM_START EQU 02100h EEPROM_END EQU 021FFh R0 EQU RAM_START + 000h R1 EQU RAM_START + 002h R2 EQU RAM_START + 004h R3 EQU RAM_START + 006h R4 EQU RAM_START + 008h R5 EQU RAM_START + 00Ah R6 EQU RAM_START + 00Ch R7 EQU RAM_START + 00Eh R8 EQU RAM_START + 010h FLAGS EQU RAM_START + 012h GOP EQU RAM_START + 013h RM1 EQU RAM_START + 014h RM2 EQU RAM_START + 015h RR1 EQU RAM_START + 016h RR2 EQU RAM_START + 017h _CIKIS EQU RAM_START + 018h _DENET EQU RAM_START + 019h _UMUMI EQU RAM_START + 01Ah _PORTL EQU PORTB _PORTH EQU PORTC _TRISL EQU TRISB _TRISH EQU TRISC INCLUDE "ERKAN_~1.MAC" INCLUDE "PBPPIC14.LIB" MOVE?CB 007h, ADCON1 MOVE?CB 00Fh, TRISA MOVE?CB 000h, TRISB MOVE?CB 000h, PORTB PAUSE?C 001F4h LCDOUT?C 0FEh LCDOUT?C 001h LCDOUT?C 020h LCDOUT?C 020h LCDOUT?C 020h LCDOUT?C 049h LCDOUT?C 059h LCDOUT?C 049h LCDOUT?C 020h LCDOUT?C 047h LCDOUT?C 055h LCDOUT?C 04Eh LCDOUT?C 04Ch LCDOUT?C 045h LCDOUT?C 052h LCDOUT?C 0FEh LCDOUT?C 0C0h LCDOUT?C 020h LCDOUT?C 020h LCDOUT?C 044h LCDOUT?C 054h LCDOUT?C 04Dh LCDOUT?C 046h LCDOUT?C 020h LCDOUT?C 020h LCDOUT?C 04Bh LCDOUT?C 04Fh LCDOUT?C 04Eh LCDOUT?C 054h LCDOUT?C 052h LCDOUT?C 04Fh LCDOUT?C 04Ch LABEL?L _YENILE AND?BCB PORTA, 00Fh, _UMUMI CMPEQ?BCL _UMUMI, 000h, _YENILE CMPGE?BCL _UMUMI, 009h, L00002 GOSUB?L _TABLO OR?BBB PORTB, _CIKIS, PORTB LCDOUT?C 0FEh LCDOUT?C 001h LCDOUT?C 020h LCDOUT?C 020h LCDOUTD?B _UMUMI LCDOUT?C 02Eh LCDOUT?C 04Bh LCDOUT?C 041h LCDOUT?C 04Eh LCDOUT?C 041h LCDOUT?C 04Ch LCDOUT?C 020h LCDOUT?C 041h LCDOUT?C 04Bh LCDOUT?C 054h LCDOUT?C 049h LCDOUT?C 046h LCDOUT?C 0FEh LCDOUT?C 0C0h LCDOUT?C 020h LCDOUT?C 04Bh LCDOUT?C 041h LCDOUT?C 04Eh LCDOUT?C 020h LCDOUT?C 026h LCDOUT?C 020h LCDOUT?C 042h LCDOUT?C 045h LCDOUT?C 052h LCDOUT?C 048h LCDOUT?C 041h LCDOUT?C 04Eh LABEL?L _DNTL AND?BCB PORTA, 00Fh, _DENET LXOR?BBL _UMUMI, _DENET, _YENILE GOTO?L _DNTL CMPNE?BCL _UMUMI, 00Ah, L00004 MOVE?CB 000h, PORTB LCDOUT?C 0FEh LCDOUT?C 001h LCDOUT?C 020h LCDOUT?C 020h LCDOUT?C 054h LCDOUT?C 055h LCDOUT?C 04Dh LCDOUT?C 020h LCDOUT?C 04Bh LCDOUT?C 041h LCDOUT?C 04Eh LCDOUT?C 041h LCDOUT?C 04Ch LCDOUT?C 04Ch LCDOUT?C 041h LCDOUT?C 052h LCDOUT?C 0FEh LCDOUT?C 0C0h LCDOUT?C 020h LCDOUT?C 020h LCDOUT?C 020h LCDOUT?C 020h LCDOUT?C 020h LCDOUT?C 020h LCDOUT?C 050h LCDOUT?C 041h LCDOUT?C 053h LCDOUT?C 049h LCDOUT?C 046h LABEL?L L00004 CMPNE?BCL _UMUMI, 00Bh, L00006 LABEL?L _SRGL PAUSE?C 001h AND?BCB PORTA, 00Fh, _DENET GOTO?L _SRGL LABEL?L _PASIF_Y LCDOUT?C 0FEh LCDOUT?C 001h LCDOUT?C 020h LCDOUT?C 020h LCDOUT?C 048h LCDOUT?C 041h LCDOUT?C 04Eh LCDOUT?C 047h LCDOUT?C 049h LCDOUT?C 020h LCDOUT?C 020h LCDOUT?C 04Bh LCDOUT?C 041h LCDOUT?C 04Eh LCDOUT?C 041h LCDOUT?C 04Ch LCDOUT?C 0FEh LCDOUT?C 0C0h LCDOUT?C 020h LCDOUT?C 020h LCDOUT?C 020h LCDOUT?C 04Bh LCDOUT?C 041h LCDOUT?C 050h LCDOUT?C 041h LCDOUT?C 054h LCDOUT?C 049h LCDOUT?C 04Ch LCDOUT?C 053h LCDOUT?C 049h LCDOUT?C 04Eh LABEL?L _PASIF_BEK AND?BCB PORTA, 00Fh, _DENET ASM? NOP ENDASM? CMPEQ?BCL _DENET, 000h, _PASIF_BEK AND?BCB PORTA, 00Fh, _UMUMI GOSUB?L _TABLO AND?BBB PORTB, _CIKIS, _DENET CMPEQ?BCL _DENET, 000h, _GEC XOR?BBB PORTB, _CIKIS, PORTB LCDOUT?C 0FEh LCDOUT?C 001h LCDOUT?C 020h LCDOUT?C 020h LCDOUTD?B _UMUMI LCDOUT?C 02Eh LCDOUT?C 04Bh LCDOUT?C 041h LCDOUT?C 04Eh LCDOUT?C 041h LCDOUT?C 04Ch LCDOUT?C 020h LCDOUT?C 050h LCDOUT?C 041h LCDOUT?C 053h LCDOUT?C 049h LCDOUT?C 046h LCDOUT?C 0FEh LCDOUT?C 0C0h LCDOUT?C 020h LCDOUT?C 045h LCDOUT?C 052h LCDOUT?C 04Bh LCDOUT?C 041h LCDOUT?C 04Eh LCDOUT?C 020h LCDOUT?C 026h LCDOUT?C 020h LCDOUT?C 042h LCDOUT?C 045h LCDOUT?C 052h LCDOUT?C 048h LCDOUT?C 041h LCDOUT?C 04Eh GOTO?L _SRGL2 LABEL?L _GEC LCDOUT?C 0FEh LCDOUT?C 001h LCDOUT?C 020h LCDOUT?C 020h LCDOUT?C 020h LCDOUT?C 020h LCDOUT?C 042h LCDOUT?C 055h LCDOUT?C 020h LCDOUT?C 020h LCDOUT?C 020h LCDOUT?C 04Bh LCDOUT?C 041h LCDOUT?C 04Eh LCDOUT?C 041h LCDOUT?C 04Ch LCDOUT?C 0FEh LCDOUT?C 0C0h LCDOUT?C 002h LCDOUT?C 020h LCDOUT?C 020h LCDOUT?C 020h LCDOUT?C 020h LCDOUT?C 020h LCDOUT?C 050h LCDOUT?C 041h LCDOUT?C 053h LCDOUT?C 049h LCDOUT?C 046h LABEL?L _SRGL2 AND?BCB PORTA, 00Fh, _DENET LXOR?BBL _UMUMI, _DENET, _YENILE GOTO?L _SRGL2 LABEL?L L00006 PAUSE?C 004h GOTO?L _YENILE LABEL?L _TABLO LOOKUP?BCLB _UMUMI, 009h, L00001, _CIKIS LURET?C 000h LURET?C 001h LURET?C 002h LURET?C 004h LURET?C 008h LURET?C 010h LURET?C 020h LURET?C 040h LURET?C 080h LABEL?L L00001 RETURN? END




21/11/2008 10:27 pm
Arkadaşım iyi güzel bu proje yapılmış ta orda asm adı altında verilmiş kodlar neyi ifade ediyor yani kodları paylaşmak istemiyorsa hiç onlarıda yazmasın pic basicte yazılmış program pic basicin ürettiği asm kodları direk yapıştırılmış bunun gibi bir çok proje vardı böyle özelliklede hex kodu dahi verilmeyen bitirme projeleri var yani hiç bir kod yoksa o projelerin yayınlanma amacı ne bu iki durum çok rahatsız edici açıkcası
21/11/2008 10:55 pm
Kaynak kodları olan devreler için bakınız http://320volt.com/dtmf-telefon-ile-cihaz-kontrolu
Bende biliyorum ne yazıkki kaynak kodları tam olarak yok bu tip projeleririn paylaşılma sebebi Türkçe detaylı bilgi olmasıdır açıklamaları okudunuzmu ne kadar faydalı kıymetli bilgiler var
Yazar projelerimiz dışındaki yazılar bu siteye özel hazırlanmış değildir arşivimden,internet üzerinden seçilmiş projelerdir ve var olan tüm dosyaları ile paylaşılmıştır bir çoğu sizlerin ulaşamıyacağı kadar uzaktan ve çeşitli zorluklar aşılarak buraya taşındı
var ise hazırlayan kişilerin bilgileri sitelerinin linkleri eklendi en azından herhangi bir kısıtlama olmadan kolayca ulaşabiliyorsunuz varsın bir kaç projenin asm,hex kodlarının yanında pic basic kodu olmasın
22/11/2008 2:36 am
Arkdaşım projeyi yapan kaynak kodu vermeyebilir hexi verir. veya hiç vermez sorun bu değil yani orda asm kodu diyerek pic basicin ürettiği kodlar eklenmesin siteyi bende yakından takip ediyorum. bir kaçgün arayla sürekli yenileniyor.Güzel projeler, makaleler, tezler paylaşılıyor. ama bu şekildeki hareketler hiç hoş değil ben bunu belirtmek istiyorum.